public inbox for ipfire-scm@lists.ipfire.org
 help / color / mirror / Atom feed
* [git.ipfire.org] IPFire 2.x development tree branch, next, updated. 07300f6a14b55eed5c3865bf258f3108b8a7a222
@ 2021-09-05 13:11 Arne Fitzenreiter
  0 siblings, 0 replies; only message in thread
From: Arne Fitzenreiter @ 2021-09-05 13:11 UTC (permalink / raw)
  To: ipfire-scm

[-- Attachment #1: Type: text/plain, Size: 96080 bytes --]

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".

The branch, next has been updated
       via  07300f6a14b55eed5c3865bf258f3108b8a7a222 (commit)
       via  880ebbe8c6fbba592ba236946835e4856ed05ab5 (commit)
       via  e055a1a97a4207a54ec2ba8a8ac172512cd6f1d7 (commit)
       via  bfa7865ec5b6a248c4a9bf4c053a7cc142a8faa2 (commit)
       via  178586e15bab4ade8579d94aada0ba168b09da5a (commit)
       via  6dd084c22d05271c205a3bacf86da7689e4e3dbb (commit)
       via  f4858c925c20fb9c930c7ccc0e0bbae03a06efd7 (commit)
       via  135bd44a629427843c9a212cd64081a933049b4b (commit)
       via  92f167fc4746b51fc9b6064026a3e7ca5c54c389 (commit)
       via  ba2592ada95060c995b2bc12c3ac9dd2c9e9bf0e (commit)
       via  79516fed9a36cbb9018d4403d4b66840b827baf8 (commit)
       via  55da553742129623753baa86564cd65d3d7df680 (commit)
       via  446dc99e2501a090f7562384b340230b9b5d1a7c (commit)
       via  a9611629cc90f716fbf4fc7050a95f0b7b285df3 (commit)
       via  fc81e493b14d545893856d5bcba11d538a8ae16c (commit)
       via  09c3db1cffa55cb7ddb35d642a74abc6f216d9e4 (commit)
       via  4190b2a621b9d39e7dcf2480f03d41558f0c7fd0 (commit)
       via  05c8c10f193f2b919542fd610483f4bdb2330988 (commit)
      from  1f60759eab2594d9b30d9f0e3307b3f1cae9cf2d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 07300f6a14b55eed5c3865bf258f3108b8a7a222
Author: Arne Fitzenreiter <arne_f(a)ipfire.org>
Date:   Sun Sep 5 08:56:31 2021 +0000

    core160: add libidn
    
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 880ebbe8c6fbba592ba236946835e4856ed05ab5
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Mon Jul 26 18:35:16 2021 +0200

    libidn: Update to version 1.38
    
    - Update from 1.36 to 1.38
    - Update of rootfile
    - Changelog
        version 1.38
    	build: Fix --disable-tld builds.
            Simplify building of gdoc-generated man/texi outputs.
            Rebuild GTK-DOC HTML/PDF outputs on version number changes.
            doc: Rebuild idn.1 when version number changes.
            build: Fix --disable-tld builds.
            cicd: Add pages.
            doc: Improve GTK-DOC manual.
            cicd: Fix Ubuntu 12.04 builds.
            Improve GTK-DOC manual.
            Fix build errors related to doc/idn--help.texi.
            doc: Fix release process.
            doc: Improve HACKING instructions.
            Bootstrap cache.
        version 1.37
            Use gnulib's bootstrap.
            Drop old unused WERROR_CFLAGS usage.
            Improve URLs.
            Fix links for git and valgrind.
            Fix self check for --disable-tld.
            Sync with TP.
            Doc fixes.
            Don't dist ps/html/pdf.  Drop custom css.
            Improve ./configure summary output.
            Use gnulib langinfo module.
            More ./configure summary output.
            Use AM_GNU_GETTEXT_VERSION to get intl.m4 too.
            Disable some complex gnulib self-tests that add lots of dependencies and fail on mingw.
            Drop second gnulib tests directory since only one is supported.
            Require more recent automake and gtk-doc.
    	Fix .gitignore.
            doc: Fix JDK dependency for Fedora.
            Drop warning stuff covered by manywarnings.m4 now.
            Disable VLA from gettext.
            Remove autopoint-generated files that are in gnulib too.
            Update autoconf archive macros.
            Prefer gnulib's M4 files over autopoint.
    	Modernize autoconf usage.
            Use AM_GNU_GETTEXT_REQUIRE_VERSION.
    	Update gnulib files.
            Modernize configure.ac.
    	Require autoconf 2.64 for newer gnulib.
            Avoid including copyright info in idn example.
            Fix manual copyright years.
            Fix syntax-check.
            Update copyright years.
            Improve HACKING.
            Drop obsolete PGP key from AUTHORS.
            Revert last patch, clearly src/ was being built before doc/.
            Build doc/ after src/ so that src/idn exists for help2man of doc/idn.1.
            Fix recommended package installs.
            Drop .gitlab-ci.yml.
            Doc fix.
            Sync with TP.
            Fix typos, inspired by codespell.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Reviewed-by: Michael Tremer <michael.tremer(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit e055a1a97a4207a54ec2ba8a8ac172512cd6f1d7
Author: Arne Fitzenreiter <arne_f(a)ipfire.org>
Date:   Sun Sep 5 08:54:40 2021 +0000

    core160: add curl
    
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit bfa7865ec5b6a248c4a9bf4c053a7cc142a8faa2
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Mon Jul 26 18:34:39 2021 +0200

    curl: Update to version 7.78.0
    
    - Update from 7.77.0 to 7.78.0
    - Update of rootfile not required
    - Changelog
      Changes:
        curl_url_set: reject spaces in URLs w/o CURLU_ALLOW_SPACE
        CURLE_SETOPT_OPTION_SYNTAX: new error name for wrong setopt syntax
        hostip: make 'localhost' return fixed values
        mbedtls: add support for cert and key blob options
        metalink: remove all support for it
        mqtt: add support for username and password
      Bugfixes:
        --socks4[a]: clarify where the host name is resolved
        ares: always store IPv6 addresses first
        asyn-ares: remove check for 'data' in Curl_resolver_cancel
        bearssl: explicitly initialize all fields of Curl_ssl
        bearssl: remove incorrect const on variable that is modified
        build: fix compiler warnings when CURL_DISABLE_VERBOSE_STRINGS
        c-hyper: abort CONNECT response reading early on non 2xx responses
        c-hyper: add support for transfer-encoding in the request
        c-hyper: bail on too long response headers
        c-hyper: clear NTLM auth buffer when request is issued
        c-hyper: convert HYPERE_INVALID_PEER_MESSAGE to CURLE_UNSUPPORTED_PROTOCOL
        c-hyper: fix NTLM on closed connection tested with test159
        c-hyper: fix the uploaded field in progress callbacks
        c-hyper: handle NULL from hyper_buf_copy()
        c-hyper: support CURLINFO_STARTTRANSFER_TIME
        c-hyper: support CURLOPT_HEADER
        ccsidcurl: fix the compile errors
        CI/cirrus: install impacket from PyPI instead of FreeBSD packages
        CI: add bearssl build
        CI: add Circle CI
        CI: add jobs using Zuul
        CI: delete --enable-hsts option (it is the default now)
        CI: remove travis details
        cleanup: spell DoH with a lowercase o
        cmake: add CURL_DISABLE_NTLM option
        cmake: avoid leaking absolute paths into exported config
        cmake: fix IoctlSocket FIONBIO check
        cmake: fix support for UnixSockets feature on Win32
        cmake: remove libssh2 feature checks
        cmake: try well-known send/recv signature for Apple
        configure.ac: make non-executable
        configure/cmake: remove checks for many unused functions
        configure: add --disable-ntlm option
        configure: disable RTSP when hyper is selected
        configure: do not strip out debug flags
        configure: fix nghttp2 library name for static builds
        configure: inhibit the implicit-fallthrough warning on gcc-12
        configure: rename get-easy-option configure option to get-easy-options
        conn_shutdown: if closed during CONNECT cleanup properly
        conncache: lowercase the hash key for better match
        cookies: track expiration in jar to optimize removals
        copyright: add boiler-plate headers to CI config files
        crustls: bump crustls version and use new URL
        curl.h: <sys/select.h> is supported by VxWorks7
        curl.h: include sys/select.h for NuttX RTOS
        curl: ignore blank --output-dir
        curl_endian: remove the unused Curl_write64_le function
        curl_multibyte: Remove local encoding fallbacks
        Curl_ntlm_core_mk_nt_hash: fix OOM in error path
        Curl_ssl_getsessionid: fail if no session cache exists
        CURLOPT_WRITEFUNCTION.3: minor update of the example
        docs/BINDINGS: fix outdated links
        docs/examples: use curl_multi_poll() in multi examples
        docs/INSTALL: remove mentions of configure --with-darwin-ssl
        docs: document missing arguments to commands
        docs: fix inconsistencies in EGDSOCKET documentation
        docs: fix incorrect argument name reference
        docs: Fix typos
        docs: make docs for --etag-save match the program behaviour
        docs: use --max-redirs instead of --max-redir
        doh: (void)-prefix call to curl_easy_setopt
        doh: fix wrong DEBUGASSERT for doh private_data
        easy: during upkeep, attach Curl_easy to connections in the cache
        examples/multi-single: fix scan-build warning
        examples: length-limit two sscanf() uses of %s
        examples: safer and more proper read callback logic
        filecheck: quietly remove test-place/*~
        formdata: avoid "Argument cannot be negative" warning
        formdata: correct typecast in curl_mime_data call
        GHA: add a linux-hyper job
        GHA: add several libcurl tests to the hyper job
        GHA: run the newly fixed tests with hyper
        github: timeout jobs on macOS after 90 minutes
        glob: pass an 'int' as len when using printf's %*s
        gnutls: set the preferred TLS versions in correct order
        GOVERNANCE: add 'user', 'committer' and 'contributor'
        hostip: (macOS) free returned memory of SCDynamicStoreCopyProxies
        hostip: bad CURLOPT_RESOLVE syntax now returns error
        hsts: ignore numberical IP address hosts
        HSTS: not experimental anymore
        http2: clarify 'Using HTTP2' verbose message
        http2: init recvbuf struct for pushed streams
        http2_connisdead: handle trailing GOAWAY better
        http: fix crash in rate-limited upload
        http: make the haproxy support work with unix domain sockets
        http_proxy: deal with non-200 CONNECT response with Hyper
        hyper: propagate errors back up from read callbacks
        HYPER: remove mentions of deprecated development branch
        idn: fix libidn2 with windows unicode builds
        infof: remove newline from format strings, always append it
        lib: don't compare fd to FD_SETSIZE when using poll
        lib: fix compiler warnings with CURL_DISABLE_NETRC
        lib: fix type of len passed to *printf's %*s
        lib: more %u for port and int for %*s fixes
        lib: use %u instead of %ld for port number printf
        libcurl-security.3: mention file descriptors and forks
        libssh2: limit time a disconnect can take to 1 second
        mbedtls: make mbedtls_strerror always work
        mbedtls: Remove unnecessary include
        mqtt: detect illegal and too large file size
        mqtt: extend the error message for no topic
        msnprintf: return number of printed characters excluding null byte
        multi: add scan-build-6 work-around in curl_multi_fdset
        multi: alter transfer timeout ordering
        multi: do not switch off connect_only flag when closing
        multi: fix crash in curl_multi_wait / curl_multi_poll
        netrc: skip 'macdef' definitions
        ngtcp2: disable TLSv1.3 compatible mode when using GnuTLS
        openssl: avoid static variable for seed flag
        openssl: don't remove session id entry in disassociate
        pinnedpubkey.d: fix formatting for version support lists
        proto.d: fix formatting for paragraphs after margin changes
        quiche: use send() instead of sendto() to avoid macOS issue
        Revert "c-hyper: handle body on HYPER_TASK_EMPTY"
        Revert "ftp: Expression 'ftpc->wait_data_conn' is always false"
        runtests: also find the last test in Makefile.inc
        runtests: enable 'hyper mode' only for HTTP tests
        runtests: init $VERSION to avoid warnings when using -l
        runtests: parse data/Makefile.inc instead of using make
        runtests: skip disabled tests unless -f is used
        rustls: remove native_roots fallback
        schannel: set ALPN length correctly for HTTP/2
        SChannel: Use '_tcsncmp()' instead
        sectransp: check for client certs by name first, then file
        setopt: fix incorrect comments
        socketpair: fix potential hangs
        socks4: scan for the IPv4 address in resolve results
        ssl: read pending close notify alert before closing the connection
        sws: malloc request struct instead of using stack
        telnet: fix option parser to not send uninitialized contents
        test1116: hyper doesn't pass through "surprise-trailers"
        test1147: hyper doesn't allow "crazy" request headers like built-in
        test1151: added missing CRLF to work with hyper
        test1216: adjusted for hyper mode
        test1218: adjusted for hyper mode
        test1230: adjust to work in hyper mode
        test1340/1341: adjusted for hyper mode
        test1438/1457: add HTTP keyword to make hyper mode work
        test1514: add a CRLF to the response to make it correct
        test1518: adjusted to work with hyper
        test1519: adjusted to work with hyper
        test1594/1595/1596: fix to work in hyper mode
        test269: disable for hyper
        test3010: work with hyper mode
        test328: avoid a header-looking body to make hyper mode work
        test339: CRLFify better to work in hyper mode
        test347: CRLFify to work in hyper mode
        test393: make Content-Length fit within 64 bit for hyper
        test394: hyper returns a different error
        test395: hyper cannot work around > 64 bit content-lengths like built-in
        test433: adjust for hyper mode
        test434: add HTTP keyword
        test500: adjust to work with hyper mode
        test566: adjust to work with hyper mode
        test599: adjusted to work in hyper mode
        test644: remove as duplicate of test 587
        tests: fix Accept-Encoding strips to work with Hyper builds
        TLS: prevent shutdown loops to get stuck
        tool: make _lseeki64() macro work with the PellesC compiler
        tool_help: document that --tlspassword takes a password
        tool_help: remove unused define
        url.c: remove two variable assigns that are never read
        url: (void)-prefix a curl_url_get() call
        url: bad CURLOPT_CONNECT_TO syntax now returns error
        version: turn version number functions into returning void
        vtls: exit addsessionid if no cache is inited
        vtls: fix connection reuse checks for issuer cert and case sensitivity
        vtls: only store TIMER_APPCONNECT for non-proxy connect
        vtls: use free() not curl_free()
        warnless: simplify type size handling
        Win32: fix build with Watt-32
        winbuild/README: VC should be set to 6 'or larger'
        winbuild: support alternate nghttp2 static lib name
        wolfssl: failing to set a session id is not reason to error out
        write-out.d: clarify urlnum is not unique for de-globbed URLs
        zuul: use the new rustls directory name
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Reviewed-by: Michael Tremer <michael.tremer(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 178586e15bab4ade8579d94aada0ba168b09da5a
Author: Arne Fitzenreiter <arne_f(a)ipfire.org>
Date:   Sun Sep 5 08:51:24 2021 +0000

    core160: add network-functions.pl
    
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 6dd084c22d05271c205a3bacf86da7689e4e3dbb
Author: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
Date:   Fri Jul 23 13:09:42 2021 +0200

    network-functions.pl: Improve wifi_get_link_quality
    
    iwconfig doesn't return values for "Link Quality" if the interface
    is disconnected, causing a division by zero error. If there are odd
    values, the resulting percentage may contain many decimal places.
    
    This patch makes wifi_get_link_quality return zero instead of failing
    and rounds the percentage to a more meaningful integer.
    
    Signed-off-by: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
    Reviewed-by: Michael Tremer <michael.tremer(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit f4858c925c20fb9c930c7ccc0e0bbae03a06efd7
Author: Arne Fitzenreiter <arne_f(a)ipfire.org>
Date:   Sun Sep 5 08:49:07 2021 +0000

    core160: add ethtool, sysfsutls and sysstat
    
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 135bd44a629427843c9a212cd64081a933049b4b
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Tue Jul 20 22:01:29 2021 +0200

    rpcbind: Update to version 1.2.6
    
    - Update from 1.2.5 to 1.2.6
    - Update of rootfile not required
    - Changelog is too large to include here. It can be downloaded from sourceforge
       https://sourceforge.net/projects/rpcbind/files/rpcbind/1.2.6/1.2.6-ChangeLog
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 92f167fc4746b51fc9b6064026a3e7ca5c54c389
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Tue Jul 20 22:01:03 2021 +0200

    ethtool: Update to version 5.13
    
    - Update from 5.12 to 5.13
    - Update of rootfile not reuired
    - Changelog is no longer in the source tarball. It has to be extracted from the commits
       in the git repository.
       5.13
        netlink: work around spurious selftest failure	Michal Kubecek
        Merge branch 'review/getmodule-v4' into master	Michal Kubecek
        ethtool: Update manpages to reflect changes to getmodule (-m) command	Vladyslav Tarasiuk
        ethtool: Rename QSFP-DD identifiers to use CMIS	Vladyslav Tarasiuk
        ethtool: Refactor human-readable module EEPROM output for new API	Vladyslav Tarasiuk
        ethtool: Add netlink handler for getmodule (-m)	Vladyslav Tarasiuk
        Merge branch 'review/fec-stats-v3' into master	Michal Kubecek
        test: workaround for FEC encoding parser checks	Michal Kubecek
        netlink: stats: add an --all-groups option	Jakub Kicinski
        netlink: add support for standard stats	Jakub Kicinski
        ethtool: add nlchk for redirecting to netlink	Jakub Kicinski
        netlink: fec: support displaying statistics	Jakub Kicinski
        netlink: add FEC support	Jakub Kicinski
        json: improve array print API	Jakub Kicinski
        update UAPI header copies
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit ba2592ada95060c995b2bc12c3ac9dd2c9e9bf0e
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Tue Jul 20 22:00:46 2021 +0200

    cmake: Update to version 3.21.0
    
    - Update from 3.20.4 to 3.21.0
    - Update of rootfile not required
    - Changelog
      3.20.4 to 3.20.5
       This version update made no changes to documented features or interfaces. Some
       implementation updates were made to support ecosystem changes and/or fix regressions.
      3.20.5 to 3.21.0
       New Features
         Presets
           cmake-presets(7) gained support for specifying the install prefix in a configure preset.
           cmake-presets(7) gained support for conditional enabling of presets.
           cmake-presets(7) gained support for a ${hostSystemName} macro.
           cmake-presets(7) gained support for omitting the generator and binaryDir fields.
       Generators
         The Visual Studio 17 2022 generator was added. This is experimental and based on "Visual Studio 2022 Preview 1.1" because this version of VS has not been released.
         The Makefile Generators and the Ninja generator learned to add linker launcher tools along with the linker for C, CXX, OBJC, and OBJCXX languages. See the CMAKE_<LANG>_LINKER_LAUNCHER variable and <LANG>_LINKER_LAUNCHER target property for details.
       Languages
         CMake learned to support HIP as a first-class language that can be enabled via the project() and enable_language() commands.
         C_STANDARD, OBJC_STANDARD, and the Compile Features functionality gained support for C17 and C23.
         Source file extensions .ixx and .cppm are now treated as C++.
       Command-Line
         cmake(1) gained the --install-prefix <dir> command-line option to specify the location of the install prefix.
         cmake(1) gained the --toolchain <path/to/file> command-line option to specify a toolchain file.
         cmake(1) -E capabilities output, for some generators, may now contain a supportedPlatforms field listing platforms known to be supported in CMAKE_GENERATOR_PLATFORM.
         Messages printed to a terminal now may be colored by message type.
       Compilers
         The Fujitsu compiler is now supported using compiler id Fujitsu in traditional (Trad) mode, and compiler id FujitsuClang in Clang mode.
       Platforms
         CMake now supports the MSYS runtime environment, much like CYGWIN.
       File-Based API
         The cmake-file-api(7) "codemodel" version 2 version field has been updated to 2.3.
         The cmake-file-api(7) "codemodel" version 2 gained a new "directory" object containing directory-level information. This includes a list of installers generated by the install() command.
       Commands
         The add_custom_command() command DEPFILE option:
            may now use generator expressions,
            is now supported by Visual Studio Generators for VS 2012 and above, and
            is now supported by the Xcode generator.
         The add_custom_command(TARGET) command (for Build Events) gained support for resolving target-dependent generator expressions.
         The build_command() command gained a PARALLEL_LEVEL option.
         The file(COPY_FILE) command was added to copy a single file.
         The file(GET_RUNTIME_DEPENDENCIES) command gained new POST_INCLUDE_FILES and POST_EXCLUDE_FILES arguments.
         The file(REAL_PATH) command gained the option EXPAND_TILDE to replace any leading tilde with the path to the user's home directory.
         The file(RENAME) command learned to optionally capture failure in a result variable. It also gained a NO_REPLACE option to fail if the destination exists.
         The install() command gained a new IMPORTED_RUNTIME_ARTIFACTS mode, which can be used to install the runtime artifacts of imported targets.
         The install() command gained a new RUNTIME_DEPENDENCY_SET mode, which can be used to install runtime dependencies using file(GET_RUNTIME_DEPENDENCIES).
         The install(TARGETS) command gained new RUNTIME_DEPENDENCIES and RUNTIME_DEPENDENCY_SET arguments, which can be used to install runtime dependencies using file(GET_RUNTIME_DEPENDENCIES).
         The install(SCRIPT|CODE) command supports a new option ALL_COMPONENTS which allows the corresponding code to run for every component of a per component installation.
         The project() command now sets variables PROJECT_IS_TOP_LEVEL and <PROJECT-NAME>_IS_TOP_LEVEL to indicate whether it was called in a top-level CMakeLists.txt file.
       Variables
         The CMAKE_TOOLCHAIN_FILE environment variable was added to provide a default value for the CMAKE_TOOLCHAIN_FILE variable.
       Properties
         The IMPORTED_TARGETS directory property was added to get a list of Imported Targets created in the current directory.
         The XCODE_EMBED_APP_EXTENSIONS target property was added to tell the Xcode generator to embed app extensions such as iMessage sticker packs. Aspects of the embedding can be customized with the XCODE_EMBED_APP_EXTENSIONS_PATH, XCODE_EMBED_APP_EXTENSIONS_CODE_SIGN_ON_COPY and XCODE_EMBED_APP_EXTENSIONS_REMOVE_HEADERS_ON_COPY properties.
       Modules
         The FindBLAS and FindLAPACK modules learned to support the serial Fujitsu_SSL2 and parallel Fujitsu_SSL2BLAMP libraries.
         The FindDevIL module now provides imported targets.
         The FindIconv module now has version support.
         The FindIntl module now has version support.
         The FindMPI module learned to support Fujitsu and FujitsuClang in both host and cross compiling modes.
         The FindMsys module was added to find MSYS installations. Like FindCygwin, it is used automatically by some other find modules to locate UNIX-style tools on Windows.
         The FindOpenMP module learned to support Fujitsu and FujitsuClang.
         The FindVulkan module gained imported targets Vulkan::Headers and Vulkan::glslangValidator.
         The UseJava module command add_jar gained a RESOURCES option to allow explicit naming of resources with non-optional namespace.
         The UseSWIG module use now standard library naming conventions for the CSharp language. See policy CMP0122.
         The UseSWIG module now supports using the swig tool to generate implicit dependencies with the Xcode generator.
       Generator Expressions
         A new TARGET_RUNTIME_DLLS generator expression was added.
       CTest
         ctest(1) gained documentation for its ability to capture Additional Test Measurements.
         ctest(1) learned to recognize files attached to a test at run time. Previously it was only possible to attach files to tests at configure time by using the ATTACHED_FILES or ATTACHED_FILES_ON_FAIL test properties. See Additional Test Measurements for more information.
         ctest(1) gained a --output-junit option to write test results to a JUnit XML file.
         The ctest_build() command gained a PARALLEL_LEVEL option.
       CPack
         The CPack DragNDrop Generator gained option CPACK_DMG_FILESYSTEM to control the .dmg filesystem.
         The CPack IFW Generator now supports hyphens in names given to cpack_ifw_configure_component() or cpack_ifw_configure_component_group() as DEPENDS or DEPENDENCIES arguments. This requires QtIFW 3.1 or later.
         The CPack NSIS Generator gained a new CPACK_NSIS_EXECUTABLE variable to specify the makensis executable to use instead of the default one.
         The CPACK_CUSTOM_INSTALL_VARIABLES variable was added to set variables in cmake_install.cmake script invocations made by CPack.
       Deprecated and Removed Features
         Undocumented CMAKE_SYSTEM_NAME version-stripping behavior has been removed entirely. If it is set by a -D flag or by a toolchain file, it is left unaltered, even if it still contains a version number. Similar CMAKE_HOST_SYSTEM_NAME version-stripping behavior, also undocumented, has been moved earlier, before project() or enable_language() is called.
         ARMClang cpu/arch compile and link flags are no longer added automatically based on the CMAKE_SYSTEM_PROCESSOR variable or the undocumented CMAKE_SYSTEM_ARCH variable. They must be specified explicitly. See policy CMP0123.
       Other Changes
         The find_file(), find_path(), find_program(), and find_library() commands handle cache variables in the same way regardless how they are defined. See policy CMP0125 for details.
         The find_file(), find_path(), find_program(), and find_library() commands gained the option NO_CACHE to store find result in normal variable.
         The foreach() command now isolates loop variables in the loop scope. See policy CMP0124 for details.
         The list() command's GET, INSERT, SUBLIST, and REMOVE_AT subcommands now error with invalid (i.e., non-integer) values are given as any of their index arguments based on the setting of policy CMP0121.
         The set(CACHE) command no longer removes a normal variable of the same name, if any. See policy CMP0126.
         target_link_libraries() calls referencing object libraries via the TARGET_OBJECTS generator expression now place the object files before all libraries on the link line, regardless of their specified order. See documentation on Linking Object Libraries via $<TARGET_OBJECTS> for details.
         The Ninja Generators now pass source files and include directories to the compiler using absolute paths. This makes diagnostic messages and debug symbols more consistent, and matches the Makefile Generators.
         The NMake Makefiles generator now encodes the generated makefiles as UTF-8 with a BOM when using nmake from VS 9 or above.
         The Visual Studio Generators for VS 2010 and above now place per-source preprocessor definitions after target-wide preprocssor definitions. This makes VS consistent with the Ninja Generators and the Makefile Generators.
         The precompiled binaries provided on cmake.org now support liblzma multi-threading. See the CPACK_THREADS and CPACK_ARCHIVE_THREADS variables.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 79516fed9a36cbb9018d4403d4b66840b827baf8
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Mon Jul 19 13:46:25 2021 +0200

    sysfsutils: Update to 2.1.1
    
    - Update from 1.3.0 (2005) to 2.1.1 (2021)
    - Update rootfile
    - version 1.3.0 was from 2005. Version 2.1.0 was from 2006. No other updates have been
       carried out since 2006 until Feb 2021 when the repository was migrated from CVS
       to git. https://github.com/linux-ras/sysfsutils/releases
    - Installed iso, that was created from build, into testbed vm system. All menu's opened
       and no issues found. Not 100% sure what to look for as I am not totally clear what
       the library would be used for or by which programs. Probably needs testing by someone
       who lnows what the sysfsutils library is used for.
    - Ran find-dependencies on the original library system before build and then on the new
       library system after building and in both cases nothing was flagged up. So it looks
       like no other programs are linked to the library.
    - pcmciautils required one of the sysfsutils include files to be available during the
       build. ./configure was modified to allow pcmciautils to find the include file
    - Changelog for changes from 2.1.0 to 2.1.1
        Moved to git from CVS repository
        Modernized build system
        Source compiles on latest compilers
        Various bug fixes
        Removed Changelog and NEWS files
        Adjusted COPYING file to reflect set of directories covered under GPLv2
        Added SUSE-specific libsysfs.conf
        Improvements to adopt git workflow
        Integration with Travis-CI
        Updated the documentation
      Special thanks to all the sysfsutils package maintainers.
        Thanks to: Aurelien Jarno, Christopher Engelhard, Guillem Jover,
                   Kamalesh Babulal, Lee Duncan, Martin Pitt, Timm Bäder
    
    Tested-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 55da553742129623753baa86564cd65d3d7df680
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Fri Jul 16 20:20:22 2021 +0200

    firewall.cgi: Bring back check for single IP when using DNAT.
    
    This check has been removed by commit: bbe8e009b824aef745c9ab9718dce9a1b557f5fc
    
    So it was able to create DNAT rules with a network as target.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Reviewed-by: Michael Tremer <michael.tremer(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 446dc99e2501a090f7562384b340230b9b5d1a7c
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Fri Jul 16 19:15:28 2021 +0200

    firewall.cgi: Map rule if manual target address belongs to IPFire
    
    Automatically map the rule target if a manual entered target address is
    assigned to a network zone.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Reviewed-by: Michael Tremer <michael.tremer(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit a9611629cc90f716fbf4fc7050a95f0b7b285df3
Author: Stefan Schantl <stefan.schantl(a)ipfire.org>
Date:   Fri Jul 16 18:35:58 2021 +0200

    firewall.cgi: Allow to creating input rules from Orange to another zone.
    
    It was not able to create a firewall rule from the orange network to a
    different network address of the firewall. ( For example: Orange -> IPFire's green address)
    
    These rules always have been handled as FORWARD rules which is totaly
    wrong.
    
    Fixes #12265.
    
    Signed-off-by: Stefan Schantl <stefan.schantl(a)ipfire.org>
    Tested-by: Peter Müller <peter.mueller(a)ipfire.org>
    Reviewed-by: Michael Tremer <michael.tremer(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit fc81e493b14d545893856d5bcba11d538a8ae16c
Author: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
Date:   Fri Jul 16 10:56:07 2021 +0200

    qos.cgi: Fix missing translation
    
    Fixes: #12443
    
    Signed-off-by: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
    Reviewed-by: Michael Tremer <michael.tremer(a)ipfire.org>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 09c3db1cffa55cb7ddb35d642a74abc6f216d9e4
Author: Arne Fitzenreiter <arne_f(a)ipfire.org>
Date:   Sun Sep 5 08:37:51 2021 +0000

    core160: add updated cgi files
    
     html/cgi-bin/entropy.cgi        | 11 -----------
     html/cgi-bin/hardwaregraphs.cgi | 32 --------------------------------
     html/cgi-bin/media.cgi          | 11 -----------
     html/cgi-bin/memory.cgi         | 14 --------------
     html/cgi-bin/netexternal.cgi    | 11 -----------
     html/cgi-bin/netinternal.cgi    | 17 -----------------
     html/cgi-bin/netother.cgi       | 19 -------------------
     html/cgi-bin/netovpnrw.cgi      | 10 ----------
     html/cgi-bin/netovpnsrv.cgi     | 14 --------------
     html/cgi-bin/qos.cgi            | 11 -----------
     html/cgi-bin/system.cgi         | 18 ------------------
    
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 4190b2a621b9d39e7dcf2480f03d41558f0c7fd0
Author: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
Date:   Fri Jul 16 10:39:38 2021 +0200

    rrd graphs: Fix indentation after removing graph output
    
    Signed-off-by: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

commit 05c8c10f193f2b919542fd610483f4bdb2330988
Author: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
Date:   Fri Jul 16 10:39:37 2021 +0200

    rrd graphs: Remove unused individual graph output
    
    PNG generation has been moved to getrrdimage.cgi
    
    Signed-off-by: Leo-Andres Hofmann <hofmann(a)leo-andres.de>
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>

-----------------------------------------------------------------------

Summary of changes:
 config/cfgroot/network-functions.pl                |   6 +-
 config/rootfiles/common/libidn                     |   5 +-
 config/rootfiles/common/sysfsutils                 |  22 +--
 .../{oldcore/104 => core/160}/filelists/curl       |   0
 .../{oldcore/158 => core/160}/filelists/ethtool    |   0
 config/rootfiles/core/160/filelists/files          |  12 ++
 .../{oldcore/106 => core/160}/filelists/libidn     |   0
 .../{oldcore/66 => core/160}/filelists/sysfsutils  |   0
 config/rootfiles/core/160/filelists/sysstat        |   1 +
 html/cgi-bin/entropy.cgi                           |  91 +++++-----
 html/cgi-bin/firewall.cgi                          |  53 +++++-
 html/cgi-bin/hardwaregraphs.cgi                    | 138 ++++++---------
 html/cgi-bin/media.cgi                             | 169 +++++++++----------
 html/cgi-bin/memory.cgi                            | 134 +++++++--------
 html/cgi-bin/netexternal.cgi                       | 187 ++++++++++-----------
 html/cgi-bin/netinternal.cgi                       |  63 +++----
 html/cgi-bin/netother.cgi                          |  95 +++++------
 html/cgi-bin/netovpnrw.cgi                         |  50 +++---
 html/cgi-bin/netovpnsrv.cgi                        |  60 +++----
 html/cgi-bin/qos.cgi                               |  31 ++--
 html/cgi-bin/system.cgi                            |  48 ++----
 lfs/cmake                                          |   4 +-
 lfs/curl                                           |   4 +-
 lfs/ethtool                                        |   4 +-
 lfs/libidn                                         |  11 +-
 lfs/rpcbind                                        |   6 +-
 lfs/sysfsutils                                     |  12 +-
 27 files changed, 550 insertions(+), 656 deletions(-)
 copy config/rootfiles/{oldcore/104 => core/160}/filelists/curl (100%)
 copy config/rootfiles/{oldcore/158 => core/160}/filelists/ethtool (100%)
 copy config/rootfiles/{oldcore/106 => core/160}/filelists/libidn (100%)
 copy config/rootfiles/{oldcore/66 => core/160}/filelists/sysfsutils (100%)
 create mode 120000 config/rootfiles/core/160/filelists/sysstat

Difference in files:
diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl
index b7a840559..c0abc76b5 100644
--- a/config/cfgroot/network-functions.pl
+++ b/config/cfgroot/network-functions.pl
@@ -403,7 +403,11 @@ sub wifi_get_link_quality($) {
 
 	my ($cur, $max) = $status =~ /Link Quality=(\d+)\/(\d+)/;
 
-	return $cur * 100 / $max;
+	if($max > 0) {
+		return sprintf('%.0f', ($cur * 100) / $max);
+	}
+
+	return 0;
 }
 
 sub wifi_get_signal_level($) {
diff --git a/config/rootfiles/common/libidn b/config/rootfiles/common/libidn
index 7f00a96ea..c959f6c65 100644
--- a/config/rootfiles/common/libidn
+++ b/config/rootfiles/common/libidn
@@ -6,11 +6,10 @@ usr/bin/idn
 #usr/include/punycode.h
 #usr/include/stringprep.h
 #usr/include/tld.h
-#usr/lib/libidn.a
 #usr/lib/libidn.la
-usr/lib/libidn.so
+#usr/lib/libidn.so
 usr/lib/libidn.so.12
-usr/lib/libidn.so.12.6.1
+usr/lib/libidn.so.12.6.3
 #usr/lib/pkgconfig/libidn.pc
 #usr/share/emacs
 #usr/share/emacs/site-lisp
diff --git a/config/rootfiles/common/sysfsutils b/config/rootfiles/common/sysfsutils
index 32eca4ed5..b20a8def6 100644
--- a/config/rootfiles/common/sysfsutils
+++ b/config/rootfiles/common/sysfsutils
@@ -1,20 +1,10 @@
-#bin/dlist_test
-#bin/get_bus_devices_list
-#bin/get_class_dev
-#bin/get_classdev_parent
-#bin/get_device
-#bin/get_driver
-#bin/systool
-#bin/testlibsysfs
-#bin/write_attr
-#lib/libsysfs.a
 #lib/libsysfs.la
-lib/libsysfs.so
-lib/libsysfs.so.1
-lib/libsysfs.so.1.0.3
-#man
-#man/man1
-#man/man1/systool.1
+#lib/libsysfs.so
+lib/libsysfs.so.2
+lib/libsysfs.so.2.0.1
+#lib/pkgconfig/libsysfs.pc
+#usr/bin/systool
 #usr/include/sysfs
 #usr/include/sysfs/dlist.h
 #usr/include/sysfs/libsysfs.h
+#usr/share/man/man1/systool.1
diff --git a/config/rootfiles/core/160/filelists/curl b/config/rootfiles/core/160/filelists/curl
new file mode 120000
index 000000000..4b84bef53
--- /dev/null
+++ b/config/rootfiles/core/160/filelists/curl
@@ -0,0 +1 @@
+../../../common/curl
\ No newline at end of file
diff --git a/config/rootfiles/core/160/filelists/ethtool b/config/rootfiles/core/160/filelists/ethtool
new file mode 120000
index 000000000..494a53e9d
--- /dev/null
+++ b/config/rootfiles/core/160/filelists/ethtool
@@ -0,0 +1 @@
+../../../common/ethtool
\ No newline at end of file
diff --git a/config/rootfiles/core/160/filelists/files b/config/rootfiles/core/160/filelists/files
index d1f904ef5..cffe4fd1d 100644
--- a/config/rootfiles/core/160/filelists/files
+++ b/config/rootfiles/core/160/filelists/files
@@ -1,7 +1,19 @@
 usr/lib/firewall/rules.pl
+srv/web/ipfire/cgi-bin/entropy.cgi
 srv/web/ipfire/cgi-bin/firewall.cgi
 srv/web/ipfire/cgi-bin/fwhosts.cgi
+srv/web/ipfire/cgi-bin/hardwaregraphs.cgi
 srv/web/ipfire/cgi-bin/logs.cgi/firewalllog.dat
+srv/web/ipfire/cgi-bin/media.cgi
+srv/web/ipfire/cgi-bin/memory.cgi
+srv/web/ipfire/cgi-bin/netexternal.cgi
+srv/web/ipfire/cgi-bin/netinternal.cgi
+srv/web/ipfire/cgi-bin/netother.cgi
+srv/web/ipfire/cgi-bin/netovpnrw.cgi
+srv/web/ipfire/cgi-bin/netovpnsrv.cgi
+srv/web/ipfire/cgi-bin/qos.cgi
 srv/web/ipfire/cgi-bin/shutdown.cgi
+srv/web/ipfire/cgi-bin/system.cgi
 srv/web/ipfire/html/themes/ipfire/include/css/style.css
 var/ipfire/general-functions.pl
+var/ipfire/network-functions.pl
diff --git a/config/rootfiles/core/160/filelists/libidn b/config/rootfiles/core/160/filelists/libidn
new file mode 120000
index 000000000..7e3548957
--- /dev/null
+++ b/config/rootfiles/core/160/filelists/libidn
@@ -0,0 +1 @@
+../../../common/libidn
\ No newline at end of file
diff --git a/config/rootfiles/core/160/filelists/sysfsutils b/config/rootfiles/core/160/filelists/sysfsutils
new file mode 120000
index 000000000..8f3ee3e86
--- /dev/null
+++ b/config/rootfiles/core/160/filelists/sysfsutils
@@ -0,0 +1 @@
+../../../common/sysfsutils
\ No newline at end of file
diff --git a/config/rootfiles/core/160/filelists/sysstat b/config/rootfiles/core/160/filelists/sysstat
new file mode 120000
index 000000000..cec8f445f
--- /dev/null
+++ b/config/rootfiles/core/160/filelists/sysstat
@@ -0,0 +1 @@
+../../../common/sysstat
\ No newline at end of file
diff --git a/html/cgi-bin/entropy.cgi b/html/cgi-bin/entropy.cgi
index f8045db5a..0a27d2329 100644
--- a/html/cgi-bin/entropy.cgi
+++ b/html/cgi-bin/entropy.cgi
@@ -30,63 +30,52 @@ require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
 require "${General::swroot}/graphs.pl";
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
-
-if ( $querry[0] ne~ "") {
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updateentropygraph($querry[1]);
-
-} else {
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'entropy'}, 1, '');
-	&Header::openbigbox('100%', 'left');
-
-	&Header::openbox('100%', 'center', $Lang::tr{'entropy'});
-	&Graphs::makegraphbox("entropy.cgi", "entropy", "day");
-	&Header::closebox();
-
-	# Check for hardware support.
-	my $message;
-	my $message_colour = $Header::colourred;
-	if (&has_rdrand()) {
-		$message = $Lang::tr{'system has rdrand'};
-		$message_colour = $Header::colourgreen;
-	}
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'entropy'}, 1, '');
+&Header::openbigbox('100%', 'left');
+
+&Header::openbox('100%', 'center', $Lang::tr{'entropy'});
+&Graphs::makegraphbox("entropy.cgi", "entropy", "day");
+&Header::closebox();
+
+# Check for hardware support.
+my $message;
+my $message_colour = $Header::colourred;
+if (&has_rdrand()) {
+	$message = $Lang::tr{'system has rdrand'};
+	$message_colour = $Header::colourgreen;
+}
 
-	my $rngd_status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>";
-	if (&rngd_is_running()) {
-		$rngd_status = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";
-	}
+my $rngd_status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>";
+if (&rngd_is_running()) {
+	$rngd_status = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";
+}
 
-	&Header::openbox('100%', 'center', $Lang::tr{'hardware support'});
-	if ($message) {
-		print <<EOF;
-			<p style="color: $message_colour; text-align: center;">$message</p>
+&Header::openbox('100%', 'center', $Lang::tr{'hardware support'});
+if ($message) {
+	print <<EOF;
+	<p style="color: $message_colour; text-align: center;">$message</p>
 EOF
-	}
+}
 
-	print <<EOF;
-		<table width='80%' cellspacing='1' class='tbl'>
-			<tr>
-				<th align='center'><b>$Lang::tr{'service'}</b></th>
-				<th align='center'><b>$Lang::tr{'status'}</b></th>
-			</tr>
-			<tr>
-				<td align='center'>
-					$Lang::tr{'random number generator daemon'}
-				</td>
-				$rngd_status
-			</tr>
-		</table>
+print <<EOF;
+	<table width='80%' cellspacing='1' class='tbl'>
+		<tr>
+			<th align='center'><b>$Lang::tr{'service'}</b></th>
+			<th align='center'><b>$Lang::tr{'status'}</b></th>
+		</tr>
+		<tr>
+			<td align='center'>
+				$Lang::tr{'random number generator daemon'}
+			</td>
+			$rngd_status
+		</tr>
+	</table>
 EOF
-	&Header::closebox();
+&Header::closebox();
 
-	&Header::closebigbox();
-	&Header::closepage();
-}
+&Header::closebigbox();
+&Header::closepage();
 
 sub has_rdrand() {
 	open(FILE, "/proc/cpuinfo") or return 0;
diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi
index 0eace5f11..8e17cef57 100644
--- a/html/cgi-bin/firewall.cgi
+++ b/html/cgi-bin/firewall.cgi
@@ -213,6 +213,7 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
 	&General::readhasharray("$configfwdfw", \%configfwdfw);
 	&General::readhasharray("$configinput", \%configinputfw);
 	&General::readhasharray("$configoutgoing", \%configoutgoingfw);
+	&General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
 	my $maxkey;
 	#Set Variables according to the JQuery code in protocol section
 	if ($fwdfwsettings{'PROT'} eq 'TCP' || $fwdfwsettings{'PROT'} eq 'UDP')
@@ -231,6 +232,38 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
 	{
 		$fwdfwsettings{'USESRV'} = 'ON';
 	}
+
+	# Check if a manual target IP is one of the IPFire's addresses.
+	if ($fwdfwsettings{'grp2'} eq 'tgt_addr') {
+		# Grab all available network zones.
+		my @network_zones = &Network::get_available_network_zones();
+
+		# Loop through the array of network zones.
+		foreach my $zone (@network_zones) {
+			# Skip red network zone.
+			next if $zone eq "red";
+
+			# Convert current zone name into upper case.
+			$zone = uc($zone);
+
+			# Generate key to access the required data from the netsettings hash.
+			my $key = $zone . "_ADDRESS";
+
+			# Obtain the configured address for the current zone from the netsettings hash.
+			my $zone_address = $netsettings{$key};
+
+			# Check if the given address and the current processed zone address are the same.
+			if ($fwdfwsettings{$fwdfwsettings{'grp2'}} eq $zone_address) {
+				# Map the type and target.
+				$fwdfwsettings{'grp2'} = 'ipfire';
+				$fwdfwsettings{$fwdfwsettings{'grp2'}} = $zone;
+
+				# End loop.
+				last;
+			}
+		}
+	}
+
 	$errormessage=&checksource;
 	if(!$errormessage){&checktarget;}
 	if(!$errormessage){&checkrule;}
@@ -247,7 +280,7 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
 		$errormessage=$Lang::tr{'fwdfw err same'};
 	}
 	# INPUT part
-	if ($fwdfwsettings{'grp2'} eq 'ipfire' && $fwdfwsettings{$fwdfwsettings{'grp1'}} ne 'ORANGE'){
+	if ($fwdfwsettings{'grp2'} eq 'ipfire') {
 		$fwdfwsettings{'config'}=$configinput;
 		$fwdfwsettings{'chain'} = 'INPUTFW';
 		$maxkey=&General::findhasharraykey(\%configinputfw);
@@ -536,6 +569,24 @@ sub checktarget
 	#check DNAT settings (has to be single Host and single Port or portrange)
 	if ($fwdfwsettings{'USE_NAT'} eq 'ON' && $fwdfwsettings{'nat'} eq 'dnat'){
 		if($fwdfwsettings{'grp2'} eq 'tgt_addr' || $fwdfwsettings{'grp2'} eq 'cust_host_tgt' || $fwdfwsettings{'grp2'} eq 'ovpn_host_tgt'){
+			# Check if a manual entered IP is a single Host (if set)
+			if ($fwdfwsettings{'grp2'} eq 'tgt_addr') {
+				# Split input into address and prefix (if provided).
+				my ($address, $subnet) = split ('/', $fwdfwsettings{$fwdfwsettings{'grp2'}});
+
+				# Check if a subnet is given.
+				if ($subnet) {
+					# Check if the prefix or subnetmask is for a single host.
+					unless ($subnet eq "32" || $subnet eq "255.255.255.255") {
+						# Set error message.
+						$errormessage=$Lang::tr{'fwdfw dnat error'}."<br>";
+
+						# Return the error.
+						return $errormessage;
+					}
+				}
+			}
+
 			#check if Port is a single Port or portrange
 			if ($fwdfwsettings{'nat'} eq 'dnat' &&  $fwdfwsettings{'grp3'} eq 'TGT_PORT'){
 				if(($fwdfwsettings{'PROT'} ne 'TCP'|| $fwdfwsettings{'PROT'} ne 'UDP') && $fwdfwsettings{'TGT_PORT'} eq ''){
diff --git a/html/cgi-bin/hardwaregraphs.cgi b/html/cgi-bin/hardwaregraphs.cgi
index e8f0fa362..9e3fe60d5 100644
--- a/html/cgi-bin/hardwaregraphs.cgi
+++ b/html/cgi-bin/hardwaregraphs.cgi
@@ -90,102 +90,70 @@ if (@thermal_zone_sensors) {
 	}
 }
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
-
-if ( $querry[0] =~ "hwtemp"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatehwtempgraph($querry[1]);
-}elsif ( $querry[0] =~ "hwfan"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatehwfangraph($querry[1]);
-}elsif ( $querry[0] =~ "hwvolt"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatehwvoltgraph($querry[1]);
-}elsif ( $querry[0] =~ "thermaltemp"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatethermaltempgraph($querry[1]);
-}elsif ( $querry[0] =~ "sd?" ){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatehddgraph($querry[0],$querry[1]);
-}elsif ( $querry[0] =~ "nvme?" ){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatehddgraph($querry[0],$querry[1]);
-}else{
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'hardware graphs'}, 1, '');
-	&Header::openbigbox('100%', 'left');
-
-	&Header::getcgihash(\%sensorsettings);
-
-	if ( $sensorsettings{'ACTION'} eq $Lang::tr{'save'} ) {
-		foreach(@sensorsgraphs){
-			chomp($_);
-				$_ =~ /\/(.*)sensors-(.*)\/(.*)\.rrd/;
-				my $label = $2.$3;$label=~ s/-//g;
-				if ( $sensorsettings{'LINE-'.$label} ne "on" ){
-					$sensorsettings{'LINE-'.$label} = 'off';
-				} elsif ($sensorsettings{'LINE-'.$label} eq "on" ){
-					$sensorsettings{'LINE-'.$label} = 'checked';
-				}
-				$sensorsettings{'LABEL-'.$label} =~ s/\W//g;
-		}
-		&General::writehash("${General::swroot}/sensors/settings", \%sensorsettings);
-	}
-
-	# This should be save, because no user given content will be processed.
-	#my @disks = `ls -1 /sys/block | grep -E '^sd|^nvme' | sort | uniq`;
-	my @disks = &get_disks();
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'hardware graphs'}, 1, '');
+&Header::openbigbox('100%', 'left');
 
-	foreach (@disks){
-		my $disk = $_;
-		chomp $disk;
-		my @array = split(/\//,$disk);
+&Header::getcgihash(\%sensorsettings);
 
-		&Header::openbox('100%', 'center', "$array[$#array] $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("hardwaregraphs.cgi",$array[$#array],"day");
-		&Header::closebox();
+if ( $sensorsettings{'ACTION'} eq $Lang::tr{'save'} ) {
+	foreach(@sensorsgraphs){
+		chomp($_);
+			$_ =~ /\/(.*)sensors-(.*)\/(.*)\.rrd/;
+			my $label = $2.$3;$label=~ s/-//g;
+			if ( $sensorsettings{'LINE-'.$label} ne "on" ){
+				$sensorsettings{'LINE-'.$label} = 'off';
+			} elsif ($sensorsettings{'LINE-'.$label} eq "on" ){
+				$sensorsettings{'LINE-'.$label} = 'checked';
+			}
+			$sensorsettings{'LABEL-'.$label} =~ s/\W//g;
 	}
+	&General::writehash("${General::swroot}/sensors/settings", \%sensorsettings);
+}
 
-	if ( grep(/thermal-thermal_zone/, @sensorsgraphs) ) {
-		&Header::openbox('100%', 'center', "ACPI Thermal-Zone Temp $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("hardwaregraphs.cgi","thermaltemp","day");
-		&Header::closebox();
-	}
+# This should be save, because no user given content will be processed.
+#my @disks = `ls -1 /sys/block | grep -E '^sd|^nvme' | sort | uniq`;
+my @disks = &get_disks();
 
-	if ( grep(/temperature-/, @sensorsgraphs) ) {
-		&Header::openbox('100%', 'center', "hwtemp $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("hardwaregraphs.cgi","hwtemp","day");
-		Header::closebox();
-	}
+foreach (@disks){
+	my $disk = $_;
+	chomp $disk;
+	my @array = split(/\//,$disk);
 
-	if ( grep(/fanspeed-/, @sensorsgraphs) ) {
-		&Header::openbox('100%', 'center', "hwfan $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("hardwaregraphs.cgi","hwfan","day");
-		&Header::closebox();
-	}
+	&Header::openbox('100%', 'center', "$array[$#array] $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("hardwaregraphs.cgi",$array[$#array],"day");
+	&Header::closebox();
+}
 
-	if ( grep(/voltage-/, @sensorsgraphs) ) {
-		&Header::openbox('100%', 'center', "hwvolt $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("hardwaregraphs.cgi","hwvolt","day");
-		&Header::closebox();
-	}
+if ( grep(/thermal-thermal_zone/, @sensorsgraphs) ) {
+	&Header::openbox('100%', 'center', "ACPI Thermal-Zone Temp $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("hardwaregraphs.cgi","thermaltemp","day");
+	&Header::closebox();
+}
 
-	if ( @sensorsgraphs ) {
-		sensorsbox();
-	}
-	&Header::closebigbox();
-	&Header::closepage();
+if ( grep(/temperature-/, @sensorsgraphs) ) {
+	&Header::openbox('100%', 'center', "hwtemp $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("hardwaregraphs.cgi","hwtemp","day");
+	Header::closebox();
+}
 
+if ( grep(/fanspeed-/, @sensorsgraphs) ) {
+	&Header::openbox('100%', 'center', "hwfan $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("hardwaregraphs.cgi","hwfan","day");
+	&Header::closebox();
 }
 
+if ( grep(/voltage-/, @sensorsgraphs) ) {
+	&Header::openbox('100%', 'center', "hwvolt $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("hardwaregraphs.cgi","hwvolt","day");
+	&Header::closebox();
+}
+
+if ( @sensorsgraphs ) {
+	sensorsbox();
+}
+&Header::closebigbox();
+&Header::closepage();
 
 sub sensorsbox {
 	&Header::openbox('100%', 'center', "$Lang::tr{'mbmon settings'}");
diff --git a/html/cgi-bin/media.cgi b/html/cgi-bin/media.cgi
index f574729ed..cc8f84d0a 100644
--- a/html/cgi-bin/media.cgi
+++ b/html/cgi-bin/media.cgi
@@ -41,128 +41,117 @@ undef (@dummy);
 
 my %cgiparams=();
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
-
 my @devices = `ls -1 /sys/block | grep -E '^sd|^mmcblk|^nvme|^xvd|^vd|^md' | sort | uniq`;
 
-if ( $querry[0] =~ "sd?" || $querry[0] =~ "mmcblk?" || $querry[0] =~ "nvme?n?" || $querry[0] =~ "xvd??" || $querry[0] =~ "vd?" || $querry[0] =~ "md*" ){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	
-	&Graphs::updatediskgraph($querry[0],$querry[1]);
-}else{
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'media information'}, 1, '');
-	&Header::openbigbox('100%', 'left');
-
-	foreach (@devices) {
-		my $device = $_;
-		chomp($device);
-		my @array = split(/\//,$device);
-		&Header::openbox('100%', 'center', "$array[$#array] $Lang::tr{'graph'}");
-		diskbox($array[$#array]);
-		&Graphs::makegraphbox("media.cgi",$array[$#array],"day");
-		&Header::closebox();
-	}
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'media information'}, 1, '');
+&Header::openbigbox('100%', 'left');
+
+foreach (@devices) {
+	my $device = $_;
+	chomp($device);
+	my @array = split(/\//,$device);
+	&Header::openbox('100%', 'center', "$array[$#array] $Lang::tr{'graph'}");
+	diskbox($array[$#array]);
+	&Graphs::makegraphbox("media.cgi",$array[$#array],"day");
+	&Header::closebox();
+}
+
 
-	
-	&Header::openbox('100%', 'center', $Lang::tr{'disk usage'});
-	print "<table width='95%' cellspacing='5'>\n";
-	open(DF,'/bin/df -P -B M -x rootfs|');
-	while(<DF>){
-		if ($_ =~ m/^Filesystem/ ){
-			print <<END
+&Header::openbox('100%', 'center', $Lang::tr{'disk usage'});
+print "<table width='95%' cellspacing='5'>\n";
+open(DF,'/bin/df -P -B M -x rootfs|');
+while(<DF>){
+	if ($_ =~ m/^Filesystem/ ){
+		print <<END
 <tr>
-<td align='center' class='boldbase'><b>$Lang::tr{'device'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'mounted on'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'size'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'used'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'free'}</b></td>
-<td align='left' class='boldbase' colspan='2'><b>$Lang::tr{'percentage'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'device'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'mounted on'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'size'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'used'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'free'}</b></td>
+	<td align='left' class='boldbase' colspan='2'><b>$Lang::tr{'percentage'}</b></td>
 </tr>
 END
 ;
-		}else{
-			my ($device,$size,$used,$free,$percent,$mount) = split;
-			print <<END
+	}else{
+		my ($device,$size,$used,$free,$percent,$mount) = split;
+		print <<END
 <tr>
-<td align='center'>$device</td>
-<td align='center'>$mount</td>
-<td align='center'>$size</td>
-<td align='center'>$used</td>
-<td align='center'>$free</td>
-<td align='left'>
+	<td align='center'>$device</td>
+	<td align='center'>$mount</td>
+	<td align='center'>$size</td>
+	<td align='center'>$used</td>
+	<td align='center'>$free</td>
+	<td align='left'>
 END
 ;
-		 	&percentbar($percent);
-			 print <<END
+		&percentbar($percent);
+		 print <<END
 </td>
-<td align='left'>$percent</td>
+	<td align='left'>$percent</td>
 </tr>
 END
 ;
-		}
 	}
-	close DF;
-	print "<tr><td colspan='7'>&nbsp;\n<tr><td colspan='7'><h3>Inodes</h3>\n";
+}
+close DF;
+print "<tr><td colspan='7'>&nbsp;\n<tr><td colspan='7'><h3>Inodes</h3>\n";
 
-	open(DF,'/bin/df -P -i -x rootfs|');
-	while(<DF>){
-		if ($_ =~ m/^Filesystem/ ){
-			print <<END
+open(DF,'/bin/df -P -i -x rootfs|');
+while(<DF>){
+	if ($_ =~ m/^Filesystem/ ){
+		print <<END
 <tr>
-<td align='center' class='boldbase'><b>$Lang::tr{'device'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'mounted on'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'size'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'used'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'free'}</b></td>
-<td align='left' class='boldbase' colspan='2'><b>$Lang::tr{'percentage'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'device'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'mounted on'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'size'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'used'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'free'}</b></td>
+	<td align='left' class='boldbase' colspan='2'><b>$Lang::tr{'percentage'}</b></td>
 </tr>
 END
 ;
-		}else{
-			my ($device,$size,$used,$free,$percent,$mount) = split;
-			print <<END
+	}else{
+		my ($device,$size,$used,$free,$percent,$mount) = split;
+		print <<END
 <tr>
-<td align='center'>$device</td>
-<td align='center'>$mount</td>
-<td align='center'>$size</td>
-<td align='center'>$used</td>
-<td align='center'>$free</td>
+	<td align='center'>$device</td>
+	<td align='center'>$mount</td>
+	<td align='center'>$size</td>
+	<td align='center'>$used</td>
+	<td align='center'>$free</td>
 <td>
 END
 ;
-			&percentbar($percent);
-			print <<END
+		&percentbar($percent);
+		print <<END
 </td>
 <td align='left'>$percent</td>
 </tr>
 END
 ;
-		}
 	}
-	close DF;
-	my @iostat1 = qx(/usr/bin/iostat -dm -p | grep -v "Linux" | awk '{print \$1}');
-	my @iostat2 = qx(/usr/bin/iostat -dm -p | grep -v "Linux" | awk '{print \$5}');
-	my @iostat3 = qx(/usr/bin/iostat -dm -p | grep -v "Linux" | awk '{print \$6}');
-	print "<tr><td colspan='3'>&nbsp;\n<tr><td colspan='3'><h3>transfers</h3></td></tr>";
-	my $i=0;
-
-	for(my $i = 1; $i <= $#iostat1; $i++){
-		if ( $i eq '1' ){
-			print "<tr><td align='center' class='boldbase'><b>$Lang::tr{'device'}</b></td><td align='center' class='boldbase'><b>$Lang::tr{'MB read'}</b></td><td align='center' class='boldbase'><b>$Lang::tr{'MB written'}</b></td></tr>";
-		}else{
-			print "<tr><td align='center'>$iostat1[$i]</td><td align='center'>$iostat2[$i]</td><td align='center'>$iostat3[$i]</td></tr>";
-		}
+}
+close DF;
+my @iostat1 = qx(/usr/bin/iostat -dm -p | grep -v "Linux" | awk '{print \$1}');
+my @iostat2 = qx(/usr/bin/iostat -dm -p | grep -v "Linux" | awk '{print \$5}');
+my @iostat3 = qx(/usr/bin/iostat -dm -p | grep -v "Linux" | awk '{print \$6}');
+print "<tr><td colspan='3'>&nbsp;\n<tr><td colspan='3'><h3>transfers</h3></td></tr>";
+my $i=0;
+
+for(my $i = 1; $i <= $#iostat1; $i++){
+	if ( $i eq '1' ){
+		print "<tr><td align='center' class='boldbase'><b>$Lang::tr{'device'}</b></td><td align='center' class='boldbase'><b>$Lang::tr{'MB read'}</b></td><td align='center' class='boldbase'><b>$Lang::tr{'MB written'}</b></td></tr>";
+	}else{
+		print "<tr><td align='center'>$iostat1[$i]</td><td align='center'>$iostat2[$i]</td><td align='center'>$iostat3[$i]</td></tr>";
 	}
-	print "</table>\n";
-	&Header::closebox();
-
-	&Header::closebigbox();
-	&Header::closepage();
 }
+print "</table>\n";
+&Header::closebox();
+
+&Header::closebigbox();
+&Header::closepage();
 
 sub percentbar
 {
diff --git a/html/cgi-bin/memory.cgi b/html/cgi-bin/memory.cgi
index 441b1d4e7..814063dfb 100644
--- a/html/cgi-bin/memory.cgi
+++ b/html/cgi-bin/memory.cgi
@@ -35,98 +35,85 @@ my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
 &General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'memory information'}, 1, '');
+&Header::openbigbox('100%', 'left');
 
-if ( $querry[0] =~ "memory"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatememorygraph($querry[1]);
-}elsif ( $querry[0] =~ "swap"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updateswapgraph($querry[1]);
-}else{
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'memory information'}, 1, '');
-	&Header::openbigbox('100%', 'left');
+&Header::openbox('100%', 'center', "Memory $Lang::tr{'graph'}");
+&Graphs::makegraphbox("memory.cgi","memory","day");
+&Header::closebox();
 
-	&Header::openbox('100%', 'center', "Memory $Lang::tr{'graph'}");
-	&Graphs::makegraphbox("memory.cgi","memory","day");
+if (-f "$mainsettings{'RRDLOG'}/collectd/localhost/swap") {
+	&Header::openbox('100%', 'center', "Swap $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("memory.cgi","swap","day");
 	&Header::closebox();
+}
 
-	if (-f "$mainsettings{'RRDLOG'}/collectd/localhost/swap") {
-	    &Header::openbox('100%', 'center', "Swap $Lang::tr{'graph'}");
-	    &Graphs::makegraphbox("memory.cgi","swap","day");
-	    &Header::closebox();
-	}
-	
-	&Header::openbox('100%', 'center', $Lang::tr{'memory'});
-	print "<table width='95%' cellspacing='5'>";
-	my $size=0;
-	my $used=0;
-	my $free=0;
-	my $percent=0;
-	my $shared=0;
-	my $buffers=0;
-	my $cached=0;
-	my $available=0;
+&Header::openbox('100%', 'center', $Lang::tr{'memory'});
+print "<table width='95%' cellspacing='5'>";
+my $size=0;
+my $used=0;
+my $free=0;
+my $percent=0;
+my $shared=0;
+my $buffers=0;
+my $cached=0;
+my $available=0;
 
-	# output format: kibibytes, wide mode (buffers and cache in two columns)
-	open(my $cmd_fh, "-|", '/usr/bin/free -k -w') or die $!;
-	while(<$cmd_fh>){
-		if ($_ =~ m/^\s+total\s+used\s+free\s+shared\s+buffers\s+cache\s+available$/ ){
-			print <<END
+# output format: kibibytes, wide mode (buffers and cache in two columns)
+open(my $cmd_fh, "-|", '/usr/bin/free -k -w') or die $!;
+while(<$cmd_fh>){
+	if ($_ =~ m/^\s+total\s+used\s+free\s+shared\s+buffers\s+cache\s+available$/ ){
+		print <<END
 <tr>
-<td align='center'>&nbsp;</td>
-<td align='center' class='boldbase'><b>$Lang::tr{'size'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'used'}</b></td>
-<td align='center' class='boldbase'><b>$Lang::tr{'free'}</b></td>
-<td align='left' class='boldbase' colspan='2'><b>$Lang::tr{'percentage'}</b></td>
+	<td align='center'>&nbsp;</td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'size'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'used'}</b></td>
+	<td align='center' class='boldbase'><b>$Lang::tr{'free'}</b></td>
+	<td align='left' class='boldbase' colspan='2'><b>$Lang::tr{'percentage'}</b></td>
 </tr>
 END
 ;
-		}else{
-			if ($_ =~ m/^Mem:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)$/){
-				($size,$used,$free,$shared,$buffers,$cached,$available) = ($1,$2,$3,$4,$5,$6,$7);
-				($percent = ($used/$size)*100) =~ s/^(\d+)(\.\d+)?$/$1%/;
-				print <<END
+	}else{
+		if ($_ =~ m/^Mem:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)$/){
+			($size,$used,$free,$shared,$buffers,$cached,$available) = ($1,$2,$3,$4,$5,$6,$7);
+			($percent = ($used/$size)*100) =~ s/^(\d+)(\.\d+)?$/$1%/;
+			print <<END
 <tr>
-<td class='boldbase'><b>$Lang::tr{'ram'}</b></td>
+	<td class='boldbase'><b>$Lang::tr{'ram'}</b></td>
 END
 ;
-			}elsif($_ =~ m/^Swap:\s+(\d+)\s+(\d+)\s+(\d+)$/){
-				($size,$used,$free) = ($1,$2,$3);
-				if ($size != 0){
-					($percent = ($used/$size)*100) =~ s/^(\d+)(\.\d+)?$/$1%/;
-				}else{
-					($percent = '');
-				}
-				print <<END
+		}elsif($_ =~ m/^Swap:\s+(\d+)\s+(\d+)\s+(\d+)$/){
+			($size,$used,$free) = ($1,$2,$3);
+			if ($size != 0){
+				($percent = ($used/$size)*100) =~ s/^(\d+)(\.\d+)?$/$1%/;
+			}else{
+				($percent = '');
+			}
+			print <<END
 <tr>
-<td class='boldbase'><b>$Lang::tr{'swap'}</b></td>
+	<td class='boldbase'><b>$Lang::tr{'swap'}</b></td>
 END
 ;
-			}
-			print <<END
-<td align='center'>$size KiB</td>
-<td align='center'>$used KiB</td>
-<td align='center'>$free KiB</td>
-<td>
+		}
+		print <<END
+	<td align='center'>$size KiB</td>
+	<td align='center'>$used KiB</td>
+	<td align='center'>$free KiB</td>
+	<td>
 END
 ;
-			&percentbar($percent);
-			print <<END
+		&percentbar($percent);
+		print <<END
 </td>
-<td align='left'>$percent</td>
+	<td align='left'>$percent</td>
 </tr>
 END
 ;
-		}
 	}
-	close($cmd_fh);
-	print <<END
+}
+close($cmd_fh);
+print <<END
 <tr><td colspan='6'><br /></td></tr>
 <tr><td class='boldbase'><b>$Lang::tr{'shared'}</b></td><td align='center'>$shared KiB</td></tr>
 <tr><td class='boldbase'><b>$Lang::tr{'buffers'}</b></td><td align='center'>$buffers KiB</td></tr>
@@ -135,11 +122,10 @@ END
 </table>
 END
 ;
-	&Header::closebox();
+&Header::closebox();
 
-	&Header::closebigbox();
-	&Header::closepage();
-}
+&Header::closebigbox();
+&Header::closepage();
 
 sub percentbar{
 	my $percent = $_[0];
diff --git a/html/cgi-bin/netexternal.cgi b/html/cgi-bin/netexternal.cgi
index 1e3760c2b..cc5667044 100644
--- a/html/cgi-bin/netexternal.cgi
+++ b/html/cgi-bin/netexternal.cgi
@@ -43,124 +43,113 @@ my %netsettings=();
 my @graphs=();
 my %dhcpinfo=();
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
-
-if ( $querry[0] ne~ ""){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updateifgraph($querry[0],$querry[1]);
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'network traffic graphs external'}, 1, '');
+&Header::openbigbox('100%', 'left');
+
+if ($netsettings{'RED_TYPE'} ne 'PPPOE'){
+	if ($netsettings{'RED_DEV'} ne $netsettings{'GREEN_DEV'}){
+		push (@graphs, ($netsettings{'RED_DEV'}));
+	}
 }else{
+	push (@graphs, "ppp0");
+}
 
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'network traffic graphs external'}, 1, '');
-	&Header::openbigbox('100%', 'left');
+if (-e "/var/log/rrd/collectd/localhost/interface/if_octets-ipsec0.rrd"){
+	push (@graphs, ("ipsec0"));
+}
 
-	if ($netsettings{'RED_TYPE'} ne 'PPPOE'){
-		if ($netsettings{'RED_DEV'} ne $netsettings{'GREEN_DEV'}){
-			push (@graphs, ($netsettings{'RED_DEV'}));
-		}
-	}else{
-		push (@graphs, "ppp0");
-	}
-	
-	if (-e "/var/log/rrd/collectd/localhost/interface/if_octets-ipsec0.rrd"){
-		push (@graphs, ("ipsec0"));
-	}
+if (-e "/var/log/rrd/collectd/localhost/interface/if_octets-tun0.rrd"){
+	push (@graphs, ("tun0"));
+}
 
-	if (-e "/var/log/rrd/collectd/localhost/interface/if_octets-tun0.rrd"){
-		push (@graphs, ("tun0"));
-	}
+foreach (@graphs) {
+	&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("netexternal.cgi",$_,"day");
+	&Header::closebox();
+}
 
-	foreach (@graphs) {
-		&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("netexternal.cgi",$_,"day");
-		&Header::closebox();
-	}
+if ( $netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/  && $netsettings{'RED_TYPE'} eq "DHCP"){
+
+	&Header::openbox('100%', 'left', "RED $Lang::tr{'dhcp configuration'}");
+	if (-s "${General::swroot}/dhcpc/dhcpcd-$netsettings{'RED_DEV'}.info") {
 
-	if ( $netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/  && $netsettings{'RED_TYPE'} eq "DHCP"){
-
-		&Header::openbox('100%', 'left', "RED $Lang::tr{'dhcp configuration'}");
-		if (-s "${General::swroot}/dhcpc/dhcpcd-$netsettings{'RED_DEV'}.info") {
-
-			&General::readhash("${General::swroot}/dhcpc/dhcpcd-$netsettings{'RED_DEV'}.info", \%dhcpinfo);
-
-			my ($DNS1, $DNS2) = split(/ /, $dhcpinfo{'domain_name_servers'});
-
-			my $lsetme=0;
-			my $leasetime="";
-			if ($dhcpinfo{'dhcp_lease_time'} ne "") {
-				$lsetme=$dhcpinfo{'dhcp_lease_time'};
-				$lsetme=($lsetme/60);
-				
-				if ($lsetme > 59) {
-					$lsetme=($lsetme/60); $leasetime=$lsetme." Hour";
-				}else{
-					$leasetime=$lsetme." Minute";
-				}
-				
-				if ($lsetme > 1) {
-					$leasetime=$leasetime."s";
-				}
+		&General::readhash("${General::swroot}/dhcpc/dhcpcd-$netsettings{'RED_DEV'}.info", \%dhcpinfo);
+
+		my ($DNS1, $DNS2) = split(/ /, $dhcpinfo{'domain_name_servers'});
+
+		my $lsetme=0;
+		my $leasetime="";
+		if ($dhcpinfo{'dhcp_lease_time'} ne "") {
+			$lsetme=$dhcpinfo{'dhcp_lease_time'};
+			$lsetme=($lsetme/60);
+			
+			if ($lsetme > 59) {
+				$lsetme=($lsetme/60); $leasetime=$lsetme." Hour";
+			}else{
+				$leasetime=$lsetme." Minute";
+			}
+			
+			if ($lsetme > 1) {
+				$leasetime=$leasetime."s";
 			}
+		}
 
-			my $rentme=0;
-			my $rnwltime="";
-
-			if ($dhcpinfo{'dhcp_renewal_time'} ne "") {
-				$rentme=$dhcpinfo{'dhcp_renewal_time'};
-				$rentme=($rentme/60);
-				
-				if ($rentme > 59){
-					$rentme=($rentme/60); $rnwltime=$rentme." Hour";
-				}else{
-					$rnwltime=$rentme." Minute";
-				}
-				
-				if ($rentme > 1){
-					$rnwltime=$rnwltime."s";
-				}
+		my $rentme=0;
+		my $rnwltime="";
+
+		if ($dhcpinfo{'dhcp_renewal_time'} ne "") {
+			$rentme=$dhcpinfo{'dhcp_renewal_time'};
+			$rentme=($rentme/60);
+			
+			if ($rentme > 59){
+				$rentme=($rentme/60); $rnwltime=$rentme." Hour";
+			}else{
+				$rnwltime=$rentme." Minute";
+			}
+			
+			if ($rentme > 1){
+				$rnwltime=$rnwltime."s";
 			}
+		}
 
-			my $maxtme=0;
-			my $maxtime="";
+		my $maxtme=0;
+		my $maxtime="";
 
-			if ($dhcpinfo{'dhcp_rebinding_time'} ne "") {
-				$maxtme=$dhcpinfo{'dhcp_rebinding_time'};
-				$maxtme=($maxtme/60);
+		if ($dhcpinfo{'dhcp_rebinding_time'} ne "") {
+			$maxtme=$dhcpinfo{'dhcp_rebinding_time'};
+			$maxtme=($maxtme/60);
 
-				if ($maxtme > 59){
-					$maxtme=($maxtme/60); $maxtime=$maxtme." Hour";
-				} else {
-					$maxtime=$maxtme." Minute";
-				}
+			if ($maxtme > 59){
+				$maxtme=($maxtme/60); $maxtime=$maxtme." Hour";
+			} else {
+				$maxtime=$maxtme." Minute";
+			}
 
-				if ($maxtme > 1) {
-					$maxtime=$maxtime."s";
-				}
+			if ($maxtme > 1) {
+				$maxtime=$maxtime."s";
 			}
+		}
 
 
-			print <<END
+		print <<END
 <table width='100%'>
-<tr><td width='30%'>$Lang::tr{'domain'}</td><td>$dhcpinfo{'domain_name'}</td></tr>
-<tr><td>$Lang::tr{'gateway'}</td><td>$dhcpinfo{'routers'}</td></tr>
-<tr><td>$Lang::tr{'primary dns'}</td><td>$DNS1</td></tr>
-<tr><td>$Lang::tr{'secondary dns'}</td><td>$DNS2</td></tr>
-<tr><td>$Lang::tr{'dhcp server'}</td><td>$dhcpinfo{'dhcp_server_identifier'}</td></tr>
-<tr><td>$Lang::tr{'def lease time'}</td><td>$leasetime</td></tr>
-<tr><td>$Lang::tr{'default renewal time'}</td><td>$rnwltime</td></tr>
-<tr><td>$Lang::tr{'max renewal time'}</td><td>$maxtime</td></tr>
+	<tr><td width='30%'>$Lang::tr{'domain'}</td><td>$dhcpinfo{'domain_name'}</td></tr>
+	<tr><td>$Lang::tr{'gateway'}</td><td>$dhcpinfo{'routers'}</td></tr>
+	<tr><td>$Lang::tr{'primary dns'}</td><td>$DNS1</td></tr>
+	<tr><td>$Lang::tr{'secondary dns'}</td><td>$DNS2</td></tr>
+	<tr><td>$Lang::tr{'dhcp server'}</td><td>$dhcpinfo{'dhcp_server_identifier'}</td></tr>
+	<tr><td>$Lang::tr{'def lease time'}</td><td>$leasetime</td></tr>
+	<tr><td>$Lang::tr{'default renewal time'}</td><td>$rnwltime</td></tr>
+	<tr><td>$Lang::tr{'max renewal time'}</td><td>$maxtime</td></tr>
 </table>
 END
 ;
-		}else{
-			print "$Lang::tr{'no dhcp lease'}";
-		}
-		&Header::closebox();
+	}else{
+		print "$Lang::tr{'no dhcp lease'}";
 	}
-
-	&Header::closebigbox();
-	&Header::closepage();
+	&Header::closebox();
 }
+
+&Header::closebigbox();
+&Header::closepage();
diff --git a/html/cgi-bin/netinternal.cgi b/html/cgi-bin/netinternal.cgi
index 3c2828fbf..472f61efe 100644
--- a/html/cgi-bin/netinternal.cgi
+++ b/html/cgi-bin/netinternal.cgi
@@ -40,48 +40,31 @@ my %netsettings=();
 my @graphs=();
 my @wireless=();
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
-$querry[2] = '' unless defined $querry[2];
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'network traffic graphs internal'}, 1, '');
+&Header::openbigbox('100%', 'left');
 
-if ( $querry[0] =~ /wireless/ ){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	$querry[0] =~ s/wireless//g;
-	&Graphs::updatewirelessgraph($querry[0],$querry[1]);
-}elsif ( $querry[0] ne "" ){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updateifgraph($querry[0],$querry[1]);
-}else{
+push (@graphs, ($netsettings{'GREEN_DEV'}));
+if (&Header::blue_used() && $netsettings{'BLUE_DEV'}) {push (@graphs, ($netsettings{'BLUE_DEV'})); }
+if (&Header::orange_used() && $netsettings{'ORANGE_DEV'}) {push (@graphs, ($netsettings{'ORANGE_DEV'})); }
 
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'network traffic graphs internal'}, 1, '');
-	&Header::openbigbox('100%', 'left');
+my @wirelessgraphs = `ls -dA /var/log/rrd/collectd/localhost/wireless* 2>/dev/null`;
+foreach (@wirelessgraphs){
+	$_ =~ /(.*)\/wireless-(.*)/;
+	push(@wireless,$2);
+}
 
-	push (@graphs, ($netsettings{'GREEN_DEV'}));
-	if (&Header::blue_used() && $netsettings{'BLUE_DEV'}) {push (@graphs, ($netsettings{'BLUE_DEV'})); }
-	if (&Header::orange_used() && $netsettings{'ORANGE_DEV'}) {push (@graphs, ($netsettings{'ORANGE_DEV'})); }
+foreach (@graphs) {
+	&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("netinternal.cgi",$_,"day");
+	&Header::closebox();
+}
 
-	my @wirelessgraphs = `ls -dA /var/log/rrd/collectd/localhost/wireless* 2>/dev/null`;
-	foreach (@wirelessgraphs){
-		$_ =~ /(.*)\/wireless-(.*)/;
-		push(@wireless,$2);
-	}
+foreach (@wireless) {
+	&Header::openbox('100%', 'center', "Wireless $_ $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("netinternal.cgi","wireless".$_,"day");
+	&Header::closebox();
+}
 
-	foreach (@graphs) {
-		&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("netinternal.cgi",$_,"day");
-		&Header::closebox();
-	}
-
-	foreach (@wireless) {
-		&Header::openbox('100%', 'center', "Wireless $_ $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("netinternal.cgi","wireless".$_,"day");
-		&Header::closebox();
-	}
-
-	&Header::closebigbox();
-	&Header::closepage();
-}	
+&Header::closebigbox();
+&Header::closepage();
diff --git a/html/cgi-bin/netother.cgi b/html/cgi-bin/netother.cgi
index cbd2bc228..667777153 100755
--- a/html/cgi-bin/netother.cgi
+++ b/html/cgi-bin/netother.cgi
@@ -37,70 +37,51 @@ my %mainsettings = ();
 
 my @pings=();
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'network traffic graphs others'}, 1, '');
+&Header::openbigbox('100%', 'left');
 
-if ( $querry[0] eq "conntrack") {
-	print "Content-Type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updateconntrackgraph($querry[1]);
-} elsif ( $querry[0] =~ "fwhits"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatefwhitsgraph($querry[1]);
-}elsif ( $querry[0] ne ""){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatepinggraph($querry[0],$querry[1]);
-}else{
+my @pinggraphs = `ls -dA /var/log/rrd/collectd/localhost/ping/ping-*`;
+foreach (@pinggraphs){
+	$_ =~ /(.*)\/ping\/ping-(.*)\.rrd/;
+	push(@pings,$2);
+}
 
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'network traffic graphs others'}, 1, '');
-	&Header::openbigbox('100%', 'left');
-	
-	my @pinggraphs = `ls -dA /var/log/rrd/collectd/localhost/ping/ping-*`;
-	foreach (@pinggraphs){
-		$_ =~ /(.*)\/ping\/ping-(.*)\.rrd/;
-		push(@pings,$2);
-	}
-
-	foreach (@pings) {
-		&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("netother.cgi",$_,"day");
-		&Header::closebox();
-	}
-
-	&Header::openbox('100%', 'center', "$Lang::tr{'connection tracking'}");
-	&Graphs::makegraphbox("netother.cgi", "conntrack", "day");
+foreach (@pings) {
+	&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("netother.cgi",$_,"day");
 	&Header::closebox();
+}
 
-	&Header::openbox('100%', 'center', "$Lang::tr{'firewallhits'} $Lang::tr{'graph'}");
-	&Graphs::makegraphbox("netother.cgi","fwhits","day");
-	&Header::closebox();
+&Header::openbox('100%', 'center', "$Lang::tr{'connection tracking'}");
+&Graphs::makegraphbox("netother.cgi", "conntrack", "day");
+&Header::closebox();
 
-	my $output = '';
-	
-	&Header::openbox('100%', 'left', $Lang::tr{'routing table entries'});
-	$output = `/sbin/ip route show`;
-	$output = &Header::cleanhtml($output,"y");
-	print "<pre>$output</pre>\n";
-	&Header::closebox();
+&Header::openbox('100%', 'center', "$Lang::tr{'firewallhits'} $Lang::tr{'graph'}");
+&Graphs::makegraphbox("netother.cgi","fwhits","day");
+&Header::closebox();
+
+my $output = '';
 
-	$output = `/sbin/ip route list table 220`;
-	if ( $output ) {
-		&Header::openbox('100%', 'left', $Lang::tr{'ipsec routing table entries'});
-		$output = &Header::cleanhtml($output,"y");
-		print "<pre>$output</pre>\n";
-		&Header::closebox()
-	}
+&Header::openbox('100%', 'left', $Lang::tr{'routing table entries'});
+$output = `/sbin/ip route show`;
+$output = &Header::cleanhtml($output,"y");
+print "<pre>$output</pre>\n";
+&Header::closebox();
 
-	&Header::openbox('100%', 'left', $Lang::tr{'arp table entries'});
-	$output = `/sbin/ip neigh show`;
+$output = `/sbin/ip route list table 220`;
+if ( $output ) {
+	&Header::openbox('100%', 'left', $Lang::tr{'ipsec routing table entries'});
 	$output = &Header::cleanhtml($output,"y");
 	print "<pre>$output</pre>\n";
-	&Header::closebox();
+	&Header::closebox()
+}
+
+&Header::openbox('100%', 'left', $Lang::tr{'arp table entries'});
+$output = `/sbin/ip neigh show`;
+$output = &Header::cleanhtml($output,"y");
+print "<pre>$output</pre>\n";
+&Header::closebox();
 
-	&Header::closebigbox();
-	&Header::closepage();
-}	
+&Header::closebigbox();
+&Header::closepage();
diff --git a/html/cgi-bin/netovpnrw.cgi b/html/cgi-bin/netovpnrw.cgi
index 00ef35337..5014f9a55 100755
--- a/html/cgi-bin/netovpnrw.cgi
+++ b/html/cgi-bin/netovpnrw.cgi
@@ -37,36 +37,26 @@ my %mainsettings = ();
 
 my @vpns=();
 
-my @querry = split(/\?/,uri_unescape($ENV{'QUERY_STRING'}));
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'week' unless defined $querry[1];
-
-if ( $querry[0] ne "" && $querry[0] ne "UNDEF"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatevpngraph($querry[0],$querry[1]);
-}else{
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'vpn statistic rw'}, 1, '');
-	&Header::openbigbox('100%', 'left');
-
-	my @vpngraphs = `find /var/log/rrd/collectd/localhost/openvpn-*/ -not  -path *openvpn-UNDEF*  -not -path *openvpn-*n2n* -name *.rrd 2>/dev/null|sort`;
-	foreach (@vpngraphs){
-		if($_ =~ /(.*)\/openvpn-(.*)\/if_octets_derive.rrd/){
-			push(@vpns,$2);
-		}
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'vpn statistic rw'}, 1, '');
+&Header::openbigbox('100%', 'left');
+
+my @vpngraphs = `find /var/log/rrd/collectd/localhost/openvpn-*/ -not  -path *openvpn-UNDEF*  -not -path *openvpn-*n2n* -name *.rrd 2>/dev/null|sort`;
+foreach (@vpngraphs){
+	if($_ =~ /(.*)\/openvpn-(.*)\/if_octets_derive.rrd/){
+		push(@vpns,$2);
 	}
-	if(@vpns){
-		foreach (@vpns) {
-			&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
-			&Graphs::makegraphbox("netovpnrw.cgi",$_, "day");
-			&Header::closebox();
-		}
-	}else{
-		print "<center>".$Lang::tr{'no data'}."</center>";
+}
+if(@vpns){
+	foreach (@vpns) {
+		&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
+		&Graphs::makegraphbox("netovpnrw.cgi",$_, "day");
+		&Header::closebox();
 	}
-	my $output = '';
-
-	&Header::closebigbox();
-	&Header::closepage();
+}else{
+	print "<center>".$Lang::tr{'no data'}."</center>";
 }
+my $output = '';
+
+&Header::closebigbox();
+&Header::closepage();
diff --git a/html/cgi-bin/netovpnsrv.cgi b/html/cgi-bin/netovpnsrv.cgi
index a53090f0f..1fb66e7a4 100755
--- a/html/cgi-bin/netovpnsrv.cgi
+++ b/html/cgi-bin/netovpnsrv.cgi
@@ -49,46 +49,32 @@ foreach my $key (sort {$vpnsettings{$a}[1] <=> $vpnsettings{$b}[1]} keys %vpnset
 	$ipsecgraphs{$vpnsettings{$key}[1]} = "${interface_mode}${key}";
 }
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'week' unless defined $querry[1];
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'vpn statistic n2n'}, 1, '');
+&Header::openbigbox('100%', 'left');
 
-if ( $querry[0] ne ""){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	if (grep { $_ eq $querry[0] } values %ipsecgraphs) {
-		&Graphs::updateifgraph($querry[0],$querry[1]);
-	} else {
-		&Graphs::updatevpnn2ngraph($querry[0],$querry[1]);
+my @vpngraphs = `find /var/log/rrd/collectd/localhost/openvpn-*-n2n/ -not  -path *openvpn-UNDEF* -name *traffic.rrd 2>/dev/null|sort`;
+foreach (@vpngraphs){
+	if($_ =~ /(.*)\/openvpn-(.*)\/if_octets_derive-traffic.rrd/){
+		push(@vpns,$2);
 	}
-}else{
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'vpn statistic n2n'}, 1, '');
-	&Header::openbigbox('100%', 'left');
-
-	my @vpngraphs = `find /var/log/rrd/collectd/localhost/openvpn-*-n2n/ -not  -path *openvpn-UNDEF* -name *traffic.rrd 2>/dev/null|sort`;
-	foreach (@vpngraphs){
-		if($_ =~ /(.*)\/openvpn-(.*)\/if_octets_derive-traffic.rrd/){
-			push(@vpns,$2);
-		}
+}
+if (@vpns || %ipsecgraphs) {
+	foreach my $name (sort keys %ipsecgraphs) {
+		&Header::openbox('100%', 'center', "$Lang::tr{'ipsec connection'}: $name");
+		&Graphs::makegraphbox("netovpnsrv.cgi", "ipsec-$ipsecgraphs{$name}", "day");
+		&Header::closebox();
 	}
-	if (@vpns || %ipsecgraphs) {
-		foreach my $name (sort keys %ipsecgraphs) {
-			&Header::openbox('100%', 'center', "$Lang::tr{'ipsec connection'}: $name");
-			&Graphs::makegraphbox("netovpnsrv.cgi", "ipsec-$ipsecgraphs{$name}", "day");
-			&Header::closebox();
-		}
 
-		foreach (@vpns) {
-			&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
-			&Graphs::makegraphbox("netovpnsrv.cgi",$_, "day");
-			&Header::closebox();
-		}
-	}else{
-		print "<center>".$Lang::tr{'no data'}."</center>";
+	foreach (@vpns) {
+		&Header::openbox('100%', 'center', "$_ $Lang::tr{'graph'}");
+		&Graphs::makegraphbox("netovpnsrv.cgi",$_, "day");
+		&Header::closebox();
 	}
-	my $output = '';
-
-	&Header::closebigbox();
-	&Header::closepage();
+}else{
+	print "<center>".$Lang::tr{'no data'}."</center>";
 }
+my $output = '';
+
+&Header::closebigbox();
+&Header::closepage();
diff --git a/html/cgi-bin/qos.cgi b/html/cgi-bin/qos.cgi
index fa566b523..af41b8d2b 100644
--- a/html/cgi-bin/qos.cgi
+++ b/html/cgi-bin/qos.cgi
@@ -111,19 +111,10 @@ my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
 &General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
+&Header::showhttpheaders();
 
-if ( $querry[0] ne ""){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updateqosgraph($querry[0],$querry[1]);
-}else{
-	&Header::showhttpheaders();
-
-	&Header::openpage('QoS', 1, '');
-	&Header::openbigbox('100%', 'left', '', $errormessage);
+&Header::openpage('QoS', 1, '');
+&Header::openbigbox('100%', 'left', '', $errormessage);
 
 ############################################################################################################################
 ############################################################################################################################
@@ -360,7 +351,7 @@ END
 ;
 	close FILE;
 }
-elsif ($qossettings{'DOTOS'} eq 'Loeschen')
+elsif ($qossettings{'DOTOS'} eq $Lang::tr{'delete'})
 {
 	open( FILE, "< $tosfile" ) or die "Unable to read $tosfile";
 	@tosrules = <FILE>;
@@ -708,12 +699,12 @@ if ( ($qossettings{'DEFCLASS_INC'} eq '') || ($qossettings{'DEFCLASS_OUT'} eq ''
 	exit
 }
 
-	&Header::openbox('100%', 'center', "$qossettings{'RED_DEV'} $Lang::tr{'graph'}, $Lang::tr{'uplink'}");
-	&Graphs::makegraphbox("qos.cgi",$qossettings{'RED_DEV'},"hour");
-	&Header::closebox();
-	&Header::openbox('100%', 'center', "$qossettings{'IMQ_DEV'} $Lang::tr{'graph'}, $Lang::tr{'downlink'}");
-	&Graphs::makegraphbox("qos.cgi",$qossettings{'IMQ_DEV'},"hour");
-	&Header::closebox();
+&Header::openbox('100%', 'center', "$qossettings{'RED_DEV'} $Lang::tr{'graph'}, $Lang::tr{'uplink'}");
+&Graphs::makegraphbox("qos.cgi",$qossettings{'RED_DEV'},"hour");
+&Header::closebox();
+&Header::openbox('100%', 'center', "$qossettings{'IMQ_DEV'} $Lang::tr{'graph'}, $Lang::tr{'downlink'}");
+&Graphs::makegraphbox("qos.cgi",$qossettings{'IMQ_DEV'},"hour");
+&Header::closebox();
 
 &showclasses($qossettings{'RED_DEV'});
 &showclasses($qossettings{'IMQ_DEV'});
@@ -721,8 +712,6 @@ if ( ($qossettings{'DEFCLASS_INC'} eq '') || ($qossettings{'DEFCLASS_OUT'} eq ''
 &Header::closebigbox();
 &Header::closepage();
 
-}
-
 ############################################################################################################################
 ############################################################################################################################
 
diff --git a/html/cgi-bin/system.cgi b/html/cgi-bin/system.cgi
index 67c479736..c1da5f536 100644
--- a/html/cgi-bin/system.cgi
+++ b/html/cgi-bin/system.cgi
@@ -35,41 +35,23 @@ my %mainsettings = ();
 &General::readhash("${General::swroot}/main/settings", \%mainsettings);
 &General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
 
-my @querry = split(/\?/,$ENV{'QUERY_STRING'});
-$querry[0] = '' unless defined $querry[0];
-$querry[1] = 'hour' unless defined $querry[1];
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'status information'}, 1, '');
+&Header::openbigbox('100%', 'left');
 
-if ( $querry[0] =~ "cpufreq"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatecpufreqgraph($querry[1]);
-}elsif ( $querry[0] =~ "cpu"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updatecpugraph($querry[1]);
-}elsif ( $querry[0] =~ "load"){
-	print "Content-type: image/png\n\n";
-	binmode(STDOUT);
-	&Graphs::updateloadgraph($querry[1]);
-}else{
-	&Header::showhttpheaders();
-	&Header::openpage($Lang::tr{'status information'}, 1, '');
-	&Header::openbigbox('100%', 'left');
+&Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}");
+&Graphs::makegraphbox("system.cgi","cpu","day");
+&Header::closebox();
 
-	&Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}");
-	&Graphs::makegraphbox("system.cgi","cpu","day");
+if ( -e "$mainsettings{'RRDLOG'}/collectd/localhost/cpufreq/cpufreq-0.rrd"){
+	&Header::openbox('100%', 'center', "$Lang::tr{'cpu frequency'} $Lang::tr{'graph'}");
+	&Graphs::makegraphbox("system.cgi","cpufreq","day");
 	&Header::closebox();
+}
 
-	if ( -e "$mainsettings{'RRDLOG'}/collectd/localhost/cpufreq/cpufreq-0.rrd"){
-		&Header::openbox('100%', 'center', "$Lang::tr{'cpu frequency'} $Lang::tr{'graph'}");
-		&Graphs::makegraphbox("system.cgi","cpufreq","day");
-		&Header::closebox();
-	}
-
-	&Header::openbox('100%', 'center', "$Lang::tr{'uptime load average'} $Lang::tr{'graph'}");
-	&Graphs::makegraphbox("system.cgi","load","day");
-	&Header::closebox();
+&Header::openbox('100%', 'center', "$Lang::tr{'uptime load average'} $Lang::tr{'graph'}");
+&Graphs::makegraphbox("system.cgi","load","day");
+&Header::closebox();
 
-	&Header::closebigbox();
-	&Header::closepage();
-}
+&Header::closebigbox();
+&Header::closepage();
diff --git a/lfs/cmake b/lfs/cmake
index 85ac8690c..7cc77a3ef 100644
--- a/lfs/cmake
+++ b/lfs/cmake
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.20.4
+VER        = 3.21.0
 
 THISAPP    = cmake-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 99e849c6910f1df027cc0365027fa19b
+$(DL_FILE)_MD5 = f616604606184e3c7b870a57e68a7c3b
 
 install : $(TARGET)
 
diff --git a/lfs/curl b/lfs/curl
index ae55d812e..1d516664c 100644
--- a/lfs/curl
+++ b/lfs/curl
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 7.77.0
+VER        = 7.78.0
 
 THISAPP    = curl-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 3cf78c539cae019cf96ba38571706e06
+$(DL_FILE)_MD5 = 419c2461366cf404160a820f7a902b7e
 
 install : $(TARGET)
 
diff --git a/lfs/ethtool b/lfs/ethtool
index 677571844..d7655d173 100644
--- a/lfs/ethtool
+++ b/lfs/ethtool
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.12
+VER        = 5.13
 
 THISAPP    = ethtool-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 11fcf0d0287c899fbcbdb48897fe2bab
+$(DL_FILE)_MD5 = 940bd6c330b9ebafaf40b3b428e56754
 
 install : $(TARGET)
 
diff --git a/lfs/libidn b/lfs/libidn
index b8be721a3..4e2a7403c 100644
--- a/lfs/libidn
+++ b/lfs/libidn
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.36
+VER        = 1.38
 
 THISAPP    = libidn-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 813c7b268d1051ca02c3610986126f38
+$(DL_FILE)_MD5 = 718ff3700dd71f830c592ebe97249193
 
 install : $(TARGET)
 
@@ -71,9 +71,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
 	cd $(DIR_APP) && ./configure \
-	--prefix=/usr \
-	--disable-nls \
-	--disable-doc
+	                --prefix=/usr \
+	                --disable-nls \
+	                --disable-doc \
+	                --disable-static
 
 	cd $(DIR_APP) && make $(MAKETUNING)
 	cd $(DIR_APP) && make install
diff --git a/lfs/rpcbind b/lfs/rpcbind
index 39d4dba4d..071b89bd3 100644
--- a/lfs/rpcbind
+++ b/lfs/rpcbind
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.2.5
+VER        = 1.2.6
 
 THISAPP    = rpcbind-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = rpcbind
-PAK_VER    = 4
+PAK_VER    = 5
 
 DEPS       = libtirpc
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ed46f09b9c0fa2d49015f6431bc5ea7b
+$(DL_FILE)_MD5 = 2d84ebbb7d6fb1fc3566d2d4b37f214b
 
 install : $(TARGET)
 
diff --git a/lfs/sysfsutils b/lfs/sysfsutils
index b177cb322..6c872b16b 100644
--- a/lfs/sysfsutils
+++ b/lfs/sysfsutils
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2021  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.3.0
+VER        = 2.1.1
 
 THISAPP    = sysfsutils-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d11c99271531be3c1e6d36b53968cd2b
+$(DL_FILE)_MD5 = 537c110be7244905997262854505c30f
 
 install : $(TARGET)
 
@@ -74,7 +74,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
 	$(UPDATE_AUTOMAKE)
-	cd $(DIR_APP) && ./configure --prefix=""
+	cd $(DIR_APP) && ./autogen
+	cd $(DIR_APP) && ./configure            \
+	                    --prefix=/usr       \
+	                    --libdir=/lib       \
+	                    --disable-static
 	cd $(DIR_APP) && make $(MAKETUNING) \
 		CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
 	cd $(DIR_APP) && make install


hooks/post-receive
--
IPFire 2.x development tree

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-09-05 13:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-05 13:11 [git.ipfire.org] IPFire 2.x development tree branch, next, updated. 07300f6a14b55eed5c3865bf258f3108b8a7a222 Arne Fitzenreiter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox