mirror of
https://github.com/xroche/httrack.git
synced 2026-07-17 06:10:42 +03:00
Compare commits
88 Commits
remove-dea
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
18bdc24d15 | ||
|
|
0b772ec6ba | ||
|
|
a0f2f89ec3 | ||
|
|
93ec06f404 | ||
|
|
bc67e74dea | ||
|
|
c7fcdebe46 | ||
|
|
eb46d8d469 | ||
|
|
9bc53d40d2 | ||
|
|
938a873e19 | ||
|
|
ed05faaaa8 | ||
|
|
5e56a913a5 | ||
|
|
29e868b2ca | ||
|
|
f1418bac3c | ||
|
|
092a557305 | ||
|
|
cfe7c7e68f | ||
|
|
89b1e485d7 | ||
|
|
08481464bd | ||
|
|
3e7b9f91ee | ||
|
|
800d498893 | ||
|
|
991d259981 | ||
|
|
d1bf4f7a25 | ||
|
|
86e145fc1c | ||
|
|
d9ff780d0f | ||
|
|
b026c80bb6 | ||
|
|
e0648beff9 | ||
|
|
ee1aebd935 | ||
|
|
b4957f0625 | ||
|
|
c9d36c82c7 | ||
|
|
1fa0184468 | ||
|
|
79e46eeceb | ||
|
|
436ac53793 | ||
|
|
bc4b2c7b8e | ||
|
|
4fafe283b4 | ||
|
|
9ec5a3a067 | ||
|
|
cd38e6e68d | ||
|
|
e692e56592 | ||
|
|
7d9d4ed890 | ||
|
|
573167e8dd | ||
|
|
e26a5f5c6a | ||
|
|
627ae2b043 | ||
|
|
71ab3574ef | ||
|
|
076127ddea | ||
|
|
dced0208e1 | ||
|
|
6e34c30a7c | ||
|
|
eac13ea248 | ||
|
|
dc3e485f92 | ||
|
|
fac84f1631 | ||
|
|
c32d286938 | ||
|
|
5a7ab7a653 | ||
|
|
5756a9830c | ||
|
|
28c11d55eb | ||
|
|
b5f28f6eb5 | ||
|
|
3d65bb2e3b | ||
|
|
68897b09ce | ||
|
|
e8d1bf9c19 | ||
|
|
ef40277c24 | ||
|
|
797acecfd2 | ||
|
|
8237c3ed2b | ||
|
|
75b815e1fb | ||
|
|
8d02e60907 | ||
|
|
e70607e70c | ||
|
|
cada6a1ae3 | ||
|
|
145ea4769f | ||
|
|
c5da5a2f2e | ||
|
|
6eaefe6233 | ||
|
|
33249be5a0 | ||
|
|
167ede32c0 | ||
|
|
c8b7c63c9b | ||
|
|
04f37b2094 | ||
|
|
c07b19bc3d | ||
|
|
04bbb489cf | ||
|
|
a24b1d3c9f | ||
|
|
1abf867333 | ||
|
|
771d11326e | ||
|
|
7faceaf7d2 | ||
|
|
9105732112 | ||
|
|
9c01812141 | ||
|
|
7a02d5e411 | ||
|
|
3c7e9fa46d | ||
|
|
a707d4b845 | ||
|
|
65c1016a4e | ||
|
|
fd2252dc8c | ||
|
|
53a257448f | ||
|
|
8ba3cb6c03 | ||
|
|
b9afe755bd | ||
|
|
407916e3f6 | ||
|
|
15021cd470 | ||
|
|
5f7045c3a4 |
8
.gitattributes
vendored
Normal file
8
.gitattributes
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Resource scripts are Windows tooling input and must stay CRLF: the engine has no
|
||||||
|
# encoding guard, so an autocrlf checkout could otherwise flatten them silently.
|
||||||
|
*.rc text eol=crlf
|
||||||
|
|
||||||
|
# The test scripts run under Git Bash on the Windows CI; a CRLF checkout makes
|
||||||
|
# bash die on $'\r' on every line of them.
|
||||||
|
*.test text eol=lf
|
||||||
|
*.sh text eol=lf
|
||||||
138
.github/workflows/ci.yml
vendored
138
.github/workflows/ci.yml
vendored
@@ -41,7 +41,7 @@ jobs:
|
|||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y --no-install-recommends \
|
sudo apt-get install -y --no-install-recommends \
|
||||||
build-essential clang autoconf automake libtool autoconf-archive \
|
build-essential clang autoconf automake libtool autoconf-archive \
|
||||||
zlib1g-dev libssl-dev
|
zlib1g-dev libssl-dev libbrotli-dev libzstd-dev
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: |
|
run: |
|
||||||
@@ -50,12 +50,17 @@ jobs:
|
|||||||
# committed generated files already let a plain checkout build.
|
# committed generated files already let a plain checkout build.
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
./configure
|
./configure
|
||||||
|
# a missing decoder would silently drop the coding from Accept-Encoding
|
||||||
|
grep -q "define HTS_USEBROTLI 1" config.h
|
||||||
|
grep -q "define HTS_USEZSTD 1" config.h
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: make -j"$(nproc)"
|
run: make -j"$(nproc)"
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: make check
|
run: |
|
||||||
|
jobs=$(( $(nproc) * 2 )); [ "$jobs" -le 16 ] || jobs=16
|
||||||
|
make check -j"$jobs"
|
||||||
|
|
||||||
- name: Print the test log on failure
|
- name: Print the test log on failure
|
||||||
if: failure()
|
if: failure()
|
||||||
@@ -80,7 +85,7 @@ jobs:
|
|||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y --no-install-recommends \
|
sudo apt-get install -y --no-install-recommends \
|
||||||
build-essential autoconf automake libtool autoconf-archive \
|
build-essential autoconf automake libtool autoconf-archive \
|
||||||
zlib1g-dev libssl-dev
|
zlib1g-dev libssl-dev libbrotli-dev libzstd-dev
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: |
|
run: |
|
||||||
@@ -99,7 +104,8 @@ jobs:
|
|||||||
sudo find /usr/bin /usr/local/bin -maxdepth 1 -name 'python3*' \
|
sudo find /usr/bin /usr/local/bin -maxdepth 1 -name 'python3*' \
|
||||||
-exec mv {} {}.hidden \;
|
-exec mv {} {}.hidden \;
|
||||||
! command -v python3
|
! command -v python3
|
||||||
make check
|
jobs=$(( $(nproc) * 2 )); [ "$jobs" -le 16 ] || jobs=16
|
||||||
|
make check -j"$jobs"
|
||||||
|
|
||||||
- name: Print the test log on failure
|
- name: Print the test log on failure
|
||||||
if: failure()
|
if: failure()
|
||||||
@@ -120,25 +126,70 @@ jobs:
|
|||||||
- name: Install build dependencies
|
- name: Install build dependencies
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
brew install autoconf automake libtool autoconf-archive
|
brew install autoconf automake libtool autoconf-archive brotli zstd
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
ssl="$(brew --prefix openssl@3)"
|
ssl="$(brew --prefix openssl@3)"
|
||||||
|
brewp="$(brew --prefix)"
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
./configure CPPFLAGS="-I${ssl}/include" LDFLAGS="-L${ssl}/lib"
|
./configure CPPFLAGS="-I${ssl}/include -I${brewp}/include" \
|
||||||
|
LDFLAGS="-L${ssl}/lib -L${brewp}/lib"
|
||||||
|
grep -q "define HTS_USEBROTLI 1" config.h
|
||||||
|
grep -q "define HTS_USEZSTD 1" config.h
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: make -j"$(sysctl -n hw.ncpu)"
|
run: make -j"$(sysctl -n hw.ncpu)"
|
||||||
|
|
||||||
|
- name: Add loopback aliases (macOS lacks 127.0.0.2/.3)
|
||||||
|
# 19_local-connect-fallback needs the dead 127.0.0.2/.3 to refuse
|
||||||
|
# instantly like Linux; alias them onto lo0 so they don't stall to timeout.
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
sudo ifconfig lo0 alias 127.0.0.2 up
|
||||||
|
sudo ifconfig lo0 alias 127.0.0.3 up
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: make check
|
run: |
|
||||||
|
jobs=$(( $(sysctl -n hw.ncpu) * 2 )); [ "$jobs" -le 16 ] || jobs=16
|
||||||
|
make check -j"$jobs"
|
||||||
|
|
||||||
- name: Print the test log on failure
|
- name: Print the test log on failure
|
||||||
if: failure()
|
if: failure()
|
||||||
run: cat tests/test-suite.log 2>/dev/null || true
|
run: cat tests/test-suite.log 2>/dev/null || true
|
||||||
|
|
||||||
|
# Runtime smoke of the WebHTTrack launcher on macOS: it carries a Darwin-only
|
||||||
|
# browser path (open -W) and nothing else exercises htsserver. Install into a
|
||||||
|
# temp prefix, then check webhttrack brings up htsserver and serves the UI.
|
||||||
|
webhttrack-macos:
|
||||||
|
name: webhttrack smoke (macOS arm64)
|
||||||
|
runs-on: macos-14
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install build dependencies
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
brew install autoconf automake libtool autoconf-archive brotli zstd
|
||||||
|
|
||||||
|
- name: Build and install into a temp prefix
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
ssl="$(brew --prefix openssl@3)"
|
||||||
|
brewp="$(brew --prefix)"
|
||||||
|
autoreconf -fi
|
||||||
|
./configure CPPFLAGS="-I${ssl}/include -I${brewp}/include" \
|
||||||
|
LDFLAGS="-L${ssl}/lib -L${brewp}/lib" \
|
||||||
|
--prefix="$RUNNER_TEMP/inst"
|
||||||
|
make -j"$(sysctl -n hw.ncpu)"
|
||||||
|
make install
|
||||||
|
|
||||||
|
- name: Smoke-test webhttrack
|
||||||
|
run: bash tests/webhttrack-smoke.sh "$RUNNER_TEMP/inst"
|
||||||
|
|
||||||
# Portability/hardening: 32-bit (i386) build on the x86-64 runner via multilib
|
# Portability/hardening: 32-bit (i386) build on the x86-64 runner via multilib
|
||||||
# -- no extra hardware. Exercises the 32-bit size_t/pointer ABI, where size
|
# -- no extra hardware. Exercises the 32-bit size_t/pointer ABI, where size
|
||||||
# and bounds math can truncate or wrap in ways 64-bit never reveals (the axis
|
# and bounds math can truncate or wrap in ways 64-bit never reveals (the axis
|
||||||
@@ -159,7 +210,8 @@ jobs:
|
|||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y --no-install-recommends \
|
sudo apt-get install -y --no-install-recommends \
|
||||||
build-essential gcc-multilib autoconf automake libtool \
|
build-essential gcc-multilib autoconf automake libtool \
|
||||||
autoconf-archive zlib1g-dev:i386 libssl-dev:i386
|
autoconf-archive zlib1g-dev:i386 libssl-dev:i386 \
|
||||||
|
libbrotli-dev:i386 libzstd-dev:i386
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: |
|
run: |
|
||||||
@@ -171,7 +223,9 @@ jobs:
|
|||||||
run: make -j"$(nproc)"
|
run: make -j"$(nproc)"
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: make check
|
run: |
|
||||||
|
jobs=$(( $(nproc) * 2 )); [ "$jobs" -le 16 ] || jobs=16
|
||||||
|
make check -j"$jobs"
|
||||||
|
|
||||||
- name: Print the test log on failure
|
- name: Print the test log on failure
|
||||||
if: failure()
|
if: failure()
|
||||||
@@ -198,7 +252,7 @@ jobs:
|
|||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y --no-install-recommends \
|
sudo apt-get install -y --no-install-recommends \
|
||||||
build-essential autoconf automake libtool autoconf-archive \
|
build-essential autoconf automake libtool autoconf-archive \
|
||||||
zlib1g-dev libssl-dev
|
zlib1g-dev libssl-dev libbrotli-dev libzstd-dev
|
||||||
|
|
||||||
- name: Configure (sanitized)
|
- name: Configure (sanitized)
|
||||||
run: |
|
run: |
|
||||||
@@ -226,7 +280,9 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ASAN_OPTIONS: detect_leaks=0:abort_on_error=1:halt_on_error=1:strict_string_checks=1:malloc_fill_byte=202:max_malloc_fill_size=2147483647:free_fill_byte=203:max_free_fill_size=2147483647
|
ASAN_OPTIONS: detect_leaks=0:abort_on_error=1:halt_on_error=1:strict_string_checks=1:malloc_fill_byte=202:max_malloc_fill_size=2147483647:free_fill_byte=203:max_free_fill_size=2147483647
|
||||||
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
|
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
|
||||||
run: make check
|
run: |
|
||||||
|
jobs=$(( $(nproc) * 2 )); [ "$jobs" -le 16 ] || jobs=16
|
||||||
|
make check -j"$jobs"
|
||||||
|
|
||||||
- name: Print the test log on failure
|
- name: Print the test log on failure
|
||||||
if: failure()
|
if: failure()
|
||||||
@@ -272,12 +328,52 @@ jobs:
|
|||||||
# 01_engine-* only; zlib-dependent self-tests are named 01_zlib-* and
|
# 01_engine-* only; zlib-dependent self-tests are named 01_zlib-* and
|
||||||
# skipped here (uninstrumented libz floods MSan with false positives).
|
# skipped here (uninstrumented libz floods MSan with false positives).
|
||||||
tests="$(cd tests && ls 01_engine-*.test | tr '\n' ' ')"
|
tests="$(cd tests && ls 01_engine-*.test | tr '\n' ' ')"
|
||||||
make check TESTS="$tests"
|
jobs=$(( $(nproc) * 2 )); [ "$jobs" -le 16 ] || jobs=16
|
||||||
|
make check -j"$jobs" TESTS="$tests"
|
||||||
|
|
||||||
- name: Print the test log on failure
|
- name: Print the test log on failure
|
||||||
if: failure()
|
if: failure()
|
||||||
run: cat tests/test-suite.log 2>/dev/null || true
|
run: cat tests/test-suite.log 2>/dev/null || true
|
||||||
|
|
||||||
|
# libFuzzer smoke: build the fuzz/ harnesses over the pure hostile-input
|
||||||
|
# parsers and replay each seed corpus under ASan+UBSan+LeakSanitizer. Replay
|
||||||
|
# (not open-ended mutation) keeps CI deterministic -- it can't hit strjoker's
|
||||||
|
# catastrophic backtracking -- and pins the regression seeds for the bugs the
|
||||||
|
# fuzzers found. Deep discovery is a maintainer / OSS-Fuzz activity.
|
||||||
|
fuzz:
|
||||||
|
name: fuzz (libFuzzer corpus replay, clang)
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install build dependencies
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y --no-install-recommends \
|
||||||
|
build-essential clang autoconf automake libtool autoconf-archive \
|
||||||
|
zlib1g-dev libssl-dev libbrotli-dev libzstd-dev
|
||||||
|
|
||||||
|
- name: Configure (fuzzers, static)
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
autoreconf -fi
|
||||||
|
./configure CC=clang \
|
||||||
|
CFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=all -g -O1 -fno-omit-frame-pointer" \
|
||||||
|
LDFLAGS="-fsanitize=address,undefined" \
|
||||||
|
--enable-fuzzers --disable-shared
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: make -j"$(nproc)"
|
||||||
|
|
||||||
|
- name: Replay corpora
|
||||||
|
env:
|
||||||
|
ASAN_OPTIONS: detect_leaks=1:abort_on_error=1:halt_on_error=1
|
||||||
|
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
|
||||||
|
run: bash fuzz/run-fuzzers.sh fuzz check
|
||||||
|
|
||||||
# Optional-dependency build: compile and test with HTTPS/OpenSSL disabled --
|
# Optional-dependency build: compile and test with HTTPS/OpenSSL disabled --
|
||||||
# the configuration users on minimal systems build, and one libssl is not even
|
# the configuration users on minimal systems build, and one libssl is not even
|
||||||
# installed here so configure cannot silently re-enable it. The matrix above
|
# installed here so configure cannot silently re-enable it. The matrix above
|
||||||
@@ -308,7 +404,9 @@ jobs:
|
|||||||
run: make -j"$(nproc)"
|
run: make -j"$(nproc)"
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: make check
|
run: |
|
||||||
|
jobs=$(( $(nproc) * 2 )); [ "$jobs" -le 16 ] || jobs=16
|
||||||
|
make check -j"$jobs"
|
||||||
|
|
||||||
- name: Print the test log on failure
|
- name: Print the test log on failure
|
||||||
if: failure()
|
if: failure()
|
||||||
@@ -336,7 +434,7 @@ jobs:
|
|||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
ca-certificates git \
|
ca-certificates git \
|
||||||
build-essential autoconf automake libtool autoconf-archive \
|
build-essential autoconf automake libtool autoconf-archive \
|
||||||
zlib1g-dev libssl-dev \
|
zlib1g-dev libssl-dev libbrotli-dev libzstd-dev \
|
||||||
debhelper devscripts lintian fakeroot
|
debhelper devscripts lintian fakeroot
|
||||||
|
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
@@ -380,7 +478,7 @@ jobs:
|
|||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y --no-install-recommends \
|
sudo apt-get install -y --no-install-recommends \
|
||||||
build-essential autoconf automake libtool autoconf-archive \
|
build-essential autoconf automake libtool autoconf-archive \
|
||||||
zlib1g-dev libssl-dev
|
zlib1g-dev libssl-dev libbrotli-dev libzstd-dev
|
||||||
|
|
||||||
- name: distcheck
|
- name: distcheck
|
||||||
run: |
|
run: |
|
||||||
@@ -456,6 +554,16 @@ jobs:
|
|||||||
- name: shfmt
|
- name: shfmt
|
||||||
run: shfmt -d -i 4 $SHELL_SCRIPTS
|
run: shfmt -d -i 4 $SHELL_SCRIPTS
|
||||||
|
|
||||||
|
# MSBuild rejects a malformed .vcxproj with a bare MSB4025 and no build, so
|
||||||
|
# catch it here in seconds rather than on a Windows runner minutes in.
|
||||||
|
- name: XML well-formedness (MSBuild project files)
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
for f in src/*.vcxproj; do
|
||||||
|
python3 -c "import sys,xml.dom.minidom; xml.dom.minidom.parse(sys.argv[1])" "$f"
|
||||||
|
echo "ok $f"
|
||||||
|
done
|
||||||
|
|
||||||
# Check clang-format on CHANGED LINES ONLY. The engine predates clang-format
|
# Check clang-format on CHANGED LINES ONLY. The engine predates clang-format
|
||||||
# (it was shaped by an old Visual Studio formatter) and does not round-trip,
|
# (it was shaped by an old Visual Studio formatter) and does not round-trip,
|
||||||
# so we never reformat the whole tree -- only the lines a PR touches.
|
# so we never reformat the whole tree -- only the lines a PR touches.
|
||||||
|
|||||||
69
.github/workflows/codeql.yml
vendored
Normal file
69
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# CodeQL static analysis (C). The security-extended suite covers the classes
|
||||||
|
# this codebase actually fights: overflows, tainted-size allocs, format bugs.
|
||||||
|
name: CodeQL
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
pull_request:
|
||||||
|
schedule:
|
||||||
|
# Weekly re-scan of master so new/updated queries land without a push.
|
||||||
|
- cron: "17 4 * * 1"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: codeql-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: analyze (c-cpp)
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
# Upload findings to the repo's code-scanning dashboard.
|
||||||
|
security-events: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install build dependencies
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y --no-install-recommends \
|
||||||
|
build-essential autoconf automake libtool autoconf-archive \
|
||||||
|
zlib1g-dev libssl-dev
|
||||||
|
|
||||||
|
- uses: github/codeql-action/init@v4
|
||||||
|
with:
|
||||||
|
languages: c-cpp
|
||||||
|
build-mode: manual
|
||||||
|
queries: security-extended
|
||||||
|
# fopen's umask-controlled 0666 is intended for mirror/cache/log
|
||||||
|
# output; the one credential file (cookies.txt) is kept 0600 on Unix.
|
||||||
|
config: |
|
||||||
|
paths-ignore:
|
||||||
|
# Demo callback samples, not part of libhttrack.
|
||||||
|
- libtest
|
||||||
|
# ProxyTrack: a separate legacy binary with no auth surface; its
|
||||||
|
# recv/cache-parse code trips taint queries by design.
|
||||||
|
- src/proxy
|
||||||
|
query-filters:
|
||||||
|
- exclude:
|
||||||
|
id: cpp/world-writable-file-creation
|
||||||
|
|
||||||
|
# Manual build: CodeQL traces the compiler, so build exactly what ships.
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
autoreconf -fi
|
||||||
|
./configure
|
||||||
|
make -j"$(nproc)"
|
||||||
|
|
||||||
|
- uses: github/codeql-action/analyze@v4
|
||||||
|
with:
|
||||||
|
category: "/language:c-cpp"
|
||||||
202
.github/workflows/windows-build.yml
vendored
Normal file
202
.github/workflows/windows-build.yml
vendored
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
# Windows build of the engine (VS2022 v143 + vcpkg): libhttrack, the CLI,
|
||||||
|
# webhttrack, proxytrack.
|
||||||
|
#
|
||||||
|
# The autotools CI covers the unix builds; this covers the MSVC one, which had
|
||||||
|
# no coverage at all and had drifted (the old .vcproj pinned OpenSSL 1.0.1j).
|
||||||
|
# libhttrack.dll is what the WinHTTrack GUI links against.
|
||||||
|
name: windows-build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
libhttrack:
|
||||||
|
runs-on: windows-2022
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
platform: [x64, Win32]
|
||||||
|
configuration: [Release]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive # coucal lives in src/coucal
|
||||||
|
|
||||||
|
# Located through vswhere rather than microsoft/setup-msbuild: the repo
|
||||||
|
# only allows GitHub-owned actions.
|
||||||
|
- name: Find MSBuild
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
|
||||||
|
$msbuild = & $vswhere -latest -products * -requires Microsoft.Component.MSBuild `
|
||||||
|
-find MSBuild\**\Bin\MSBuild.exe | Select-Object -First 1
|
||||||
|
if (-not $msbuild) { throw "MSBuild not found" }
|
||||||
|
Write-Host "MSBuild: $msbuild"
|
||||||
|
"MSBUILD=$msbuild" | Out-File -FilePath $env:GITHUB_ENV -Append
|
||||||
|
|
||||||
|
- name: Enable vcpkg MSBuild integration
|
||||||
|
shell: pwsh
|
||||||
|
run: vcpkg integrate install
|
||||||
|
|
||||||
|
# httrack and webhttrack carry a ProjectReference to libhttrack, so building
|
||||||
|
# them builds it first; proxytrack is standalone.
|
||||||
|
- name: Build
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
foreach ($proj in @("libhttrack", "httrack", "webhttrack", "proxytrack")) {
|
||||||
|
& $env:MSBUILD "src\$proj.vcxproj" `
|
||||||
|
/m `
|
||||||
|
/p:Configuration=${{ matrix.configuration }} `
|
||||||
|
/p:Platform=${{ matrix.platform }} `
|
||||||
|
/p:VcpkgEnableManifest=true `
|
||||||
|
/flp:LogFile=msbuild-$proj.log`;Verbosity=normal
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "$proj failed" }
|
||||||
|
}
|
||||||
|
|
||||||
|
# WinHTTrack links src\$(Platform)\$(Configuration)\libhttrack.lib, so the
|
||||||
|
# import lib and the DLL both have to land there under that exact name.
|
||||||
|
- name: Check the binaries landed where they are expected
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$dir = "src\${{ matrix.platform }}\${{ matrix.configuration }}"
|
||||||
|
$want = @("libhttrack.dll", "libhttrack.lib", "httrack.exe",
|
||||||
|
"webhttrack.exe", "proxytrack.exe")
|
||||||
|
foreach ($f in $want) {
|
||||||
|
if (-not (Test-Path "$dir\$f")) { throw "missing $dir\$f" }
|
||||||
|
Write-Host "found $dir\$f"
|
||||||
|
}
|
||||||
|
|
||||||
|
# A CRT split across the exe/DLL boundary links fine and crashes on the
|
||||||
|
# first cross-heap free, so assert both sides import the *same* vcruntime.
|
||||||
|
# Also assert the machine type: Test-Path alone would accept an x64 binary
|
||||||
|
# sitting in the Win32 output dir.
|
||||||
|
- name: Check the CRT is shared across the boundary
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$dir = "src\${{ matrix.platform }}\${{ matrix.configuration }}"
|
||||||
|
$dumpbin = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" `
|
||||||
|
-latest -find VC\Tools\MSVC\**\bin\Host*\*\dumpbin.exe | Select-Object -First 1
|
||||||
|
if (-not $dumpbin) { throw "dumpbin not found" }
|
||||||
|
$wantMachine = if ("${{ matrix.platform }}" -eq "x64") { "x64" } else { "x86" }
|
||||||
|
|
||||||
|
function Get-Crt($path) {
|
||||||
|
$out = & $dumpbin /dependents /headers $path
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "dumpbin failed on $path" }
|
||||||
|
,@($out | Select-String -Pattern '^\s*(vcruntime\d+d?\.dll)$' |
|
||||||
|
ForEach-Object { $_.Matches[0].Groups[1].Value.ToLower() })
|
||||||
|
}
|
||||||
|
|
||||||
|
# Negative control: cmd.exe links the old msvcrt, not vcruntime140. If
|
||||||
|
# this came back non-empty the detector would match anything, and the
|
||||||
|
# assertion below would pass on a mismatched CRT too.
|
||||||
|
if ((Get-Crt "$env:SystemRoot\System32\cmd.exe").Count -ne 0) {
|
||||||
|
throw "negative control failed: the vcruntime detector matches anything"
|
||||||
|
}
|
||||||
|
|
||||||
|
$crts = @{}
|
||||||
|
foreach ($f in @("libhttrack.dll", "httrack.exe")) {
|
||||||
|
$crt = Get-Crt "$dir\$f"
|
||||||
|
if ($crt.Count -eq 0) { throw "$f imports no vcruntime: static or mismatched CRT" }
|
||||||
|
$crts[$f] = $crt
|
||||||
|
|
||||||
|
$hdr = & $dumpbin /headers "$dir\$f"
|
||||||
|
if (-not ($hdr | Select-String -SimpleMatch "machine ($wantMachine)")) {
|
||||||
|
throw "$f is not $wantMachine"
|
||||||
|
}
|
||||||
|
Write-Host "$f -> $($crt -join ',') ($wantMachine)"
|
||||||
|
}
|
||||||
|
|
||||||
|
$a = $crts["libhttrack.dll"] | Sort-Object
|
||||||
|
$b = $crts["httrack.exe"] | Sort-Object
|
||||||
|
if (Compare-Object $a $b) {
|
||||||
|
throw "CRT mismatch across the boundary: libhttrack.dll=$a httrack.exe=$b"
|
||||||
|
}
|
||||||
|
|
||||||
|
# The engine ships ~90 tests and none had ever run on Windows: "make check"
|
||||||
|
# is Linux/macOS only. These are the offline ones, driven from Git Bash
|
||||||
|
# against the native httrack.exe. They subsume the self-tests this step
|
||||||
|
# used to run inline (codecs, cache, fsize).
|
||||||
|
# The *_local-* ones crawl the bundled Python server over loopback: the real
|
||||||
|
# TLS handshake, cache and file writer, which nothing else on Windows covers.
|
||||||
|
- name: Run the engine test suite (offline tests)
|
||||||
|
shell: bash
|
||||||
|
working-directory: tests
|
||||||
|
timeout-minutes: 45
|
||||||
|
run: |
|
||||||
|
set -u
|
||||||
|
bin="$(cygpath -u "$GITHUB_WORKSPACE")/src/${{ matrix.platform }}/${{ matrix.configuration }}"
|
||||||
|
export PATH="$bin:$PATH"
|
||||||
|
command -v httrack >/dev/null || { echo "::error::no httrack.exe in $bin"; exit 1; }
|
||||||
|
|
||||||
|
# httrack.exe is native, so MSYS rewrites any argument shaped like a
|
||||||
|
# POSIX path, and a URL path is shaped exactly like one: "/a/b.html"
|
||||||
|
# reached the engine as "C:/Program Files/Git/a/b.html". Switch that
|
||||||
|
# off, and hand the tests a TMPDIR that is already a Windows path.
|
||||||
|
export MSYS_NO_PATHCONV=1
|
||||||
|
export MSYS2_ARG_CONV_EXCL='*'
|
||||||
|
TMPDIR="$(cygpath -m "$RUNNER_TEMP")"
|
||||||
|
export TMPDIR
|
||||||
|
|
||||||
|
# Mirror what configure hands the suite. LC_ALL sets the codeset MSYS maps
|
||||||
|
# a UTF-8 mirror name onto UTF-16 with, which the intl crawls "test -f".
|
||||||
|
export HTTPS_SUPPORT=yes BROTLI_ENABLED=yes ZSTD_ENABLED=yes
|
||||||
|
export LC_ALL=C.UTF-8
|
||||||
|
|
||||||
|
# A wedged crawl must not eat the job's timeout budget. timeout(1)'s
|
||||||
|
# signals can't reap a native httrack.exe (MSYS signals don't reach it),
|
||||||
|
# so a hang orphaned processes that starved the runner; run_with_timeout
|
||||||
|
# TerminateProcess-es the whole tree. 600s clears the slowest multi-pass
|
||||||
|
# crawl (a few passes at --max-time=120 each).
|
||||||
|
. ./testlib.sh
|
||||||
|
|
||||||
|
pass=0 fail=0 skip=0 failed="" skipped=""
|
||||||
|
for t in 00_runnable.test 01_engine-*.test 01_zlib-*.test \
|
||||||
|
*_local-*.test 13_crawl_proxy_https.test 58_watchdog.test; do
|
||||||
|
rc=0
|
||||||
|
run_with_timeout 600 bash "$t" >"$t.log" 2>&1 || rc=$?
|
||||||
|
case "$rc" in
|
||||||
|
0) pass=$((pass + 1)); echo "PASS $t" ;;
|
||||||
|
77) skip=$((skip + 1)) skipped="$skipped $t"; echo "SKIP $t" ;;
|
||||||
|
124) fail=$((fail + 1)) failed="$failed $t"; echo "FAIL $t (timed out, tree killed)" ;;
|
||||||
|
*)
|
||||||
|
fail=$((fail + 1)) failed="$failed $t"
|
||||||
|
echo "FAIL $t (exit $rc)"
|
||||||
|
# These assert with `test "$(...)" == "..." || exit 1`, which
|
||||||
|
# says nothing at all on failure. Re-run traced, still bounded.
|
||||||
|
run_with_timeout 600 bash -x "$t" >>"$t.log" 2>&1 || true
|
||||||
|
tail -n 25 "$t.log" | sed 's/^/ /'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo "ran=$((pass + fail + skip)) pass=$pass fail=$fail skip=$skip" |
|
||||||
|
tee -a "$GITHUB_STEP_SUMMARY"
|
||||||
|
|
||||||
|
# Every gate here exits 77, so an all-skipped suite would report green having
|
||||||
|
# tested nothing: pin the skips, and floor the passes in case the glob empties.
|
||||||
|
expected_skips=" 48_local-crange-memresume.test" # pending #581
|
||||||
|
[ "$pass" -ge 90 ] || { echo "::error::only $pass tests passed ($skip skipped)"; exit 1; }
|
||||||
|
[ "$skipped" = "$expected_skips" ] || { echo "::error::unexpected skips:$skipped"; exit 1; }
|
||||||
|
[ "$fail" -eq 0 ] || { echo "::error::failing:$failed"; exit 1; }
|
||||||
|
|
||||||
|
- name: Upload the test logs
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: engine-tests-${{ matrix.platform }}-${{ matrix.configuration }}
|
||||||
|
path: tests/*.log
|
||||||
|
if-no-files-found: warn
|
||||||
|
|
||||||
|
- name: Upload MSBuild logs
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: msbuild-${{ matrix.platform }}-${{ matrix.configuration }}
|
||||||
|
path: msbuild-*.log
|
||||||
|
if-no-files-found: ignore
|
||||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -34,11 +34,15 @@ Makefile
|
|||||||
*.so.*
|
*.so.*
|
||||||
*.a
|
*.a
|
||||||
|
|
||||||
# make dist output.
|
# make dist output; dist/ holds httrack-gh-release staging artifacts.
|
||||||
/httrack-*.tar.gz
|
/httrack-*.tar.gz
|
||||||
|
/dist/
|
||||||
|
|
||||||
# Editor / autotools backup files.
|
# Editor / autotools backup files.
|
||||||
*~
|
*~
|
||||||
|
|
||||||
# Python bytecode (tests/local-server.py).
|
# Python bytecode (tests/local-server.py).
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
|
||||||
|
# Per-checkout Claude Code rules (symlink into a local sandbox).
|
||||||
|
/CLAUDE.local.md
|
||||||
|
|||||||
20
AGENTS.md
20
AGENTS.md
@@ -6,8 +6,19 @@ the operational checklist: toolchain, invariants, and how to ship a change.
|
|||||||
## Build & test
|
## Build & test
|
||||||
- Fresh clone first: `git submodule update --init src/coucal`
|
- Fresh clone first: `git submodule update --init src/coucal`
|
||||||
- `./bootstrap` (regenerates `configure` via `autoreconf`; needs autoconf,
|
- `./bootstrap` (regenerates `configure` via `autoreconf`; needs autoconf,
|
||||||
automake, libtool), then `bash configure && make && make check`. Or run
|
automake, libtool), then `bash configure && make -j"$(nproc)" && make check
|
||||||
`sh build.sh` to do bootstrap + configure + make in one shot.
|
-j"$(nproc)"`. Always pass `-j` to `make check`: the suite runs under
|
||||||
|
automake's parallel harness and each crawl test binds its own ephemeral-port
|
||||||
|
server, so `-j` never contends and a multi-minute serial run drops to
|
||||||
|
seconds. A new `.test` added to `$(TESTS)` is scheduled onto a free worker
|
||||||
|
automatically; only a test slower than the current longest raises the floor.
|
||||||
|
On a few-core Linux box, `-j` at 2x the core count is faster still: the tests
|
||||||
|
spend much of their wall time asleep (server trickles, httrack self-pacing),
|
||||||
|
so an idle core covers a sleeping one. CI uses `min(2*cores, 16)` on every
|
||||||
|
platform, macOS included: the test server raises its listen backlog
|
||||||
|
(`request_queue_size`) so macOS/BSD don't drop connections under a parallel
|
||||||
|
`-c16` bigcrawl the way Python's default backlog of 5 did.
|
||||||
|
Or run `sh build.sh` to do bootstrap + configure + make in one shot.
|
||||||
|
|
||||||
## Hard invariants
|
## Hard invariants
|
||||||
- **Generated autotools files are NOT in git.** `configure`, every
|
- **Generated autotools files are NOT in git.** `configure`, every
|
||||||
@@ -56,8 +67,9 @@ Before pushing, and when reviewing others, don't skim for bugs:
|
|||||||
- **Co-Authored-By is mandatory for AI-assisted commits.** Carry a
|
- **Co-Authored-By is mandatory for AI-assisted commits.** Carry a
|
||||||
`Co-Authored-By:` trailer naming the assistant. Attribute there, never in a
|
`Co-Authored-By:` trailer naming the assistant. Attribute there, never in a
|
||||||
PR-body footer.
|
PR-body footer.
|
||||||
- PRs land as a merge commit; every commit on the branch goes onto master, so
|
- PRs are squash-merged: one commit per PR lands on master, built from the PR
|
||||||
keep each commit message clean and meaningful.
|
title and description, so those are what the history keeps. The branch's
|
||||||
|
intermediate commits are not preserved.
|
||||||
|
|
||||||
## PR descriptions
|
## PR descriptions
|
||||||
- Plain concise prose; lead with what changed and why. No What/Why/How template.
|
- Plain concise prose; lead with what changed and why. No What/Why/How template.
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ with an AI assistant? The operational checklist is [AGENTS.md](AGENTS.md).
|
|||||||
## Pull requests
|
## Pull requests
|
||||||
|
|
||||||
- One change per PR. Small diffs merge fast.
|
- One change per PR. Small diffs merge fast.
|
||||||
- PRs land as a merge commit, so the branch's commits go onto master as-is: keep
|
- PRs are squash-merged: one commit per PR goes onto master, built from the PR
|
||||||
each commit message clean and explain *why*.
|
title and description, so those are the history. Explain *why* there.
|
||||||
- Be terse in the PR title and description: name the problem, not the fix, don't
|
- Be terse in the PR title and description: name the problem, not the fix, don't
|
||||||
restate the diff, and calibrate length to the change.
|
restate the diff, and calibrate length to the change.
|
||||||
- Add or update tests for engine changes (`tests/`), and keep CI green.
|
- Add or update tests for engine changes (`tests/`), and keep CI green.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
SUBDIRS = src man m4 libtest templates lang html tests
|
SUBDIRS = src man m4 libtest templates lang html tests fuzz
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
|||||||
1
README
1
README
@@ -40,7 +40,6 @@ These are the principals limits of HTTrack for that moment. Note that we did not
|
|||||||
that would have solved them.
|
that would have solved them.
|
||||||
|
|
||||||
- Several scripts generating complex filenames may not find them (ex: img.src='image'+a+Mobj.dst+'.gif')
|
- Several scripts generating complex filenames may not find them (ex: img.src='image'+a+Mobj.dst+'.gif')
|
||||||
- Some java classes may not find some files on them (class included)
|
|
||||||
- Cgi-bin links may not work properly in some cases (parameters needed). To avoid them: use filters like -*cgi-bin*
|
- Cgi-bin links may not work properly in some cases (parameters needed). To avoid them: use filters like -*cgi-bin*
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
70
configure.ac
70
configure.ac
@@ -1,6 +1,6 @@
|
|||||||
AC_PREREQ([2.71])
|
AC_PREREQ([2.71])
|
||||||
|
|
||||||
AC_INIT([httrack], [3.49.11], [roche+packaging@httrack.com], [httrack], [http://www.httrack.com/])
|
AC_INIT([httrack], [3.49.12], [roche+packaging@httrack.com], [httrack], [http://www.httrack.com/])
|
||||||
AC_COPYRIGHT([
|
AC_COPYRIGHT([
|
||||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
Copyright (C) 1998-2015 Xavier Roche and other contributors
|
Copyright (C) 1998-2015 Xavier Roche and other contributors
|
||||||
@@ -29,11 +29,11 @@ AC_CONFIG_SRCDIR(src/httrack.c)
|
|||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_CONFIG_HEADERS(config.h)
|
||||||
AM_INIT_AUTOMAKE([subdir-objects])
|
AM_INIT_AUTOMAKE([subdir-objects])
|
||||||
# 3:3:0: 3.49.11 only adds enum values, macros and inline helpers to the
|
# 3:4:0: 3.49.12 tail-appends one field (why_url) to httrackp and otherwise only
|
||||||
# installed headers (no struct layout or exported signature changed vs
|
# deletes dead comments; no struct layout or exported signature broke vs 3.49.11,
|
||||||
# 3.49.10), so it stays soname .so.3; bump revision.
|
# so it stays soname .so.3; bump revision.
|
||||||
# (3:0:0 was the htsblk mime-buffer widening, the ABI break that moved .so.2 -> .so.3.)
|
# (3:0:0 was the htsblk mime-buffer widening, the ABI break that moved .so.2 -> .so.3.)
|
||||||
VERSION_INFO="3:3:0"
|
VERSION_INFO="3:4:0"
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
AC_USE_SYSTEM_EXTENSIONS
|
AC_USE_SYSTEM_EXTENSIONS
|
||||||
|
|
||||||
@@ -64,16 +64,6 @@ AC_SUBST(LT_CV_OBJDIR,$lt_cv_objdir)
|
|||||||
# Export version info
|
# Export version info
|
||||||
AC_SUBST(VERSION_INFO)
|
AC_SUBST(VERSION_INFO)
|
||||||
|
|
||||||
# Versioned plugin name for dlopen() in hts_create_opt(); soname major is
|
|
||||||
# libtool's current - age, so this tracks VERSION_INFO bumps automatically.
|
|
||||||
HTS_SONAME_MAJOR=$((${VERSION_INFO%%:*} - ${VERSION_INFO##*:}))
|
|
||||||
case "$host_os" in
|
|
||||||
darwin*) HTS_LIBHTSJAVA_NAME="libhtsjava.$HTS_SONAME_MAJOR.dylib" ;;
|
|
||||||
*) HTS_LIBHTSJAVA_NAME="libhtsjava.so.$HTS_SONAME_MAJOR" ;;
|
|
||||||
esac
|
|
||||||
AC_DEFINE_UNQUOTED([HTS_LIBHTSJAVA_NAME], ["$HTS_LIBHTSJAVA_NAME"],
|
|
||||||
[Versioned libhtsjava runtime name, derived from VERSION_INFO])
|
|
||||||
|
|
||||||
### Default CFLAGS
|
### Default CFLAGS
|
||||||
DEFAULT_CFLAGS="-Wall -Wformat -Wformat-security \
|
DEFAULT_CFLAGS="-Wall -Wformat -Wformat-security \
|
||||||
-Wmultichar -Wwrite-strings -Wcast-qual -Wcast-align \
|
-Wmultichar -Wwrite-strings -Wcast-qual -Wcast-align \
|
||||||
@@ -102,7 +92,8 @@ AX_CHECK_COMPILE_FLAG([-Wignored-qualifiers], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -
|
|||||||
AX_CHECK_COMPILE_FLAG([-Werror=attribute-warning], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Werror=attribute-warning"])
|
AX_CHECK_COMPILE_FLAG([-Werror=attribute-warning], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Werror=attribute-warning"])
|
||||||
AX_CHECK_COMPILE_FLAG([-Werror=user-defined-warnings], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Werror=user-defined-warnings"])
|
AX_CHECK_COMPILE_FLAG([-Werror=user-defined-warnings], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Werror=user-defined-warnings"])
|
||||||
AX_CHECK_COMPILE_FLAG([-fstrict-aliasing -Wstrict-aliasing], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fstrict-aliasing -Wstrict-aliasing"])
|
AX_CHECK_COMPILE_FLAG([-fstrict-aliasing -Wstrict-aliasing], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fstrict-aliasing -Wstrict-aliasing"])
|
||||||
AX_CHECK_COMPILE_FLAG([-fstack-protector], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fstack-protector"])
|
AX_CHECK_COMPILE_FLAG([-fstack-protector-strong], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fstack-protector-strong"],
|
||||||
|
[AX_CHECK_COMPILE_FLAG([-fstack-protector], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fstack-protector"])])
|
||||||
AX_CHECK_COMPILE_FLAG([-fstack-clash-protection], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fstack-clash-protection"])
|
AX_CHECK_COMPILE_FLAG([-fstack-clash-protection], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fstack-clash-protection"])
|
||||||
AX_CHECK_COMPILE_FLAG([-fcf-protection], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fcf-protection"])
|
AX_CHECK_COMPILE_FLAG([-fcf-protection], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fcf-protection"])
|
||||||
AX_CHECK_LINK_FLAG([-Wl,--discard-all], [DEFAULT_LDFLAGS="$DEFAULT_LDFLAGS -Wl,--discard-all"])
|
AX_CHECK_LINK_FLAG([-Wl,--discard-all], [DEFAULT_LDFLAGS="$DEFAULT_LDFLAGS -Wl,--discard-all"])
|
||||||
@@ -110,9 +101,16 @@ AX_CHECK_LINK_FLAG([-Wl,--no-undefined], [DEFAULT_LDFLAGS="$DEFAULT_LDFLAGS -Wl,
|
|||||||
AX_CHECK_LINK_FLAG([-Wl,-z,relro,-z,now], [DEFAULT_LDFLAGS="$DEFAULT_LDFLAGS -Wl,-z,relro,-z,now"])
|
AX_CHECK_LINK_FLAG([-Wl,-z,relro,-z,now], [DEFAULT_LDFLAGS="$DEFAULT_LDFLAGS -Wl,-z,relro,-z,now"])
|
||||||
AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [DEFAULT_LDFLAGS="$DEFAULT_LDFLAGS -Wl,-z,noexecstack"])
|
AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [DEFAULT_LDFLAGS="$DEFAULT_LDFLAGS -Wl,-z,noexecstack"])
|
||||||
|
|
||||||
|
# Fortify libc calls (=3, else =2) unless the toolchain predefines it; skip
|
||||||
|
# sanitizer builds, whose interceptors want the unfortified calls.
|
||||||
|
case "$CFLAGS" in
|
||||||
|
*-fsanitize=*) ;;
|
||||||
|
*) AX_ADD_FORTIFY_SOURCE ;;
|
||||||
|
esac
|
||||||
|
|
||||||
# Force libc back into DT_NEEDED for libraries that reach it only through
|
# Force libc back into DT_NEEDED for libraries that reach it only through
|
||||||
# libhttrack (libhtsjava, the libtest callbacks), but only with a GNU-style
|
# libhttrack (the libtest callbacks), but only with a GNU-style linker; Apple
|
||||||
# linker; Apple ld rejects these flags and links libSystem unconditionally.
|
# ld rejects these flags and links libSystem unconditionally.
|
||||||
AX_CHECK_LINK_FLAG([-Wl,--push-state,--no-as-needed,-lc,--pop-state],
|
AX_CHECK_LINK_FLAG([-Wl,--push-state,--no-as-needed,-lc,--pop-state],
|
||||||
[LIBC_FORCE_LINK="-Wl,--push-state,--no-as-needed,-lc,--pop-state"])
|
[LIBC_FORCE_LINK="-Wl,--push-state,--no-as-needed,-lc,--pop-state"])
|
||||||
AC_SUBST([LIBC_FORCE_LINK])
|
AC_SUBST([LIBC_FORCE_LINK])
|
||||||
@@ -175,6 +173,10 @@ AC_CHECK_HEADERS([execinfo.h])
|
|||||||
### zlib
|
### zlib
|
||||||
CHECK_ZLIB()
|
CHECK_ZLIB()
|
||||||
|
|
||||||
|
### brotli and zstd content codings (optional)
|
||||||
|
CHECK_BROTLI()
|
||||||
|
CHECK_ZSTD()
|
||||||
|
|
||||||
### OpenSSL is explicitly enabled/disabled ?
|
### OpenSSL is explicitly enabled/disabled ?
|
||||||
AC_MSG_CHECKING(whether to enable https support)
|
AC_MSG_CHECKING(whether to enable https support)
|
||||||
AC_ARG_ENABLE([https],
|
AC_ARG_ENABLE([https],
|
||||||
@@ -310,6 +312,37 @@ AC_ARG_ENABLE([online-unit-tests],
|
|||||||
])
|
])
|
||||||
AC_SUBST(ONLINE_UNIT_TESTS,$online_unit_tests)
|
AC_SUBST(ONLINE_UNIT_TESTS,$online_unit_tests)
|
||||||
|
|
||||||
|
## libFuzzer harnesses (fuzz/); requires clang
|
||||||
|
AC_MSG_CHECKING(whether to build fuzzers)
|
||||||
|
AC_ARG_ENABLE([fuzzers],
|
||||||
|
[AS_HELP_STRING([--enable-fuzzers],[Build libFuzzer harnesses in fuzz/ (requires clang) @<:@default=no@:>@])],
|
||||||
|
[
|
||||||
|
case "${enableval}" in
|
||||||
|
no|yes)
|
||||||
|
fuzzers=$enableval
|
||||||
|
AC_MSG_RESULT($enableval)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AC_MSG_ERROR(bad value for fuzzers, expected yes/no)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
],
|
||||||
|
[
|
||||||
|
fuzzers=no
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
])
|
||||||
|
if test x"$fuzzers" = x"yes"; then
|
||||||
|
# Instrument the whole build for coverage; harnesses link -fsanitize=fuzzer.
|
||||||
|
AX_CHECK_COMPILE_FLAG([-fsanitize=fuzzer-no-link],
|
||||||
|
[DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fsanitize=fuzzer-no-link"],
|
||||||
|
[AC_MSG_ERROR([--enable-fuzzers requires libFuzzer support (clang)])])
|
||||||
|
# clang's static sanitizer runtimes clash with -Wl,--no-undefined on the .so.
|
||||||
|
if test x"$enable_shared" != x"no"; then
|
||||||
|
AC_MSG_ERROR([--enable-fuzzers requires --disable-shared])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([FUZZERS], [test x"$fuzzers" = x"yes"])
|
||||||
|
|
||||||
# Final output
|
# Final output
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Makefile
|
Makefile
|
||||||
@@ -321,5 +354,6 @@ lang/Makefile
|
|||||||
html/Makefile
|
html/Makefile
|
||||||
libtest/Makefile
|
libtest/Makefile
|
||||||
tests/Makefile
|
tests/Makefile
|
||||||
|
fuzz/Makefile
|
||||||
])
|
])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|||||||
10
debian/changelog
vendored
10
debian/changelog
vendored
@@ -1,3 +1,13 @@
|
|||||||
|
httrack (3.49.12-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release: security and crawl-correctness fixes (remote stack
|
||||||
|
overflow in Content-Type/-Encoding parsing, fuzzer-found parser over-reads,
|
||||||
|
world-readable cookies.txt, filter-pattern denial of service) plus a new
|
||||||
|
--why filter diagnostic; full list in history.txt.
|
||||||
|
* Build with _FORTIFY_SOURCE and -fstack-protector-strong.
|
||||||
|
|
||||||
|
-- Xavier Roche <xavier@debian.org> Fri, 10 Jul 2026 21:11:09 +0200
|
||||||
|
|
||||||
httrack (3.49.11-1) unstable; urgency=medium
|
httrack (3.49.11-1) unstable; urgency=medium
|
||||||
|
|
||||||
* New upstream release: crawl correctness and security fixes (network-facing
|
* New upstream release: crawl correctness and security fixes (network-facing
|
||||||
|
|||||||
2
debian/control
vendored
2
debian/control
vendored
@@ -2,7 +2,7 @@ Source: httrack
|
|||||||
Section: web
|
Section: web
|
||||||
Maintainer: Xavier Roche <roche@httrack.com>
|
Maintainer: Xavier Roche <roche@httrack.com>
|
||||||
Standards-Version: 4.7.4
|
Standards-Version: 4.7.4
|
||||||
Build-Depends: debhelper-compat (= 14), autoconf, autoconf-archive, automake, libtool, zlib1g-dev, libssl-dev
|
Build-Depends: debhelper-compat (= 14), autoconf, autoconf-archive, automake, libtool, zlib1g-dev, libssl-dev, libbrotli-dev, libzstd-dev
|
||||||
Rules-Requires-Root: no
|
Rules-Requires-Root: no
|
||||||
Homepage: http://www.httrack.com
|
Homepage: http://www.httrack.com
|
||||||
Vcs-Git: https://github.com/xroche/httrack.git
|
Vcs-Git: https://github.com/xroche/httrack.git
|
||||||
|
|||||||
5
debian/copyright
vendored
5
debian/copyright
vendored
@@ -7,9 +7,8 @@ Files: *
|
|||||||
Copyright: 1998-2026 Xavier Roche and other contributors
|
Copyright: 1998-2026 Xavier Roche and other contributors
|
||||||
License: GPL-3+
|
License: GPL-3+
|
||||||
Comment:
|
Comment:
|
||||||
The engine includes contributions from Yann Philippot (src/htsjava.c,
|
htsbasenet.h links against the system OpenSSL library (originally by Eric
|
||||||
src/htsjava.h). htsbasenet.h links against the system OpenSSL library
|
Young); no OpenSSL/SSLeay code is bundled here.
|
||||||
(originally by Eric Young); no OpenSSL/SSLeay code is bundled here.
|
|
||||||
|
|
||||||
Files: src/minizip/*
|
Files: src/minizip/*
|
||||||
Copyright: 1998-2010 Gilles Vollant
|
Copyright: 1998-2010 Gilles Vollant
|
||||||
|
|||||||
1
debian/libhttrack-dev.files
vendored
1
debian/libhttrack-dev.files
vendored
@@ -1,5 +1,4 @@
|
|||||||
usr/include/httrack
|
usr/include/httrack
|
||||||
usr/lib/*/libhttrack.{so}
|
usr/lib/*/libhttrack.{so}
|
||||||
usr/lib/*/libhtsjava.{so}
|
|
||||||
usr/share/httrack/libtest
|
usr/share/httrack/libtest
|
||||||
usr/lib/*/httrack/libtest
|
usr/lib/*/httrack/libtest
|
||||||
|
|||||||
1
debian/libhttrack3.files
vendored
1
debian/libhttrack3.files
vendored
@@ -1,3 +1,2 @@
|
|||||||
usr/lib/*/libhttrack.so.3*
|
usr/lib/*/libhttrack.so.3*
|
||||||
usr/lib/*/libhtsjava.so.3*
|
|
||||||
usr/share/httrack/templates
|
usr/share/httrack/templates
|
||||||
|
|||||||
50
fuzz/Makefile.am
Normal file
50
fuzz/Makefile.am
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# libFuzzer harnesses; built only with --enable-fuzzers (requires clang).
|
||||||
|
if FUZZERS
|
||||||
|
noinst_PROGRAMS = fuzz-charset fuzz-meta fuzz-idna fuzz-entities \
|
||||||
|
fuzz-unescape fuzz-filters fuzz-url fuzz-header fuzz-cachendx \
|
||||||
|
fuzz-htsparse
|
||||||
|
endif
|
||||||
|
|
||||||
|
AM_CPPFLAGS = \
|
||||||
|
@DEFAULT_CFLAGS@ \
|
||||||
|
@THREADS_CFLAGS@ \
|
||||||
|
@V6_FLAG@ \
|
||||||
|
@LFS_FLAG@ \
|
||||||
|
-I$(top_srcdir)/src \
|
||||||
|
-I$(top_srcdir)/src/coucal
|
||||||
|
|
||||||
|
# Static-link libhttrack.la: the internal symbols are hidden in the .so.
|
||||||
|
AM_LDFLAGS = @DEFAULT_LDFLAGS@ -fsanitize=fuzzer -static-libtool-libs
|
||||||
|
LDADD = $(top_builddir)/src/libhttrack.la $(THREADS_LIBS)
|
||||||
|
|
||||||
|
fuzz_charset_SOURCES = fuzz-charset.c fuzz.h
|
||||||
|
fuzz_meta_SOURCES = fuzz-meta.c fuzz.h
|
||||||
|
fuzz_idna_SOURCES = fuzz-idna.c fuzz.h
|
||||||
|
fuzz_entities_SOURCES = fuzz-entities.c fuzz.h
|
||||||
|
fuzz_unescape_SOURCES = fuzz-unescape.c fuzz.h
|
||||||
|
fuzz_filters_SOURCES = fuzz-filters.c fuzz.h
|
||||||
|
fuzz_url_SOURCES = fuzz-url.c fuzz.h
|
||||||
|
fuzz_header_SOURCES = fuzz-header.c fuzz.h
|
||||||
|
fuzz_cachendx_SOURCES = fuzz-cachendx.c fuzz.h
|
||||||
|
fuzz_htsparse_SOURCES = fuzz-htsparse.c fuzz.h
|
||||||
|
|
||||||
|
# List corpus files explicitly: automake does not expand EXTRA_DIST globs.
|
||||||
|
EXTRA_DIST = README.md run-fuzzers.sh \
|
||||||
|
corpus/charset/utf8.txt corpus/charset/latin1.txt corpus/charset/sjis.txt \
|
||||||
|
corpus/meta/meta-charset.html corpus/meta/meta-http-equiv.html \
|
||||||
|
corpus/idna/idna.txt corpus/idna/unicode.txt \
|
||||||
|
corpus/idna/regress-multilabel-leak.txt \
|
||||||
|
corpus/entities/entities.txt \
|
||||||
|
corpus/unescape/percent.txt \
|
||||||
|
corpus/filters/filter.bin corpus/filters/filter-size.bin \
|
||||||
|
corpus/filters/regress-empty-subject-unique.bin \
|
||||||
|
corpus/filters/redos-star-classes.bin \
|
||||||
|
corpus/filters/regress-classdepth-timeout.bin \
|
||||||
|
corpus/url/http-url.txt corpus/url/relative-path.txt \
|
||||||
|
corpus/url/regress-file-empty-path.txt corpus/url/regress-long-path-abort.txt \
|
||||||
|
corpus/header/full-response.txt corpus/header/redirect.txt \
|
||||||
|
corpus/cachendx/new-format.txt corpus/cachendx/old-format.txt \
|
||||||
|
corpus/cachendx/regress-overadvance.bin \
|
||||||
|
corpus/cachendx/regress-truncated-entry.bin \
|
||||||
|
corpus/htsparse/basic.html corpus/htsparse/script-inscript.html \
|
||||||
|
corpus/htsparse/meta-usemap.html corpus/htsparse/malformed.html
|
||||||
15
fuzz/README.md
Normal file
15
fuzz/README.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Fuzzing httrack
|
||||||
|
|
||||||
|
libFuzzer harnesses for the pure hostile-input parsers (charset/UTF-8/IDNA codecs, entity and percent decoders, wildcard filters, URL splitter). Off by default; needs clang.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./bootstrap
|
||||||
|
mkdir /var/tmp/bld-fuzz && cd /var/tmp/bld-fuzz
|
||||||
|
CC=clang CFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=all -g -O1" \
|
||||||
|
LDFLAGS="-fsanitize=address,undefined" \
|
||||||
|
bash /path/to/httrack/configure --enable-fuzzers --disable-shared
|
||||||
|
make
|
||||||
|
bash /path/to/httrack/fuzz/run-fuzzers.sh fuzz 60 # 60s per target
|
||||||
|
```
|
||||||
|
|
||||||
|
Run one target by hand: `fuzz/fuzz-url -max_total_time=300 corpusdir fuzz/corpus/url`. Seed corpora live in `corpus/<target>/`; a crash reproducer is replayed with `fuzz/fuzz-url crash-file`.
|
||||||
7
fuzz/corpus/cachendx/new-format.txt
Normal file
7
fuzz/corpus/cachendx/new-format.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
8
|
||||||
|
CACHE-1.1
|
||||||
|
28
|
||||||
|
Mon, 01 Jan 2024 00:00:00 GMT
|
||||||
|
www.example.com
|
||||||
|
/index.html
|
||||||
|
123
|
||||||
5
fuzz/corpus/cachendx/old-format.txt
Normal file
5
fuzz/corpus/cachendx/old-format.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
3
|
||||||
|
1.0
|
||||||
|
www.example.com
|
||||||
|
/page
|
||||||
|
5
|
||||||
2
fuzz/corpus/cachendx/regress-overadvance.bin
Normal file
2
fuzz/corpus/cachendx/regress-overadvance.bin
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
32768
|
||||||
|
CACHE-1.1
|
||||||
5
fuzz/corpus/cachendx/regress-truncated-entry.bin
Normal file
5
fuzz/corpus/cachendx/regress-truncated-entry.bin
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
8
|
||||||
|
CACHE-1.1
|
||||||
|
1
|
||||||
|
x
|
||||||
|
www.example.com
|
||||||
1
fuzz/corpus/charset/latin1.txt
Normal file
1
fuzz/corpus/charset/latin1.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
café naďve ¤
|
||||||
1
fuzz/corpus/charset/sjis.txt
Normal file
1
fuzz/corpus/charset/sjis.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
コンピュータ
|
||||||
BIN
fuzz/corpus/charset/utf8.txt
Normal file
BIN
fuzz/corpus/charset/utf8.txt
Normal file
Binary file not shown.
1
fuzz/corpus/entities/entities.txt
Normal file
1
fuzz/corpus/entities/entities.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
&<>A☃é¬arealentity;�
|
||||||
BIN
fuzz/corpus/filters/filter-size.bin
Normal file
BIN
fuzz/corpus/filters/filter-size.bin
Normal file
Binary file not shown.
BIN
fuzz/corpus/filters/filter.bin
Normal file
BIN
fuzz/corpus/filters/filter.bin
Normal file
Binary file not shown.
BIN
fuzz/corpus/filters/redos-star-classes.bin
Normal file
BIN
fuzz/corpus/filters/redos-star-classes.bin
Normal file
Binary file not shown.
BIN
fuzz/corpus/filters/regress-classdepth-timeout.bin
Normal file
BIN
fuzz/corpus/filters/regress-classdepth-timeout.bin
Normal file
Binary file not shown.
1
fuzz/corpus/filters/regress-empty-subject-unique.bin
Normal file
1
fuzz/corpus/filters/regress-empty-subject-unique.bin
Normal file
@@ -0,0 +1 @@
|
|||||||
|
**((
|
||||||
10
fuzz/corpus/header/full-response.txt
Normal file
10
fuzz/corpus/header/full-response.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
HTTP/1.1 200 OK
|
||||||
|
Content-Type: text/html; charset=utf-8
|
||||||
|
Content-Length: 1234
|
||||||
|
Content-Encoding: gzip
|
||||||
|
Last-Modified: Mon, 01 Jan 2024 00:00:00 GMT
|
||||||
|
Etag: "abc"
|
||||||
|
Location: http://example.com/x
|
||||||
|
Set-Cookie: ID=42; path=/; domain=.example.com
|
||||||
|
Content-Range: bytes 0-99/100
|
||||||
|
Transfer-Encoding: chunked
|
||||||
3
fuzz/corpus/header/redirect.txt
Normal file
3
fuzz/corpus/header/redirect.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
HTTP/1.0 301 Moved
|
||||||
|
Location: /elsewhere
|
||||||
|
Content-Disposition: attachment; filename="a.pdf"
|
||||||
15
fuzz/corpus/htsparse/basic.html
Normal file
15
fuzz/corpus/htsparse/basic.html
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html><head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<base href="http://example.com/dir/">
|
||||||
|
<title>Seed</title>
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
<script src="app.js"></script>
|
||||||
|
</head><body>
|
||||||
|
<h1>Hi</h1>
|
||||||
|
<a href="page2.html">next</a>
|
||||||
|
<a href="http://other.example.org/x?y=1#frag">abs</a>
|
||||||
|
<img src="pic.png" srcset="a.png 1x, b.png 2x">
|
||||||
|
<script>var u="inline.html"; document.write('<a href="gen.html">g</a>');</script>
|
||||||
|
<form action="/cgi/submit"><input name="q"></form>
|
||||||
|
</body></html>
|
||||||
8
fuzz/corpus/htsparse/malformed.html
Normal file
8
fuzz/corpus/htsparse/malformed.html
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<a href="unclosed.html
|
||||||
|
<img src='mix"ed.png>
|
||||||
|
<a href=noquote.html >bare</a>
|
||||||
|
<!-- comment <a href="incomment.html"> -->
|
||||||
|
<a href="tab newline
|
||||||
|
.html">wsp</a>
|
||||||
|
<script>unterminated "string and <a href=
|
||||||
|
<a href=
|
||||||
11
fuzz/corpus/htsparse/meta-usemap.html
Normal file
11
fuzz/corpus/htsparse/meta-usemap.html
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<html><head>
|
||||||
|
<meta http-equiv="refresh" content="0; url=redir.html">
|
||||||
|
<base href="http://h/b/">
|
||||||
|
<link rel="alternate" href="feed.xml">
|
||||||
|
</head><body background="page-bg.jpg">
|
||||||
|
<img src="map.png" usemap="#m">
|
||||||
|
<map name="m"><area href="area1.html" coords="0,0,10,10"></map>
|
||||||
|
<applet code="A.class" codebase="applets/"><param name="src" value="p.dat"></applet>
|
||||||
|
<object data="o.swf"><embed src="e.svg"></object>
|
||||||
|
<a href="http://ent/e.html">entity</a>
|
||||||
|
</body></html>
|
||||||
13
fuzz/corpus/htsparse/script-inscript.html
Normal file
13
fuzz/corpus/htsparse/script-inscript.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<html><body>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var a = "http://x/1.html", b = 'q\'uote', c = "/*not*/comment";
|
||||||
|
// line "with" quotes and http://y/2.html
|
||||||
|
/* block 'with' <a href="notparsed"> */
|
||||||
|
var re = /a\/b\//g;
|
||||||
|
document.write('<img src="w1.png">');
|
||||||
|
document.writeln("<a href='w2.html'>k</a>");
|
||||||
|
element.onclick = "location='onh.html'";
|
||||||
|
</script>
|
||||||
|
<a href="after.html" onmouseover="go('ev.html')">x</a>
|
||||||
|
<div style="background:url(bg.png)">z</div>
|
||||||
|
</body></html>
|
||||||
1
fuzz/corpus/idna/idna.txt
Normal file
1
fuzz/corpus/idna/idna.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
xn--bcher-kva.example.com
|
||||||
1
fuzz/corpus/idna/regress-multilabel-leak.txt
Normal file
1
fuzz/corpus/idna/regress-multilabel-leak.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
büchev.例åbücheple
|
||||||
1
fuzz/corpus/idna/unicode.txt
Normal file
1
fuzz/corpus/idna/unicode.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
bücher.例子.example
|
||||||
1
fuzz/corpus/meta/meta-charset.html
Normal file
1
fuzz/corpus/meta/meta-charset.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<html><head><meta charset="utf-8"></head><body>x</body></html>
|
||||||
1
fuzz/corpus/meta/meta-content-first.html
Normal file
1
fuzz/corpus/meta/meta-content-first.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<meta content="text/html; charset=gb2312" http-equiv="content-type">
|
||||||
1
fuzz/corpus/meta/meta-http-equiv.html
Normal file
1
fuzz/corpus/meta/meta-http-equiv.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
1
fuzz/corpus/meta/meta-truncated.html
Normal file
1
fuzz/corpus/meta/meta-truncated.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<meta charset='utf-8
|
||||||
1
fuzz/corpus/meta/meta-unquoted.html
Normal file
1
fuzz/corpus/meta/meta-unquoted.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<meta charset = utf-8 />
|
||||||
1
fuzz/corpus/unescape/percent.txt
Normal file
1
fuzz/corpus/unescape/percent.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
%41%zz%%20%c3%a9+%2e%2e%2f
|
||||||
1
fuzz/corpus/url/http-url.txt
Normal file
1
fuzz/corpus/url/http-url.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
http://user:pass@www.example.com:8080/a/b/../c/./d.html?q=1#frag
|
||||||
1
fuzz/corpus/url/regress-file-empty-path.txt
Normal file
1
fuzz/corpus/url/regress-file-empty-path.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
file://
|
||||||
1
fuzz/corpus/url/regress-long-path-abort.txt
Normal file
1
fuzz/corpus/url/regress-long-path-abort.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ftpumŠ[/../e0O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/.../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/.¿ù../O/../9O_imÙ<6D>Š<EFBFBD>W/../_/../../e0O/../f9O_./f9O_i<5F>W/../O/../90O/./e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_imÙ<6D>Š<EFBFBD>W/../O/.._i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_i/../O/../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W//O/../f9O_i../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/.../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/.¿ù../O/../9O_imÙ<6D>Š<EFBFBD>W/../_/../../e0O/../f9O_./f9O_i<5F>W/../O/../90O/./e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_imÙ<6D>Š<EFBFBD>W/../O/.._i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_i/../O/../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W//O/../f9O_i<5F>W/.¿ù../O/../9O_imÙ<6D>Š<EFBFBD>W/../_/../../e0O/../f9O_./f9O_i<5F>W/../O/../90O/./e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_imÙ<6D>Š<EFBFBD>W/../O/.._f9O_i../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/.../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/.¿ù../O/../9O_imÙ<6D>Š<EFBFBD>W/../_/../../e0O/../f9O_./f9O_i<5F>W/../O/../90O/./e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_imÙ<6D>Š<EFBFBD>W/../O/.._i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_i/../O/../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W//O/../f9O_i<5F>W/.¿ù../O/../9O_imÙ<6D>Š<EFBFBD>W/../_/../../e0O/../f9O_./f9O_i<5F>W/../O/../90O/./e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_imÙ<6D>Š<EFBFBD>W/../O/.._i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_i/../O/../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/i<>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_i/../O/../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_im<69>W/.¿ù../O/../9O_imÙ<6D>Š<EFBFBD>W/../_/../../e0O/../f9O_./f9O_i<5F>W/../O/../90O/./e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_imÙ<6D>Š<EFBFBD>W/../O/.._i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9O_i/../O/../f9O_i<5F>W/../O/../90O/../itpumÙ/ftpumŠ[/../e0O/../itpumÙ<6D>Š[/../O/../f9O_i<5F>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/../f9OmÙ<6D>Š<EFBFBD>W/../O/../9O_imÙ<6D>Š<EFBFBD>W/../O/..O_imÙ<6D>Š<EFBFBD>W/../O/../../e0O/9O_imÙ<6D>Š<EFBFBD>W/../O/../
|
||||||
1
fuzz/corpus/url/relative-path.txt
Normal file
1
fuzz/corpus/url/relative-path.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ftp://ftp.example.com/pub/../file.txt
|
||||||
65
fuzz/fuzz-cachendx.c
Normal file
65
fuzz/fuzz-cachendx.c
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 2026 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the cache-index (.ndx) parser: a corrupt or truncated index must not
|
||||||
|
walk the length-prefixed cache_brstr/cache_binput scan past the buffer.
|
||||||
|
Mirrors the -#C cache-listing scan (htscoremain.c). */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "htscache.h"
|
||||||
|
#include "htslib.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
char *buf = fuzz_strdup(data, size);
|
||||||
|
const char *const end = buf + size;
|
||||||
|
char firstline[256];
|
||||||
|
char *a = buf;
|
||||||
|
|
||||||
|
/* header: two length-prefixed fields (version, last-modified) */
|
||||||
|
a += cache_brstr(a, firstline, sizeof(firstline));
|
||||||
|
a += cache_brstr(a, firstline, sizeof(firstline));
|
||||||
|
|
||||||
|
/* body: newline-delimited host/file/position triples; the length-prefixed
|
||||||
|
scan must stay inside the buffer */
|
||||||
|
while (a != NULL && a < end) {
|
||||||
|
char BIGSTK line[HTS_URLMAXSIZE * 2];
|
||||||
|
char linepos[256];
|
||||||
|
int pos;
|
||||||
|
|
||||||
|
a = strchr(a + 1, '\n');
|
||||||
|
if (a == NULL)
|
||||||
|
break;
|
||||||
|
a++;
|
||||||
|
a += cache_binput(a, end, line, HTS_URLMAXSIZE);
|
||||||
|
a += cache_binput(a, end, line + strlen(line), HTS_URLMAXSIZE);
|
||||||
|
a += cache_binput(a, end, linepos, 200);
|
||||||
|
sscanf(linepos, "%d", &pos);
|
||||||
|
(void) pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
freet(buf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
84
fuzz/fuzz-charset.c
Normal file
84
fuzz/fuzz-charset.c
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 1998 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the charset codecs: hts_convertStringToUTF8/FromUTF8 and the
|
||||||
|
UTF-8/UCS4 primitives (htscharset.c). First input byte picks the charset. */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "htscharset.h"
|
||||||
|
|
||||||
|
static const char *const charsets[] = {
|
||||||
|
"utf-8", "iso-8859-1", "iso-8859-2", "iso-8859-15", "windows-1252",
|
||||||
|
"us-ascii", "shift_jis", "euc-jp", "iso-2022-jp", "gb2312",
|
||||||
|
"big5", "euc-kr", "koi8-r", "utf-16", "unknown-charset",
|
||||||
|
};
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
const char *charset;
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
return 0;
|
||||||
|
charset = charsets[data[0] % (sizeof(charsets) / sizeof(charsets[0]))];
|
||||||
|
data++, size--;
|
||||||
|
s = fuzz_strdup(data, size);
|
||||||
|
|
||||||
|
{
|
||||||
|
char *utf8 = hts_convertStringToUTF8(s, size, charset);
|
||||||
|
freet(utf8);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
char *enc = hts_convertStringFromUTF8(s, size, charset);
|
||||||
|
freet(enc);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
size_t nChars = 0;
|
||||||
|
hts_UCS4 *ucs = hts_convertUTF8StringToUCS4(s, size, &nChars);
|
||||||
|
|
||||||
|
if (ucs != NULL) {
|
||||||
|
char *back = hts_convertUCS4StringToUTF8(ucs, nChars);
|
||||||
|
freet(back);
|
||||||
|
freet(ucs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
size_t i = 0;
|
||||||
|
|
||||||
|
while (i < size) {
|
||||||
|
hts_UCS4 uc = 0;
|
||||||
|
const size_t nr = hts_readUTF8(s + i, size - i, &uc);
|
||||||
|
char out[8];
|
||||||
|
|
||||||
|
if (nr == 0)
|
||||||
|
break;
|
||||||
|
hts_writeUTF8(uc, out, sizeof(out));
|
||||||
|
i += nr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
freet(s);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
51
fuzz/fuzz-entities.c
Normal file
51
fuzz/fuzz-entities.c
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 1998 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the HTML entity decoder (htsencoding.c). First input byte picks the
|
||||||
|
destination size, so truncation bounds get exercised too. */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "htsencoding.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
static const size_t dsizes[] = {1, 2, 8, 64, 4096};
|
||||||
|
size_t dsize;
|
||||||
|
char *src, *dest;
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
return 0;
|
||||||
|
dsize = dsizes[data[0] % (sizeof(dsizes) / sizeof(dsizes[0]))];
|
||||||
|
data++, size--;
|
||||||
|
src = fuzz_strdup(data, size);
|
||||||
|
dest = malloct(dsize);
|
||||||
|
|
||||||
|
(void) hts_unescapeEntities(src, dest, dsize);
|
||||||
|
(void) hts_unescapeEntitiesWithCharset(src, dest, dsize, "iso-8859-1");
|
||||||
|
|
||||||
|
freet(dest);
|
||||||
|
freet(src);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
65
fuzz/fuzz-filters.c
Normal file
65
fuzz/fuzz-filters.c
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 1998 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the wildcard filter matcher (htsfilters.c; #148 bracket-range OOB was
|
||||||
|
here). Input splits on the first NUL: pattern, then subject string. */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "htsfilters.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
char *buf = fuzz_strdup(data, size);
|
||||||
|
const char *joker = buf;
|
||||||
|
const uint8_t *sep = memchr(data, '\0', size);
|
||||||
|
/* subject in its own allocation so ASan bounds it apart from the pattern */
|
||||||
|
char *nom = sep != NULL ? fuzz_strdup(sep + 1, (data + size) - (sep + 1))
|
||||||
|
: fuzz_strdup(data + size, 0);
|
||||||
|
|
||||||
|
(void) strjoker(nom, joker, NULL, NULL);
|
||||||
|
{
|
||||||
|
LLint sz = (LLint) size;
|
||||||
|
int size_flag = 0;
|
||||||
|
|
||||||
|
(void) strjoker(nom, joker, &sz, &size_flag);
|
||||||
|
}
|
||||||
|
(void) strjokerfind(nom, joker);
|
||||||
|
{
|
||||||
|
char *filter = malloct(strlen(joker) + 2);
|
||||||
|
char *filters[1];
|
||||||
|
LLint sz = (LLint) size;
|
||||||
|
int size_flag = 0, depth = 0;
|
||||||
|
|
||||||
|
filter[0] = '-';
|
||||||
|
memcpy(filter + 1, joker, strlen(joker) + 1);
|
||||||
|
filters[0] = filter;
|
||||||
|
(void) fa_strjoker(0, filters, 1, nom, &sz, &size_flag, &depth);
|
||||||
|
freet(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
freet(nom);
|
||||||
|
freet(buf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
74
fuzz/fuzz-header.c
Normal file
74
fuzz/fuzz-header.c
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 2026 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the HTTP response-header parser (htslib.c): treatfirstline on the
|
||||||
|
status line, treathead on each following header. Both consume raw bytes
|
||||||
|
off the wire and copy fields into fixed htsblk buffers; treathead also
|
||||||
|
mutates its line in place and drives cookie parsing. */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "htslib.h"
|
||||||
|
#include "htsbauth.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
char *buf = fuzz_strdup(data, size);
|
||||||
|
htsblk r;
|
||||||
|
t_cookie *cookie = calloct(1, sizeof(*cookie));
|
||||||
|
char *line = malloct(size + 1);
|
||||||
|
char *p = buf;
|
||||||
|
int first = 1;
|
||||||
|
|
||||||
|
memset(&r, 0, sizeof(r));
|
||||||
|
cookie->max_len = (int) sizeof(cookie->data);
|
||||||
|
r.location = malloct(HTS_URLMAXSIZE * 2);
|
||||||
|
r.location[0] = '\0';
|
||||||
|
|
||||||
|
/* feed one header line at a time, as the receive loop does */
|
||||||
|
while (p != NULL && *p != '\0') {
|
||||||
|
char *nl = strchr(p, '\n');
|
||||||
|
size_t n = (nl != NULL) ? (size_t) (nl - p) : strlen(p);
|
||||||
|
size_t i, len = 0;
|
||||||
|
|
||||||
|
/* binput drops every '\r' on the wire; mirror it */
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
if (p[i] != '\r')
|
||||||
|
line[len++] = p[i];
|
||||||
|
line[len] = '\0';
|
||||||
|
if (first) {
|
||||||
|
treatfirstline(&r, line);
|
||||||
|
first = 0;
|
||||||
|
} else {
|
||||||
|
treathead(cookie, "www.example.com", "/", &r, line);
|
||||||
|
}
|
||||||
|
p = (nl != NULL) ? nl + 1 : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
freet(r.location);
|
||||||
|
freet(line);
|
||||||
|
freet(cookie);
|
||||||
|
freet(buf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
175
fuzz/fuzz-htsparse.c
Normal file
175
fuzz/fuzz-htsparse.c
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 2026 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the real htsparse() over a mocked engine: the minimal crawl state
|
||||||
|
httpmirror() builds, then a page walked through the parser and discarded. The
|
||||||
|
str/stre wiring below mirrors htsparse()'s call site in htscore.c; update it
|
||||||
|
in lockstep if those structs gain a field the parser reads. */
|
||||||
|
#include "fuzz.h"
|
||||||
|
|
||||||
|
#include "httrack-library.h"
|
||||||
|
#include "htscore.h"
|
||||||
|
#include "htsback.h"
|
||||||
|
#include "htshash.h"
|
||||||
|
#include "htsrobots.h"
|
||||||
|
#include "htsparse.h"
|
||||||
|
#include "htsmodules.h"
|
||||||
|
#include "coucal.h"
|
||||||
|
|
||||||
|
/* htsparse ignores str.addLink on the internal parse; stub it. */
|
||||||
|
static int fuzz_addlink(htsmoduleStruct *str, char *link) {
|
||||||
|
(void) str;
|
||||||
|
(void) link;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
static int inited = 0;
|
||||||
|
|
||||||
|
httrackp *opt;
|
||||||
|
cache_back cache;
|
||||||
|
hash_struct hash;
|
||||||
|
robots_wizard robots;
|
||||||
|
struct_back *sback;
|
||||||
|
char **filters = NULL;
|
||||||
|
int filptr = 0;
|
||||||
|
|
||||||
|
htsblk r;
|
||||||
|
htsmoduleStruct str;
|
||||||
|
htsmoduleStructExtended stre;
|
||||||
|
int ptr, error = 0, store_errpage = 0;
|
||||||
|
int makeindex_done = 0, makeindex_links = 0;
|
||||||
|
FILE *makeindex_fp = NULL;
|
||||||
|
char makeindex_firstlink[HTS_URLMAXSIZE * 2] = "";
|
||||||
|
LLint stat_fragment = 0, makestat_total = 0;
|
||||||
|
int makestat_lnk = 0;
|
||||||
|
char base[HTS_URLMAXSIZE * 2] = "";
|
||||||
|
char codebase[HTS_URLMAXSIZE * 2] = "";
|
||||||
|
char err_msg[1024] = "";
|
||||||
|
|
||||||
|
if (!inited) {
|
||||||
|
hts_init();
|
||||||
|
inited = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
opt = hts_create_opt();
|
||||||
|
opt->log = opt->errlog = NULL;
|
||||||
|
opt->robots = 0;
|
||||||
|
|
||||||
|
memset(&cache, 0, sizeof(cache));
|
||||||
|
cache.type = 0; /* no on-disk cache */
|
||||||
|
cache.hashtable = coucal_new(0);
|
||||||
|
cache.cached_tests = coucal_new(0);
|
||||||
|
coucal_value_is_malloc(cache.cached_tests, 1);
|
||||||
|
|
||||||
|
memset(&robots, 0, sizeof(robots));
|
||||||
|
strcpybuff(robots.adr, "!");
|
||||||
|
opt->robotsptr = &robots;
|
||||||
|
|
||||||
|
opt->maxfilter = maximum(opt->maxfilter, 128);
|
||||||
|
filters_init(&filters, opt->maxfilter, 0);
|
||||||
|
opt->filters.filters = &filters;
|
||||||
|
opt->filters.filptr = &filptr;
|
||||||
|
|
||||||
|
opt->hash = &hash;
|
||||||
|
hts_record_init(opt);
|
||||||
|
hash_init(opt, &hash, opt->urlhack);
|
||||||
|
hash.liens = (const lien_url *const *const *) &opt->liens;
|
||||||
|
|
||||||
|
sback = back_new(opt, opt->maxsoc * 32 + 1024);
|
||||||
|
|
||||||
|
/* ptr=1 (index 1 is the parsed page) selects full HTML parsing + the
|
||||||
|
rewriter; urladr()/urlfil()/savename() alias heap(ptr), save=/dev/null. */
|
||||||
|
hts_record_link(opt, "example.com", "/", "/dev/null", "", "", NULL);
|
||||||
|
hts_record_link(opt, "example.com", "/index.html", "/dev/null", "", "", NULL);
|
||||||
|
ptr = 1;
|
||||||
|
|
||||||
|
/* NUL-terminated in a size+1 alloc: htsparse one-past-reads onto the NUL. */
|
||||||
|
hts_init_htsblk(&r);
|
||||||
|
r.statuscode = 200;
|
||||||
|
r.size = (LLint) size;
|
||||||
|
r.adr = malloct(size + 1);
|
||||||
|
if (size)
|
||||||
|
memcpy(r.adr, data, size);
|
||||||
|
r.adr[size] = '\0';
|
||||||
|
strcpybuff(r.contenttype, "text/html");
|
||||||
|
|
||||||
|
memset(&str, 0, sizeof(str));
|
||||||
|
memset(&stre, 0, sizeof(stre));
|
||||||
|
str.err_msg = err_msg;
|
||||||
|
str.filename = heap(ptr)->sav;
|
||||||
|
str.mime = r.contenttype;
|
||||||
|
str.url_host = heap(ptr)->adr;
|
||||||
|
str.url_file = heap(ptr)->fil;
|
||||||
|
str.size = (int) r.size;
|
||||||
|
str.addLink = fuzz_addlink;
|
||||||
|
str.opt = opt;
|
||||||
|
str.sback = sback;
|
||||||
|
str.cache = &cache;
|
||||||
|
str.hashptr = &hash;
|
||||||
|
str.numero_passe = 0;
|
||||||
|
str.ptr_ = &ptr;
|
||||||
|
str.page_charset_ = NULL;
|
||||||
|
|
||||||
|
stre.r_ = &r;
|
||||||
|
stre.error_ = &error;
|
||||||
|
stre.exit_xh_ = &opt->state.exit_xh;
|
||||||
|
stre.store_errpage_ = &store_errpage;
|
||||||
|
stre.base = base;
|
||||||
|
stre.codebase = codebase;
|
||||||
|
stre.filters_ = &filters;
|
||||||
|
stre.filptr_ = &filptr;
|
||||||
|
stre.robots_ = &robots;
|
||||||
|
stre.hash_ = &hash;
|
||||||
|
stre.makeindex_done_ = &makeindex_done;
|
||||||
|
stre.makeindex_fp_ = &makeindex_fp;
|
||||||
|
stre.makeindex_links_ = &makeindex_links;
|
||||||
|
stre.makeindex_firstlink_ = makeindex_firstlink;
|
||||||
|
stre.template_header_ = "";
|
||||||
|
stre.template_body_ = "";
|
||||||
|
stre.template_footer_ = "";
|
||||||
|
stre.stat_fragment_ = &stat_fragment;
|
||||||
|
stre.makestat_time = 0;
|
||||||
|
stre.makestat_fp = NULL;
|
||||||
|
stre.makestat_total_ = &makestat_total;
|
||||||
|
stre.makestat_lnk_ = &makestat_lnk;
|
||||||
|
stre.maketrack_fp = NULL;
|
||||||
|
|
||||||
|
(void) htsparse(&str, &stre);
|
||||||
|
|
||||||
|
freet(r.adr);
|
||||||
|
back_delete_all(opt, &cache, sback);
|
||||||
|
back_free(&sback);
|
||||||
|
hash_free(&hash);
|
||||||
|
coucal_delete(&cache.hashtable);
|
||||||
|
coucal_delete(&cache.cached_tests);
|
||||||
|
checkrobots_free(&robots);
|
||||||
|
if (filters != NULL) {
|
||||||
|
if (filters[0] != NULL)
|
||||||
|
freet(filters[0]);
|
||||||
|
freet(filters);
|
||||||
|
}
|
||||||
|
hts_record_free(opt);
|
||||||
|
hts_free_opt(opt);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
47
fuzz/fuzz-idna.c
Normal file
47
fuzz/fuzz-idna.c
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 1998 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the IDNA/punycode codec (htscharset.c, CVE-prone lineage). */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "htscharset.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
char *s = fuzz_strdup(data, size);
|
||||||
|
|
||||||
|
{
|
||||||
|
char *idna = hts_convertStringUTF8ToIDNA(s, size);
|
||||||
|
freet(idna);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
char *utf8 = hts_convertStringIDNAToUTF8(s, size);
|
||||||
|
freet(utf8);
|
||||||
|
}
|
||||||
|
(void) hts_isStringIDNA(s, size);
|
||||||
|
|
||||||
|
freet(s);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
40
fuzz/fuzz-meta.c
Normal file
40
fuzz/fuzz-meta.c
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 1998 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz hts_getCharsetFromMeta (htscharset.c): scans raw attacker HTML for a
|
||||||
|
<meta> charset declaration. */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "htscharset.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
char *html = fuzz_strdup(data, size);
|
||||||
|
char *charset = hts_getCharsetFromMeta(html, size);
|
||||||
|
|
||||||
|
freet(charset);
|
||||||
|
freet(html);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
53
fuzz/fuzz-unescape.c
Normal file
53
fuzz/fuzz-unescape.c
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 1998 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the URL percent-decoders (htslib.c). First input byte picks the
|
||||||
|
output buffer size, so the bounded-copy contract is exercised. */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "httrack-library.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
static const size_t bsizes[] = {1, 2, 16, 256, 8192};
|
||||||
|
size_t bsize;
|
||||||
|
char *s, *catbuff;
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
return 0;
|
||||||
|
bsize = bsizes[data[0] % (sizeof(bsizes) / sizeof(bsizes[0]))];
|
||||||
|
data++, size--;
|
||||||
|
s = fuzz_strdup(data, size);
|
||||||
|
catbuff = malloct(bsize);
|
||||||
|
|
||||||
|
(void) unescape_http(catbuff, bsize, s);
|
||||||
|
(void) unescape_http_unharm(catbuff, bsize, s, 0);
|
||||||
|
(void) unescape_http_unharm(catbuff, bsize, s, 1);
|
||||||
|
unescape_amp(s);
|
||||||
|
|
||||||
|
freet(catbuff);
|
||||||
|
freet(s);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
49
fuzz/fuzz-url.c
Normal file
49
fuzz/fuzz-url.c
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/* ------------------------------------------------------------ */
|
||||||
|
/*
|
||||||
|
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||||
|
Copyright (C) 1998 Xavier Roche and other contributors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Ethical use: we kindly ask that you NOT use this software to harvest email
|
||||||
|
addresses or to collect any other private information about people. Doing so
|
||||||
|
would dishonor our work and waste the many hours we have spent on it.
|
||||||
|
|
||||||
|
Please visit our Website: http://www.httrack.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Fuzz the URL splitter and path normalizer (htslib.c): ident_url_absolute
|
||||||
|
is the first parser to touch a raw URL; fil_simplifie collapses ./ and ../
|
||||||
|
in place. */
|
||||||
|
#include "fuzz.h"
|
||||||
|
#include "htscore.h"
|
||||||
|
#include "htslib.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||||
|
char *s = fuzz_strdup(data, size);
|
||||||
|
lien_adrfil *af = calloct(1, sizeof(*af));
|
||||||
|
/* fil_simplifie rewrites in place and may grow an empty path to "./" */
|
||||||
|
char *path = malloct(size + 3);
|
||||||
|
|
||||||
|
(void) ident_url_absolute(s, af);
|
||||||
|
memcpy(path, s, size + 1);
|
||||||
|
fil_simplifie(path);
|
||||||
|
|
||||||
|
freet(path);
|
||||||
|
freet(af);
|
||||||
|
freet(s);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -25,46 +25,27 @@ would dishonor our work and waste the many hours we have spent on it.
|
|||||||
Please visit our Website: http://www.httrack.com
|
Please visit our Website: http://www.httrack.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* ------------------------------------------------------------ */
|
/* Shared helpers for the libFuzzer harnesses. */
|
||||||
/* File: Java classes parser .h */
|
#ifndef FUZZ_H
|
||||||
/* Author: Yann Philippot */
|
#define FUZZ_H
|
||||||
/* ------------------------------------------------------------ */
|
|
||||||
|
|
||||||
#ifndef HTSJAVA_DEFH
|
#define HTS_INTERNAL_BYTECODE
|
||||||
#define HTSJAVA_DEFH
|
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#ifndef HTS_DEF_FWSTRUCT_JAVA_HEADER
|
#include "htsbase.h"
|
||||||
#define HTS_DEF_FWSTRUCT_JAVA_HEADER
|
|
||||||
typedef struct JAVA_HEADER JAVA_HEADER;
|
|
||||||
#endif
|
|
||||||
/* 10-byte on-disk .class header image, fread() directly: fields need exact
|
|
||||||
widths (LP64's 8-byte 'unsigned long' magic never matched 0xCAFEBABE). */
|
|
||||||
struct JAVA_HEADER {
|
|
||||||
uint32_t magic;
|
|
||||||
uint16_t minor;
|
|
||||||
uint16_t major;
|
|
||||||
uint16_t count;
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifndef HTS_DEF_FWSTRUCT_RESP_STRUCT
|
/* Heap NUL-terminated copy of the fuzzer input, so ASan bounds every read. */
|
||||||
#define HTS_DEF_FWSTRUCT_RESP_STRUCT
|
static char *fuzz_strdup(const uint8_t *data, size_t size) {
|
||||||
typedef struct RESP_STRUCT RESP_STRUCT;
|
char *s = malloct(size + 1);
|
||||||
#endif
|
|
||||||
struct RESP_STRUCT {
|
|
||||||
int file_position;
|
|
||||||
//
|
|
||||||
unsigned int index1;
|
|
||||||
unsigned int type;
|
|
||||||
char name[1024];
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Library internal definictions */
|
memcpy(s, data, size);
|
||||||
#ifdef HTS_INTERNAL_BYTECODE
|
s[size] = '\0';
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
EXTERNAL_FUNCTION int hts_plug_java(httrackp * opt, const char *argv);
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
41
fuzz/run-fuzzers.sh
Executable file
41
fuzz/run-fuzzers.sh
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Drive every built harness against its seed corpus.
|
||||||
|
# run-fuzzers.sh <build-fuzz-dir> check deterministic replay (CI smoke)
|
||||||
|
# run-fuzzers.sh <build-fuzz-dir> [seconds] timed mutation run (discovery)
|
||||||
|
# Replay is crash/leak-only and never mutates; the per-unit -timeout guards
|
||||||
|
# both modes against pathological slowdowns (e.g. pre-#501 strjoker).
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
srcdir=$(cd "$(dirname "$0")" && pwd)
|
||||||
|
bld=${1:?usage: run-fuzzers.sh <build-fuzz-dir> [check|seconds]}
|
||||||
|
mode=${2:-20}
|
||||||
|
|
||||||
|
status=0
|
||||||
|
for f in "$bld"/fuzz-*; do
|
||||||
|
if [ ! -f "$f" ] || [ ! -r "$f" ]; then continue; fi
|
||||||
|
case "$f" in *.o | *.c | *.dSYM) continue ;; esac
|
||||||
|
name=$(basename "$f")
|
||||||
|
corpus="$srcdir/corpus/${name#fuzz-}"
|
||||||
|
if [ "$mode" = "check" ]; then
|
||||||
|
echo "=== $name (replay) ==="
|
||||||
|
[ -d "$corpus" ] || continue
|
||||||
|
if ! "$f" -runs=0 -timeout=25 -rss_limit_mb=2048 "$corpus"; then
|
||||||
|
echo "*** $name FAILED on its corpus" >&2
|
||||||
|
status=1
|
||||||
|
fi
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
work=$(mktemp -d)
|
||||||
|
args=("$work")
|
||||||
|
[ -d "$corpus" ] && args+=("$corpus")
|
||||||
|
echo "=== $name (${mode}s) ==="
|
||||||
|
if ! "$f" -max_total_time="$mode" -timeout=25 -rss_limit_mb=2048 \
|
||||||
|
-artifact_prefix="$work/" -print_final_stats=1 "${args[@]}"; then
|
||||||
|
echo "*** $name FAILED; artifacts:" >&2
|
||||||
|
ls -l "$work" >&2
|
||||||
|
status=1
|
||||||
|
else
|
||||||
|
rm -rf "$work"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit $status
|
||||||
17
history.txt
17
history.txt
@@ -4,6 +4,23 @@ HTTrack Website Copier release history:
|
|||||||
|
|
||||||
This file lists all changes and fixes that have been made for HTTrack
|
This file lists all changes and fixes that have been made for HTTrack
|
||||||
|
|
||||||
|
3.49-12
|
||||||
|
+ New: --why explains which filter rule accepts or rejects a given URL, then exits (#505)
|
||||||
|
+ Fixed: links carrying raw UTF-8 bytes were fetched double-encoded and 404'd (#516)
|
||||||
|
+ Fixed: an uncompressed body mislabeled as gzip no longer loses the page (#515)
|
||||||
|
+ Fixed: remote stack overflow and uninitialized read in Content-Type/-Encoding parsing (#506)
|
||||||
|
+ Fixed: several over-reads and a leak in the filter, URL and IDNA parsers (#499)
|
||||||
|
+ Fixed: bound the cache-index (.ndx) parser to its buffer (#507)
|
||||||
|
+ Fixed: catastrophic backtracking on '*'-heavy filter patterns (#513)
|
||||||
|
+ Fixed: cookies.txt was created world-readable (#511)
|
||||||
|
+ Fixed: a single corrupt cache entry no longer aborts the whole mirror (#494)
|
||||||
|
+ Fixed: cache-reconcile policy was broken for zip caches (#491, #493, #495)
|
||||||
|
+ Fixed: cancelling a crawl mid type-check no longer orphans .delayed placeholders (#496)
|
||||||
|
+ Fixed: detect URLs after the first inline script and in mid-tag attributes (#497)
|
||||||
|
+ Changed: build with _FORTIFY_SOURCE and -fstack-protector-strong (#504)
|
||||||
|
+ Changed: removed the pre-3.31 (.dat/.ndx) cache import (#512)
|
||||||
|
+ Changed: multiple internal hardening and build improvements (libFuzzer harnesses, CodeQL, dead-code removal)
|
||||||
|
|
||||||
3.49-11
|
3.49-11
|
||||||
+ New: parse robots.txt Allow rules and path wildcards per RFC 9309 (#452)
|
+ New: parse robots.txt Allow rules and path wildcards per RFC 9309 (#452)
|
||||||
+ New: advertise deflate in Accept-Encoding and decode deflate responses (#450)
|
+ New: advertise deflate in Accept-Encoding and decode deflate responses (#450)
|
||||||
|
|||||||
@@ -609,10 +609,9 @@ most mirrors do work. We still are working to improve the mirror quality of HTTr
|
|||||||
<br>
|
<br>
|
||||||
|
|
||||||
</a><a NAME="Q2b">Q: <strong>Some Java applets do not work properly!</strong><br>
|
</a><a NAME="Q2b">Q: <strong>Some Java applets do not work properly!</strong><br>
|
||||||
A: <em>Java applets may not work in some cases, for example if HTTrack failed to detect all included classes
|
A: <em>Java applets may not work in some cases, because HTTrack does not parse compiled class files to find
|
||||||
or files called within the class file. Sometimes, Java applets need to be online, because remote files are
|
the resources they load. Java applets often need to be online anyway, since remote files are fetched directly
|
||||||
directly caught. Finally, the site structure can be incompatible with the class (always try to keep the original site structure
|
at runtime.<br>
|
||||||
when you want to get Java classes)<br>
|
|
||||||
If there is no way to make some classes work properly, you can exclude them with the filters.
|
If there is no way to make some classes work properly, you can exclude them with the filters.
|
||||||
They will be available, but only online.
|
They will be available, but only online.
|
||||||
</em>
|
</em>
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ Build options:
|
|||||||
Spider options:
|
Spider options:
|
||||||
bN accept cookies in cookies.txt (0=do not accept,* 1=accept) (--cookies[=N])
|
bN accept cookies in cookies.txt (0=do not accept,* 1=accept) (--cookies[=N])
|
||||||
u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always) (--check-type[=N])
|
u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always) (--check-type[=N])
|
||||||
j *parse Java Classes (j0 don't parse) (--parse-java[=N])
|
j *parse scripts (j0 don't parse) (--parse-java[=N])
|
||||||
sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) (--robots[=N])
|
sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) (--robots[=N])
|
||||||
%h force HTTP/1.0 requests (reduce update features, only for old servers or proxies) (--http-10)
|
%h force HTTP/1.0 requests (reduce update features, only for old servers or proxies) (--http-10)
|
||||||
%B tolerant requests (accept bogus responses on some servers, but not standard!) (--tolerant)
|
%B tolerant requests (accept bogus responses on some servers, but not standard!) (--tolerant)
|
||||||
@@ -417,7 +417,7 @@ site. Specifically, the defauls are:
|
|||||||
X *purge old files after update (X0 keep delete)
|
X *purge old files after update (X0 keep delete)
|
||||||
bN accept cookies in cookies.txt (0=do not accept,* 1=accept)
|
bN accept cookies in cookies.txt (0=do not accept,* 1=accept)
|
||||||
u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
|
u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
|
||||||
j *parse Java Classes (j0 don't parse)
|
j *parse scripts (j0 don't parse)
|
||||||
sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
|
sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
|
||||||
C create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
|
C create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
|
||||||
f *log file mode
|
f *log file mode
|
||||||
@@ -497,9 +497,9 @@ about your browser retaining them.
|
|||||||
<p align=justify> This causes different document types to be analyzed
|
<p align=justify> This causes different document types to be analyzed
|
||||||
differently.
|
differently.
|
||||||
|
|
||||||
<pre><b><i> j *parse Java Classes (j0 don't parse) </i></b></pre>
|
<pre><b><i> j *parse scripts (j0 don't parse) </i></b></pre>
|
||||||
|
|
||||||
<p align=justify> This causes Java class files to be parsed looking for
|
<p align=justify> This causes scripts to be parsed looking for
|
||||||
URLs.
|
URLs.
|
||||||
|
|
||||||
<pre><b><i> sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) </i></b></pre>
|
<pre><b><i> sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) </i></b></pre>
|
||||||
@@ -1178,7 +1178,7 @@ accepted and sent back in order to allow access.
|
|||||||
Spider options:
|
Spider options:
|
||||||
bN accept cookies in cookies.txt (0=do not accept,* 1=accept)
|
bN accept cookies in cookies.txt (0=do not accept,* 1=accept)
|
||||||
u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
|
u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
|
||||||
j *parse Java Classes (j0 don't parse)
|
j *parse scripts (j0 don't parse)
|
||||||
sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
|
sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
|
||||||
%h force HTTP/1.0 requests (reduce update features, only for old servers or proxies)
|
%h force HTTP/1.0 requests (reduce update features, only for old servers or proxies)
|
||||||
%B tolerant requests (accept bogus responses on some servers, but not standard!)
|
%B tolerant requests (accept bogus responses on some servers, but not standard!)
|
||||||
@@ -2451,12 +2451,10 @@ work. We still are working to improve the mirror quality of HTTrack.
|
|||||||
|
|
||||||
<p align=justify><b>Q: Some Java applets do not work properly! </b>
|
<p align=justify><b>Q: Some Java applets do not work properly! </b>
|
||||||
|
|
||||||
<p align=justify> A: Java applets may not work in some cases, for
|
<p align=justify> A: Java applets may not work in some cases, because
|
||||||
example if HTTrack failed to detect all included classes or files called
|
HTTrack does not parse compiled class files to find the resources they
|
||||||
within the class file. Sometimes, Java applets need to be online,
|
load. Java applets often need to be online anyway, since remote files
|
||||||
because remote files are directly caught. Finally, the site structure
|
are fetched directly at runtime.
|
||||||
can be incompatible with the class (always try to keep the original site
|
|
||||||
structure when you want to get Java classes)
|
|
||||||
|
|
||||||
<p align=justify> If there is no way to make some classes work properly,
|
<p align=justify> If there is no way to make some classes work properly,
|
||||||
you can exclude them with the filters. They will be available, but only
|
you can exclude them with the filters. They will be available, but only
|
||||||
|
|||||||
@@ -764,9 +764,9 @@ check, * u1 check but /, u2 check always)
|
|||||||
<td width="78%">
|
<td width="78%">
|
||||||
|
|
||||||
|
|
||||||
<p>*parse Java Classes (j0 don t parse, bitmask: |1 parse
|
<p>*parse scripts (j0 don t parse, bitmask: |1 parse
|
||||||
default, |2 don t parse .class |4 don t parse .js |8 don t
|
default, |4 don t parse .js |8 don t be aggressive)
|
||||||
be aggressive) (--parse-java[=N])</p></td></tr>
|
(--parse-java[=N])</p></td></tr>
|
||||||
<tr valign="top" align="left">
|
<tr valign="top" align="left">
|
||||||
<td width="11%"></td>
|
<td width="11%"></td>
|
||||||
<td width="6%">
|
<td width="6%">
|
||||||
@@ -889,8 +889,8 @@ only) (--protocol[=N])</p></td></tr>
|
|||||||
<td width="78%">
|
<td width="78%">
|
||||||
|
|
||||||
|
|
||||||
<p>disable a specific external mime module (-%w htsswf -%w
|
<p>disable a specific external mime module (-%w
|
||||||
htsjava) (--disable-module <param>)</p></td></tr>
|
httrack-plugin) (--disable-module <param>)</p></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p style="margin-left:11%; margin-top: 1em"><b>Browser
|
<p style="margin-left:11%; margin-top: 1em"><b>Browser
|
||||||
@@ -2175,10 +2175,6 @@ Several scripts generating complex filenames may not find
|
|||||||
them (ex:
|
them (ex:
|
||||||
img.src=’image’+a+Mobj.dst+’.gif’)</small></p>
|
img.src=’image’+a+Mobj.dst+’.gif’)</small></p>
|
||||||
|
|
||||||
<p style="margin-left:11%; margin-top: 1em"><small>- Some
|
|
||||||
java classes may not find some files on them (class
|
|
||||||
included)</small></p>
|
|
||||||
|
|
||||||
<p style="margin-left:11%; margin-top: 1em"><small>-
|
<p style="margin-left:11%; margin-top: 1em"><small>-
|
||||||
Cgi-bin links may not work properly in some cases
|
Cgi-bin links may not work properly in some cases
|
||||||
(parameters needed). To avoid them: use filters like
|
(parameters needed). To avoid them: use filters like
|
||||||
|
|||||||
@@ -288,8 +288,8 @@ This option define whether the engine has to abandon a host if a timeout/"too sl
|
|||||||
&P extended parsing, attempt to parse all links (even in unknown tags or Javascript)
|
&P extended parsing, attempt to parse all links (even in unknown tags or Javascript)
|
||||||
This option activates the extended parsing, that attempt to find links in unknown Html code/javascript
|
This option activates the extended parsing, that attempt to find links in unknown Html code/javascript
|
||||||
|
|
||||||
j *parse Java Classes (j0 don't parse)
|
j *parse scripts (j0 don't parse)
|
||||||
This option define whether the engine has to parse java files or not to catch included files
|
This option defines whether the engine has to parse scripts or not to catch included files
|
||||||
|
|
||||||
I *make an index (I0 don't make)
|
I *make an index (I0 don't make)
|
||||||
This option define whether the engine has to generate an index.html on the top directory
|
This option define whether the engine has to generate an index.html on the top directory
|
||||||
|
|||||||
@@ -126,7 +126,6 @@ Note: the <i>Initialization</i>, <i>Main functions</i>, <i>Options handling</i>
|
|||||||
<li>the <tt>htsdefines.h</tt> prototype file, which describes callback function prototypes</li>
|
<li>the <tt>htsdefines.h</tt> prototype file, which describes callback function prototypes</li>
|
||||||
<li>the <tt>htsopt.h</tt> prototype file, which describes the full httrackp* structure</li>
|
<li>the <tt>htsopt.h</tt> prototype file, which describes the full httrackp* structure</li>
|
||||||
<li>the <tt>callbacks-example*.c</tt> files given in the httrack archive</li>
|
<li>the <tt>callbacks-example*.c</tt> files given in the httrack archive</li>
|
||||||
<li>the <tt>htsjava.c</tt> source file (the java class plugin ; overrides 'detect' and 'parse')</li>
|
|
||||||
<li>the example given at the end of this document</li>
|
<li>the example given at the end of this document</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ ${LANG_K3} : ${HTTRACK_WEB}
|
|||||||
|
|
||||||
<form>
|
<form>
|
||||||
<input type="button" value="OK" onClick="window.close();"
|
<input type="button" value="OK" onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ function info(str) {
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/server/file.html" target="_blank"
|
<a href="/server/file.html" target="_blank"
|
||||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_O1}' onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O1}
|
${LANG_O1}
|
||||||
@@ -85,7 +85,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/index.html" target="_blank"
|
<a href="/index.html" target="_blank"
|
||||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O5}
|
${LANG_O5}
|
||||||
@@ -118,20 +118,20 @@ ${do:end-if}
|
|||||||
<form action="${thisfile}" name="form">
|
<form action="${thisfile}" name="form">
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<tr><td>${LANG_T2}</td><td>http://<input name="urladr"
|
<tr><td>${LANG_T2}</td><td>http://<input name="urladr"
|
||||||
onMouseOver="info('${html:LANG_T10}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_T10}' onMouseOver="info('${html:LANG_T10}'); return true" onMouseOut="info(' '); return true"
|
||||||
></td></tr>
|
></td></tr>
|
||||||
<tr><td colspan=2>
|
<tr><td colspan=2>
|
||||||
|
|
||||||
<table width="100%">
|
<table width="100%">
|
||||||
<th>${LANG_T4}</th>
|
<th>${LANG_T4}</th>
|
||||||
<tr><td>${LANG_T5}:</td><td><input name="urllogin"
|
<tr><td>${LANG_T5}:</td><td><input name="urllogin"
|
||||||
onMouseOver="info('${html:LANG_T12}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_T12}' onMouseOver="info('${html:LANG_T12}'); return true" onMouseOut="info(' '); return true"
|
||||||
></td></tr>
|
></td></tr>
|
||||||
<tr><td>${LANG_T6}:</td><td><input name="urlpass"
|
<tr><td>${LANG_T6}:</td><td><input name="urlpass"
|
||||||
onMouseOver="info('${html:LANG_T13}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_T13}' onMouseOver="info('${html:LANG_T13}'); return true" onMouseOut="info(' '); return true"
|
||||||
></td></tr>
|
></td></tr>
|
||||||
<tr><td>${LANG_T7}:</td><td><input type="button" value="${LANG_T8}" onClick="alert('not yet implemented!')"
|
<tr><td>${LANG_T7}:</td><td><input type="button" value="${LANG_T8}" onClick="alert('not yet implemented!')"
|
||||||
onMouseOver="info('${html:LANG_T14}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_T14}' onMouseOver="info('${html:LANG_T14}'); return true" onMouseOut="info(' '); return true"
|
||||||
></td></tr>
|
></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ ${do:end-if}
|
|||||||
|
|
||||||
<tr><td>
|
<tr><td>
|
||||||
<input type="button" value="OK" onClick="if (do_add()) { window.close(); }"
|
<input type="button" value="OK" onClick="if (do_add()) { window.close(); }"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ function info(str) {
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/server/file.html" target="_blank"
|
<a href="/server/file.html" target="_blank"
|
||||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_O1}' onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O1}
|
${LANG_O1}
|
||||||
@@ -48,7 +48,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/index.html" target="_blank"
|
<a href="/index.html" target="_blank"
|
||||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O5}
|
${LANG_O5}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ function info(str) {
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr><td class="tabCtrl" align="left">
|
<tr><td class="tabCtrl" align="left">
|
||||||
<a style="background:black;color: white" href="about.html" target="_new"
|
<a style="background:black;color: white" href="about.html" target="_new"
|
||||||
onMouseOver="info('${html:LANG_G21}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G21}' onMouseOver="info('${html:LANG_G21}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${LANG_O16}...
|
${LANG_O16}...
|
||||||
</a>
|
</a>
|
||||||
@@ -67,7 +67,7 @@ ${LANG_O16}...
|
|||||||
<tr><td class="tabCtrl" align="left">
|
<tr><td class="tabCtrl" align="left">
|
||||||
<a style="background:black;color: white"
|
<a style="background:black;color: white"
|
||||||
href="http://www.httrack.com/update.php3?Product=HTTrack&Version=${HTTRACK_VERSIONID}&VersionStr=${HTTRACK_VERSION}&Platform=${HTS_PLATFORM}&LanguageId=${lang}" target="_new"
|
href="http://www.httrack.com/update.php3?Product=HTTrack&Version=${HTTRACK_VERSIONID}&VersionStr=${HTTRACK_VERSION}&Platform=${HTS_PLATFORM}&LanguageId=${lang}" target="_new"
|
||||||
onMouseOver="info('${html:LANG_O17}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_O17}' onMouseOver="info('${html:LANG_O17}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${LANG_O17}...
|
${LANG_O17}...
|
||||||
</a>
|
</a>
|
||||||
@@ -78,7 +78,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<tr><td class="tabCtrl" align="left">
|
<tr><td class="tabCtrl" align="left">
|
||||||
<a style="background:black;color: white"
|
<a style="background:black;color: white"
|
||||||
href="/index.html" target="_new"
|
href="/index.html" target="_new"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${LANG_P16}
|
${LANG_P16}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ function info(str) {
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/server/file.html" target="_blank"
|
<a href="/server/file.html" target="_blank"
|
||||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_O1}' onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O1}
|
${LANG_O1}
|
||||||
@@ -55,7 +55,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/index.html" target="_blank"
|
<a href="/index.html" target="_blank"
|
||||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O5}
|
${LANG_O5}
|
||||||
@@ -113,7 +113,7 @@ ${LANG_THANKYOU}!
|
|||||||
|
|
||||||
<tr><td align="right">
|
<tr><td align="right">
|
||||||
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> "
|
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> "
|
||||||
onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPNEXT}' onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt1.html" target="_blank"
|
<a href="/step9_opt1.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt1.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt1.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -107,16 +107,16 @@ ${do:end-if}
|
|||||||
<!-- checkboxes -->
|
<!-- checkboxes -->
|
||||||
<table border="0" width="100%" cellspacing="0">
|
<table border="0" width="100%" cellspacing="0">
|
||||||
<tr><td><input type="checkbox" name="parseall" ${checked:parseall}
|
<tr><td><input type="checkbox" name="parseall" ${checked:parseall}
|
||||||
onMouseOver="info('${html:LANG_I1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1}' onMouseOver="info('${html:LANG_I1}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I31}</td></tr>
|
> ${LANG_I31}</td></tr>
|
||||||
<tr><td><input type="checkbox" name="link" ${checked:link}
|
<tr><td><input type="checkbox" name="link" ${checked:link}
|
||||||
onMouseOver="info('${html:LANG_I2}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I2}' onMouseOver="info('${html:LANG_I2}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I32}</td></tr>
|
> ${LANG_I32}</td></tr>
|
||||||
<tr><td><input type="checkbox" name="testall" ${checked:testall}
|
<tr><td><input type="checkbox" name="testall" ${checked:testall}
|
||||||
onMouseOver="info('${html:LANG_I2b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I2b}' onMouseOver="info('${html:LANG_I2b}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I32b}</td></tr>
|
> ${LANG_I32b}</td></tr>
|
||||||
<tr><td><input type="checkbox" name="htmlfirst" ${checked:htmlfirst}
|
<tr><td><input type="checkbox" name="htmlfirst" ${checked:htmlfirst}
|
||||||
onMouseOver="info('${html:LANG_I2c}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I2c}' onMouseOver="info('${html:LANG_I2c}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I32c}</td></tr>
|
> ${LANG_I32c}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -125,12 +125,12 @@ ${do:end-if}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt7.html" target="_blank"
|
<a href="/step9_opt7.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt7.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt7.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -98,17 +98,27 @@ ${do:end-if}
|
|||||||
<input type="hidden" name="redirect" value="">
|
<input type="hidden" name="redirect" value="">
|
||||||
<input type="hidden" name="closeme" value="">
|
<input type="hidden" name="closeme" value="">
|
||||||
|
|
||||||
|
${LANG_PROXYTYPE}
|
||||||
|
<select name="proxytype"
|
||||||
|
title='${html:LANG_PROXYTYPETIP}' onMouseOver="info('${html:LANG_PROXYTYPETIP}'); return true" onMouseOut="info(' '); return true"
|
||||||
|
>
|
||||||
|
<option value=""${ztest:proxytype: selected:}>HTTP</option>
|
||||||
|
<option value="2"${test:proxytype::: selected}>HTTP (CONNECT tunnel)</option>
|
||||||
|
<option value="1"${test:proxytype:: selected}>SOCKS5</option>
|
||||||
|
</select>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
${LANG_IOPT10}:
|
${LANG_IOPT10}:
|
||||||
<input name="prox" value="${prox}" size="32"
|
<input name="prox" value="${prox}" size="32"
|
||||||
onMouseOver="info('${html:LANG_G14}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G14}' onMouseOver="info('${html:LANG_G14}'); return true" onMouseOut="info(' '); return true"
|
||||||
>:
|
>:
|
||||||
<input name="portprox" value="${portprox}" size="4"
|
<input name="portprox" value="${portprox}" size="4"
|
||||||
onMouseOver="info('${html:LANG_G15}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G15}' onMouseOver="info('${html:LANG_G15}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<input type="checkbox" name="ftpprox" ${checked:ftpprox}
|
<input type="checkbox" name="ftpprox" ${checked:ftpprox}
|
||||||
onMouseOver="info('${html:LANG_G15c}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G15c}' onMouseOver="info('${html:LANG_G15c}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I47c}
|
> ${LANG_I47c}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
@@ -117,12 +127,12 @@ ${LANG_IOPT10}:
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt9.html" target="_blank"
|
<a href="/step9_opt9.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt9.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt9.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -112,97 +112,97 @@ ${LANG_W3}
|
|||||||
|
|
||||||
<td align="left">
|
<td align="left">
|
||||||
<input name="ext1" value="${ext1}"
|
<input name="ext1" value="${ext1}"
|
||||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W4}' onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
⇔
|
⇔
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
<input name="mime1" value="${mime1}"
|
<input name="mime1" value="${mime1}"
|
||||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W5}' onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<td align="left">
|
<td align="left">
|
||||||
<input name="ext2" value="${ext2}"
|
<input name="ext2" value="${ext2}"
|
||||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W4}' onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
⇔
|
⇔
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
<input name="mime2" value="${mime2}"
|
<input name="mime2" value="${mime2}"
|
||||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W5}' onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<td align="left">
|
<td align="left">
|
||||||
<input name="ext3" value="${ext3}"
|
<input name="ext3" value="${ext3}"
|
||||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W4}' onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
⇔
|
⇔
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
<input name="mime3" value="${mime3}"
|
<input name="mime3" value="${mime3}"
|
||||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W5}' onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<td align="left">
|
<td align="left">
|
||||||
<input name="ext4" value="${ext4}"
|
<input name="ext4" value="${ext4}"
|
||||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W4}' onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
⇔
|
⇔
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
<input name="mime4" value="${mime4}"
|
<input name="mime4" value="${mime4}"
|
||||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W5}' onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<td align="left">
|
<td align="left">
|
||||||
<input name="ext5" value="${ext5}"
|
<input name="ext5" value="${ext5}"
|
||||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W4}' onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
⇔
|
⇔
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
<input name="mime5" value="${mime5}"
|
<input name="mime5" value="${mime5}"
|
||||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W5}' onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<td align="left">
|
<td align="left">
|
||||||
<input name="ext6" value="${ext6}"
|
<input name="ext6" value="${ext6}"
|
||||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W4}' onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
⇔
|
⇔
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
<input name="mime6" value="${mime6}"
|
<input name="mime6" value="${mime6}"
|
||||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W5}' onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<td align="left">
|
<td align="left">
|
||||||
<input name="ext7" value="${ext7}"
|
<input name="ext7" value="${ext7}"
|
||||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W4}' onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
⇔
|
⇔
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
<input name="mime7" value="${mime7}"
|
<input name="mime7" value="${mime7}"
|
||||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W5}' onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<td align="left">
|
<td align="left">
|
||||||
<input name="ext8" value="${ext8}"
|
<input name="ext8" value="${ext8}"
|
||||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W4}' onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
⇔
|
⇔
|
||||||
</td><td align="left">
|
</td><td align="left">
|
||||||
<input name="mime8" value="${mime8}"
|
<input name="mime8" value="${mime8}"
|
||||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_W5}' onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
@@ -217,12 +217,12 @@ ${LANG_W3}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt5.html" target="_blank"
|
<a href="/step9_opt5.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt5.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt5.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -101,20 +101,20 @@ ${do:end-if}
|
|||||||
${LANG_I33}
|
${LANG_I33}
|
||||||
<br>
|
<br>
|
||||||
<select name="build"
|
<select name="build"
|
||||||
onMouseOver="info('${html:LANG_I3}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I3}' onMouseOver="info('${html:LANG_I3}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:build:LISTDEF_3}
|
${listid:build:LISTDEF_3}
|
||||||
</select>
|
</select>
|
||||||
<input type="button" value="${LANG_O2}"
|
<input type="button" value="${LANG_O2}"
|
||||||
onClick="form.build.selectedIndex=14; window.open('option2b.html', 'option2b', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480').wparent=document; form.submit();"
|
onClick="form.build.selectedIndex=14; window.open('option2b.html', 'option2b', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480').wparent=document; form.submit();"
|
||||||
onMouseOver="info('${html:LANG_I4}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I4}' onMouseOver="info('${html:LANG_I4}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
|
|
||||||
<!-- checkboxes -->
|
<!-- checkboxes -->
|
||||||
<table border="0" width="100%" cellspacing="0">
|
<table border="0" width="100%" cellspacing="0">
|
||||||
<tr><td>
|
<tr><td>
|
||||||
<select name="dos"
|
<select name="dos"
|
||||||
onMouseOver="info('${html:LANG_I8}\r\n${LANG_I8b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I8} ${html:LANG_I8b}' onMouseOver="info('${html:LANG_I8}\r\n${LANG_I8b}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
<option value="0"${ztest:dos: selected::}> </option>
|
<option value="0"${ztest:dos: selected::}> </option>
|
||||||
<option value="1"${ztest:dos:: selected:}>${LANG_I37}</option>
|
<option value="1"${ztest:dos:: selected:}>${LANG_I37}</option>
|
||||||
@@ -122,19 +122,19 @@ ${listid:build:LISTDEF_3}
|
|||||||
</select>
|
</select>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
<tr><td><input type="checkbox" name="errpage" ${checked:errpage}
|
<tr><td><input type="checkbox" name="errpage" ${checked:errpage}
|
||||||
onMouseOver="info('${html:LANG_I9}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I9}' onMouseOver="info('${html:LANG_I9}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I38}</td></tr>
|
> ${LANG_I38}</td></tr>
|
||||||
<tr><td><input type="checkbox" name="external" ${checked:external}
|
<tr><td><input type="checkbox" name="external" ${checked:external}
|
||||||
onMouseOver="info('${html:LANG_I29}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I29}' onMouseOver="info('${html:LANG_I29}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I56}</td></tr>
|
> ${LANG_I56}</td></tr>
|
||||||
<tr><td><input type="checkbox" name="hidepwd" ${checked:hidepwd}
|
<tr><td><input type="checkbox" name="hidepwd" ${checked:hidepwd}
|
||||||
onMouseOver="info('${html:LANG_I30}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I30}' onMouseOver="info('${html:LANG_I30}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I66}</td></tr>
|
> ${LANG_I66}</td></tr>
|
||||||
<tr><td><input type="checkbox" name="hidequery" ${checked:hidequery}
|
<tr><td><input type="checkbox" name="hidequery" ${checked:hidequery}
|
||||||
onMouseOver="info('${html:LANG_I30b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I30b}' onMouseOver="info('${html:LANG_I30b}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I67}</td></tr>
|
> ${LANG_I67}</td></tr>
|
||||||
<tr><td><input type="checkbox" name="nopurge" ${checked:nopurge}
|
<tr><td><input type="checkbox" name="nopurge" ${checked:nopurge}
|
||||||
onMouseOver="info('${html:LANG_I1a}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1a}' onMouseOver="info('${html:LANG_I1a}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I57}</td></tr>
|
> ${LANG_I57}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -143,12 +143,12 @@ ${listid:build:LISTDEF_3}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt5.html" target="_blank"
|
<a href="/step9_opt5.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt5.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt5.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -107,12 +107,12 @@ ${LANG_Q3}
|
|||||||
${do:output-mode:html-urlescaped}
|
${do:output-mode:html-urlescaped}
|
||||||
onClick="if (confirm(str_replace(str_replace('${LANG_DIAL7}', '%20', ' '), '%0a', ' '))) { form.closeme.value=1; form.submit(); } return false;"
|
onClick="if (confirm(str_replace(str_replace('${LANG_DIAL7}', '%20', ' '), '%0a', ' '))) { form.closeme.value=1; form.submit(); } return false;"
|
||||||
${do:output-mode:}
|
${do:output-mode:}
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt10.html" target="_blank"
|
<a href="/step9_opt10.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt10.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt10.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -104,7 +104,7 @@ ${LANG_I40c}
|
|||||||
<!-- checkboxes -->
|
<!-- checkboxes -->
|
||||||
<table border="0" width="100%" cellspacing="0">
|
<table border="0" width="100%" cellspacing="0">
|
||||||
<tr><td><input type="checkbox" name="cache" ${checked:cache}
|
<tr><td><input type="checkbox" name="cache" ${checked:cache}
|
||||||
onMouseOver="info('${html:LANG_I5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I5}' onMouseOver="info('${html:LANG_I5}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I34}</td></tr>
|
> ${LANG_I34}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
@@ -112,7 +112,7 @@ ${LANG_I40c}
|
|||||||
${LANG_I39}
|
${LANG_I39}
|
||||||
<br>
|
<br>
|
||||||
<select name="filter"
|
<select name="filter"
|
||||||
onMouseOver="info('${html:LANG_I29}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I29}' onMouseOver="info('${html:LANG_I29}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:filter:LISTDEF_4}
|
${listid:filter:LISTDEF_4}
|
||||||
</select>
|
</select>
|
||||||
@@ -121,7 +121,7 @@ ${listid:filter:LISTDEF_4}
|
|||||||
${LANG_I40}
|
${LANG_I40}
|
||||||
<br>
|
<br>
|
||||||
<select name="travel"
|
<select name="travel"
|
||||||
onMouseOver="info('${html:LANG_I11}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I11}' onMouseOver="info('${html:LANG_I11}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:travel:LISTDEF_5}
|
${listid:travel:LISTDEF_5}
|
||||||
</select>
|
</select>
|
||||||
@@ -130,7 +130,7 @@ ${listid:travel:LISTDEF_5}
|
|||||||
${LANG_I40b}
|
${LANG_I40b}
|
||||||
<br>
|
<br>
|
||||||
<select name="travel2"
|
<select name="travel2"
|
||||||
onMouseOver="info('${html:LANG_I11b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I11b}' onMouseOver="info('${html:LANG_I11b}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:travel2:LISTDEF_6}
|
${listid:travel2:LISTDEF_6}
|
||||||
</select>
|
</select>
|
||||||
@@ -139,7 +139,7 @@ ${listid:travel2:LISTDEF_6}
|
|||||||
${LANG_I40e}
|
${LANG_I40e}
|
||||||
<br>
|
<br>
|
||||||
<select name="travel3"
|
<select name="travel3"
|
||||||
onMouseOver="info('${html:LANG_I11c}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I11c}' onMouseOver="info('${html:LANG_I11c}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:travel3:LISTDEF_11}
|
${listid:travel3:LISTDEF_11}
|
||||||
</select>
|
</select>
|
||||||
@@ -148,7 +148,7 @@ ${listid:travel3:LISTDEF_11}
|
|||||||
<!-- checkboxes -->
|
<!-- checkboxes -->
|
||||||
<table border="0" width="100%" cellspacing="0">
|
<table border="0" width="100%" cellspacing="0">
|
||||||
<tr><td><input type="checkbox" name="windebug" ${checked:windebug}
|
<tr><td><input type="checkbox" name="windebug" ${checked:windebug}
|
||||||
onMouseOver="info('${html:LANG_I1h}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1h}' onMouseOver="info('${html:LANG_I1h}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I40d}</td></tr>
|
> ${LANG_I40d}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
@@ -158,12 +158,12 @@ ${listid:travel3:LISTDEF_11}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt3.html" target="_blank"
|
<a href="/step9_opt3.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt3.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt3.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -104,11 +104,11 @@ ${do:end-if}
|
|||||||
${LANG_I44}
|
${LANG_I44}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="connexion" value="${connexion}" size="4"
|
<input name="connexion" value="${connexion}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I12}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I12}' onMouseOver="info('${html:LANG_I12}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr><tr><td></td><td>
|
</td></tr><tr><td></td><td>
|
||||||
<input type="checkbox" name="ka" ${checked:ka}
|
<input type="checkbox" name="ka" ${checked:ka}
|
||||||
onMouseOver="info('${html:LANG_I47f}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I47f}' onMouseOver="info('${html:LANG_I47f}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I47e}
|
> ${LANG_I47e}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -116,11 +116,11 @@ ${LANG_I44}
|
|||||||
${LANG_I47d}
|
${LANG_I47d}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="timeout" value="${timeout}" size="4"
|
<input name="timeout" value="${timeout}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I13}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I13}' onMouseOver="info('${html:LANG_I13}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr><tr><td></td><td>
|
</td></tr><tr><td></td><td>
|
||||||
<input type="checkbox" name="remt" ${checked:remt}
|
<input type="checkbox" name="remt" ${checked:remt}
|
||||||
onMouseOver="info('${html:LANG_I14}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I14}' onMouseOver="info('${html:LANG_I14}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I45}
|
> ${LANG_I45}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ ${LANG_I47d}
|
|||||||
${LANG_I48}
|
${LANG_I48}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="retry" value="${retry}" size="4"
|
<input name="retry" value="${retry}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I17}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I17}' onMouseOver="info('${html:LANG_I17}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -136,11 +136,11 @@ ${LANG_I48}
|
|||||||
${LANG_I46}
|
${LANG_I46}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="rate" value="${rate}" size="4"
|
<input name="rate" value="${rate}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I15}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I15}' onMouseOver="info('${html:LANG_I15}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr><tr><td></td><td>
|
</td></tr><tr><td></td><td>
|
||||||
<input type="checkbox" name="rems" ${checked:rems}
|
<input type="checkbox" name="rems" ${checked:rems}
|
||||||
onMouseOver="info('${html:LANG_I16}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I16}' onMouseOver="info('${html:LANG_I16}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I47}
|
> ${LANG_I47}
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -151,12 +151,12 @@ ${LANG_I46}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt2.html" target="_blank"
|
<a href="/step9_opt2.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt2.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt2.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -104,7 +104,7 @@ ${do:end-if}
|
|||||||
${LANG_G32}
|
${LANG_G32}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="depth" value="${depth}" size="4"
|
<input name="depth" value="${depth}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I1g}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1g}' onMouseOver="info('${html:LANG_I1g}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ ${LANG_G32}
|
|||||||
${LANG_G32b}
|
${LANG_G32b}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="depth2" value="${depth2}" size="4"
|
<input name="depth2" value="${depth2}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I1g2}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1g2}' onMouseOver="info('${html:LANG_I1g2}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ ${LANG_G32b}
|
|||||||
${LANG_I50}
|
${LANG_I50}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="maxhtml" value="${maxhtml}" size="4"
|
<input name="maxhtml" value="${maxhtml}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I18}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I18}' onMouseOver="info('${html:LANG_I18}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ ${LANG_I50}
|
|||||||
${LANG_I50b}
|
${LANG_I50b}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="othermax" value="${othermax}" size="4"
|
<input name="othermax" value="${othermax}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I19}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I19}' onMouseOver="info('${html:LANG_I19}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ ${LANG_I50b}
|
|||||||
${LANG_I51}
|
${LANG_I51}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="sizemax" value="${sizemax}" size="4"
|
<input name="sizemax" value="${sizemax}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I20}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I20}' onMouseOver="info('${html:LANG_I20}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -144,7 +144,15 @@ ${LANG_I51}
|
|||||||
${LANG_I65}
|
${LANG_I65}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="pausebytes" value="${pausebytes}" size="4"
|
<input name="pausebytes" value="${pausebytes}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I20b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I20b}' onMouseOver="info('${html:LANG_I20b}'); return true" onMouseOut="info(' '); return true"
|
||||||
|
>
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
<tr><td>
|
||||||
|
${LANG_PAUSEFILES}
|
||||||
|
</td><td>
|
||||||
|
<input name="pausefiles" value="${pausefiles}" size="8"
|
||||||
|
title='${html:LANG_PAUSEFILESTIP}' onMouseOver="info('${html:LANG_PAUSEFILESTIP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -152,7 +160,7 @@ ${LANG_I65}
|
|||||||
${LANG_I52}
|
${LANG_I52}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="maxtime" value="${maxtime}" size="4"
|
<input name="maxtime" value="${maxtime}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I21}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I21}' onMouseOver="info('${html:LANG_I21}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -160,7 +168,7 @@ ${LANG_I52}
|
|||||||
${LANG_I54}
|
${LANG_I54}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="maxrate" value="${maxrate}" size="4"
|
<input name="maxrate" value="${maxrate}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I22}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I22}' onMouseOver="info('${html:LANG_I22}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -168,7 +176,7 @@ ${LANG_I54}
|
|||||||
${LANG_I64}
|
${LANG_I64}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="maxconn" value="${maxconn}" size="4"
|
<input name="maxconn" value="${maxconn}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I22b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I22b}' onMouseOver="info('${html:LANG_I22b}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -176,7 +184,7 @@ ${LANG_I64}
|
|||||||
${LANG_I64b}
|
${LANG_I64b}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="maxlinks" value="${maxlinks}" size="4"
|
<input name="maxlinks" value="${maxlinks}" size="4"
|
||||||
onMouseOver="info('${html:LANG_I22c}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I22c}' onMouseOver="info('${html:LANG_I22c}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -185,12 +193,12 @@ ${LANG_I64b}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt8.html" target="_blank"
|
<a href="/step9_opt8.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt8.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt8.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -104,7 +104,7 @@ ${do:end-if}
|
|||||||
${LANG_I43}
|
${LANG_I43}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="user" value="${user}" size="60"
|
<input name="user" value="${user}" size="60"
|
||||||
onMouseOver="info('${html:LANG_I23}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I23}' onMouseOver="info('${html:LANG_I23}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ ${LANG_I43}
|
|||||||
${LANG_I43b}
|
${LANG_I43b}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="footer" value="${footer}" size="60"
|
<input name="footer" value="${footer}" size="60"
|
||||||
onMouseOver="info('${html:LANG_I23b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I23b}' onMouseOver="info('${html:LANG_I23b}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
@@ -123,12 +123,12 @@ ${LANG_I43b}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt4.html" target="_blank"
|
<a href="/step9_opt4.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt4.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt4.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -102,7 +102,7 @@ ${do:end-if}
|
|||||||
${LANG_B10}
|
${LANG_B10}
|
||||||
</tt>
|
</tt>
|
||||||
<textarea name="url2" cols="60" rows="8"
|
<textarea name="url2" cols="60" rows="8"
|
||||||
onMouseOver="info('${html:LANG_C3}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_C3}' onMouseOver="info('${html:LANG_C3}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${url2}</textarea>
|
>${url2}</textarea>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@@ -115,12 +115,12 @@ ${LANG_B13}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt6.html" target="_blank"
|
<a href="/step9_opt6.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt6.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt6.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -99,50 +99,77 @@ ${do:end-if}
|
|||||||
<input type="hidden" name="closeme" value="">
|
<input type="hidden" name="closeme" value="">
|
||||||
|
|
||||||
<input type="checkbox" name="cookies" ${checked:cookies}
|
<input type="checkbox" name="cookies" ${checked:cookies}
|
||||||
onMouseOver="info('${html:LANG_I1b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1b}' onMouseOver="info('${html:LANG_I1b}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I58}
|
> ${LANG_I58}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
|
${LANG_COOKIEFILE}
|
||||||
|
<input name="cookiesfile" value="${cookiesfile}" size="40"
|
||||||
|
title='${html:LANG_COOKIEFILETIP}' onMouseOver="info('${html:LANG_COOKIEFILETIP}'); return true" onMouseOut="info(' '); return true"
|
||||||
|
>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
${LANG_I59}
|
${LANG_I59}
|
||||||
<br>
|
<br>
|
||||||
<select name="checktype"
|
<select name="checktype"
|
||||||
onMouseOver="info('${html:LANG_I1c}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1c}' onMouseOver="info('${html:LANG_I1c}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:checktype:LISTDEF_7}
|
${listid:checktype:LISTDEF_7}
|
||||||
</select>
|
</select>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="parsejava" ${checked:parsejava}
|
<input type="checkbox" name="parsejava" ${checked:parsejava}
|
||||||
onMouseOver="info('${html:LANG_I1d}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1d}' onMouseOver="info('${html:LANG_I1d}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I60}
|
> ${LANG_I60}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
${LANG_I55}
|
${LANG_I55}
|
||||||
<br>
|
<br>
|
||||||
<select name="robots"
|
<select name="robots"
|
||||||
onMouseOver="info('${html:LANG_I28}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I28}' onMouseOver="info('${html:LANG_I28}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:robots:LISTDEF_8}
|
${listid:robots:LISTDEF_8}
|
||||||
</select>
|
</select>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="updhack" ${checked:updhack}
|
<input type="checkbox" name="updhack" ${checked:updhack}
|
||||||
onMouseOver="info('${html:LANG_I1k}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1k}' onMouseOver="info('${html:LANG_I1k}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I62b}
|
> ${LANG_I62b}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="urlhack" ${checked:urlhack}
|
<input type="checkbox" name="urlhack" ${checked:urlhack}
|
||||||
onMouseOver="info('${html:LANG_I1k2}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1k2}' onMouseOver="info('${html:LANG_I1k2}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I62b2}
|
> ${LANG_I62b2}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
|
<input type="checkbox" name="keepwww" ${checked:keepwww}
|
||||||
|
title='${html:LANG_KEEPWWWTIP}' onMouseOver="info('${html:LANG_KEEPWWWTIP}'); return true" onMouseOut="info(' '); return true"
|
||||||
|
> ${LANG_KEEPWWW}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<input type="checkbox" name="keepslashes" ${checked:keepslashes}
|
||||||
|
title='${html:LANG_KEEPSLASHESTIP}' onMouseOver="info('${html:LANG_KEEPSLASHESTIP}'); return true" onMouseOut="info(' '); return true"
|
||||||
|
> ${LANG_KEEPSLASHES}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<input type="checkbox" name="keepqueryorder" ${checked:keepqueryorder}
|
||||||
|
title='${html:LANG_KEEPQUERYORDERTIP}' onMouseOver="info('${html:LANG_KEEPQUERYORDERTIP}'); return true" onMouseOut="info(' '); return true"
|
||||||
|
> ${LANG_KEEPQUERYORDER}
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
${LANG_STRIPQUERY}
|
||||||
|
<input name="stripquery" value="${stripquery}" size="40"
|
||||||
|
title='${html:LANG_STRIPQUERYTIP}' onMouseOver="info('${html:LANG_STRIPQUERYTIP}'); return true" onMouseOut="info(' '); return true"
|
||||||
|
>
|
||||||
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="toler" ${checked:toler}
|
<input type="checkbox" name="toler" ${checked:toler}
|
||||||
onMouseOver="info('${html:LANG_I1i}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1i}' onMouseOver="info('${html:LANG_I1i}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I62}
|
> ${LANG_I62}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="http10" ${checked:http10}
|
<input type="checkbox" name="http10" ${checked:http10}
|
||||||
onMouseOver="info('${html:LANG_I1j}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1j}' onMouseOver="info('${html:LANG_I1j}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I63}
|
> ${LANG_I63}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
@@ -152,12 +179,12 @@ ${listid:robots:LISTDEF_8}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step9_opt9.html" target="_blank"
|
<a href="/step9_opt9.html" target="_blank"
|
||||||
onClick="window.open('/step9_opt9.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step9_opt9.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -71,18 +71,18 @@ ${do:end-if}
|
|||||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT1}' onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT2}' onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT3}' onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT4}' onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT5}' onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT11}' onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT6}' onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT7}' onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT8}' onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT9}' onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" title='${html:LANG_IOPT10}' onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||||
<td class="tabCtrl" align="center"> </td>
|
<td class="tabCtrl" align="center"> </td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
@@ -99,32 +99,32 @@ ${do:end-if}
|
|||||||
<input type="hidden" name="closeme" value="">
|
<input type="hidden" name="closeme" value="">
|
||||||
|
|
||||||
<input type="checkbox" name="cache2" ${checked:cache2}
|
<input type="checkbox" name="cache2" ${checked:cache2}
|
||||||
onMouseOver="info('${html:LANG_I1e}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1e}' onMouseOver="info('${html:LANG_I1e}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I61}
|
> ${LANG_I61}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="norecatch" ${checked:norecatch}
|
<input type="checkbox" name="norecatch" ${checked:norecatch}
|
||||||
onMouseOver="info('${html:LANG_I5b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I5b}' onMouseOver="info('${html:LANG_I5b}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I34b}
|
> ${LANG_I34b}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="logf" ${checked:logf}
|
<input type="checkbox" name="logf" ${checked:logf}
|
||||||
onMouseOver="info('${html:LANG_I7}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I7}' onMouseOver="info('${html:LANG_I7}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I36}
|
> ${LANG_I36}
|
||||||
<select name="logtype"
|
<select name="logtype"
|
||||||
onMouseOver="info('${html:LANG_I1f}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I1f}' onMouseOver="info('${html:LANG_I1f}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:logtype:LISTDEF_9}
|
${listid:logtype:LISTDEF_9}
|
||||||
</select>
|
</select>
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="index" ${checked:index}
|
<input type="checkbox" name="index" ${checked:index}
|
||||||
onMouseOver="info('${html:LANG_I6}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I6}' onMouseOver="info('${html:LANG_I6}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I35}
|
> ${LANG_I35}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
<input type="checkbox" name="index2" ${checked:index2}
|
<input type="checkbox" name="index2" ${checked:index2}
|
||||||
onMouseOver="info('${html:LANG_I6b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_I6b}' onMouseOver="info('${html:LANG_I6b}'); return true" onMouseOut="info(' '); return true"
|
||||||
> ${LANG_I35b}
|
> ${LANG_I35b}
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
@@ -133,12 +133,12 @@ ${listid:logtype:LISTDEF_9}
|
|||||||
<tr><td align="left">
|
<tr><td align="left">
|
||||||
<input type="submit" value="${LANG_OK}"
|
<input type="submit" value="${LANG_OK}"
|
||||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPOK}' onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="button" value="${LANG_CANCEL}"
|
<input type="button" value="${LANG_CANCEL}"
|
||||||
onClick="window.close();"
|
onClick="window.close();"
|
||||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPCANCEL}' onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ function no_refresh() {
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/server/file.html" target="_blank"
|
<a href="/server/file.html" target="_blank"
|
||||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_O1}' onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O1}
|
${LANG_O1}
|
||||||
@@ -85,7 +85,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/index.html" target="_blank"
|
<a href="/index.html" target="_blank"
|
||||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O5}
|
${LANG_O5}
|
||||||
@@ -152,20 +152,20 @@ ${LANG_H20} ${info.currentjob}
|
|||||||
|
|
||||||
<table border="0" width="100%">
|
<table border="0" width="100%">
|
||||||
|
|
||||||
<tr><td>${info.state[0]}</td><td>${info.name[0]}</td><td>${info.file[0]}</td><td>${info.size[0]}/${info.sizetot[0]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[0]}'; form.submit()" onMouseOver="info('${html:LANG_H6}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[0]}</td><td>${info.name[0]}</td><td>${info.file[0]}</td><td>${info.size[0]}/${info.sizetot[0]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[0]}'; form.submit()" title='${html:LANG_H6}' onMouseOver="info('${html:LANG_H6}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[1]}</td><td>${info.name[1]}</td><td>${info.file[1]}</td><td>${info.size[1]}/${info.sizetot[1]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[1]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[1]}</td><td>${info.name[1]}</td><td>${info.file[1]}</td><td>${info.size[1]}/${info.sizetot[1]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[1]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[2]}</td><td>${info.name[2]}</td><td>${info.file[2]}</td><td>${info.size[2]}/${info.sizetot[2]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[2]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[2]}</td><td>${info.name[2]}</td><td>${info.file[2]}</td><td>${info.size[2]}/${info.sizetot[2]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[2]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[3]}</td><td>${info.name[3]}</td><td>${info.file[3]}</td><td>${info.size[3]}/${info.sizetot[3]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[3]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[3]}</td><td>${info.name[3]}</td><td>${info.file[3]}</td><td>${info.size[3]}/${info.sizetot[3]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[3]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[4]}</td><td>${info.name[4]}</td><td>${info.file[4]}</td><td>${info.size[4]}/${info.sizetot[4]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[4]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[4]}</td><td>${info.name[4]}</td><td>${info.file[4]}</td><td>${info.size[4]}/${info.sizetot[4]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[4]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[5]}</td><td>${info.name[5]}</td><td>${info.file[5]}</td><td>${info.size[5]}/${info.sizetot[5]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[5]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[5]}</td><td>${info.name[5]}</td><td>${info.file[5]}</td><td>${info.size[5]}/${info.sizetot[5]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[5]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[6]}</td><td>${info.name[6]}</td><td>${info.file[6]}</td><td>${info.size[6]}/${info.sizetot[6]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[6]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[6]}</td><td>${info.name[6]}</td><td>${info.file[6]}</td><td>${info.size[6]}/${info.sizetot[6]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[6]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[7]}</td><td>${info.name[7]}</td><td>${info.file[7]}</td><td>${info.size[7]}/${info.sizetot[7]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[7]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[7]}</td><td>${info.name[7]}</td><td>${info.file[7]}</td><td>${info.size[7]}/${info.sizetot[7]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[7]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[8]}</td><td>${info.name[8]}</td><td>${info.file[8]}</td><td>${info.size[8]}/${info.sizetot[8]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[8]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[8]}</td><td>${info.name[8]}</td><td>${info.file[8]}</td><td>${info.size[8]}/${info.sizetot[8]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[8]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[9]}</td><td>${info.name[9]}</td><td>${info.file[9]}</td><td>${info.size[9]}/${info.sizetot[9]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[9]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[9]}</td><td>${info.name[9]}</td><td>${info.file[9]}</td><td>${info.size[9]}/${info.sizetot[9]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[9]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[10]}</td><td>${info.name[10]}</td><td>${info.file[10]}</td><td>${info.size[10]}/${info.sizetot[10]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[10]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[10]}</td><td>${info.name[10]}</td><td>${info.file[10]}</td><td>${info.size[10]}/${info.sizetot[10]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[10]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[11]}</td><td>${info.name[11]}</td><td>${info.file[11]}</td><td>${info.size[11]}/${info.sizetot[11]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[11]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[11]}</td><td>${info.name[11]}</td><td>${info.file[11]}</td><td>${info.size[11]}/${info.sizetot[11]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[11]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[12]}</td><td>${info.name[12]}</td><td>${info.file[12]}</td><td>${info.size[12]}/${info.sizetot[12]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[12]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[12]}</td><td>${info.name[12]}</td><td>${info.file[12]}</td><td>${info.size[12]}/${info.sizetot[12]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[12]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
<tr><td>${info.state[13]}</td><td>${info.name[13]}</td><td>${info.file[13]}</td><td>${info.size[13]}/${info.sizetot[13]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[13]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
<tr><td>${info.state[13]}</td><td>${info.name[13]}</td><td>${info.file[13]}</td><td>${info.size[13]}/${info.sizetot[13]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[13]}'; form.submit()" title='${html:LANG_H7}' onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@ ${LANG_H20} ${info.currentjob}
|
|||||||
|
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input type="submit" value=" ${LANG_V4} "
|
<input type="submit" value=" ${LANG_V4} "
|
||||||
onMouseOver="disable_timer(); info('${LANG_D3}'); return true"
|
title='${html:LANG_D3}' onMouseOver="disable_timer(); info('${LANG_D3}'); return true"
|
||||||
onMouseOut="info(' '); enable_timer(); return true"
|
onMouseOut="info(' '); enable_timer(); return true"
|
||||||
onClick="if (do_confirm('${LANG_G1}')) { form.command.value='cancel'; form.submit(); } return false"
|
onClick="if (do_confirm('${LANG_G1}')) { form.command.value='cancel'; form.submit(); } return false"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ function info(str) {
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/server/file.html" target="_blank"
|
<a href="/server/file.html" target="_blank"
|
||||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_O1}' onMouseOver="info('${html:html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O1}
|
${LANG_O1}
|
||||||
@@ -64,7 +64,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/index.html" target="_blank"
|
<a href="/index.html" target="_blank"
|
||||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O5}
|
${LANG_O5}
|
||||||
@@ -93,7 +93,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step1.html" target="_blank"
|
<a href="/step1.html" target="_blank"
|
||||||
onClick="window.open('/step1.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step1.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -129,15 +129,21 @@ ${do:copy:NoPwdInPages:hidepwd}
|
|||||||
${do:copy:NoQueryStrings:hidequery}
|
${do:copy:NoQueryStrings:hidequery}
|
||||||
${do:copy:NoPurgeOldFiles:nopurge}
|
${do:copy:NoPurgeOldFiles:nopurge}
|
||||||
${do:copy:Cookies:cookies}
|
${do:copy:Cookies:cookies}
|
||||||
|
${do:copy:CookiesFile:cookiesfile}
|
||||||
${do:copy:CheckType:checktype}
|
${do:copy:CheckType:checktype}
|
||||||
${do:copy:ParseJava:parsejava}
|
${do:copy:ParseJava:parsejava}
|
||||||
${do:copy:HTTP10:http10}
|
${do:copy:HTTP10:http10}
|
||||||
${do:copy:TolerantRequests:toler}
|
${do:copy:TolerantRequests:toler}
|
||||||
${do:copy:UpdateHack:updhack}
|
${do:copy:UpdateHack:updhack}
|
||||||
${do:copy:URLHack:urlhack}
|
${do:copy:URLHack:urlhack}
|
||||||
|
${do:copy:KeepWww:keepwww}
|
||||||
|
${do:copy:KeepSlashes:keepslashes}
|
||||||
|
${do:copy:KeepQueryOrder:keepqueryorder}
|
||||||
|
${do:copy:StripQuery:stripquery}
|
||||||
${do:copy:StoreAllInCache:cache2}
|
${do:copy:StoreAllInCache:cache2}
|
||||||
${do:copy:LogType:logtype}
|
${do:copy:LogType:logtype}
|
||||||
${do:copy:UseHTTPProxyForFTP:ftpprox}
|
${do:copy:UseHTTPProxyForFTP:ftpprox}
|
||||||
|
${do:copy:ProxyType:proxytype}
|
||||||
${do:copy:Build:build}
|
${do:copy:Build:build}
|
||||||
${do:copy:PrimaryScan:filter}
|
${do:copy:PrimaryScan:filter}
|
||||||
${do:copy:Travel:travel}
|
${do:copy:Travel:travel}
|
||||||
@@ -148,6 +154,7 @@ ${do:copy:MaxHtml:maxhtml}
|
|||||||
${do:copy:MaxOther:othermax}
|
${do:copy:MaxOther:othermax}
|
||||||
${do:copy:MaxAll:sizemax}
|
${do:copy:MaxAll:sizemax}
|
||||||
${do:copy:MaxWait:pausebytes}
|
${do:copy:MaxWait:pausebytes}
|
||||||
|
${do:copy:PauseFiles:pausefiles}
|
||||||
${do:copy:Sockets:connexion}
|
${do:copy:Sockets:connexion}
|
||||||
${do:copy:Retry:retry}
|
${do:copy:Retry:retry}
|
||||||
${do:copy:MaxTime:maxtime}
|
${do:copy:MaxTime:maxtime}
|
||||||
@@ -211,7 +218,7 @@ ${do:loadhash}
|
|||||||
|
|
||||||
${LANG_S11}
|
${LANG_S11}
|
||||||
<input name="projname" value="${projname}"
|
<input name="projname" value="${projname}"
|
||||||
onMouseOver="info('${html:html:LANG_S1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_S1}' onMouseOver="info('${html:html:LANG_S1}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@@ -226,7 +233,7 @@ ${do:loadhash}
|
|||||||
</select>
|
</select>
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="projcateg" value="${projcateg}"
|
<input name="projcateg" value="${projcateg}"
|
||||||
onMouseOver="info('${html:html:LANG_S5}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_S5}' onMouseOver="info('${html:html:LANG_S5}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
|
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
@@ -234,7 +241,7 @@ ${do:loadhash}
|
|||||||
<br>
|
<br>
|
||||||
${LANG_S12}
|
${LANG_S12}
|
||||||
<input name="path" value="${path}"
|
<input name="path" value="${path}"
|
||||||
onMouseOver="info('${html:html:LANG_S2}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_S2}' onMouseOver="info('${html:html:LANG_S2}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
<input type="button" value="refresh" onClick="form.redirect.value='step2.html'; form.submit()">
|
<input type="button" value="refresh" onClick="form.redirect.value='step2.html'; form.submit()">
|
||||||
|
|
||||||
@@ -243,11 +250,11 @@ ${do:loadhash}
|
|||||||
<tr><td>
|
<tr><td>
|
||||||
<table width="100%" border="0"><tr><td align="left">
|
<table width="100%" border="0"><tr><td align="left">
|
||||||
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.redirect.value='index.html'; form.submit()"
|
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.redirect.value='index.html'; form.submit()"
|
||||||
onMouseOver="info('${html:html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPPREV}' onMouseOver="info('${html:html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> " onClick="return checkname();" default
|
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> " onClick="return checkname();" default
|
||||||
onMouseOver="info('${html:html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPNEXT}' onMouseOver="info('${html:html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ function do_check_child() {
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/server/file.html" target="_blank"
|
<a href="/server/file.html" target="_blank"
|
||||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_O1}' onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O1}
|
${LANG_O1}
|
||||||
@@ -73,7 +73,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/index.html" target="_blank"
|
<a href="/index.html" target="_blank"
|
||||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O5}
|
${LANG_O5}
|
||||||
@@ -102,7 +102,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step2.html" target="_blank"
|
<a href="/step2.html" target="_blank"
|
||||||
onClick="window.open('/step2.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step2.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -118,7 +118,7 @@ ${do:end-if}
|
|||||||
<tr><td>
|
<tr><td>
|
||||||
${LANG_G31}
|
${LANG_G31}
|
||||||
<select name="todo"
|
<select name="todo"
|
||||||
onMouseOver="info('${html:LANG_G9}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G9}' onMouseOver="info('${html:LANG_G9}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${listid:todo:LISTDEF_10}
|
${listid:todo:LISTDEF_10}
|
||||||
</select>
|
</select>
|
||||||
@@ -131,12 +131,12 @@ ${do:end-if}
|
|||||||
</td><td>
|
</td><td>
|
||||||
<input type="button" value="${LANG_G43}"
|
<input type="button" value="${LANG_G43}"
|
||||||
onClick="doOpenWindow()"
|
onClick="doOpenWindow()"
|
||||||
onMouseOver="info('${html:LANG_G24b}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G24b}' onMouseOver="info('${html:LANG_G24b}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
<br>
|
<br>
|
||||||
<textarea name="urls" cols="50" rows="8"
|
<textarea name="urls" cols="50" rows="8"
|
||||||
onMouseOver="info('${html:LANG_G11}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G11}' onMouseOver="info('${html:LANG_G11}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
${do:output-mode:html}
|
${do:output-mode:html}
|
||||||
${urls}
|
${urls}
|
||||||
@@ -150,7 +150,7 @@ ${do:output-mode:}
|
|||||||
${LANG_URLLIST}:
|
${LANG_URLLIST}:
|
||||||
</td><td>
|
</td><td>
|
||||||
<input name="filelist" value="${filelist}" size="40"
|
<input name="filelist" value="${filelist}" size="40"
|
||||||
onMouseOver="info('${html:LANG_G24c}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G24c}' onMouseOver="info('${html:LANG_G24c}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ ${do:output-mode:}
|
|||||||
${LANG_G41}
|
${LANG_G41}
|
||||||
</td><td>
|
</td><td>
|
||||||
<input type="button" value="${LANG_G40}" onClick="window.open('option1.html', 'option1', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
<input type="button" value="${LANG_G40}" onClick="window.open('option1.html', 'option1', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_G24}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_G24}' onMouseOver="info('${html:LANG_G24}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
|
|
||||||
@@ -170,11 +170,11 @@ ${do:output-mode:}
|
|||||||
<tr><td align="right">
|
<tr><td align="right">
|
||||||
<table width="100%" border="0"><tr><td align="left">
|
<table width="100%" border="0"><tr><td align="left">
|
||||||
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.redirect.value='step2.html'; form.submit()"
|
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.redirect.value='step2.html'; form.submit()"
|
||||||
onMouseOver="info('${html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPPREV}' onMouseOver="info('${html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> "
|
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> "
|
||||||
onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPNEXT}' onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ function info(str) {
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/server/file.html" target="_blank"
|
<a href="/server/file.html" target="_blank"
|
||||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_O1}' onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O1}
|
${LANG_O1}
|
||||||
@@ -55,7 +55,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td id="subTitle" align="right">
|
<td id="subTitle" align="right">
|
||||||
<a href="/index.html" target="_blank"
|
<a href="/index.html" target="_blank"
|
||||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
style="color:#FFFFFF"
|
style="color:#FFFFFF"
|
||||||
>
|
>
|
||||||
${LANG_O5}
|
${LANG_O5}
|
||||||
@@ -84,7 +84,7 @@ ${do:if-file-exists:html/index.html}
|
|||||||
<td>
|
<td>
|
||||||
<a href="/step3.html" target="_blank"
|
<a href="/step3.html" target="_blank"
|
||||||
onClick="window.open('/step3.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
onClick="window.open('/step3.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||||
>${LANG_TIPHELP}</a>
|
>${LANG_TIPHELP}</a>
|
||||||
</td>
|
</td>
|
||||||
${do:end-if}
|
${do:end-if}
|
||||||
@@ -178,6 +178,12 @@ ${do:end-if}
|
|||||||
${test:parsejava:--parse-java=0:}
|
${test:parsejava:--parse-java=0:}
|
||||||
${test:updhack:--updatehack}
|
${test:updhack:--updatehack}
|
||||||
${test:urlhack:--urlhack=0:--urlhack}
|
${test:urlhack:--urlhack=0:--urlhack}
|
||||||
|
${test:keepwww:--keep-www-prefix}
|
||||||
|
${test:keepslashes:--keep-double-slashes}
|
||||||
|
${test:keepqueryorder:--keep-query-order}
|
||||||
|
${test:cookiesfile:--cookies-file "}${html:cookiesfile}${test:cookiesfile:"}
|
||||||
|
${test:pausefiles:--pause "}${pausefiles}${test:pausefiles:"}
|
||||||
|
${test:stripquery:--strip-query "}${html:stripquery}${test:stripquery:"}
|
||||||
${test:toler:--tolerant}
|
${test:toler:--tolerant}
|
||||||
${test:http10:--http-10}
|
${test:http10:--http-10}
|
||||||
${test:cache2:--store-all-in-cache}
|
${test:cache2:--store-all-in-cache}
|
||||||
@@ -186,7 +192,7 @@ ${do:end-if}
|
|||||||
${test:logtype:::--extra-log:--debug-log}
|
${test:logtype:::--extra-log:--debug-log}
|
||||||
${test:index:--index=0:}
|
${test:index:--index=0:}
|
||||||
${test:index2:--search-index=0:--search-index}
|
${test:index2:--search-index=0:--search-index}
|
||||||
${test:prox:--proxy "}${prox}${test:prox:\3A}${portprox}${test:prox:"}
|
${test:prox:--proxy "}${do:if-not-empty:prox}${test:proxytype::socks5:connect}${test:proxytype:\3A//}${do:end-if}${do:output-mode:html}${prox}${test:prox:\3A}${portprox}${test:prox:"}
|
||||||
${test:ftpprox:--httpproxy-ftp=0:--httpproxy-ftp}
|
${test:ftpprox:--httpproxy-ftp=0:--httpproxy-ftp}
|
||||||
</textarea>
|
</textarea>
|
||||||
|
|
||||||
@@ -219,15 +225,21 @@ NoPwdInPages=${ztest:hidepwd:0:1}
|
|||||||
NoQueryStrings=${ztest:hidequery:0:1}
|
NoQueryStrings=${ztest:hidequery:0:1}
|
||||||
NoPurgeOldFiles=${ztest:nopurge:0:1}
|
NoPurgeOldFiles=${ztest:nopurge:0:1}
|
||||||
Cookies=${ztest:cookies:0:1}
|
Cookies=${ztest:cookies:0:1}
|
||||||
|
CookiesFile=${cookiesfile}
|
||||||
CheckType=${ztest:checktype:0:1:2}
|
CheckType=${ztest:checktype:0:1:2}
|
||||||
ParseJava=${ztest:parsejava:0:1}
|
ParseJava=${ztest:parsejava:0:1}
|
||||||
HTTP10=${ztest:http10:0:1}
|
HTTP10=${ztest:http10:0:1}
|
||||||
TolerantRequests=${ztest:toler:0:1}
|
TolerantRequests=${ztest:toler:0:1}
|
||||||
UpdateHack=${ztest:updhack:0:1}
|
UpdateHack=${ztest:updhack:0:1}
|
||||||
URLHack=${ztest:urlhack:0:1}
|
URLHack=${ztest:urlhack:0:1}
|
||||||
|
KeepWww=${ztest:keepwww:0:1}
|
||||||
|
KeepSlashes=${ztest:keepslashes:0:1}
|
||||||
|
KeepQueryOrder=${ztest:keepqueryorder:0:1}
|
||||||
|
StripQuery=${stripquery}
|
||||||
StoreAllInCache=${ztest:cache2:0:1}
|
StoreAllInCache=${ztest:cache2:0:1}
|
||||||
LogType=${logtype}
|
LogType=${logtype}
|
||||||
UseHTTPProxyForFTP=${ztest:ftpprox:0:1}
|
UseHTTPProxyForFTP=${ztest:ftpprox:0:1}
|
||||||
|
ProxyType=${proxytype}
|
||||||
Build=${build}
|
Build=${build}
|
||||||
PrimaryScan=${filter}
|
PrimaryScan=${filter}
|
||||||
Travel=${travel}
|
Travel=${travel}
|
||||||
@@ -238,6 +250,7 @@ MaxHtml=${maxhtml}
|
|||||||
MaxOther=${othermax}
|
MaxOther=${othermax}
|
||||||
MaxAll=${sizemax}
|
MaxAll=${sizemax}
|
||||||
MaxWait=${pausebytes}
|
MaxWait=${pausebytes}
|
||||||
|
PauseFiles=${pausefiles}
|
||||||
Sockets=${connexion}
|
Sockets=${connexion}
|
||||||
Retry=${retry}
|
Retry=${retry}
|
||||||
MaxTime=${maxtime}
|
MaxTime=${maxtime}
|
||||||
@@ -285,11 +298,11 @@ ${do:output-mode:}
|
|||||||
</td></tr><tr><td>
|
</td></tr><tr><td>
|
||||||
<table width="100%" border="0"><tr><td align="left">
|
<table width="100%" border="0"><tr><td align="left">
|
||||||
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.command.value=''; form.redirect.value='step3.html'; form.submit()"
|
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.command.value=''; form.redirect.value='step3.html'; form.submit()"
|
||||||
onMouseOver="info('${html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPPREV}' onMouseOver="info('${html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td><td align="right">
|
</td><td align="right">
|
||||||
<input name="nextBtn" type="submit" value=" ${LANG_J9} >> "
|
<input name="nextBtn" type="submit" value=" ${LANG_J9} >> "
|
||||||
onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
title='${html:LANG_TIPNEXT}' onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||||
>
|
>
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
|
|
||||||
|
|||||||
@@ -118,8 +118,8 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
|||||||
<br>Avoid "never", because the local mirror could be bogus
|
<br>Avoid "never", because the local mirror could be bogus
|
||||||
</small><br><br>
|
</small><br><br>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<li>Parse java files</li>
|
<li>Parse scripts</li>
|
||||||
<br><small>Must the engine parse .java files (java classes) to seek included filenames?
|
<br><small>Must the engine parse scripts to seek included filenames?
|
||||||
<br>It is checked by default
|
<br>It is checked by default
|
||||||
</small><br><br>
|
</small><br><br>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
|
|||||||
28
lang.def
28
lang.def
@@ -1006,3 +1006,31 @@ LANG_SERVEND
|
|||||||
Server terminated
|
Server terminated
|
||||||
LANG_FATALERR
|
LANG_FATALERR
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
|
LANG_PROXYTYPE
|
||||||
|
Proxy type:
|
||||||
|
LANG_PROXYTYPETIP
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
LANG_COOKIEFILE
|
||||||
|
Load cookies from file:
|
||||||
|
LANG_COOKIEFILETIP
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
LANG_PAUSEFILES
|
||||||
|
Pause between files:
|
||||||
|
LANG_PAUSEFILESTIP
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
LANG_KEEPWWW
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
LANG_KEEPWWWTIP
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
LANG_KEEPSLASHES
|
||||||
|
Keep double slashes in URLs
|
||||||
|
LANG_KEEPSLASHESTIP
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
LANG_KEEPQUERYORDER
|
||||||
|
Keep the original query-string order
|
||||||
|
LANG_KEEPQUERYORDERTIP
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
LANG_STRIPQUERY
|
||||||
|
Strip query keys:
|
||||||
|
LANG_STRIPQUERYTIP
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
|||||||
@@ -928,3 +928,31 @@ Server terminated
|
|||||||
Ñúðâúðúò íå îòãîâàðÿ
|
Ñúðâúðúò íå îòãîâàðÿ
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
Ôàòàëíà ãðåøêà ïðè ñúçäàâàíåòî íà òîçè îãëåäàëåí ñàéò
|
Ôàòàëíà ãðåøêà ïðè ñúçäàâàíåòî íà òîçè îãëåäàëåí ñàéò
|
||||||
|
Proxy type:
|
||||||
|
Òèï íà ïðîêñè:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Ïðîòîêîë íà ïðîêñè. HTTP: ñòàíäàðòíî ïðîêñè. HTTP (CONNECT òóíåë): èçïðàùà âñÿêà çàÿâêà ïðåç CONNECT òóíåë, çà ïðîêñè ïîääúðæàùè ñàìî CONNECT êàòî HTTPTunnelPort íà Tor. SOCKS5: ïîðò ïî ïîäðàçáèðàíå 1080.
|
||||||
|
Load cookies from file:
|
||||||
|
Çàðåæäàíå íà 'áèñêâèòêè' îò ôàéë:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Ïðåäâàðèòåëíî çàðåæäàíå íà 'áèñêâèòêè' îò ôàéë Netscape cookies.txt ïðåäè îáõîæäàíåòî.
|
||||||
|
Pause between files:
|
||||||
|
Ïàóçà ìåæäó ôàéëîâåòå:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Ñëó÷àéíî çàáàâÿíå ìåæäó èçòåãëÿíèÿòà íà ôàéëîâå, â ñåêóíäè. Èçïîëçâàéòå MIN:MAX çà ñëó÷àåí äèàïàçîí (íàïðèìåð 2:8).
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
Çàïàçâàíå íà ïðåôèêñà www. (áåç ñëèâàíå íà www.host ñ host)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
www.host è host äà íå ñå òðåòèðàò êàòî åäèí è ñúù ñàéò.
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Çàïàçâàíå íà äâîéíèòå íàêëîíåíè ÷åðòè â URL
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
Áåç ïðåìàõâàíå íà ïîâòàðÿùèòå ñå íàêëîíåíè ÷åðòè â URL.
|
||||||
|
Keep the original query-string order
|
||||||
|
Çàïàçâàíå íà îðèãèíàëíèÿ ðåä íà ïàðàìåòðèòå â çàÿâêàòà
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
Áåç ïðåíàðåæäàíå íà ïàðàìåòðèòå íà çàÿâêàòà ïðè ïðåìàõâàíå íà äóáëèðàíè URL.
|
||||||
|
Strip query keys:
|
||||||
|
Ïðåìàõâàíå íà êëþ÷îâå îò çàÿâêàòà:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
Êëþ÷îâå îò çàÿâêàòà, ðàçäåëåíè ñúñ çàïåòàÿ, êîèòî äà ñå ïðåìàõíàò îò èìåòî íà çàïèñàíèÿ ôàéë (íàïðèìåð sid,utm_source).
|
||||||
|
|||||||
@@ -928,3 +928,31 @@ Server terminated
|
|||||||
Servidor desconectado
|
Servidor desconectado
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
Ha ocurrido un error fatal durante esta copia
|
Ha ocurrido un error fatal durante esta copia
|
||||||
|
Proxy type:
|
||||||
|
Tipo de proxy:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Protocolo del proxy. HTTP: proxy estándar. HTTP (túnel CONNECT): envía cada petición a través de un túnel CONNECT, para proxys que solo admiten CONNECT como el HTTPTunnelPort de Tor. SOCKS5: puerto predeterminado 1080.
|
||||||
|
Load cookies from file:
|
||||||
|
Cargar cookies desde un archivo:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Precargar cookies desde un archivo Netscape cookies.txt antes de comenzar la descarga.
|
||||||
|
Pause between files:
|
||||||
|
Pausa entre archivos:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Retardo aleatorio entre descargas de archivos, en segundos. Use MIN:MAX para un rango aleatorio (p. ej. 2:8).
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
Mantener el prefijo www. (no combinar www.host con host)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
No tratar www.host y host como el mismo sitio.
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Mantener las barras dobles en las URL
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
No colapsar las barras duplicadas en las URL.
|
||||||
|
Keep the original query-string order
|
||||||
|
Mantener el orden original de la query string
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
No reordenar los parámetros de la query string al deduplicar las URL.
|
||||||
|
Strip query keys:
|
||||||
|
Eliminar claves de query string:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
Claves de query string, separadas por comas, que se eliminarán del nombre de los archivos guardados (p. ej. sid,utm_source).
|
||||||
|
|||||||
@@ -928,3 +928,31 @@ Server terminated
|
|||||||
|
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
|
|
||||||
|
Proxy type:
|
||||||
|
Typ proxy:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Protokol proxy. HTTP: standardní proxy. HTTP (tunel CONNECT): odešle každý požadavek pøes tunel CONNECT, pro proxy podporující jen CONNECT jako HTTPTunnelPort v Toru. SOCKS5: výchozí port 1080.
|
||||||
|
Load cookies from file:
|
||||||
|
Naèíst cookies ze souboru:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Naèíst cookies ze souboru Netscape cookies.txt pøed zahájením stahování.
|
||||||
|
Pause between files:
|
||||||
|
Prodleva mezi soubory:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Náhodná prodleva mezi stahováním souborù, v sekundách. Pro náhodný rozsah použijte MIN:MAX (napø. 2:8).
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
Zachovat pøedponu www. (nesluèovat www.host s host)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
Nepovažovat www.host a host za stejný web.
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Zachovat dvojitá lomítka v URL
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
Nesluèovat opakovaná lomítka v URL.
|
||||||
|
Keep the original query-string order
|
||||||
|
Zachovat pùvodní poøadí øetìzce dotazu
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
Nemìnit poøadí parametrù øetìzce dotazu pøi odstraòování duplicitních URL.
|
||||||
|
Strip query keys:
|
||||||
|
Odebrat klíèe dotazu:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
Klíèe dotazu oddìlené èárkami, které se vynechají z pojmenování ukládaných souborù (napø. sid,utm_source).
|
||||||
|
|||||||
@@ -928,3 +928,31 @@ Server terminated
|
|||||||
伺服器已終止
|
伺服器已終止
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
這鏡像發生了不可回復的錯誤
|
這鏡像發生了不可回復的錯誤
|
||||||
|
Proxy type:
|
||||||
|
proxy 類型:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
代理協定。HTTP:標準代理。HTTP(CONNECT 隧道):透過 CONNECT 隧道傳送每個請求,用於僅支援 CONNECT 的代理,例如 Tor 的 HTTPTunnelPort。SOCKS5:預設連接埠 1080。
|
||||||
|
Load cookies from file:
|
||||||
|
從檔案載入 cookies:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
在抓取前從 Netscape 格式的 cookies.txt 檔案預先載入 cookies。
|
||||||
|
Pause between files:
|
||||||
|
檔案之間暫停:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
檔案下載之間的隨機延遲(秒)。使用 MIN:MAX 指定隨機範圍 (例如 2:8)。
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
保留 www. 前綴 (不將 www.host 與 host 合併)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
不將 www.host 與 host 視為同一站點。
|
||||||
|
Keep double slashes in URLs
|
||||||
|
保留 URL 中的雙斜線
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
不合併 URL 中重複的斜線。
|
||||||
|
Keep the original query-string order
|
||||||
|
保留查詢字串的原始順序
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
在對 URL 去重時不重新排列查詢字串參數。
|
||||||
|
Strip query keys:
|
||||||
|
移除查詢鍵:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
以逗號分隔的查詢鍵,將其從儲存檔案的命名中移除 (例如 sid,utm_source)。
|
||||||
|
|||||||
@@ -928,3 +928,31 @@ Server terminated
|
|||||||
|
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
|
|
||||||
|
Proxy type:
|
||||||
|
代理类型:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
代理协议。HTTP:标准代理。HTTP(CONNECT 隧道):通过 CONNECT 隧道发送每个请求,用于仅支持 CONNECT 的代理,例如 Tor 的 HTTPTunnelPort。SOCKS5:默认端口 1080。
|
||||||
|
Load cookies from file:
|
||||||
|
从文件加载 cookies:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
在抓取前从 Netscape 格式的 cookies.txt 文件预加载 cookies。
|
||||||
|
Pause between files:
|
||||||
|
文件间暂停:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
文件下载之间的随机延迟(秒)。使用 MIN:MAX 指定随机范围 (例如 2:8)。
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
保留 www. 前缀 (不将 www.host 与 host 合并)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
不把 www.host 和 host 视为同一站点。
|
||||||
|
Keep double slashes in URLs
|
||||||
|
保留 URL 中的双斜杠
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
不合并 URL 中重复的斜杠。
|
||||||
|
Keep the original query-string order
|
||||||
|
保留查询字符串的原始顺序
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
在对 URL 去重时不重新排列查询字符串参数。
|
||||||
|
Strip query keys:
|
||||||
|
剥离查询键:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
用逗号分隔的查询键,将其从保存文件的命名中删除 (例如 sid,utm_source)。
|
||||||
|
|||||||
@@ -930,3 +930,31 @@ Server terminated
|
|||||||
Poslužitelj je razriješen
|
Poslužitelj je razriješen
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
Tijekom ovog zrcaljenja je nastala fatalna pogreška
|
Tijekom ovog zrcaljenja je nastala fatalna pogreška
|
||||||
|
Proxy type:
|
||||||
|
Vrsta posrednika:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Protokol posrednika. HTTP: standardni posrednik. HTTP (CONNECT tunel): ¹alje svaki zahtjev kroz CONNECT tunel, za posrednike koji podr¾avaju samo CONNECT poput Torovog HTTPTunnelPorta. SOCKS5: zadani port 1080.
|
||||||
|
Load cookies from file:
|
||||||
|
Uèitati kolaèiæe iz datoteke:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Prije zrcaljenja uèitati kolaèiæe iz datoteke Netscape cookies.txt.
|
||||||
|
Pause between files:
|
||||||
|
Stanka izmeðu datoteka:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Nasumièna odgoda izmeðu preuzimanja datoteka, u sekundama. Za nasumièni raspon koristiti MIN:MAX (npr. 2:8).
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
Zadr¾ati www. predmetak (ne spajati www.host s host)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
www.host i host ne smatrati istim web-mjestom.
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Zadr¾ati dvostruke kose crte u URL-ovima
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
Ne sa¾imati ponovljene kose crte u URL-ovima.
|
||||||
|
Keep the original query-string order
|
||||||
|
Zadr¾ati izvorni redoslijed teksta za upite
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
Ne mijenjati redoslijed parametara teksta za upite pri uklanjanju dvostrukih URL-ova.
|
||||||
|
Strip query keys:
|
||||||
|
Ukloniti kljuèeve upita:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
Zarezom odvojeni kljuèevi upita koji se izostavljaju iz naziva spremljenih datoteka (npr. sid,utm_source).
|
||||||
|
|||||||
@@ -976,3 +976,31 @@ Click on this notification to restart the interrupted mirror
|
|||||||
Klik på denne notifikation for at genstarte den afbrudte spejlkopiering
|
Klik på denne notifikation for at genstarte den afbrudte spejlkopiering
|
||||||
HTTrack: could not save profile for '%s'!
|
HTTrack: could not save profile for '%s'!
|
||||||
HTTrack: kunne ikke gemme profil for '%s'!
|
HTTrack: kunne ikke gemme profil for '%s'!
|
||||||
|
Proxy type:
|
||||||
|
Proxytype:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Proxyprotokol. HTTP: standardproxy. HTTP (CONNECT-tunnel): sender hver forespørgsel gennem en CONNECT-tunnel, til proxyer der kun understøtter CONNECT som Tors HTTPTunnelPort. SOCKS5: standardport 1080.
|
||||||
|
Load cookies from file:
|
||||||
|
Indlæs cookies fra fil:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Indlæs cookies fra en Netscape cookies.txt-fil, før crawlingen starter.
|
||||||
|
Pause between files:
|
||||||
|
Pause mellem filer:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Tilfældig forsinkelse mellem filoverførsler, i sekunder. Brug MIN:MAX for et tilfældigt interval (f.eks. 2:8).
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
Behold www.-præfikset (sammenlæg ikke www.host med host)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
Behandl ikke www.host og host som det samme websted.
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Behold dobbelte skråstreger i URL'er
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
Sammenfold ikke gentagne skråstreger i URL'er.
|
||||||
|
Keep the original query-string order
|
||||||
|
Behold den oprindelige rækkefølge i forespørgselsstrengen
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
Omorden ikke forespørgselsstrengens parametre, når dublerede URL'er fjernes.
|
||||||
|
Strip query keys:
|
||||||
|
Fjern forespørgselsnøgler:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
Kommaseparerede forespørgselsnøgler, der udelades i navngivningen af gemte filer (f.eks. sid,utm_source).
|
||||||
|
|||||||
@@ -928,3 +928,31 @@ Server terminated
|
|||||||
Der Server wurde beendet
|
Der Server wurde beendet
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
Fataler Fehler während der Webseiten-Kopie
|
Fataler Fehler während der Webseiten-Kopie
|
||||||
|
Proxy type:
|
||||||
|
Proxy-Typ:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Proxy-Protokoll. HTTP: normaler Proxy. HTTP (CONNECT-Tunnel): sendet jede Anfrage durch einen CONNECT-Tunnel, für Proxys, die nur CONNECT unterstützen, wie Tors HTTPTunnelPort. SOCKS5: Standardport 1080.
|
||||||
|
Load cookies from file:
|
||||||
|
Cookies aus Datei laden:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Cookies aus einer Netscape-cookies.txt-Datei laden, bevor das Crawlen beginnt.
|
||||||
|
Pause between files:
|
||||||
|
Pause zwischen Dateien:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Zufällige Verzögerung zwischen Datei-Downloads, in Sekunden. MIN:MAX für einen Zufallsbereich verwenden (z. B. 2:8).
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
www.-Präfix beibehalten (www.host nicht mit host zusammenführen)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
www.host und host nicht als dieselbe Website behandeln.
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Doppelte Schrägstriche in URLs beibehalten
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
Doppelte Schrägstriche in URLs nicht zusammenführen.
|
||||||
|
Keep the original query-string order
|
||||||
|
Ursprüngliche Reihenfolge des Query-Strings beibehalten
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
Query-String-Parameter beim Entfernen doppelter URLs nicht neu anordnen.
|
||||||
|
Strip query keys:
|
||||||
|
Query-Schlüssel entfernen:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
Kommagetrennte Query-Schlüssel, die bei der Benennung gespeicherter Dateien entfallen (z. B. sid,utm_source).
|
||||||
|
|||||||
@@ -928,3 +928,31 @@ Server terminated
|
|||||||
|
|
||||||
A fatal error has occurred during this mirror
|
A fatal error has occurred during this mirror
|
||||||
|
|
||||||
|
Proxy type:
|
||||||
|
Proxy tüüp:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Puhverserveri protokoll. HTTP: tavaline puhverserver. HTTP (CONNECT-tunnel): saadab iga päringu läbi CONNECT-tunneli, ainult CONNECT-it toetavate puhverserverite jaoks nagu Tori HTTPTunnelPort. SOCKS5: vaikeport 1080.
|
||||||
|
Load cookies from file:
|
||||||
|
Lae küpsised failist:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Lae küpsised eelnevalt Netscape cookies.txt failist enne kopeerimist.
|
||||||
|
Pause between files:
|
||||||
|
Paus failide vahel:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Juhuslik viivitus failide allalaadimiste vahel, sekundites. Juhusliku vahemiku jaoks kasuta MIN:MAX (nt 2:8).
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
Säilita www. eesliide (ära ühenda www.host ja host)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
Ära käsitle www.host ja host sama saidina.
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Säilita topeltkaldkriipsud URL-ides
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
Ära ühenda korduvaid kaldkriipse URL-ides.
|
||||||
|
Keep the original query-string order
|
||||||
|
Säilita päringustringi algne järjekord
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
Ära järjesta päringustringi parameetreid ümber URL-ide korduste eemaldamisel.
|
||||||
|
Strip query keys:
|
||||||
|
Eemalda päringuvõtmed:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
Komadega eraldatud päringuvõtmed, mis jäetakse salvestatud faili nimest välja (nt sid,utm_source).
|
||||||
|
|||||||
@@ -976,3 +976,31 @@ Click on this notification to restart the interrupted mirror
|
|||||||
Click on this notification to restart the interrupted mirror
|
Click on this notification to restart the interrupted mirror
|
||||||
HTTrack: could not save profile for '%s'!
|
HTTrack: could not save profile for '%s'!
|
||||||
HTTrack: could not save profile for '%s'!
|
HTTrack: could not save profile for '%s'!
|
||||||
|
Proxy type:
|
||||||
|
Proxy type:
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Proxy protocol. HTTP: standard proxy. HTTP (CONNECT tunnel): sends every request through a CONNECT tunnel, for CONNECT-only proxies like Tor's HTTPTunnelPort. SOCKS5: default port 1080.
|
||||||
|
Load cookies from file:
|
||||||
|
Load cookies from file:
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Preload cookies from a Netscape cookies.txt file before crawling.
|
||||||
|
Pause between files:
|
||||||
|
Pause between files:
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Random delay between file downloads, in seconds. Use MIN:MAX for a random range (e.g. 2:8).
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
Keep the www. prefix (do not merge www.host with host)
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
Do not treat www.host and host as the same site.
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Keep double slashes in URLs
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
Do not collapse duplicate slashes in URLs.
|
||||||
|
Keep the original query-string order
|
||||||
|
Keep the original query-string order
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
Do not reorder query-string parameters when deduplicating URLs.
|
||||||
|
Strip query keys:
|
||||||
|
Strip query keys:
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
Comma-separated query keys to drop from the saved-file naming (e.g. sid,utm_source).
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user