Merge pull request 'Actual implementation of opnsense dhcp' (#4) from feat/opnsenseDhcp into master
Reviewed-on: https://git.nationtech.io/NationTech/harmony/pulls/4
This commit is contained in:
commit
58a4e7882b
340
harmony-rs/Cargo.lock
generated
340
harmony-rs/Cargo.lock
generated
@ -59,14 +59,16 @@ dependencies = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "affilium"
|
||||
version = "0.1.0"
|
||||
name = "ahash"
|
||||
version = "0.8.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
|
||||
dependencies = [
|
||||
"cidr",
|
||||
"env_logger",
|
||||
"harmony",
|
||||
"log",
|
||||
"tokio",
|
||||
"cfg-if",
|
||||
"const-random",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
"zerocopy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -78,6 +80,21 @@ dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "android-tzdata"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
||||
|
||||
[[package]]
|
||||
name = "android_system_properties"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anstream"
|
||||
version = "0.6.15"
|
||||
@ -135,7 +152,7 @@ checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -199,6 +216,9 @@ name = "bitflags"
|
||||
version = "2.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bitvec"
|
||||
@ -254,9 +274,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
||||
|
||||
[[package]]
|
||||
name = "bytes"
|
||||
version = "1.7.1"
|
||||
version = "1.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
|
||||
checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da"
|
||||
|
||||
[[package]]
|
||||
name = "cbc"
|
||||
@ -293,6 +313,20 @@ dependencies = [
|
||||
"cpufeatures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
|
||||
dependencies = [
|
||||
"android-tzdata",
|
||||
"iana-time-zone",
|
||||
"js-sys",
|
||||
"num-traits",
|
||||
"wasm-bindgen",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cidr"
|
||||
version = "0.2.3"
|
||||
@ -321,6 +355,26 @@ version = "0.9.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
||||
|
||||
[[package]]
|
||||
name = "const-random"
|
||||
version = "0.1.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
|
||||
dependencies = [
|
||||
"const-random-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const-random-macro"
|
||||
version = "0.1.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
"once_cell",
|
||||
"tiny-keccak",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.4"
|
||||
@ -355,6 +409,12 @@ dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crunchy"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
|
||||
|
||||
[[package]]
|
||||
name = "crypto-bigint"
|
||||
version = "0.5.5"
|
||||
@ -411,7 +471,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -439,7 +499,7 @@ checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -451,6 +511,12 @@ dependencies = [
|
||||
"cipher",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "diff"
|
||||
version = "0.1.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.7"
|
||||
@ -603,6 +669,18 @@ dependencies = [
|
||||
"miniz_oxide 0.8.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "flurry"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf5efcf77a4da27927d3ab0509dec5b0954bb3bc59da5a1de9e52642ebd4cdf9"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"num_cpus",
|
||||
"parking_lot",
|
||||
"seize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
@ -706,7 +784,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -817,6 +895,7 @@ dependencies = [
|
||||
"env_logger",
|
||||
"libredfish",
|
||||
"log",
|
||||
"opnsense-config",
|
||||
"reqwest",
|
||||
"russh",
|
||||
"rust-ipmi",
|
||||
@ -832,6 +911,12 @@ version = "0.14.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.3.9"
|
||||
@ -948,6 +1033,29 @@ dependencies = [
|
||||
"tokio-native-tls",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone"
|
||||
version = "0.1.61"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
|
||||
dependencies = [
|
||||
"android_system_properties",
|
||||
"core-foundation-sys",
|
||||
"iana-time-zone-haiku",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"windows-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone-haiku"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "0.5.0"
|
||||
@ -1045,6 +1153,16 @@ version = "0.4.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"scopeguard",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.22"
|
||||
@ -1174,6 +1292,16 @@ dependencies = [
|
||||
"libm",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.36.4"
|
||||
@ -1218,7 +1346,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1239,6 +1367,41 @@ dependencies = [
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "opnsense-config"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"chrono",
|
||||
"env_logger",
|
||||
"log",
|
||||
"opnsense-config-xml",
|
||||
"pretty_assertions",
|
||||
"russh",
|
||||
"russh-keys",
|
||||
"russh-sftp",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "opnsense-config-xml"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"env_logger",
|
||||
"log",
|
||||
"pretty_assertions",
|
||||
"serde",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
"xml-rs",
|
||||
"yaserde",
|
||||
"yaserde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "p256"
|
||||
version = "0.13.2"
|
||||
@ -1277,6 +1440,29 @@ dependencies = [
|
||||
"sha2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
"parking_lot_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.9.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"smallvec",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "password-hash"
|
||||
version = "0.4.2"
|
||||
@ -1413,6 +1599,16 @@ dependencies = [
|
||||
"zerocopy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pretty_assertions"
|
||||
version = "1.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
|
||||
dependencies = [
|
||||
"diff",
|
||||
"yansi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "primeorder"
|
||||
version = "0.13.6"
|
||||
@ -1476,6 +1672,15 @@ dependencies = [
|
||||
"getrandom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.5.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.10.6"
|
||||
@ -1680,6 +1885,24 @@ dependencies = [
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "russh-sftp"
|
||||
version = "2.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2a72c8afe2041c17435eecd85d0b7291841486fd3d1c4082e0b212e5437ca42"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bitflags 2.6.0",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"flurry",
|
||||
"log",
|
||||
"serde",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rust-ipmi"
|
||||
version = "0.1.1"
|
||||
@ -1756,6 +1979,12 @@ dependencies = [
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||
|
||||
[[package]]
|
||||
name = "scrypt"
|
||||
version = "0.11.0"
|
||||
@ -1804,6 +2033,12 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "seize"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "689224d06523904ebcc9b482c6a3f4f7fb396096645c4cd10c0d2ff7371a34d3"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "1.0.23"
|
||||
@ -1827,14 +2062,14 @@ checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.128"
|
||||
version = "1.0.133"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
|
||||
checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
@ -1999,6 +2234,17 @@ version = "2.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.109"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.77"
|
||||
@ -2073,7 +2319,16 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tiny-keccak"
|
||||
version = "2.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
|
||||
dependencies = [
|
||||
"crunchy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2116,7 +2371,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2287,7 +2542,7 @@ dependencies = [
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
@ -2321,7 +2576,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
@ -2364,6 +2619,15 @@ version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.48.0"
|
||||
@ -2531,6 +2795,38 @@ dependencies = [
|
||||
"tap",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "xml-rs"
|
||||
version = "0.8.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26"
|
||||
|
||||
[[package]]
|
||||
name = "yansi"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
|
||||
|
||||
[[package]]
|
||||
name = "yaserde"
|
||||
version = "0.11.1"
|
||||
dependencies = [
|
||||
"log",
|
||||
"xml-rs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yaserde_derive"
|
||||
version = "0.11.1"
|
||||
dependencies = [
|
||||
"heck",
|
||||
"log",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
"xml-rs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.7.35"
|
||||
@ -2549,7 +2845,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"syn 2.0.77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3,6 +3,7 @@ resolver = "2"
|
||||
members = [
|
||||
"private_repos/*",
|
||||
"harmony",
|
||||
"opnsense-config", "opnsense-config-xml",
|
||||
]
|
||||
|
||||
[workspace.package]
|
||||
@ -17,3 +18,8 @@ derive-new = "0.7.0"
|
||||
async-trait = "0.1.82"
|
||||
tokio = { version = "1.40.0", features = ["io-std"] }
|
||||
cidr = "0.2.3"
|
||||
russh = "0.45.0"
|
||||
russh-keys = "0.45.0"
|
||||
|
||||
#[workspace.target.x86_64-unknown-linux-gnu]
|
||||
#rustflags = ["-C", "link-arg=-fuse-ld=mold"]
|
||||
|
@ -17,3 +17,4 @@ log = { workspace = true }
|
||||
env_logger = { workspace = true }
|
||||
async-trait = { workspace = true }
|
||||
cidr = { workspace = true }
|
||||
opnsense-config = { path = "../opnsense-config" }
|
||||
|
@ -7,6 +7,7 @@ use crate::topology::MacAddress;
|
||||
pub type HostGroup = Vec<PhysicalHost>;
|
||||
pub type SwitchGroup = Vec<Switch>;
|
||||
pub type FirewallGroup = Vec<PhysicalHost>;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct PhysicalHost {
|
||||
pub category: HostCategory,
|
||||
|
@ -23,6 +23,9 @@ use super::{
|
||||
pub struct Inventory {
|
||||
pub location: Location,
|
||||
pub switch: SwitchGroup,
|
||||
// Firewall is really just a host but with somewhat specialized hardware
|
||||
// I'm not entirely sure it belongs to its own category but it helps make things easier and
|
||||
// clearer for now so let's try it this way.
|
||||
pub firewall: FirewallGroup,
|
||||
pub worker_host: HostGroup,
|
||||
pub storage_host: HostGroup,
|
||||
@ -34,9 +37,11 @@ impl Inventory {
|
||||
pub fn empty_inventory() -> Self {
|
||||
Self {
|
||||
location: Location::test_building(),
|
||||
host: HostGroup::new(),
|
||||
switch: SwitchGroup::new(),
|
||||
firewall: FirewallGroup::new(),
|
||||
worker_host: HostGroup::new(),
|
||||
storage_host: HostGroup::new(),
|
||||
control_plane_host: HostGroup::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
use crate::executors::ExecutorError;
|
||||
use super::{IpAddress, LogicalHost};
|
||||
|
||||
pub trait LoadBalancer: Send + Sync {
|
||||
fn add_backend(&mut self, backend: Backend) -> Result<(), LoadBalancerError>;
|
||||
fn remove_backend(&mut self, backend_id: &str) -> Result<(), LoadBalancerError>;
|
||||
fn add_frontend(&mut self, frontend: Frontend) -> Result<(), LoadBalancerError>;
|
||||
fn remove_frontend(&mut self, frontend_id: &str) -> Result<(), LoadBalancerError>;
|
||||
fn add_backend(&mut self, backend: Backend) -> Result<(), ExecutorError>;
|
||||
fn remove_backend(&mut self, backend_id: &str) -> Result<(), ExecutorError>;
|
||||
fn add_frontend(&mut self, frontend: Frontend) -> Result<(), ExecutorError>;
|
||||
fn remove_frontend(&mut self, frontend_id: &str) -> Result<(), ExecutorError>;
|
||||
fn list_backends(&self) -> Vec<Backend>;
|
||||
fn list_frontends(&self) -> Vec<Frontend>;
|
||||
fn get_ip(&self) -> IpAddress;
|
||||
@ -17,8 +18,6 @@ impl std::fmt::Debug for dyn LoadBalancer {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct LoadBalancerError;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Backend {
|
||||
pub id: String,
|
||||
|
@ -22,6 +22,7 @@ pub struct HAClusterTopology {
|
||||
}
|
||||
|
||||
pub type IpAddress = IpAddr;
|
||||
|
||||
/// Represents a logical member of a cluster that provides one or more services.
|
||||
///
|
||||
/// A LogicalHost can represent various roles within the infrastructure, such as:
|
||||
|
@ -1,21 +1,30 @@
|
||||
use std::net::Ipv4Addr;
|
||||
|
||||
use async_trait::async_trait;
|
||||
|
||||
use crate::executors::ExecutorError;
|
||||
|
||||
use super::{IpAddress, LogicalHost};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct DHCPStaticEntry {
|
||||
pub name: String,
|
||||
pub mac: MacAddress,
|
||||
pub ip: IpAddress,
|
||||
pub ip: Ipv4Addr,
|
||||
}
|
||||
|
||||
impl std::fmt::Display for DHCPStaticEntry {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_fmt(format_args!("DHCPStaticEntry : name {}, mac {}, ip {}", self.name, self.mac, self.ip))
|
||||
f.write_fmt(format_args!(
|
||||
"DHCPStaticEntry : name {}, mac {}, ip {}",
|
||||
self.name, self.mac, self.ip
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
pub trait Firewall: Send + Sync {
|
||||
fn add_rule(&mut self, rule: FirewallRule) -> Result<(), FirewallError>;
|
||||
fn remove_rule(&mut self, rule_id: &str) -> Result<(), FirewallError>;
|
||||
fn add_rule(&mut self, rule: FirewallRule) -> Result<(), ExecutorError>;
|
||||
fn remove_rule(&mut self, rule_id: &str) -> Result<(), ExecutorError>;
|
||||
fn list_rules(&self) -> Vec<FirewallRule>;
|
||||
fn get_ip(&self) -> IpAddress;
|
||||
fn get_host(&self) -> LogicalHost;
|
||||
@ -31,10 +40,11 @@ pub struct NetworkDomain {
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
pub trait DhcpServer: Send + Sync {
|
||||
fn add_static_mapping(&self, entry: &DHCPStaticEntry) -> Result<(), DhcpError>;
|
||||
fn remove_static_mapping(&self, mac: &MacAddress) -> Result<(), DhcpError>;
|
||||
fn list_static_mappings(&self) -> Vec<(MacAddress, IpAddress)>;
|
||||
async fn add_static_mapping(&self, entry: &DHCPStaticEntry) -> Result<(), ExecutorError>;
|
||||
async fn remove_static_mapping(&self, mac: &MacAddress) -> Result<(), ExecutorError>;
|
||||
async fn list_static_mappings(&self) -> Vec<(MacAddress, IpAddress)>;
|
||||
fn get_ip(&self) -> IpAddress;
|
||||
fn get_host(&self) -> LogicalHost;
|
||||
}
|
||||
@ -51,8 +61,12 @@ pub trait DnsServer: Send + Sync {
|
||||
name: &str,
|
||||
record_type: DnsRecordType,
|
||||
value: &str,
|
||||
) -> Result<(), DnsError>;
|
||||
fn remove_record(&mut self, name: &str, record_type: DnsRecordType) -> Result<(), DnsError>;
|
||||
) -> Result<(), ExecutorError>;
|
||||
fn remove_record(
|
||||
&mut self,
|
||||
name: &str,
|
||||
record_type: DnsRecordType,
|
||||
) -> Result<(), ExecutorError>;
|
||||
fn list_records(&self) -> Vec<DnsRecord>;
|
||||
fn get_ip(&self) -> IpAddress;
|
||||
fn get_host(&self) -> LogicalHost;
|
||||
@ -89,12 +103,25 @@ pub enum Action {
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
|
||||
pub struct MacAddress(pub [u8; 6]);
|
||||
|
||||
// TODO create a small macro to provide a nice API to initiate a MacAddress
|
||||
// MacAddress::from!("00:90:7f:df:2c:23"),
|
||||
|
||||
impl MacAddress {
|
||||
#[cfg(test)]
|
||||
pub fn dummy() -> Self {
|
||||
Self([0, 0, 0, 0, 0, 0])
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&MacAddress> for String {
|
||||
fn from(value: &MacAddress) -> Self {
|
||||
format!(
|
||||
"{}:{}:{}:{}:{}:{}",
|
||||
value.0[0], value.0[1], value.0[2], value.0[3], value.0[4], value.0[5]
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Display for MacAddress {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_fmt(format_args!(
|
||||
@ -119,8 +146,3 @@ pub struct DnsRecord {
|
||||
pub record_type: DnsRecordType,
|
||||
pub value: String,
|
||||
}
|
||||
|
||||
// Error types
|
||||
pub struct FirewallError;
|
||||
pub struct DhcpError;
|
||||
pub struct DnsError;
|
||||
|
@ -1,29 +1,52 @@
|
||||
mod management;
|
||||
use std::sync::{Arc, Mutex, RwLock, RwLockWriteGuard};
|
||||
|
||||
use async_trait::async_trait;
|
||||
use log::debug;
|
||||
pub use management::*;
|
||||
|
||||
use crate::topology::{
|
||||
Backend, DHCPStaticEntry, DhcpServer, DnsServer, Firewall, FirewallError, FirewallRule,
|
||||
Frontend, IpAddress, LoadBalancer, LoadBalancerError, LogicalHost,
|
||||
use crate::{
|
||||
executors::ExecutorError,
|
||||
topology::{
|
||||
Backend, DHCPStaticEntry, DhcpServer, DnsServer, Firewall, FirewallRule, Frontend,
|
||||
IpAddress, LoadBalancer, LogicalHost,
|
||||
},
|
||||
};
|
||||
use derive_new::new;
|
||||
|
||||
#[derive(new, Clone)]
|
||||
#[derive(Clone)]
|
||||
pub struct OPNSenseFirewall {
|
||||
opnsense_config: Arc<RwLock<opnsense_config::Config>>,
|
||||
host: LogicalHost,
|
||||
cluster_nic_name: String,
|
||||
}
|
||||
|
||||
impl OPNSenseFirewall {
|
||||
pub fn get_ip(&self) -> IpAddress {
|
||||
self.host.ip
|
||||
}
|
||||
|
||||
pub async fn new(
|
||||
host: LogicalHost,
|
||||
cluster_nic_name: &str,
|
||||
username: &str,
|
||||
password: &str,
|
||||
) -> Self {
|
||||
Self {
|
||||
opnsense_config: Arc::new(RwLock::new(
|
||||
opnsense_config::Config::from_credentials(host.ip, username, password).await,
|
||||
)),
|
||||
host,
|
||||
cluster_nic_name: cluster_nic_name.into(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Firewall for OPNSenseFirewall {
|
||||
fn add_rule(&mut self, _rule: FirewallRule) -> Result<(), FirewallError> {
|
||||
fn add_rule(&mut self, _rule: FirewallRule) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn remove_rule(&mut self, _rule_id: &str) -> Result<(), FirewallError> {
|
||||
fn remove_rule(&mut self, _rule_id: &str) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
@ -40,19 +63,19 @@ impl Firewall for OPNSenseFirewall {
|
||||
}
|
||||
|
||||
impl LoadBalancer for OPNSenseFirewall {
|
||||
fn add_backend(&mut self, _backend: Backend) -> Result<(), LoadBalancerError> {
|
||||
fn add_backend(&mut self, _backend: Backend) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn remove_backend(&mut self, _backend_id: &str) -> Result<(), LoadBalancerError> {
|
||||
fn remove_backend(&mut self, _backend_id: &str) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn add_frontend(&mut self, _frontend: Frontend) -> Result<(), LoadBalancerError> {
|
||||
fn add_frontend(&mut self, _frontend: Frontend) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn remove_frontend(&mut self, _frontend_id: &str) -> Result<(), LoadBalancerError> {
|
||||
fn remove_frontend(&mut self, _frontend_id: &str) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
@ -72,22 +95,30 @@ impl LoadBalancer for OPNSenseFirewall {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl DhcpServer for OPNSenseFirewall {
|
||||
fn add_static_mapping(
|
||||
&self,
|
||||
entry: &DHCPStaticEntry,
|
||||
) -> Result<(), crate::topology::DhcpError> {
|
||||
todo!("Register {:?}", entry)
|
||||
async fn add_static_mapping(&self, entry: &DHCPStaticEntry) -> Result<(), ExecutorError> {
|
||||
let mac: String = String::from(&entry.mac);
|
||||
|
||||
{
|
||||
let mut writable_opnsense = self.opnsense_config.write().unwrap();
|
||||
writable_opnsense
|
||||
.dhcp()
|
||||
.add_static_mapping(&mac, entry.ip, &entry.name).unwrap();
|
||||
}
|
||||
|
||||
debug!("Registered {:?}", entry);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn remove_static_mapping(
|
||||
async fn remove_static_mapping(
|
||||
&self,
|
||||
_mac: &crate::topology::MacAddress,
|
||||
) -> Result<(), crate::topology::DhcpError> {
|
||||
) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn list_static_mappings(&self) -> Vec<(crate::topology::MacAddress, IpAddress)> {
|
||||
async fn list_static_mappings(&self) -> Vec<(crate::topology::MacAddress, IpAddress)> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
@ -98,13 +129,14 @@ impl DhcpServer for OPNSenseFirewall {
|
||||
self.host.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl DnsServer for OPNSenseFirewall {
|
||||
fn add_record(
|
||||
&mut self,
|
||||
_name: &str,
|
||||
_record_type: crate::topology::DnsRecordType,
|
||||
_value: &str,
|
||||
) -> Result<(), crate::topology::DnsError> {
|
||||
) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
@ -112,7 +144,7 @@ impl DnsServer for OPNSenseFirewall {
|
||||
&mut self,
|
||||
_name: &str,
|
||||
_record_type: crate::topology::DnsRecordType,
|
||||
) -> Result<(), crate::topology::DnsError> {
|
||||
) -> Result<(), ExecutorError> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
use std::{net::Ipv4Addr, sync::Arc};
|
||||
|
||||
use async_trait::async_trait;
|
||||
use derive_new::new;
|
||||
use log::info;
|
||||
@ -7,7 +9,6 @@ use crate::{
|
||||
data::{Id, Version},
|
||||
interpret::InterpretStatus,
|
||||
},
|
||||
infra::executors::russh::RusshClient,
|
||||
interpret::{Interpret, InterpretError, InterpretName, Outcome},
|
||||
inventory::Inventory,
|
||||
topology::{DHCPStaticEntry, HAClusterTopology, HostBinding},
|
||||
@ -114,28 +115,35 @@ impl Interpret for DhcpInterpret {
|
||||
topology: &HAClusterTopology,
|
||||
) -> Result<Outcome, InterpretError> {
|
||||
info!("Executing {} on inventory {inventory:?}", self.get_name());
|
||||
let ssh_client = RusshClient {};
|
||||
|
||||
let entries: Vec<DHCPStaticEntry> = self
|
||||
let dhcp_entries: Vec<DHCPStaticEntry> = self
|
||||
.score
|
||||
.host_binding
|
||||
.iter()
|
||||
.map(|binding| DHCPStaticEntry {
|
||||
name: binding.logical_host.name.clone(),
|
||||
mac: binding.physical_host.cluster_mac(),
|
||||
ip: binding.logical_host.ip,
|
||||
.map(|binding| {
|
||||
let ip = match binding.logical_host.ip {
|
||||
std::net::IpAddr::V4(ipv4) => ipv4,
|
||||
std::net::IpAddr::V6(_) => unimplemented!("DHCPStaticEntry only supports ipv4 at the moment"),
|
||||
};
|
||||
|
||||
DHCPStaticEntry {
|
||||
name: binding.logical_host.name.clone(),
|
||||
mac: binding.physical_host.cluster_mac(),
|
||||
ip,
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
info!("DHCPStaticEntry : {:?}", entries);
|
||||
info!("DHCPStaticEntry : {:?}", dhcp_entries);
|
||||
|
||||
let dhcp = topology.dhcp_server.clone();
|
||||
let dhcp = Arc::new(Box::new(topology.dhcp_server.clone()));
|
||||
info!("DHCP server : {:?}", dhcp);
|
||||
entries.iter().for_each(|entry| {
|
||||
match dhcp.add_static_mapping(&entry) {
|
||||
for entry in dhcp_entries.into_iter() {
|
||||
match dhcp.add_static_mapping(&entry).await {
|
||||
Ok(_) => info!("Successfully registered DHCPStaticEntry {}", entry),
|
||||
Err(_) => todo!(),
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
todo!("Configure DHCPServer");
|
||||
|
||||
Ok(Outcome::new(
|
||||
|
25
harmony-rs/opnsense-config-xml/Cargo.toml
Normal file
25
harmony-rs/opnsense-config-xml/Cargo.toml
Normal file
@ -0,0 +1,25 @@
|
||||
[package]
|
||||
name = "opnsense-config-xml"
|
||||
edition = "2021"
|
||||
version.workspace = true
|
||||
readme.workspace = true
|
||||
license.workspace = true
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0.123", features = [ "derive" ] }
|
||||
log = { workspace = true }
|
||||
env_logger = { workspace = true }
|
||||
#yaserde = { git = "https://git.nationtech.io/NationTech/yaserde" }
|
||||
#yaserde_derive = { git = "https://git.nationtech.io/NationTech/yaserde" }
|
||||
yaserde = { path = "../../../../github/yaserde/yaserde" }
|
||||
yaserde_derive = { path = "../../../../github/yaserde/yaserde_derive" }
|
||||
xml-rs = "0.8"
|
||||
thiserror = "1.0"
|
||||
async-trait = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
pretty_assertions = "1.4.1"
|
||||
|
||||
[target.x86_64-unknown-linux-gnu]
|
||||
rustflags = ["-C", "link-arg=-fuse-ld=mold"]
|
2134
harmony-rs/opnsense-config-xml/interfaces_expand.rs
Normal file
2134
harmony-rs/opnsense-config-xml/interfaces_expand.rs
Normal file
File diff suppressed because it is too large
Load Diff
113
harmony-rs/opnsense-config-xml/src/data/dhcpd.rs
Normal file
113
harmony-rs/opnsense-config-xml/src/data/dhcpd.rs
Normal file
@ -0,0 +1,113 @@
|
||||
use yaserde_derive::{YaDeserialize, YaSerialize};
|
||||
|
||||
use yaserde::MaybeString;
|
||||
|
||||
use super::opnsense::{NumberOption, Range, StaticMap};
|
||||
|
||||
// #[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
// #[yaserde(rename = "dhcpd")]
|
||||
// pub struct Dhcpd {
|
||||
// #[yaserde(rename = "lan")]
|
||||
// pub lan: DhcpInterface,
|
||||
// }
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct DhcpInterface {
|
||||
pub enable: Option<MaybeString>,
|
||||
pub gateway: Option<MaybeString>,
|
||||
pub domain: Option<MaybeString>,
|
||||
#[yaserde(rename = "ddnsdomainalgorithm")]
|
||||
pub ddns_domain_algorithm: Option<MaybeString>,
|
||||
#[yaserde(rename = "numberoptions")]
|
||||
pub number_options: Vec<NumberOption>,
|
||||
#[yaserde(rename = "range")]
|
||||
pub range: Range,
|
||||
pub winsserver: Option<MaybeString>,
|
||||
pub dnsserver: Option<MaybeString>,
|
||||
pub ntpserver: Option<MaybeString>,
|
||||
#[yaserde(rename = "staticmap")]
|
||||
pub staticmaps: Vec<StaticMap>,
|
||||
pub pool: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct DhcpRange {
|
||||
#[yaserde(rename = "from")]
|
||||
pub from: String,
|
||||
#[yaserde(rename = "to")]
|
||||
pub to: String,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::xml_utils::to_xml_str;
|
||||
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[test]
|
||||
fn dhcpd_should_deserialize_serialize_identical() {
|
||||
let dhcpd: Dhcpd =
|
||||
yaserde::de::from_str(SERIALIZED_DHCPD).expect("Deserialize Dhcpd failed");
|
||||
|
||||
assert_eq!(
|
||||
to_xml_str(&dhcpd).expect("Serialize Dhcpd failed"),
|
||||
SERIALIZED_DHCPD
|
||||
);
|
||||
}
|
||||
|
||||
const SERIALIZED_DHCPD: &str = "<?xml version=\"1.0\"?>
|
||||
<dhcpd>
|
||||
<lan>
|
||||
<enable>1</enable>
|
||||
<gateway>192.168.20.1</gateway>
|
||||
<domain>somedomain.yourlocal.mcd</domain>
|
||||
<ddnsdomainalgorithm>hmac-md5</ddnsdomainalgorithm>
|
||||
<numberoptions>
|
||||
<item/>
|
||||
</numberoptions>
|
||||
<range>
|
||||
<from>192.168.20.50</from>
|
||||
<to>192.168.20.200</to>
|
||||
</range>
|
||||
<winsserver/>
|
||||
<dnsserver>192.168.20.1</dnsserver>
|
||||
<ntpserver/>
|
||||
<staticmap>
|
||||
<mac>55:55:55:55:55:1c</mac>
|
||||
<ipaddr>192.168.20.160</ipaddr>
|
||||
<hostname>somehost983</hostname>
|
||||
<descr>someservire8</descr>
|
||||
<winsserver/>
|
||||
<dnsserver/>
|
||||
<ntpserver/>
|
||||
</staticmap>
|
||||
<staticmap>
|
||||
<mac>55:55:55:55:55:1c</mac>
|
||||
<ipaddr>192.168.20.155</ipaddr>
|
||||
<hostname>somehost893</hostname>
|
||||
<winsserver/>
|
||||
<dnsserver/>
|
||||
<ntpserver/>
|
||||
</staticmap>
|
||||
<staticmap>
|
||||
<mac>55:55:55:55:55:1c</mac>
|
||||
<ipaddr>192.168.20.165</ipaddr>
|
||||
<hostname>somehost893</hostname>
|
||||
<descr/>
|
||||
<winsserver/>
|
||||
<dnsserver/>
|
||||
<ntpserver/>
|
||||
</staticmap>
|
||||
<staticmap>
|
||||
<mac>55:55:55:55:55:1c</mac>
|
||||
<ipaddr>192.168.20.50</ipaddr>
|
||||
<hostname>hostswitch2</hostname>
|
||||
<descr>switch-2 (bottom)</descr>
|
||||
<winsserver/>
|
||||
<dnsserver/>
|
||||
<ntpserver/>
|
||||
</staticmap>
|
||||
<pool/>
|
||||
</lan>
|
||||
</dhcpd>\n";
|
||||
}
|
193
harmony-rs/opnsense-config-xml/src/data/interfaces.rs
Normal file
193
harmony-rs/opnsense-config-xml/src/data/interfaces.rs
Normal file
@ -0,0 +1,193 @@
|
||||
use yaserde_derive::{YaDeserialize, YaSerialize};
|
||||
|
||||
use yaserde::MaybeString;
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaDeserialize, YaSerialize)]
|
||||
pub struct Interface {
|
||||
pub internal_dynamic: Option<MaybeString>,
|
||||
#[yaserde(rename = "if")]
|
||||
pub physical_interface_name: String,
|
||||
pub descr: Option<MaybeString>,
|
||||
pub enable: MaybeString,
|
||||
pub lock: Option<MaybeString>,
|
||||
#[yaserde(rename = "spoofmac")]
|
||||
pub spoof_mac: Option<MaybeString>,
|
||||
pub ipaddr: Option<MaybeString>,
|
||||
pub dhcphostname: Option<MaybeString>,
|
||||
#[yaserde(rename = "alias-address")]
|
||||
pub alias_address: Option<MaybeString>,
|
||||
#[yaserde(rename = "alias-subnet")]
|
||||
pub alias_subnet: Option<MaybeString>,
|
||||
#[yaserde(rename = "blockpriv")]
|
||||
pub block_priv: Option<MaybeString>,
|
||||
#[yaserde(rename = "blockbogons")]
|
||||
pub block_bogons: Option<MaybeString>,
|
||||
#[yaserde(rename = "type")]
|
||||
pub r#type: Option<MaybeString>,
|
||||
#[yaserde(rename = "virtual")]
|
||||
pub r#virtual: Option<MaybeString>,
|
||||
pub subnet: Option<MaybeString>,
|
||||
pub ipaddrv6: Option<MaybeString>,
|
||||
pub networks: Option<MaybeString>,
|
||||
pub subnetv6: Option<MaybeString>,
|
||||
pub media: Option<MaybeString>,
|
||||
pub mediaopt: Option<MaybeString>,
|
||||
#[yaserde(rename = "track6-interface")]
|
||||
pub track6_interface: Option<MaybeString>,
|
||||
#[yaserde(rename = "track6-prefix-id")]
|
||||
pub track6_prefix_id: Option<MaybeString>,
|
||||
#[yaserde(rename = "dhcprejectfrom")]
|
||||
pub dhcprejectfrom: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_timeout: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_retry: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_select_timeout: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_reboot: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_backoff_cutoff: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_initial_interval: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_values: Option<MaybeString>,
|
||||
pub adv_dhcp_send_options: Option<MaybeString>,
|
||||
pub adv_dhcp_request_options: Option<MaybeString>,
|
||||
pub adv_dhcp_required_options: Option<MaybeString>,
|
||||
pub adv_dhcp_option_modifiers: Option<MaybeString>,
|
||||
pub adv_dhcp_config_advanced: Option<MaybeString>,
|
||||
pub adv_dhcp_config_file_override: Option<MaybeString>,
|
||||
pub adv_dhcp_config_file_override_path: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::xml_utils::to_xml_str;
|
||||
|
||||
use super::*;
|
||||
use pretty_assertions::assert_eq;
|
||||
use yaserde::NamedList;
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaDeserialize, YaSerialize)]
|
||||
pub struct InterfacesParent {
|
||||
foo: String,
|
||||
interfaces: NamedList<Interface>,
|
||||
bar: String,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_deserialize_interfaces() {
|
||||
let interfaces =
|
||||
yaserde::de::from_str::<NamedList<Interface>>(FULL_INTERFACES_XML).unwrap();
|
||||
assert_eq!(interfaces.elements.len(), 6)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_serialize_interfaces() {
|
||||
let named_list = NamedList {
|
||||
elements: vec![
|
||||
(String::from("paul"), Interface::default()),
|
||||
(String::from("anotherpaul"), Interface::default()),
|
||||
(String::from("thirdone"), Interface::default()),
|
||||
(String::from("andgofor4"), Interface::default()),
|
||||
],
|
||||
};
|
||||
|
||||
let parent = InterfacesParent {
|
||||
foo: String::from("foo"),
|
||||
interfaces: named_list,
|
||||
bar: String::from("foo"),
|
||||
};
|
||||
|
||||
assert_eq!(
|
||||
&to_xml_str(&parent).unwrap(),
|
||||
r#"<?xml version="1.0"?>
|
||||
<InterfacesParent>
|
||||
<foo>foo</foo>
|
||||
<interfaces>
|
||||
<paul>
|
||||
<if></if>
|
||||
<descr></descr>
|
||||
<enable/>
|
||||
</paul>
|
||||
<anotherpaul>
|
||||
<if></if>
|
||||
<descr></descr>
|
||||
<enable/>
|
||||
</anotherpaul>
|
||||
<thirdone>
|
||||
<if></if>
|
||||
<descr></descr>
|
||||
<enable/>
|
||||
</thirdone>
|
||||
<andgofor4>
|
||||
<if></if>
|
||||
<descr></descr>
|
||||
<enable/>
|
||||
</andgofor4>
|
||||
</interfaces>
|
||||
<bar>foo</bar>
|
||||
</InterfacesParent>
|
||||
"#
|
||||
)
|
||||
}
|
||||
|
||||
const FULL_INTERFACES_XML: &str = "<interfaces>
|
||||
<lan>
|
||||
<if>em1</if>
|
||||
<descr>LAN</descr>
|
||||
<enable>1</enable>
|
||||
<spoofmac/>
|
||||
<media/>
|
||||
<mediaopt/>
|
||||
<ipaddr>192.168.20.1</ipaddr>
|
||||
<subnet>24</subnet>
|
||||
<ipaddrv6>track6</ipaddrv6>
|
||||
<track6-interface/>
|
||||
<track6-prefix-id>0</track6-prefix-id>
|
||||
</lan>
|
||||
<wan>
|
||||
<if>pppoe0</if>
|
||||
<descr>WAN</descr>
|
||||
<enable>1</enable>
|
||||
<lock>1</lock>
|
||||
<spoofmac/>
|
||||
<blockpriv>1</blockpriv>
|
||||
<blockbogons>1</blockbogons>
|
||||
<ipaddr>pppoe</ipaddr>
|
||||
</wan>
|
||||
<lo0>
|
||||
<internal_dynamic>1</internal_dynamic>
|
||||
<descr>Loopback</descr>
|
||||
<enable>1</enable>
|
||||
<if>lo0</if>
|
||||
<ipaddr>127.0.0.1</ipaddr>
|
||||
<ipaddrv6>::1</ipaddrv6>
|
||||
<subnet>8</subnet>
|
||||
<subnetv6>128</subnetv6>
|
||||
<type>none</type>
|
||||
<virtual>1</virtual>
|
||||
</lo0>
|
||||
<opt1>
|
||||
<if>em5</if>
|
||||
<descr>backup_sync</descr>
|
||||
<enable>1</enable>
|
||||
<lock>1</lock>
|
||||
<spoofmac/>
|
||||
<ipaddr>10.10.5.1</ipaddr>
|
||||
<subnet>24</subnet>
|
||||
</opt1>
|
||||
<wireguard>
|
||||
<internal_dynamic>1</internal_dynamic>
|
||||
<descr>WireGuard (Group)</descr>
|
||||
<if>wireguard</if>
|
||||
<virtual>1</virtual>
|
||||
<enable>1</enable>
|
||||
<type>group</type>
|
||||
<networks/>
|
||||
</wireguard>
|
||||
<openvpn>
|
||||
<internal_dynamic>1</internal_dynamic>
|
||||
<enable>1</enable>
|
||||
<if>openvpn</if>
|
||||
<descr>OpenVPN</descr>
|
||||
<type>group</type>
|
||||
<virtual>1</virtual>
|
||||
<networks/>
|
||||
</openvpn>
|
||||
</interfaces>";
|
||||
}
|
6
harmony-rs/opnsense-config-xml/src/data/mod.rs
Normal file
6
harmony-rs/opnsense-config-xml/src/data/mod.rs
Normal file
@ -0,0 +1,6 @@
|
||||
mod opnsense;
|
||||
mod interfaces;
|
||||
mod dhcpd;
|
||||
pub use opnsense::*;
|
||||
pub use interfaces::*;
|
||||
pub use dhcpd::*;
|
2052
harmony-rs/opnsense-config-xml/src/data/opnsense.rs
Normal file
2052
harmony-rs/opnsense-config-xml/src/data/opnsense.rs
Normal file
File diff suppressed because it is too large
Load Diff
4
harmony-rs/opnsense-config-xml/src/lib.rs
Normal file
4
harmony-rs/opnsense-config-xml/src/lib.rs
Normal file
@ -0,0 +1,4 @@
|
||||
mod xml_utils;
|
||||
mod data;
|
||||
pub use data::*;
|
||||
pub use yaserde::MaybeString;
|
20
harmony-rs/opnsense-config-xml/src/xml_utils/mod.rs
Normal file
20
harmony-rs/opnsense-config-xml/src/xml_utils/mod.rs
Normal file
@ -0,0 +1,20 @@
|
||||
use yaserde::YaSerialize;
|
||||
|
||||
pub fn to_xml_str<T: YaSerialize>(model: &T) -> Result<String, String> {
|
||||
let yaserde_cfg = yaserde::ser::Config {
|
||||
perform_indent: true,
|
||||
write_document_declaration: false,
|
||||
pad_self_closing: false,
|
||||
..Default::default()
|
||||
};
|
||||
let serialized = yaserde::ser::to_string_with_config::<T>(model, &yaserde_cfg)?;
|
||||
|
||||
// Opnsense does not specify encoding in the document declaration
|
||||
//
|
||||
// yaserde / xml-rs does not allow disabling the encoding attribute in the
|
||||
// document declaration
|
||||
//
|
||||
// So here we just manually prefix the xml document with the exact document declaration
|
||||
// that opnsense uses
|
||||
Ok(format!("<?xml version=\"1.0\"?>\n{serialized}\n"))
|
||||
}
|
23
harmony-rs/opnsense-config/Cargo.toml
Normal file
23
harmony-rs/opnsense-config/Cargo.toml
Normal file
@ -0,0 +1,23 @@
|
||||
[package]
|
||||
name = "opnsense-config"
|
||||
edition = "2021"
|
||||
version.workspace = true
|
||||
readme.workspace = true
|
||||
license.workspace = true
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0.123", features = [ "derive" ] }
|
||||
log = { workspace = true }
|
||||
env_logger = { workspace = true }
|
||||
russh = { workspace = true }
|
||||
russh-keys = { workspace = true }
|
||||
thiserror = "1.0"
|
||||
async-trait = { workspace = true }
|
||||
tokio = { workspace = true }
|
||||
opnsense-config-xml = { path = "../opnsense-config-xml" }
|
||||
chrono = "0.4.38"
|
||||
russh-sftp = "2.0.6"
|
||||
serde_json = "1.0.133"
|
||||
|
||||
[dev-dependencies]
|
||||
pretty_assertions = "1.4.1"
|
38
harmony-rs/opnsense-config/adr/001-yaserde.md
Normal file
38
harmony-rs/opnsense-config/adr/001-yaserde.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Architecture Decision Record: Using yaserde for OPNsense Config Parsing
|
||||
|
||||
- Status : Proposed
|
||||
- Author : Jean-Gabriel Gill-Couture
|
||||
|
||||
## Context
|
||||
|
||||
We need to parse and manipulate the OPNsense config.xml file in our Rust crate. We considered several XML parsing libraries, including quick-xml, xml-dom, minidom and yaserde. Each library has its own strengths and trade-offs in terms of performance, ease of use, and robustness.
|
||||
|
||||
## Decision
|
||||
|
||||
We have decided to use yaserde for parsing and manipulating the OPNsense config.xml file.
|
||||
|
||||
## Rationale
|
||||
|
||||
1. Type Safety: yaserde allows us to define a complete Rust representation of the config.xml structure. This provides strong type safety and makes it easier to catch errors at compile-time rather than runtime.
|
||||
|
||||
2. Robustness: By mapping the entire config structure to Rust types, we ensure that our code interacts with the config in a well-defined manner. This reduces the risk of runtime errors due to unexpected XML structures.
|
||||
|
||||
3. Ease of Use: Working with native Rust types is more intuitive and less error-prone than manipulating XML directly. This can lead to more maintainable and readable code.
|
||||
|
||||
4. Memory Usage: While yaserde may use more memory than streaming parsers like quick-xml, the OPNsense config files are typically not large enough for this to be a significant concern. We prioritize robustness and ease of use over minimal memory usage in this context.
|
||||
|
||||
5. Serialization/Deserialization: yaserde provides both deserialization (XML to Rust structs) and serialization (Rust structs to XML) out of the box, which simplifies our implementation.
|
||||
|
||||
## Consequences
|
||||
|
||||
Positive:
|
||||
- Increased type safety and robustness in handling the config.xml structure.
|
||||
- More intuitive API for developers working with the config.
|
||||
- Easier to extend and maintain the code that interacts with different parts of the config.
|
||||
|
||||
Negative:
|
||||
- It will be harder to maintain when there are breaking changes in the config.xml format. Any structural changes in the XML will require corresponding updates to our Rust struct definitions.
|
||||
- Slightly higher memory usage compared to streaming parsers.
|
||||
- Initial development time may be longer due to the need to define the entire config structure upfront.
|
||||
|
||||
We accept the trade-off of potentially more difficult maintenance in the face of breaking config.xml changes, as we believe the benefits of increased robustness and type safety outweigh this drawback. When OPNsense releases updates that change the config.xml structure, we will need to update our Rust struct definitions accordingly.
|
147
harmony-rs/opnsense-config/src/config/config.rs
Normal file
147
harmony-rs/opnsense-config/src/config/config.rs
Normal file
@ -0,0 +1,147 @@
|
||||
use std::{net::Ipv4Addr, sync::Arc, time::Duration};
|
||||
|
||||
use crate::{config::{SshConfigManager, SshCredentials, SshOPNSenseShell}, error::Error, modules::dhcp::DhcpConfig};
|
||||
use log::trace;
|
||||
use opnsense_config_xml::OPNsense;
|
||||
use russh::client;
|
||||
|
||||
use super::{ConfigManager, OPNsenseShell};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Config {
|
||||
opnsense: OPNsense,
|
||||
repository: Arc<dyn ConfigManager>,
|
||||
shell: Arc<dyn OPNsenseShell>,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
pub async fn new(
|
||||
repository: Arc<dyn ConfigManager>,
|
||||
shell: Arc<dyn OPNsenseShell>,
|
||||
) -> Result<Self, Error> {
|
||||
let xml = repository.load_as_str().await?;
|
||||
trace!("xml {}", xml);
|
||||
|
||||
let opnsense = OPNsense::from(xml);
|
||||
|
||||
Ok(Self {
|
||||
opnsense,
|
||||
repository,
|
||||
shell,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn dhcp(&mut self) -> DhcpConfig {
|
||||
DhcpConfig::new(&mut self.opnsense, self.shell.clone())
|
||||
}
|
||||
|
||||
pub async fn apply(&self) -> Result<(), Error> {
|
||||
self.repository
|
||||
.apply_new_config(&self.opnsense.to_xml())
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn from_credentials(ipaddr: std::net::IpAddr, username: &str, password: &str) -> Self {
|
||||
let config = Arc::new(client::Config {
|
||||
inactivity_timeout: Some(Duration::from_secs(5)),
|
||||
..<_>::default()
|
||||
});
|
||||
|
||||
let credentials = SshCredentials::Password {
|
||||
username: String::from(username),
|
||||
password: String::from(password),
|
||||
};
|
||||
|
||||
let shell = Arc::new(SshOPNSenseShell::new(
|
||||
(ipaddr, 22),
|
||||
credentials,
|
||||
config,
|
||||
));
|
||||
let manager = Arc::new(SshConfigManager::new(shell.clone()));
|
||||
|
||||
Config::new(manager, shell).await.unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::config::{DummyOPNSenseShell, LocalFileConfigManager};
|
||||
use crate::modules::dhcp::DhcpConfig;
|
||||
use std::fs;
|
||||
use std::net::Ipv4Addr;
|
||||
|
||||
use super::*;
|
||||
use pretty_assertions::assert_eq;
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_load_config_from_local_file() {
|
||||
for path in vec![
|
||||
"src/tests/data/config-vm-test.xml",
|
||||
"src/tests/data/config-full-1.xml",
|
||||
"src/tests/data/config-structure.xml",
|
||||
] {
|
||||
let mut test_file_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
test_file_path.push(path);
|
||||
|
||||
let config_file_path = test_file_path.to_str().unwrap().to_string();
|
||||
println!("File path {config_file_path}");
|
||||
let repository = Arc::new(LocalFileConfigManager::new(config_file_path));
|
||||
let shell = Arc::new(DummyOPNSenseShell {});
|
||||
let config_file_str = repository.load_as_str().await.unwrap();
|
||||
let config = Config::new(repository, shell)
|
||||
.await
|
||||
.expect("Failed to load config");
|
||||
|
||||
println!("Config {:?}", config);
|
||||
|
||||
let serialized = config.opnsense.to_xml();
|
||||
|
||||
fs::write("/tmp/serialized.xml", &serialized).unwrap();
|
||||
|
||||
// Since the order of all fields is not always the same in opnsense config files
|
||||
// I think it is good enough to have exactly the same amount of the same lines
|
||||
let config_file_str_sorted = vec![config_file_str.lines().collect::<Vec<_>>()].sort();
|
||||
let serialized_sorted = vec![config_file_str.lines().collect::<Vec<_>>()].sort();
|
||||
assert_eq!(config_file_str_sorted, serialized_sorted);
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_add_dhcpd_static_entry() {
|
||||
let mut test_file_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
test_file_path.push("src/tests/data/config-structure.xml");
|
||||
|
||||
let config_file_path = test_file_path.to_str().unwrap().to_string();
|
||||
println!("File path {config_file_path}");
|
||||
let repository = Arc::new(LocalFileConfigManager::new(config_file_path));
|
||||
let shell = Arc::new(DummyOPNSenseShell {});
|
||||
let mut config = Config::new(repository, shell.clone())
|
||||
.await
|
||||
.expect("Failed to load config");
|
||||
|
||||
println!("Config {:?}", config);
|
||||
|
||||
let mut dhcp_config = DhcpConfig::new(&mut config.opnsense, shell);
|
||||
dhcp_config
|
||||
.add_static_mapping(
|
||||
"00:00:00:00:00:00",
|
||||
Ipv4Addr::new(192, 168, 20, 100),
|
||||
"hostname",
|
||||
)
|
||||
.expect("Should add static mapping");
|
||||
|
||||
let serialized = config.opnsense.to_xml();
|
||||
|
||||
fs::write("/tmp/serialized.xml", &serialized).unwrap();
|
||||
|
||||
let mut test_file_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
test_file_path.push("src/tests/data/config-structure-with-dhcp-staticmap-entry.xml");
|
||||
|
||||
let config_file_path = test_file_path.to_str().unwrap().to_string();
|
||||
println!("File path {config_file_path}");
|
||||
let repository = Box::new(LocalFileConfigManager::new(config_file_path));
|
||||
let expected_config_file_str = repository.load_as_str().await.unwrap();
|
||||
assert_eq!(expected_config_file_str, serialized);
|
||||
}
|
||||
}
|
26
harmony-rs/opnsense-config/src/config/manager/local_file.rs
Normal file
26
harmony-rs/opnsense-config/src/config/manager/local_file.rs
Normal file
@ -0,0 +1,26 @@
|
||||
use crate::config::manager::ConfigManager;
|
||||
use crate::error::Error;
|
||||
use async_trait::async_trait;
|
||||
use std::fs;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct LocalFileConfigManager {
|
||||
file_path: String,
|
||||
}
|
||||
|
||||
impl LocalFileConfigManager {
|
||||
pub fn new(file_path: String) -> Self {
|
||||
Self { file_path }
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl ConfigManager for LocalFileConfigManager {
|
||||
async fn load_as_str(&self) -> Result<String, Error> {
|
||||
Ok(fs::read_to_string(&self.file_path)?)
|
||||
}
|
||||
|
||||
async fn apply_new_config(&self, content: &str) -> Result<(), Error> {
|
||||
Ok(fs::write(&self.file_path, content)?)
|
||||
}
|
||||
}
|
13
harmony-rs/opnsense-config/src/config/manager/mod.rs
Normal file
13
harmony-rs/opnsense-config/src/config/manager/mod.rs
Normal file
@ -0,0 +1,13 @@
|
||||
mod ssh;
|
||||
mod local_file;
|
||||
use async_trait::async_trait;
|
||||
pub use ssh::*;
|
||||
pub use local_file::*;
|
||||
|
||||
use crate::Error;
|
||||
|
||||
#[async_trait]
|
||||
pub trait ConfigManager: std::fmt::Debug + Send + Sync {
|
||||
async fn load_as_str(&self) -> Result<String, Error>;
|
||||
async fn apply_new_config(&self, content: &str) -> Result<(), Error>;
|
||||
}
|
62
harmony-rs/opnsense-config/src/config/manager/ssh.rs
Normal file
62
harmony-rs/opnsense-config/src/config/manager/ssh.rs
Normal file
@ -0,0 +1,62 @@
|
||||
use crate::config::{manager::ConfigManager, OPNsenseShell};
|
||||
use crate::error::Error;
|
||||
use async_trait::async_trait;
|
||||
use log::info;
|
||||
use russh_keys::key::KeyPair;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum SshCredentials {
|
||||
SshKey { username: String, key: Arc<KeyPair> },
|
||||
Password { username: String, password: String },
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct SshConfigManager {
|
||||
opnsense_shell: Arc<dyn OPNsenseShell>,
|
||||
}
|
||||
|
||||
impl SshConfigManager {
|
||||
pub fn new(opnsense_shell: Arc<dyn OPNsenseShell>) -> Self {
|
||||
Self { opnsense_shell }
|
||||
}
|
||||
}
|
||||
|
||||
impl SshConfigManager {
|
||||
async fn backup_config_remote(&self) -> Result<String, Error> {
|
||||
let backup_filename = format!("config_{}.xml", chrono::Local::now().format("%Y%m%d%H%M%S"));
|
||||
|
||||
self.opnsense_shell.exec(&format!("cp /conf/config.xml /tmp/{}", backup_filename))
|
||||
.await
|
||||
}
|
||||
|
||||
async fn move_to_live_config(&self, new_config_path: &str) -> Result<String, Error> {
|
||||
info!("Overwriting OPNSense /conf/config.xml with {new_config_path}");
|
||||
self.opnsense_shell.exec(&format!("mv {new_config_path} /conf/config.xml"))
|
||||
.await
|
||||
}
|
||||
|
||||
async fn reload_all_services(&self) -> Result<String, Error> {
|
||||
info!("Reloading all opnsense services");
|
||||
self.opnsense_shell.exec(&format!("configctl service reload all"))
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl ConfigManager for SshConfigManager {
|
||||
async fn load_as_str(&self) -> Result<String, Error> {
|
||||
self.opnsense_shell.exec("cat /conf/config.xml").await
|
||||
}
|
||||
|
||||
async fn apply_new_config(&self, content: &str) -> Result<(), Error> {
|
||||
let temp_filename = self
|
||||
.opnsense_shell
|
||||
.write_content_to_temp_file(content)
|
||||
.await?;
|
||||
self.backup_config_remote().await?;
|
||||
self.move_to_live_config(&temp_filename).await?;
|
||||
self.reload_all_services().await?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
6
harmony-rs/opnsense-config/src/config/mod.rs
Normal file
6
harmony-rs/opnsense-config/src/config/mod.rs
Normal file
@ -0,0 +1,6 @@
|
||||
mod config;
|
||||
mod manager;
|
||||
mod shell;
|
||||
pub use manager::*;
|
||||
pub use config::*;
|
||||
pub use shell::*;
|
27
harmony-rs/opnsense-config/src/config/shell/mod.rs
Normal file
27
harmony-rs/opnsense-config/src/config/shell/mod.rs
Normal file
@ -0,0 +1,27 @@
|
||||
mod ssh;
|
||||
pub use ssh::*;
|
||||
|
||||
use async_trait::async_trait;
|
||||
|
||||
use crate::Error;
|
||||
|
||||
#[async_trait]
|
||||
pub trait OPNsenseShell: std::fmt::Debug + Send + Sync {
|
||||
async fn exec(&self, command: &str) -> Result<String, Error>;
|
||||
async fn write_content_to_temp_file(&self, content: &str) -> Result<String, Error>;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[derive(Debug)]
|
||||
pub struct DummyOPNSenseShell;
|
||||
|
||||
#[cfg(test)]
|
||||
#[async_trait]
|
||||
impl OPNsenseShell for DummyOPNSenseShell {
|
||||
async fn exec(&self, _command: &str) -> Result<String, Error> {
|
||||
unimplemented!("This is a dummy implementation");
|
||||
}
|
||||
async fn write_content_to_temp_file(&self, _content: &str) -> Result<String, Error> {
|
||||
unimplemented!("This is a dummy implementation");
|
||||
}
|
||||
}
|
137
harmony-rs/opnsense-config/src/config/shell/ssh.rs
Normal file
137
harmony-rs/opnsense-config/src/config/shell/ssh.rs
Normal file
@ -0,0 +1,137 @@
|
||||
use std::{
|
||||
net::IpAddr,
|
||||
sync::Arc,
|
||||
time::{SystemTime, UNIX_EPOCH},
|
||||
};
|
||||
|
||||
use async_trait::async_trait;
|
||||
use log::debug;
|
||||
use russh::{
|
||||
client::{Config, Handler, Msg},
|
||||
Channel,
|
||||
};
|
||||
use russh_keys::key;
|
||||
use russh_sftp::client::SftpSession;
|
||||
use tokio::io::AsyncWriteExt;
|
||||
|
||||
use crate::{config::SshCredentials, Error};
|
||||
|
||||
use super::OPNsenseShell;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct SshOPNSenseShell {
|
||||
host: (IpAddr, u16),
|
||||
credentials: SshCredentials,
|
||||
ssh_config: Arc<Config>,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl OPNsenseShell for SshOPNSenseShell {
|
||||
async fn exec(&self, command: &str) -> Result<String, Error> {
|
||||
self.run_command(command).await
|
||||
}
|
||||
|
||||
async fn write_content_to_temp_file(&self, content: &str) -> Result<String, Error> {
|
||||
let temp_filename = format!(
|
||||
"/tmp/opnsense-config-tmp-config_{}",
|
||||
SystemTime::now()
|
||||
.duration_since(UNIX_EPOCH)
|
||||
.unwrap()
|
||||
.as_millis()
|
||||
);
|
||||
let channel = self.get_ssh_channel().await?;
|
||||
channel
|
||||
.request_subsystem(true, "sftp")
|
||||
.await
|
||||
.expect("Should request sftp subsystem");
|
||||
let sftp = SftpSession::new(channel.into_stream())
|
||||
.await
|
||||
.expect("Should acquire sftp subsystem");
|
||||
|
||||
let mut file = sftp.create(&temp_filename).await.unwrap();
|
||||
file.write_all(content.as_bytes()).await?;
|
||||
|
||||
Ok(temp_filename)
|
||||
}
|
||||
}
|
||||
|
||||
impl SshOPNSenseShell {
|
||||
pub async fn get_ssh_channel(&self) -> Result<Channel<Msg>, Error> {
|
||||
let mut ssh = russh::client::connect(self.ssh_config.clone(), self.host, Client {}).await?;
|
||||
|
||||
match &self.credentials {
|
||||
SshCredentials::SshKey { username, key } => {
|
||||
ssh.authenticate_publickey(username, key.clone()).await?;
|
||||
}
|
||||
SshCredentials::Password { username, password } => {
|
||||
ssh.authenticate_password(username, password).await?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(ssh.channel_open_session().await?)
|
||||
}
|
||||
|
||||
async fn run_command(&self, command: &str) -> Result<String, Error> {
|
||||
debug!("Running ssh command {command}");
|
||||
let mut channel = self.get_ssh_channel().await?;
|
||||
channel.exec(true, command).await?;
|
||||
wait_for_completion(&mut channel).await
|
||||
}
|
||||
|
||||
pub fn new(host: (IpAddr, u16), credentials: SshCredentials, ssh_config: Arc<Config>) -> Self {
|
||||
Self {
|
||||
host,
|
||||
credentials,
|
||||
ssh_config,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct Client {}
|
||||
|
||||
#[async_trait]
|
||||
impl Handler for Client {
|
||||
type Error = Error;
|
||||
|
||||
async fn check_server_key(
|
||||
&mut self,
|
||||
_server_public_key: &key::PublicKey,
|
||||
) -> Result<bool, Self::Error> {
|
||||
Ok(true)
|
||||
}
|
||||
}
|
||||
|
||||
async fn wait_for_completion(channel: &mut Channel<Msg>) -> Result<String, Error> {
|
||||
let mut output = Vec::new();
|
||||
|
||||
loop {
|
||||
let Some(msg) = channel.wait().await else {
|
||||
break;
|
||||
};
|
||||
|
||||
match msg {
|
||||
russh::ChannelMsg::ExtendedData { ref data, .. }
|
||||
| russh::ChannelMsg::Data { ref data } => {
|
||||
output.append(&mut data.to_vec());
|
||||
}
|
||||
russh::ChannelMsg::ExitStatus { exit_status } => {
|
||||
if exit_status != 0 {
|
||||
return Err(Error::Command(format!(
|
||||
"Command failed with exit status {exit_status}, output {}",
|
||||
String::from_utf8(output).unwrap_or_default()
|
||||
)));
|
||||
}
|
||||
}
|
||||
russh::ChannelMsg::Success { .. }
|
||||
| russh::ChannelMsg::WindowAdjusted { .. }
|
||||
| russh::ChannelMsg::Eof { .. } => {}
|
||||
_ => {
|
||||
return Err(Error::Unexpected(format!(
|
||||
"Russh got unexpected msg {msg:?}"
|
||||
)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(String::from_utf8(output).unwrap_or_default())
|
||||
}
|
17
harmony-rs/opnsense-config/src/error.rs
Normal file
17
harmony-rs/opnsense-config/src/error.rs
Normal file
@ -0,0 +1,17 @@
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum Error {
|
||||
#[error("XML error: {0}")]
|
||||
Xml(String),
|
||||
#[error("SSH error: {0}")]
|
||||
Ssh(#[from] russh::Error),
|
||||
#[error("Command failed : {0}")]
|
||||
Command(String),
|
||||
#[error("I/O error: {0}")]
|
||||
Io(#[from] std::io::Error),
|
||||
#[error("Config error: {0}")]
|
||||
Config(String),
|
||||
#[error("Unexpected error: {0}")]
|
||||
Unexpected(String),
|
||||
}
|
55
harmony-rs/opnsense-config/src/lib.rs
Normal file
55
harmony-rs/opnsense-config/src/lib.rs
Normal file
@ -0,0 +1,55 @@
|
||||
pub mod config;
|
||||
pub mod error;
|
||||
pub mod modules;
|
||||
|
||||
pub use config::Config;
|
||||
pub use error::Error;
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use opnsense_config_xml::StaticMap;
|
||||
use std::net::Ipv4Addr;
|
||||
|
||||
use crate::Config;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_public_sdk() {
|
||||
let mac = "11:22:33:44:55:66";
|
||||
let ip = Ipv4Addr::new(10, 100, 8, 200);
|
||||
let hostname = "test_hostname";
|
||||
|
||||
remove_static_mapping(mac).await;
|
||||
|
||||
// Make sure static mapping does not exist anymore
|
||||
let static_mapping_removed = get_static_mappings().await;
|
||||
assert!(!static_mapping_removed.iter().any(|e| e.mac == mac));
|
||||
|
||||
add_static_mapping(mac, ip, hostname).await;
|
||||
|
||||
// Make sure static mapping has been added successfully
|
||||
let static_mapping_added = get_static_mappings().await;
|
||||
assert_eq!(static_mapping_added.len(), static_mapping_removed.len() + 1);
|
||||
assert!(static_mapping_added.iter().any(|e| e.mac == mac));
|
||||
}
|
||||
|
||||
async fn initialize_config() -> Config {
|
||||
Config::from_credentials(Ipv4Addr::new(192, 168, 5, 229), "root", "opnsense").await
|
||||
}
|
||||
|
||||
async fn get_static_mappings() -> Vec<StaticMap> {
|
||||
let mut config = initialize_config().await;
|
||||
config.dhcp().get_static_mappings().await.unwrap()
|
||||
}
|
||||
|
||||
async fn add_static_mapping(mac: &str, ip: Ipv4Addr, hostname: &str) {
|
||||
let mut config = initialize_config().await;
|
||||
config.dhcp().add_static_mapping(mac, ip, hostname).unwrap();
|
||||
config.apply().await.unwrap();
|
||||
}
|
||||
|
||||
async fn remove_static_mapping(mac: &str) {
|
||||
let mut config = initialize_config().await;
|
||||
config.dhcp().remove_static_mapping(mac);
|
||||
config.apply().await.unwrap();
|
||||
}
|
||||
}
|
211
harmony-rs/opnsense-config/src/modules/dhcp.rs
Normal file
211
harmony-rs/opnsense-config/src/modules/dhcp.rs
Normal file
@ -0,0 +1,211 @@
|
||||
use opnsense_config_xml::MaybeString;
|
||||
use opnsense_config_xml::Range;
|
||||
use opnsense_config_xml::StaticMap;
|
||||
use std::cmp::Ordering;
|
||||
use std::net::Ipv4Addr;
|
||||
use std::sync::Arc;
|
||||
|
||||
use opnsense_config_xml::OPNsense;
|
||||
|
||||
use crate::config::OPNsenseShell;
|
||||
use crate::Error;
|
||||
|
||||
pub struct DhcpConfig<'a> {
|
||||
opnsense: &'a mut OPNsense,
|
||||
opnsense_shell: Arc<dyn OPNsenseShell>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum DhcpError {
|
||||
InvalidMacAddress(String),
|
||||
InvalidIpAddress(String),
|
||||
IpAddressAlreadyMapped(String),
|
||||
MacAddressAlreadyMapped(String),
|
||||
IpAddressOutOfRange(String),
|
||||
}
|
||||
|
||||
impl std::fmt::Display for DhcpError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
DhcpError::InvalidMacAddress(mac) => write!(f, "Invalid MAC address format: {}", mac),
|
||||
DhcpError::InvalidIpAddress(ip) => write!(f, "Invalid IP address format: {}", ip),
|
||||
DhcpError::IpAddressAlreadyMapped(ip) => {
|
||||
write!(f, "IP address {} is already mapped", ip)
|
||||
}
|
||||
DhcpError::MacAddressAlreadyMapped(mac) => {
|
||||
write!(f, "MAC address {} is already mapped", mac)
|
||||
}
|
||||
DhcpError::IpAddressOutOfRange(ip) => {
|
||||
write!(f, "IP address {} is out of interface range", ip)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for DhcpError {}
|
||||
|
||||
impl<'a> DhcpConfig<'a> {
|
||||
pub fn new(opnsense: &'a mut OPNsense, opnsense_shell: Arc<dyn OPNsenseShell>) -> Self {
|
||||
Self {
|
||||
opnsense,
|
||||
opnsense_shell,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn remove_static_mapping(&mut self, mac: &str) {
|
||||
let lan_dhcpd = self.get_lan_dhcpd();
|
||||
lan_dhcpd.staticmaps.retain(|static_entry| static_entry.mac != mac);
|
||||
}
|
||||
|
||||
fn get_lan_dhcpd(&mut self) -> &mut opnsense_config_xml::DhcpInterface {
|
||||
&mut self
|
||||
.opnsense
|
||||
.dhcpd
|
||||
.elements
|
||||
.iter_mut()
|
||||
.find(|(name, _config)| return name == "lan")
|
||||
.expect("Interface lan should have dhcpd activated")
|
||||
.1
|
||||
}
|
||||
|
||||
pub fn add_static_mapping(
|
||||
&mut self,
|
||||
mac: &str,
|
||||
ipaddr: Ipv4Addr,
|
||||
hostname: &str,
|
||||
) -> Result<(), DhcpError> {
|
||||
let mac = mac.to_string();
|
||||
let hostname = hostname.to_string();
|
||||
let lan_dhcpd = self.get_lan_dhcpd();
|
||||
let range = &lan_dhcpd.range;
|
||||
let existing_mappings: &mut Vec<StaticMap> = &mut lan_dhcpd.staticmaps;
|
||||
|
||||
if !Self::is_valid_mac(&mac) {
|
||||
return Err(DhcpError::InvalidMacAddress(mac));
|
||||
}
|
||||
|
||||
if !Self::is_ip_in_range(&ipaddr, range) {
|
||||
return Err(DhcpError::IpAddressOutOfRange(ipaddr.to_string()));
|
||||
}
|
||||
|
||||
if existing_mappings.iter().any(|m| {
|
||||
m.ipaddr
|
||||
.parse::<Ipv4Addr>()
|
||||
.expect("Mapping contains invalid ipv4")
|
||||
== ipaddr
|
||||
}) {
|
||||
return Err(DhcpError::IpAddressAlreadyMapped(ipaddr.to_string()));
|
||||
}
|
||||
|
||||
if existing_mappings.iter().any(|m| m.mac == mac) {
|
||||
return Err(DhcpError::MacAddressAlreadyMapped(mac));
|
||||
}
|
||||
|
||||
let static_map = StaticMap {
|
||||
mac,
|
||||
ipaddr: ipaddr.to_string(),
|
||||
hostname,
|
||||
descr: Default::default(),
|
||||
winsserver: Default::default(),
|
||||
dnsserver: Default::default(),
|
||||
ntpserver: Default::default(),
|
||||
};
|
||||
|
||||
existing_mappings.push(static_map);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn is_valid_mac(mac: &str) -> bool {
|
||||
let parts: Vec<&str> = mac.split(':').collect();
|
||||
if parts.len() != 6 {
|
||||
return false;
|
||||
}
|
||||
|
||||
parts
|
||||
.iter()
|
||||
.all(|part| part.len() == 2 && part.chars().all(|c| c.is_ascii_hexdigit()))
|
||||
}
|
||||
|
||||
fn is_ip_in_range(ip: &Ipv4Addr, range: &Range) -> bool {
|
||||
let range_start = range
|
||||
.from
|
||||
.parse::<Ipv4Addr>()
|
||||
.expect("Invalid DHCP range start");
|
||||
let range_end = range.to.parse::<Ipv4Addr>().expect("Invalid DHCP range to");
|
||||
|
||||
let start_compare = range_start.cmp(ip);
|
||||
let end_compare = range_end.cmp(ip);
|
||||
|
||||
if (Ordering::Less == start_compare || Ordering::Equal == start_compare)
|
||||
&& (Ordering::Greater == end_compare || Ordering::Equal == end_compare)
|
||||
{
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn get_static_mappings(&self) -> Result<Vec<StaticMap>, Error> {
|
||||
let list_static_output = self
|
||||
.opnsense_shell
|
||||
.exec("configctl dhcpd list static")
|
||||
.await?;
|
||||
|
||||
let value: serde_json::Value = serde_json::from_str(&list_static_output).expect(&format!(
|
||||
"Got invalid json from configctl {list_static_output}"
|
||||
));
|
||||
let static_maps = value["dhcpd"]
|
||||
.as_array()
|
||||
.ok_or(Error::Command(format!(
|
||||
"Invalid DHCP data from configctl command, got {list_static_output}"
|
||||
)))?
|
||||
.iter()
|
||||
.map(|entry| StaticMap {
|
||||
mac: entry["mac"].as_str().unwrap_or_default().to_string(),
|
||||
ipaddr: entry["ipaddr"].as_str().unwrap_or_default().to_string(),
|
||||
hostname: entry["hostname"].as_str().unwrap_or_default().to_string(),
|
||||
descr: entry["descr"].as_str().map(MaybeString::from),
|
||||
winsserver: MaybeString::default(),
|
||||
dnsserver: MaybeString::default(),
|
||||
ntpserver: MaybeString::default(),
|
||||
})
|
||||
.collect();
|
||||
|
||||
Ok(static_maps)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
use pretty_assertions::assert_eq;
|
||||
use std::net::Ipv4Addr;
|
||||
|
||||
#[test]
|
||||
fn test_ip_in_range() {
|
||||
let range = Range {
|
||||
from: "192.168.1.100".to_string(),
|
||||
to: "192.168.1.200".to_string(),
|
||||
};
|
||||
|
||||
// Test IP within range
|
||||
let ip = "192.168.1.150".parse::<Ipv4Addr>().unwrap();
|
||||
assert_eq!(DhcpConfig::is_ip_in_range(&ip, &range), true);
|
||||
|
||||
// Test IP at start of range
|
||||
let ip = "192.168.1.100".parse::<Ipv4Addr>().unwrap();
|
||||
assert_eq!(DhcpConfig::is_ip_in_range(&ip, &range), true);
|
||||
|
||||
// Test IP at end of range
|
||||
let ip = "192.168.1.200".parse::<Ipv4Addr>().unwrap();
|
||||
assert_eq!(DhcpConfig::is_ip_in_range(&ip, &range), true);
|
||||
|
||||
// Test IP before range
|
||||
let ip = "192.168.1.99".parse::<Ipv4Addr>().unwrap();
|
||||
assert_eq!(DhcpConfig::is_ip_in_range(&ip, &range), false);
|
||||
|
||||
// Test IP after range
|
||||
let ip = "192.168.1.201".parse::<Ipv4Addr>().unwrap();
|
||||
assert_eq!(DhcpConfig::is_ip_in_range(&ip, &range), false);
|
||||
}
|
||||
}
|
1
harmony-rs/opnsense-config/src/modules/mod.rs
Normal file
1
harmony-rs/opnsense-config/src/modules/mod.rs
Normal file
@ -0,0 +1 @@
|
||||
pub mod dhcp;
|
2769
harmony-rs/opnsense-config/src/tests/data/config-full-1.xml
Normal file
2769
harmony-rs/opnsense-config/src/tests/data/config-full-1.xml
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1423
harmony-rs/opnsense-config/src/tests/data/config-structure.xml
Normal file
1423
harmony-rs/opnsense-config/src/tests/data/config-structure.xml
Normal file
File diff suppressed because it is too large
Load Diff
994
harmony-rs/opnsense-config/src/tests/data/config-vm-test.xml
Normal file
994
harmony-rs/opnsense-config/src/tests/data/config-vm-test.xml
Normal file
@ -0,0 +1,994 @@
|
||||
<?xml version="1.0"?>
|
||||
<opnsense>
|
||||
<theme>opnsense</theme>
|
||||
<sysctl>
|
||||
<item>
|
||||
<descr>Increase UFS read-ahead speeds to match the state of hard drives and NCQ.</descr>
|
||||
<tunable>vfs.read_max</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set the ephemeral port range to be lower.</descr>
|
||||
<tunable>net.inet.ip.portrange.first</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Drop packets to closed TCP ports without returning a RST</descr>
|
||||
<tunable>net.inet.tcp.blackhole</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Do not send ICMP port unreachable messages for closed UDP ports</descr>
|
||||
<tunable>net.inet.udp.blackhole</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Randomize the ID field in IP packets</descr>
|
||||
<tunable>net.inet.ip.random_id</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>
|
||||
Source routing is another way for an attacker to try to reach non-routable addresses behind your box.
|
||||
It can also be used to probe for information about your internal networks. These functions come enabled
|
||||
as part of the standard FreeBSD core system.
|
||||
</descr>
|
||||
<tunable>net.inet.ip.sourceroute</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>
|
||||
Source routing is another way for an attacker to try to reach non-routable addresses behind your box.
|
||||
It can also be used to probe for information about your internal networks. These functions come enabled
|
||||
as part of the standard FreeBSD core system.
|
||||
</descr>
|
||||
<tunable>net.inet.ip.accept_sourceroute</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>
|
||||
This option turns off the logging of redirect packets because there is no limit and this could fill
|
||||
up your logs consuming your whole hard drive.
|
||||
</descr>
|
||||
<tunable>net.inet.icmp.log_redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Drop SYN-FIN packets (breaks RFC1379, but nobody uses it anyway)</descr>
|
||||
<tunable>net.inet.tcp.drop_synfin</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable sending IPv6 redirects</descr>
|
||||
<tunable>net.inet6.ip6.redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable privacy settings for IPv6 (RFC 4941)</descr>
|
||||
<tunable>net.inet6.ip6.use_tempaddr</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Prefer privacy addresses and use them over the normal addresses</descr>
|
||||
<tunable>net.inet6.ip6.prefer_tempaddr</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Generate SYN cookies for outbound SYN-ACK packets</descr>
|
||||
<tunable>net.inet.tcp.syncookies</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum incoming/outgoing TCP datagram size (receive)</descr>
|
||||
<tunable>net.inet.tcp.recvspace</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum incoming/outgoing TCP datagram size (send)</descr>
|
||||
<tunable>net.inet.tcp.sendspace</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Do not delay ACK to try and piggyback it onto a data packet</descr>
|
||||
<tunable>net.inet.tcp.delayed_ack</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum outgoing UDP datagram size</descr>
|
||||
<tunable>net.inet.udp.maxdgram</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Handling of non-IP packets which are not passed to pfil (see if_bridge(4))</descr>
|
||||
<tunable>net.link.bridge.pfil_onlyip</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 1 to additionally filter on the physical interface for locally destined packets</descr>
|
||||
<tunable>net.link.bridge.pfil_local_phys</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 0 to disable filtering on the incoming and outgoing member interfaces.</descr>
|
||||
<tunable>net.link.bridge.pfil_member</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 1 to enable filtering on the bridge interface</descr>
|
||||
<tunable>net.link.bridge.pfil_bridge</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Allow unprivileged access to tap(4) device nodes</descr>
|
||||
<tunable>net.link.tap.user_open</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Randomize PID's (see src/sys/kern/kern_fork.c: sysctl_kern_randompid())</descr>
|
||||
<tunable>kern.randompid</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Disable CTRL+ALT+Delete reboot from keyboard.</descr>
|
||||
<tunable>hw.syscons.kbd_reboot</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable TCP extended debugging</descr>
|
||||
<tunable>net.inet.tcp.log_debug</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set ICMP Limits</descr>
|
||||
<tunable>net.inet.icmp.icmplim</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>TCP Offload Engine</descr>
|
||||
<tunable>net.inet.tcp.tso</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>UDP Checksums</descr>
|
||||
<tunable>net.inet.udp.checksum</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum socket buffer size</descr>
|
||||
<tunable>kern.ipc.maxsockbuf</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Page Table Isolation (Meltdown mitigation, requires reboot.)</descr>
|
||||
<tunable>vm.pmap.pti</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Disable Indirect Branch Restricted Speculation (Spectre V2 mitigation)</descr>
|
||||
<tunable>hw.ibrs_disable</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Hide processes running as other groups</descr>
|
||||
<tunable>security.bsd.see_other_gids</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Hide processes running as other users</descr>
|
||||
<tunable>security.bsd.see_other_uids</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable/disable sending of ICMP redirects in response to IP packets for which a better,
|
||||
and for the sender directly reachable, route and next hop is known.
|
||||
</descr>
|
||||
<tunable>net.inet.ip.redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum outgoing UDP datagram size</descr>
|
||||
<tunable>net.local.dgram.maxdgram</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
</sysctl>
|
||||
<system>
|
||||
<optimization>normal</optimization>
|
||||
<hostname>OPNsense</hostname>
|
||||
<domain>localdomain</domain>
|
||||
<dnsallowoverride>1</dnsallowoverride>
|
||||
<group>
|
||||
<name>admins</name>
|
||||
<description>System Administrators</description>
|
||||
<scope>system</scope>
|
||||
<gid>1999</gid>
|
||||
<member>0</member>
|
||||
<priv>page-all</priv>
|
||||
</group>
|
||||
<user>
|
||||
<name>root</name>
|
||||
<descr>System Administrator</descr>
|
||||
<scope>system</scope>
|
||||
<groupname>admins</groupname>
|
||||
<password>$2y$10$YRVoF4SgskIsrXOvOQjGieB9XqHPRra9R7d80B3BZdbY/j21TwBfS</password>
|
||||
<uid>0</uid>
|
||||
</user>
|
||||
<nextuid>2000</nextuid>
|
||||
<nextgid>2000</nextgid>
|
||||
<timezone>Etc/UTC</timezone>
|
||||
<timeservers>0.opnsense.pool.ntp.org 1.opnsense.pool.ntp.org 2.opnsense.pool.ntp.org 3.opnsense.pool.ntp.org</timeservers>
|
||||
<webgui>
|
||||
<protocol>https</protocol>
|
||||
<ssl-certref>6734d6c82dc59</ssl-certref>
|
||||
<port/>
|
||||
<ssl-ciphers/>
|
||||
<interfaces/>
|
||||
<compression/>
|
||||
</webgui>
|
||||
<disablenatreflection>yes</disablenatreflection>
|
||||
<usevirtualterminal>1</usevirtualterminal>
|
||||
<disableconsolemenu>1</disableconsolemenu>
|
||||
<disablevlanhwfilter>1</disablevlanhwfilter>
|
||||
<disablechecksumoffloading>1</disablechecksumoffloading>
|
||||
<disablesegmentationoffloading>1</disablesegmentationoffloading>
|
||||
<disablelargereceiveoffloading>1</disablelargereceiveoffloading>
|
||||
<ipv6allow>1</ipv6allow>
|
||||
<powerd_ac_mode>hadp</powerd_ac_mode>
|
||||
<powerd_battery_mode>hadp</powerd_battery_mode>
|
||||
<powerd_normal_mode>hadp</powerd_normal_mode>
|
||||
<bogons>
|
||||
<interval>monthly</interval>
|
||||
</bogons>
|
||||
<pf_share_forward>1</pf_share_forward>
|
||||
<lb_use_sticky>1</lb_use_sticky>
|
||||
<ssh>
|
||||
<group>admins</group>
|
||||
<noauto>1</noauto>
|
||||
<interfaces/>
|
||||
<kex/>
|
||||
<ciphers/>
|
||||
<macs/>
|
||||
<keys/>
|
||||
<keysig/>
|
||||
<enabled>enabled</enabled>
|
||||
<passwordauth>1</passwordauth>
|
||||
<permitrootlogin>1</permitrootlogin>
|
||||
</ssh>
|
||||
<rrdbackup>-1</rrdbackup>
|
||||
<netflowbackup>-1</netflowbackup>
|
||||
<firmware version="1.0.1">
|
||||
<mirror/>
|
||||
<flavour/>
|
||||
<plugins/>
|
||||
<type/>
|
||||
<subscription/>
|
||||
<reboot/>
|
||||
</firmware>
|
||||
<dnsserver>192.168.5.1</dnsserver>
|
||||
<language>en_US</language>
|
||||
<serialspeed>115200</serialspeed>
|
||||
<primaryconsole>video</primaryconsole>
|
||||
<secondaryconsole>serial</secondaryconsole>
|
||||
</system>
|
||||
<interfaces>
|
||||
<lan>
|
||||
<enable>1</enable>
|
||||
<if>le1</if>
|
||||
<ipaddr>10.100.8.1</ipaddr>
|
||||
<subnet>24</subnet>
|
||||
<ipaddrv6>track6</ipaddrv6>
|
||||
<subnetv6>64</subnetv6>
|
||||
<media/>
|
||||
<mediaopt/>
|
||||
<track6-interface>wan</track6-interface>
|
||||
<track6-prefix-id>0</track6-prefix-id>
|
||||
</lan>
|
||||
<lo0>
|
||||
<internal_dynamic>1</internal_dynamic>
|
||||
<descr>Loopback</descr>
|
||||
<enable>1</enable>
|
||||
<if>lo0</if>
|
||||
<ipaddr>127.0.0.1</ipaddr>
|
||||
<ipaddrv6>::1</ipaddrv6>
|
||||
<subnet>8</subnet>
|
||||
<subnetv6>128</subnetv6>
|
||||
<type>none</type>
|
||||
<virtual>1</virtual>
|
||||
</lo0>
|
||||
<wan>
|
||||
<if>le0</if>
|
||||
<descr/>
|
||||
<enable>1</enable>
|
||||
<spoofmac/>
|
||||
<ipaddr>dhcp</ipaddr>
|
||||
<dhcphostname/>
|
||||
<alias-address/>
|
||||
<alias-subnet>32</alias-subnet>
|
||||
<dhcprejectfrom/>
|
||||
<adv_dhcp_pt_timeout/>
|
||||
<adv_dhcp_pt_retry/>
|
||||
<adv_dhcp_pt_select_timeout/>
|
||||
<adv_dhcp_pt_reboot/>
|
||||
<adv_dhcp_pt_backoff_cutoff/>
|
||||
<adv_dhcp_pt_initial_interval/>
|
||||
<adv_dhcp_pt_values>SavedCfg</adv_dhcp_pt_values>
|
||||
<adv_dhcp_send_options/>
|
||||
<adv_dhcp_request_options/>
|
||||
<adv_dhcp_required_options/>
|
||||
<adv_dhcp_option_modifiers/>
|
||||
<adv_dhcp_config_advanced/>
|
||||
<adv_dhcp_config_file_override/>
|
||||
<adv_dhcp_config_file_override_path/>
|
||||
</wan>
|
||||
</interfaces>
|
||||
<dhcpd>
|
||||
<lan>
|
||||
<enable/>
|
||||
<range>
|
||||
<from>10.100.8.10</from>
|
||||
<to>10.100.8.245</to>
|
||||
</range>
|
||||
<staticmap>
|
||||
<mac>d8:5e:d3:e7:2c:8c</mac>
|
||||
<ipaddr>10.100.8.15</ipaddr>
|
||||
<hostname>rtx4090</hostname>
|
||||
<winsserver/>
|
||||
<dnsserver/>
|
||||
<ntpserver/>
|
||||
</staticmap>
|
||||
</lan>
|
||||
</dhcpd>
|
||||
<snmpd>
|
||||
<syslocation/>
|
||||
<syscontact/>
|
||||
<rocommunity>public</rocommunity>
|
||||
</snmpd>
|
||||
<nat>
|
||||
<outbound>
|
||||
<mode>automatic</mode>
|
||||
</outbound>
|
||||
</nat>
|
||||
<filter>
|
||||
<rule uuid="f79eded0-3c11-4f57-9aaa-55d4888589fa">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>wanip</network>
|
||||
<port>80</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518072.7612</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518072.7612</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="4a5e7b65-0d7f-4452-8a29-2ec61a47ec19">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>wanip</network>
|
||||
<port>443</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518084.0639</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518084.0639</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="0465308d-8605-466c-bcb4-95eeb989251a">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp/udp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<any>1</any>
|
||||
<port>22</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518114.2801</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518114.2801</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="2df05591-13e7-4d91-a1b8-d25e338ada5f">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<descr>Allow ping</descr>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>icmp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>(self)</network>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518356.7559</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518311.7033</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="f2ee612c-c290-4445-8045-df82a86db0e5">
|
||||
<type>pass</type>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<descr>Default allow LAN to any rule</descr>
|
||||
<interface>lan</interface>
|
||||
<source>
|
||||
<network>lan</network>
|
||||
</source>
|
||||
<destination>
|
||||
<any/>
|
||||
</destination>
|
||||
</rule>
|
||||
<rule uuid="b21f808a-6a4a-4cd6-9a83-1660cc8ea58b">
|
||||
<type>pass</type>
|
||||
<ipprotocol>inet6</ipprotocol>
|
||||
<descr>Default allow LAN IPv6 to any rule</descr>
|
||||
<interface>lan</interface>
|
||||
<source>
|
||||
<network>lan</network>
|
||||
</source>
|
||||
<destination>
|
||||
<any/>
|
||||
</destination>
|
||||
</rule>
|
||||
</filter>
|
||||
<rrd>
|
||||
<enable/>
|
||||
</rrd>
|
||||
<ntpd>
|
||||
<prefer>0.opnsense.pool.ntp.org</prefer>
|
||||
</ntpd>
|
||||
<widgets>
|
||||
<sequence>system_information-container:00000000-col3:show,services_status-container:00000001-col4:show,gateways-container:00000002-col4:show,interface_list-container:00000003-col4:show</sequence>
|
||||
<column_count>2</column_count>
|
||||
</widgets>
|
||||
<revision>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731534516.7156</time>
|
||||
<description>/interfaces.php made changes</description>
|
||||
</revision>
|
||||
<OPNsense>
|
||||
<DHCRelay version="1.0.1"/>
|
||||
<wireguard>
|
||||
<client version="1.0.0">
|
||||
<clients/>
|
||||
</client>
|
||||
<general version="0.0.1">
|
||||
<enabled>0</enabled>
|
||||
</general>
|
||||
<server version="1.0.0">
|
||||
<servers/>
|
||||
</server>
|
||||
</wireguard>
|
||||
<IPsec version="1.0.1">
|
||||
<general>
|
||||
<enabled/>
|
||||
</general>
|
||||
<keyPairs/>
|
||||
<preSharedKeys/>
|
||||
</IPsec>
|
||||
<Swanctl version="1.0.0">
|
||||
<Connections/>
|
||||
<locals/>
|
||||
<remotes/>
|
||||
<children/>
|
||||
<Pools/>
|
||||
<VTIs/>
|
||||
<SPDs/>
|
||||
</Swanctl>
|
||||
<OpenVPNExport version="0.0.1">
|
||||
<servers/>
|
||||
</OpenVPNExport>
|
||||
<OpenVPN version="1.0.0">
|
||||
<Overwrites/>
|
||||
<Instances/>
|
||||
<StaticKeys/>
|
||||
</OpenVPN>
|
||||
<captiveportal version="1.0.2">
|
||||
<zones/>
|
||||
<templates/>
|
||||
</captiveportal>
|
||||
<cron version="1.0.4">
|
||||
<jobs/>
|
||||
</cron>
|
||||
<Firewall>
|
||||
<Lvtemplate version="0.0.1">
|
||||
<templates/>
|
||||
</Lvtemplate>
|
||||
<Alias version="1.0.1">
|
||||
<geoip>
|
||||
<url/>
|
||||
</geoip>
|
||||
<aliases/>
|
||||
</Alias>
|
||||
<Category version="1.0.0">
|
||||
<categories/>
|
||||
</Category>
|
||||
<Filter version="1.0.4">
|
||||
<rules/>
|
||||
<snatrules/>
|
||||
<npt/>
|
||||
<onetoone/>
|
||||
</Filter>
|
||||
</Firewall>
|
||||
<Netflow version="1.0.1">
|
||||
<capture>
|
||||
<interfaces/>
|
||||
<egress_only/>
|
||||
<version>v9</version>
|
||||
<targets/>
|
||||
</capture>
|
||||
<collect>
|
||||
<enable>0</enable>
|
||||
</collect>
|
||||
<activeTimeout>1800</activeTimeout>
|
||||
<inactiveTimeout>15</inactiveTimeout>
|
||||
</Netflow>
|
||||
<IDS version="1.0.9">
|
||||
<rules/>
|
||||
<policies/>
|
||||
<userDefinedRules/>
|
||||
<files/>
|
||||
<fileTags/>
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<ips>0</ips>
|
||||
<promisc>0</promisc>
|
||||
<interfaces>wan</interfaces>
|
||||
<homenet>192.168.0.0/16,10.0.0.0/8,172.16.0.0/12</homenet>
|
||||
<defaultPacketSize/>
|
||||
<UpdateCron/>
|
||||
<AlertLogrotate>W0D23</AlertLogrotate>
|
||||
<AlertSaveLogs>4</AlertSaveLogs>
|
||||
<MPMAlgo/>
|
||||
<detect>
|
||||
<Profile/>
|
||||
<toclient_groups/>
|
||||
<toserver_groups/>
|
||||
</detect>
|
||||
<syslog>0</syslog>
|
||||
<syslog_eve>0</syslog_eve>
|
||||
<LogPayload>0</LogPayload>
|
||||
<verbosity/>
|
||||
</general>
|
||||
</IDS>
|
||||
<Interfaces>
|
||||
<loopbacks version="1.0.0"/>
|
||||
<neighbors version="1.0.0"/>
|
||||
<vxlans version="1.0.2"/>
|
||||
</Interfaces>
|
||||
<Kea>
|
||||
<ctrl_agent version="0.0.1">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<http_host>127.0.0.1</http_host>
|
||||
<http_port>8000</http_port>
|
||||
</general>
|
||||
</ctrl_agent>
|
||||
<dhcp4 version="1.0.0">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<interfaces/>
|
||||
<valid_lifetime>4000</valid_lifetime>
|
||||
<fwrules>1</fwrules>
|
||||
</general>
|
||||
<ha>
|
||||
<enabled>0</enabled>
|
||||
<this_server_name/>
|
||||
</ha>
|
||||
<subnets/>
|
||||
<reservations/>
|
||||
<ha_peers/>
|
||||
</dhcp4>
|
||||
</Kea>
|
||||
<monit version="1.0.13">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<interval>120</interval>
|
||||
<startdelay>120</startdelay>
|
||||
<mailserver>127.0.0.1</mailserver>
|
||||
<port>25</port>
|
||||
<username/>
|
||||
<password/>
|
||||
<ssl>0</ssl>
|
||||
<sslversion>auto</sslversion>
|
||||
<sslverify>1</sslverify>
|
||||
<logfile/>
|
||||
<statefile/>
|
||||
<eventqueuePath/>
|
||||
<eventqueueSlots/>
|
||||
<httpdEnabled>0</httpdEnabled>
|
||||
<httpdUsername>root</httpdUsername>
|
||||
<httpdPassword/>
|
||||
<httpdPort>2812</httpdPort>
|
||||
<httpdAllow/>
|
||||
<mmonitUrl/>
|
||||
<mmonitTimeout>5</mmonitTimeout>
|
||||
<mmonitRegisterCredentials>1</mmonitRegisterCredentials>
|
||||
</general>
|
||||
<alert uuid="15f1e9ca-5dd5-4b20-b595-b6b4f82245d0">
|
||||
<enabled>0</enabled>
|
||||
<recipient>root@localhost.local</recipient>
|
||||
<noton>0</noton>
|
||||
<events/>
|
||||
<format/>
|
||||
<reminder/>
|
||||
<description/>
|
||||
</alert>
|
||||
<service uuid="c1e99556-91f5-4dbf-81d7-7915a3213de9">
|
||||
<enabled>1</enabled>
|
||||
<name>$HOST</name>
|
||||
<description/>
|
||||
<type>system</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path/>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>91b4e409-211b-49d5-9fa3-dc9054106646,cbe9cb72-e8c2-4740-990c-abcc486b0654,c0708923-88de-4178-abdd-819737440ce0,e887125d-c5d2-45e6-b40d-2c400d5449d1</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="7513f341-7d21-4f11-903f-30d07b3aa41e">
|
||||
<enabled>1</enabled>
|
||||
<name>RootFs</name>
|
||||
<description/>
|
||||
<type>filesystem</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>cc3684f2-701e-4de4-883d-803e08cf47b6</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="f99ada79-ba1a-4ee1-81f1-ef570e8e5ea9">
|
||||
<enabled>0</enabled>
|
||||
<name>carp_status_change</name>
|
||||
<description/>
|
||||
<type>custom</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/usr/local/opnsense/scripts/OPNsense/Monit/carp_status</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>f2d734cb-2a0e-4375-9460-11bdd5b20503</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="dca8a81f-d389-4baa-b477-8b348194fd25">
|
||||
<enabled>0</enabled>
|
||||
<name>gateway_alert</name>
|
||||
<description/>
|
||||
<type>custom</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/usr/local/opnsense/scripts/OPNsense/Monit/gateway_alert</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>865105a2-cbea-4a01-9979-c67818da9d99</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<test uuid="ea6b821c-4f30-455b-bd5b-23a6f0c20554">
|
||||
<name>Ping</name>
|
||||
<type>NetworkPing</type>
|
||||
<condition>failed ping</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="16186b38-0e13-4cc3-ad18-ccc3fcc91837">
|
||||
<name>NetworkLink</name>
|
||||
<type>NetworkInterface</type>
|
||||
<condition>failed link</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="69117d4d-8c41-4712-97c0-87b4fa7c9837">
|
||||
<name>NetworkSaturation</name>
|
||||
<type>NetworkInterface</type>
|
||||
<condition>saturation is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="91b4e409-211b-49d5-9fa3-dc9054106646">
|
||||
<name>MemoryUsage</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>memory usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="cbe9cb72-e8c2-4740-990c-abcc486b0654">
|
||||
<name>CPUUsage</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>cpu usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="c0708923-88de-4178-abdd-819737440ce0">
|
||||
<name>LoadAvg1</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (1min) is greater than 4</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="e887125d-c5d2-45e6-b40d-2c400d5449d1">
|
||||
<name>LoadAvg5</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (5min) is greater than 3</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="c34aab30-9194-4667-b516-004b9c90c1c0">
|
||||
<name>LoadAvg15</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (15min) is greater than 2</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="cc3684f2-701e-4de4-883d-803e08cf47b6">
|
||||
<name>SpaceUsage</name>
|
||||
<type>SpaceUsage</type>
|
||||
<condition>space usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="f2d734cb-2a0e-4375-9460-11bdd5b20503">
|
||||
<name>ChangedStatus</name>
|
||||
<type>ProgramStatus</type>
|
||||
<condition>changed status</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="865105a2-cbea-4a01-9979-c67818da9d99">
|
||||
<name>NonZeroStatus</name>
|
||||
<type>ProgramStatus</type>
|
||||
<condition>status != 0</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
</monit>
|
||||
<Gateways version="1.0.0">
|
||||
<gateway_item uuid="a6ea102d-68bb-430f-af8b-269d52498fe1">
|
||||
<disabled>0</disabled>
|
||||
<name>WAN_GW</name>
|
||||
<descr>Interface WAN Gateway</descr>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<gateway>172.17.0.1</gateway>
|
||||
<defaultgw>1</defaultgw>
|
||||
<fargw>0</fargw>
|
||||
<monitor_disable>1</monitor_disable>
|
||||
<monitor_noroute/>
|
||||
<monitor/>
|
||||
<force_down/>
|
||||
<priority>255</priority>
|
||||
<weight>1</weight>
|
||||
<latencylow/>
|
||||
<latencyhigh/>
|
||||
<losslow/>
|
||||
<losshigh/>
|
||||
<interval/>
|
||||
<time_period/>
|
||||
<loss_interval/>
|
||||
<data_length/>
|
||||
</gateway_item>
|
||||
</Gateways>
|
||||
<Syslog version="1.0.2">
|
||||
<general>
|
||||
<enabled>1</enabled>
|
||||
<loglocal>1</loglocal>
|
||||
<maxpreserve>31</maxpreserve>
|
||||
<maxfilesize/>
|
||||
</general>
|
||||
<destinations/>
|
||||
</Syslog>
|
||||
<TrafficShaper version="1.0.3">
|
||||
<pipes/>
|
||||
<queues/>
|
||||
<rules/>
|
||||
</TrafficShaper>
|
||||
<unboundplus version="1.0.9">
|
||||
<general>
|
||||
<enabled>1</enabled>
|
||||
<port>53</port>
|
||||
<stats/>
|
||||
<active_interface/>
|
||||
<dns64/>
|
||||
<dns64prefix/>
|
||||
<noarecords/>
|
||||
<regdhcp/>
|
||||
<regdhcpdomain/>
|
||||
<regdhcpstatic/>
|
||||
<noreglladdr6/>
|
||||
<noregrecords/>
|
||||
<txtsupport/>
|
||||
<cacheflush/>
|
||||
<local_zone_type>transparent</local_zone_type>
|
||||
<outgoing_interface/>
|
||||
<enable_wpad/>
|
||||
</general>
|
||||
<advanced>
|
||||
<hideidentity/>
|
||||
<hideversion/>
|
||||
<prefetch/>
|
||||
<prefetchkey/>
|
||||
<aggressivensec>1</aggressivensec>
|
||||
<serveexpired/>
|
||||
<serveexpiredreplyttl/>
|
||||
<serveexpiredttl/>
|
||||
<serveexpiredttlreset/>
|
||||
<serveexpiredclienttimeout/>
|
||||
<qnameminstrict/>
|
||||
<extendedstatistics/>
|
||||
<logqueries/>
|
||||
<logreplies/>
|
||||
<logtagqueryreply/>
|
||||
<logservfail/>
|
||||
<loglocalactions/>
|
||||
<logverbosity>1</logverbosity>
|
||||
<valloglevel>0</valloglevel>
|
||||
<privatedomain/>
|
||||
<privateaddress>0.0.0.0/8,10.0.0.0/8,100.64.0.0/10,169.254.0.0/16,172.16.0.0/12,192.0.2.0/24,192.168.0.0/16,198.18.0.0/15,198.51.100.0/24,203.0.113.0/24,233.252.0.0/24,::1/128,2001:db8::/32,fc00::/8,fd00::/8,fe80::/10</privateaddress>
|
||||
<insecuredomain/>
|
||||
<msgcachesize/>
|
||||
<rrsetcachesize/>
|
||||
<outgoingnumtcp/>
|
||||
<incomingnumtcp/>
|
||||
<numqueriesperthread/>
|
||||
<outgoingrange/>
|
||||
<jostletimeout/>
|
||||
<cachemaxttl/>
|
||||
<cachemaxnegativettl/>
|
||||
<cacheminttl/>
|
||||
<infrahostttl/>
|
||||
<infrakeepprobing/>
|
||||
<infracachenumhosts/>
|
||||
<unwantedreplythreshold/>
|
||||
</advanced>
|
||||
<acls>
|
||||
<default_action>allow</default_action>
|
||||
</acls>
|
||||
<dnsbl>
|
||||
<enabled>0</enabled>
|
||||
<safesearch/>
|
||||
<type/>
|
||||
<lists/>
|
||||
<whitelists/>
|
||||
<blocklists/>
|
||||
<wildcards/>
|
||||
<address/>
|
||||
<nxdomain/>
|
||||
</dnsbl>
|
||||
<forwarding>
|
||||
<enabled/>
|
||||
</forwarding>
|
||||
<dots/>
|
||||
<hosts/>
|
||||
<aliases/>
|
||||
<domains/>
|
||||
</unboundplus>
|
||||
</OPNsense>
|
||||
<hasync version="1.0.0">
|
||||
<disablepreempt>0</disablepreempt>
|
||||
<disconnectppps>0</disconnectppps>
|
||||
<pfsyncenabled>0</pfsyncenabled>
|
||||
<pfsyncinterface>lan</pfsyncinterface>
|
||||
<pfsyncpeerip/>
|
||||
<pfsyncversion>1400</pfsyncversion>
|
||||
<synchronizetoip/>
|
||||
<username/>
|
||||
<password/>
|
||||
<syncitems/>
|
||||
</hasync>
|
||||
<openvpn/>
|
||||
<ifgroups version="1.0.0"/>
|
||||
<gifs version="1.0.0">
|
||||
<gif/>
|
||||
</gifs>
|
||||
<gres version="1.0.0">
|
||||
<gre/>
|
||||
</gres>
|
||||
<laggs version="1.0.0">
|
||||
<lagg/>
|
||||
</laggs>
|
||||
<virtualip version="1.0.0">
|
||||
<vip/>
|
||||
</virtualip>
|
||||
<vlans version="1.0.0">
|
||||
<vlan/>
|
||||
</vlans>
|
||||
<staticroutes version="1.0.0">
|
||||
<route/>
|
||||
</staticroutes>
|
||||
<bridges>
|
||||
<bridged/>
|
||||
</bridges>
|
||||
<ppps>
|
||||
<ppp/>
|
||||
</ppps>
|
||||
<wireless>
|
||||
<clone/>
|
||||
</wireless>
|
||||
<ca/>
|
||||
<dhcpdv6/>
|
||||
<cert uuid="547102e9-23ba-48b8-8af8-64be61049e96">
|
||||
<refid>6734d13fa9e4a</refid>
|
||||
<descr>Web GUI TLS certificate</descr>
|
||||
<caref/>
|
||||
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhIakNDQlFhZ0F3SUJBZ0lVSUhVRkpwc253VGtzYWRrZmRDNUp1SDhqWnZNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZa3hIVEFiQmdOVkJBTU1GRTlRVG5ObGJuTmxMbXh2WTJGc1pHOXRZV2x1TVFzd0NRWURWUVFHRXdKTwpUREVWTUJNR0ExVUVDQXdNV25WcFpDMUliMnhzWVc1a01SVXdFd1lEVlFRSERBeE5hV1JrWld4b1lYSnVhWE14CkxUQXJCZ05WQkFvTUpFOVFUbk5sYm5ObElITmxiR1l0YzJsbmJtVmtJSGRsWWlCalpYSjBhV1pwWTJGMFpUQWUKRncweU5ERXhNVE14TmpFNE1EbGFGdzB5TlRFeU1UVXhOakU0TURsYU1JR0pNUjB3R3dZRFZRUUREQlJQVUU1egpaVzV6WlM1c2IyTmhiR1J2YldGcGJqRUxNQWtHQTFVRUJoTUNUa3d4RlRBVEJnTlZCQWdNREZwMWFXUXRTRzlzCmJHRnVaREVWTUJNR0ExVUVCd3dNVFdsa1pHVnNhR0Z5Ym1sek1TMHdLd1lEVlFRS0RDUlBVRTV6Wlc1elpTQnoKWld4bUxYTnBaMjVsWkNCM1pXSWdZMlZ5ZEdsbWFXTmhkR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQwpEd0F3Z2dJS0FvSUNBUURKU1FlZ1RYckp5dDVWYmk0Rk9IeHJrOXhxQ21FRU54V2pINVVwNDBFK3hjUzZQU1NyCkNEclc3ZDlYcVJkOEpEZENtdGtLRGlMYWNaUzJMUm1abnd6VnRzZGtBR2pOYm5OM1hSNmlFajdGL0JnbVBlcDEKU2pJWnBTZzNkOS9YeHFPQTNZQllzTS9uUk9vWHlmTHcycFJOLzhHVjN3MHoxbVFZUitMZWI3UTFuc1c3dTJ5NworVHc5STZGU0J4bkdaR3RyUFl5NkVBb0NMdm1GQnFCYWxkWTQ2ejdlWjlIRkZXaE8ybWpaUzVPdTE3ZVozVHBxCnBRTVB1T2JxV3FyaE0xdjVjdmJodU5kREhNZ3ZVVFVnQ0RNK2FkS3dIc0dNNGw5ZGtOQTgxdGlJcXpzN1BqcjEKUm0wMlVuUXRneW8zY3hPRXVsYk9nU0hsdGhTMmtUMXE2UmhyemYvRGRJSEhta1RROGtwWVloWGc0VmpMQVdpSQpQbm9ncnZsRUlWMERhQ3ZEMjZiRkRDbVkxc29FbDV1NGtYanJScDRXK29NUVRHeG80NzFMQnNBMlh1Si82ZFJBCkJMVzh4dXBFODhEYmlrWW51NVdQaUp6ZXh4UVIyNU1FQVd6TCtKK0lubFExbmpMVWwyN3R0c1VQQ1VjL3c0NXoKcHBERHYwZnU0Nnp1S3EzY0VWRitiREsrQWdlT0Q2SXNzUjVRRTdFNVdkWjYrNWl6ZHB4eWdUeGh0L1k1RlBkSApHQjlCbDFrejR4bHRhczlvbmZrSDFkVHk3dzFNck43Z1l5WjgvS0pMWW9EY2NBOVFuNGt6bGtPeFVUMENuS1ExCmtWNk90aFRsVFgzK2duaUpJK3RXWUQ5bTRldXNzYWN1anpyWDl5TTNZcEloMnZqODJ0NHpPNjIrNFFJREFRQUIKbzRJQmVqQ0NBWFl3Q1FZRFZSMFRCQUl3QURBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQmtBd05BWUpZSVpJQVliNApRZ0VOQkNjV0pVOVFUbk5sYm5ObElFZGxibVZ5WVhSbFpDQlRaWEoyWlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEClZSME9CQllFRkJRZytucWI5QW9HSWtoTUxhNHFzWGRvY0JGcE1JR3pCZ05WSFNNRWdhc3dnYWloZ1kra2dZd3cKZ1lreEhUQWJCZ05WQkFNTUZFOVFUbk5sYm5ObExteHZZMkZzWkc5dFlXbHVNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVUlIVUYKSnBzbndUa3NhZGtmZEM1SnVIOGpadk13SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQwpNQXNHQTFVZER3UUVBd0lGb0RBZkJnTlZIUkVFR0RBV2doUlBVRTV6Wlc1elpTNXNiMk5oYkdSdmJXRnBiakFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQUZqNlQ1MmRIUklVMHJuZDE0d2dob2tjUkdrK0hIQloyTGlDRHpUeUwKNHdCeTJ1ZXJXQWdvYUZzeUlNQzhwWTBhWlc4TFlSd1BtRVB0OXlUS09ZZzF0NWtOUnk2RkF5akszeis5TGZTQwoxRlFpb0pma3FHRnhoc1IxV1R5RjBGNmJmM2tZRDZ4OWw1dEdqMXF3SndrekZWZWcvZGNtUVhvRTBmUDRqSFFvCmgxWXdiZ3pTa084TzRLUVhuWXVRM3g0bWdoZnBvR0hQM2xINlcybDJlWHpqSzllRjJtUG1ZS0p1M3JpSnkvL3gKRzhQWXBYNlNTN3RoVnNNeHF3cGJHbURXQXRuSnNrSmVsNDI1WUdOYlZ4YTNPOHE3RWxLNGFoNXpmai8wRnVwTgo3SnlqMWQyZjZFck14WlFnUi9EdmlUVnhISytRY1lBRXBqU2ZmZzBrRStpS1BlN0VYTVk1VU1aZUFTK1ZteG1LCjBPOWxaQXNpWUlEMzkwVjNTaDZxYjhoL2xMZ0V2NCtSNUw1VEpFaldYc0dQSUpGaHJNSFJWR1lhV3JIYWx3eHYKNjE5NFlpSXBEaUlHSVVSWGN1U3dNcndIQzN0bms2QVo2OW5CczVXT1JYM0NxOVhRRnVrVlA5eUMxQnRuSmFwbQpubUMzK3NtTTErRjkxUXlkVXJtbUxPNUVwUmtTMitBcmRTSklUR1NRNWt4L3VLNjhzV0QzVVdNNVRibUxrcWdOCkt6djZjemVCbzJiVExDT0JKUWJ4STFCckRPTUFMSDlCdXdUamVXdUVtWE9TWE1lTDFsejdhL2JZKzJxa1BSOVAKTE5IekE2QXZlVmxucDNaeFdqMjZFK3dwYnU5cHBaY0QzRGVHRnRnZzVJbUJ2ZDNWbjJ6UVc4a1ZMT1ZBdllSawptdWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</crt>
|
||||
<csr/>
|
||||
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpSQUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1M0d2dna3FBZ0VBQW9JQ0FRREpTUWVnVFhySnl0NVYKYmk0Rk9IeHJrOXhxQ21FRU54V2pINVVwNDBFK3hjUzZQU1NyQ0RyVzdkOVhxUmQ4SkRkQ210a0tEaUxhY1pTMgpMUm1abnd6VnRzZGtBR2pOYm5OM1hSNmlFajdGL0JnbVBlcDFTaklacFNnM2Q5L1h4cU9BM1lCWXNNL25ST29YCnlmTHcycFJOLzhHVjN3MHoxbVFZUitMZWI3UTFuc1c3dTJ5NytUdzlJNkZTQnhuR1pHdHJQWXk2RUFvQ0x2bUYKQnFCYWxkWTQ2ejdlWjlIRkZXaE8ybWpaUzVPdTE3ZVozVHBxcFFNUHVPYnFXcXJoTTF2NWN2Ymh1TmRESE1ndgpVVFVnQ0RNK2FkS3dIc0dNNGw5ZGtOQTgxdGlJcXpzN1BqcjFSbTAyVW5RdGd5bzNjeE9FdWxiT2dTSGx0aFMyCmtUMXE2UmhyemYvRGRJSEhta1RROGtwWVloWGc0VmpMQVdpSVBub2dydmxFSVYwRGFDdkQyNmJGRENtWTFzb0UKbDV1NGtYanJScDRXK29NUVRHeG80NzFMQnNBMlh1Si82ZFJBQkxXOHh1cEU4OERiaWtZbnU1V1BpSnpleHhRUgoyNU1FQVd6TCtKK0lubFExbmpMVWwyN3R0c1VQQ1VjL3c0NXpwcEREdjBmdTQ2enVLcTNjRVZGK2JESytBZ2VPCkQ2SXNzUjVRRTdFNVdkWjYrNWl6ZHB4eWdUeGh0L1k1RlBkSEdCOUJsMWt6NHhsdGFzOW9uZmtIMWRUeTd3MU0Kck43Z1l5WjgvS0pMWW9EY2NBOVFuNGt6bGtPeFVUMENuS1Exa1Y2T3RoVGxUWDMrZ25pSkkrdFdZRDltNGV1cwpzYWN1anpyWDl5TTNZcEloMnZqODJ0NHpPNjIrNFFJREFRQUJBb0lDQUNPNnZpc1BIY3pzb1NjK2dkWkU1dGNNCnZkc240UDFIenVRd0VzRUcrVG1zanVWMVBZbExrbkE4OU1DQmdDejEyOFpMcU51ZlUwSDkxK1Uzbjd2MGJ1bVAKd3BpR2R4UUNOMlpZaGZ2RWE5YW1qMTNZYjBJbks3b0FKbUdrT254NW91UFl6YlBRblBNRE9WK0VKa2JwTWRxZgptOHdmOWg2OXYzSk03bUZJS0UrOVVZR252UjhuMkhETTNwR3FONEhQS1A4MkE0RXlvQ2d2a1BTelRxc052bU5ICnBOY0RURW5rNlNsWUhUVDNOSzJjVnBldUhMUzUrazlqNWI5elhUSlE5TkpVZlN6bnEvUmFpMUZVNDY1K0xpUjEKMGVPWDdnajFWUExOcGgwcWtQQy9ubW0vZStVMmZXUGZZb2FDcWkrQ0VwU2twQXlQZ1FZZTJsSG0rYVU4MzZ2UQpuaHZuL0p5ZHJDL1NyTUFZaXpOZFYyZjlHTkNwcE1SbUZyOS9saVJiNEFpSzRLSDRETGdSRUxHaDJLNzJuOFRLCkxUSVhIV3RacisyMWU4c0Mxbm5MSENnK21wMHBvSWJsbEtoYk9VTmVxR09yWm95NFBXdDZMQndFYzN0MG1wVEMKODhiSUpqMzFCQngzTGE1SUE5b0FNRi9lbHJYdFhhVnl4bm5yTHdjYzFNVWpCV20rZDVqbC9WOEdIcEJRd3pXYwpPNWdNSXlQNUIvdzBacUcyZjV1akZkOHo4dElmcEFRRTJSbDNxRUFYNU1NY1JQaFlTNDJqTWl4czc3TmtOVldQCkpqUVoxVDVXQTVKOUxEL2FKRkplQ2MvbjhpNldOQ3FzdEQ5OVNPTCsrTTBFQTlka2lLNWtOcXFZeXZuRG9SZVcKSW84eXhvVnpObURsWjBkSU9UUzlBb0lCQVFEb2tvMWxPS05FNlBWWmRRU3lmS0JOTEZNcEl1V1VVZmp0ODU4awpJTTB0TnNyS0d2N3NmYkt0dlMvOWgwMGluU2FyWTJ4amVETG91WEI5VzdKY1B1NjRoNHYwek1lbXRhdDRyTUJnClA5bkQ3MW00dERqS2ZrZDAza2tUbk4ySTBxYkwzeFVoTjNEQlJZTU9veDFMa2M4MFFFMHhSUEM1YmRJaXcwemEKTWdtK1dOZVY1VEZoSkpQZ2dVRVo5U1A2aWV1VEY0OW9wRGNWdGUwQ0I0WnFUaTRWb3YvZFVDWGpNK0djRnNWdgpPWTZYTE9KTmRldHdnUVNkd1hlSzB1WlBpWnVKTGlsTEg4OFVKYWNoQThDZW1SclMxRUtxWElwK2dkQWV4MnhVCmY5amRMMGF2SlJEY0xqWlhETXBvWlJpc0JoWVArZzY3VHZza3FscDh4M2p2STlWVkFvSUJBUURkajZrdWNLM0MKYXprMzlqYllvM3RFZ0R5L2VGNnBjWFlpK21Ba1ZNRk9vSWJ5cmNyN3BqSnRMNFMyMEFDRmpBUGFQT042dWVVWQpQQm92dC9QODB1V1c5cGZCK29mRmdadzRqc3hLWFY4eEJmOVdLWVZndFBsOHhIL1RJcERTMjhVTlowNDlhUW4vCjlCRzNac0lyenk3RzFLRTZPLzBMMnVmMnFyaUxxRFQyV3dsdFVsbWs2Ym5NeThkR0sra1JLcFhvSm1RTlNHRHoKOXd4blU2ZmZ1NDdDLzRYMHRIVk1MVFVneFh4djdqN3BpSzI4dzBuZ1N5S3ozV0IzWTJwaFVsZEJIdEprQko1RQpoRm8zMXJCVDU5enhkb2crYXh1bkh4S3EySGFHRkt0ZUZ6RGpkTTFpQzE3bWNtWXBzR2tuenA0cjRjZm5FYTFSCko4Wmo5ZVFQaEVOZEFvSUJBUUN3d2hsbXNkb2MySFVJVFZDSm13QjJSdGJaYitWT2lkS0lmdDBYcHpwcFA3aDIKVEhndEl3ZDIxayt2LzNJWGVaclhMWlJHTVNkNEN1QTgxa0ZEckt6Z1lGeDFiR0hkQ1R2T1ZuVkxjWnUvTjUxWQpMTmp3eFhMbmxyMnhnMG8zMytuWERyQlBjNFJsejcvZ2t3WUQxa2pGckkwK2dlZjI5a2w4RkRUSHJMb05DaGFuCm5PNmZweDRneGZ2Rmo3T05pZDhhQnhEK2RiaEw3dDIzNmlJMWp6K2xRQ0g0Z1I2YWhHYldxOVBZU2NWZWprVmMKbTkrWnZPVFdSU0RteUkwMExDQ2k3UXVEUmlTcmFrYVFaL3F3VHlxOHk0ZnpWS3dKby8yYU52VFZiK2xSaWNuTgorWHpMNnU5dno0L1NNZXZEYWtqQVVjdDZmbmVQa1UxK2dsZ2VZSHlWQW9JQkFRRFJtYW0wVEZhbFdXaHMvNWtOClEwTkhINFhZb1JmMGRta0xXQStCNzBoY2lOS0JYRlp0ME9GZGw1bVdsSm9adk1hY1BBUDd3MGJ1c1ZVWWxZN1YKTy9LRTZVM1I3WjlxQWw1Mnh1aU81Vnc3ZFhBRDVBM1EyZ1EzdTNFdG5VS2lwOVA0QlNYb1JLbDRJVDV0WVdJSgpyZHVUciszQ3VLT0FCcHh4Snpxa3JBRkdtZ01HRCtUTWRXd1hTU1NBeHVPYklNMW1MSU4wYVdlSEJNMFFKdnptClZIb1BFVXA1b0FwamdWVUVacTk4K0VjK0NOWkxmL2d3bndQNllsQnpRWEtQRlNXRWJwTWNtWjNjTmRWZmc5T1YKM1FDUTBkQzhNL21hRlhSRWVibE95TmtCanpEcHpVTExJUFNyVDhoRVlpWm95VGVyVGRJZVVBUEZoYnBTTUhtTApFRlhsQW9JQkFRQ0VUdVJQRHZvMC9tdDhyTzhLNENsamtuU0gxZ1FBSjFha3U3UXg3NUJUTDB6OWRNY2lMK1JLCng1R1lFTW1wcUtNb2FPbWc0WFVRMVRlQ2Vic1R0NjMyWXp6cmNCU0d1RzVnN1o0UUVublUzRXU5QklIMUVSL2gKSEk0NWowU0xNRUpObkNiTkpnRVNRRUFCbzN3cHhrRTdiRGlNdTVPOXVqMlFRVTlTTm94QkFmbVFXRDJJaU1BRQpWYzV3QTNZajBMdElSYkJmdzNBTE9uNlRSc2xucy9JMnd2Z1RCQW9sU3NZbEtEK0NRY3hDZldlNmZwU21aYmlCClBGUE9DY1ZQTXhGeXBhZWFJMkRXNWRPNFNoNGQ0ZlZma2F3ck9LN1N2QnFZb0Y5L2VndThzQS9ZdklaRVltQUQKd0ZIOGs1QjJ4WXdiNkVmNmFFQ29ZTitsNWtlWmhNWTgKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||
</cert>
|
||||
<cert uuid="cad18e13-92c5-48b6-9b44-ad2e5dcc799e">
|
||||
<refid>6734d6c82dc59</refid>
|
||||
<descr>Web GUI TLS certificate</descr>
|
||||
<caref/>
|
||||
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhIakNDQlFhZ0F3SUJBZ0lVZkNETXpFclQ4dlVoenJaTVJta3JiT3dnSUdNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZa3hIVEFiQmdOVkJBTU1GRTlRVG5ObGJuTmxMbXh2WTJGc1pHOXRZV2x1TVFzd0NRWURWUVFHRXdKTwpUREVWTUJNR0ExVUVDQXdNV25WcFpDMUliMnhzWVc1a01SVXdFd1lEVlFRSERBeE5hV1JrWld4b1lYSnVhWE14CkxUQXJCZ05WQkFvTUpFOVFUbk5sYm5ObElITmxiR1l0YzJsbmJtVmtJSGRsWWlCalpYSjBhV1pwWTJGMFpUQWUKRncweU5ERXhNVE14TmpReE5EVmFGdzB5TlRFeU1UVXhOalF4TkRWYU1JR0pNUjB3R3dZRFZRUUREQlJQVUU1egpaVzV6WlM1c2IyTmhiR1J2YldGcGJqRUxNQWtHQTFVRUJoTUNUa3d4RlRBVEJnTlZCQWdNREZwMWFXUXRTRzlzCmJHRnVaREVWTUJNR0ExVUVCd3dNVFdsa1pHVnNhR0Z5Ym1sek1TMHdLd1lEVlFRS0RDUlBVRTV6Wlc1elpTQnoKWld4bUxYTnBaMjVsWkNCM1pXSWdZMlZ5ZEdsbWFXTmhkR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQwpEd0F3Z2dJS0FvSUNBUURMc0xEbjRta1R4RXJYdHdqTXoxencyeHJhNTZ5bTYrYzlRNEM3UjMyMzVuWjVPM1ovCnczL2tNV2Y5L25GbGpnMkFXWERJSmNXZjk0NFJFblFMdmlha2NNTHR1Qm1KTVRYZnVQWnhsSWE4Wlc0S0ZuT20KVFM0WXFCVzhHQkpJd0xtQ2kxb2RoWXhmUEQ2TFdEZnZYMm1tWEIrUFNxL0l4WEhOSjdxZVB4YzVuSzUyMW1uNQpuQ0FtZFBDY2JmdmdXdUM2TnhWbXpkeXpta1QvNnVqRUJFYTZ6RkQyUUtDN1N6a2ptZUNpd2VDQjc5NjZqeEV5ClFrVlFqYlQ5MFlyeENvdE8rbTJIQU5QZHNjT3FvNldXMEhmSlNpa2k4K2NDWHlzbGRFSzFZbmxueTNFWlVqTEwKVmplRS9XQVU0Q1BZUmhYVFVGVTIxZFV2azNvYUVpeldVdmhKc1FHYnh2aFRUQlN3aVliOUQ3Ymx1MWl4UzJxNwo3Mzk5VWdRN3FTNUFhOElHbXA4NUNoUUlBWUVjSTd6RGVWTGtrOGpkWkFCaTdGbDl0M05OQTU3WlVZVzErWE45CitUZ3ljMTlTbGoxVW1RdkRvekxCQzk5TVJpLzREQTIxRFpIODY3ekFYenFqZWUrckorQkZvNzVEQjlqd2tMTmUKUGVpemxRenRIWmpSU0tnaWdSNU9KSmtSVHIvNjduaTBtbzVITGNkU3hBSDFmdXdXS0hWS2RHQlQrNjhhYkUrZwprUSsrVDhMenVhK1FtakxOUVFqMVJCSFYzSzVQL3dvbXJKZG02d1ZLbm85RXlNait4azFwS05wb0F4UnR1WllmCkNEVVVQWjR1cEJtbzBLN3dGNHdtV3VXYSttVndlb1ZTcDRXMEhOWVJGU1pyWWxrc1AzdWViSHcva1FJREFRQUIKbzRJQmVqQ0NBWFl3Q1FZRFZSMFRCQUl3QURBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQmtBd05BWUpZSVpJQVliNApRZ0VOQkNjV0pVOVFUbk5sYm5ObElFZGxibVZ5WVhSbFpDQlRaWEoyWlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEClZSME9CQllFRktidDd0QkRKN1daV1lMblQ5cEhTMklPdTg1TU1JR3pCZ05WSFNNRWdhc3dnYWloZ1kra2dZd3cKZ1lreEhUQWJCZ05WQkFNTUZFOVFUbk5sYm5ObExteHZZMkZzWkc5dFlXbHVNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVWZDRE0KekVyVDh2VWh6clpNUm1rcmJPd2dJR013SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQwpNQXNHQTFVZER3UUVBd0lGb0RBZkJnTlZIUkVFR0RBV2doUlBVRTV6Wlc1elpTNXNiMk5oYkdSdmJXRnBiakFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQWNQbmllQ29FSmRjV25CVHdqRmE3bjZqTFMrZ1pUYUk2ZjAzWktQMFYKQ0pSaDUxWTNwb2dpcnJYcVNHQ1VGTVNHbGpsQ21mU2VhdW9GWFYwanZLejhnMGZ1NU9kYlhjd2FrZFBZSXgydQpVT0dMbllTaEdCNlpoMmhpWWdSVGFpemJoTVliQitzQkV4QU1CdHZRZElSZ3dBWkRNWE9jY0MwZnJaMFhRRlRFCnQ3by82VGYvZEprdnB0cmRYWW1INnFUWlA2MGxyTnlabVloTjc1NEluOFZLRVVSRWNZamg1ejlJanA1NTE1cU0Kb0VrSGNKbTBDNkh2VStETG1ybFpFYkV4bnVOMFQzWTBNZ0hiVFVhU2Y1L2FKVmlIM0dOMnMzbG1ZM0VXTS9Vcwo3azFyc2JTa2orZzJvQXlTcjU0Nlc4RkdaMjliZFlOYk1EaTQ4aXVRQWlzRlQrTGZXN3Y3RVl3WGJ3NUhSVkpNCjV2MlhnenJwN2Yxa08zckEzeXUyS1VSSktHdjJ1ZXhNSythb1VOZXhRT3ludmZGUTBCemRHQ1dlcmVvZTZ3bDMKbHc4Z2dCWDI1VGIxbzR3d1UzNXdtUUIrMC9rbjB0SXoveVBhY2JzbDAwZ0dJNFhTbWpRQmF0MUZYRHFEME1JMgp4S0RqMXZ2dkNTVnRKc09ESG95eDhLc3ptbno5UVFoV0ZNeC9LTXp1clh0OWtsWFRJc0t3d2NXMytZQWtQMzNaClgvOGJnZS8zK2RibTdNN3BndmFBNVFlU3VTbkwzNjdLT1g1NlNZNGFZWHhkc1haVDc0ZGxVRU1jbG9NU0NIOG4KR25QWlpyWTNHdnZaU2ovQWdqT2lDNHNBL2JSSmh4cCtUQndlRFByR0pFUEJFVW9sZEZHVXdraFJXMVVuRlc2YwpyTGM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</crt>
|
||||
<csr/>
|
||||
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRExzTERuNG1rVHhFclgKdHdqTXoxencyeHJhNTZ5bTYrYzlRNEM3UjMyMzVuWjVPM1ovdzMva01XZjkvbkZsamcyQVdYRElKY1dmOTQ0UgpFblFMdmlha2NNTHR1Qm1KTVRYZnVQWnhsSWE4Wlc0S0ZuT21UUzRZcUJXOEdCSkl3TG1DaTFvZGhZeGZQRDZMCldEZnZYMm1tWEIrUFNxL0l4WEhOSjdxZVB4YzVuSzUyMW1uNW5DQW1kUENjYmZ2Z1d1QzZOeFZtemR5em1rVC8KNnVqRUJFYTZ6RkQyUUtDN1N6a2ptZUNpd2VDQjc5NjZqeEV5UWtWUWpiVDkwWXJ4Q290TyttMkhBTlBkc2NPcQpvNldXMEhmSlNpa2k4K2NDWHlzbGRFSzFZbmxueTNFWlVqTExWamVFL1dBVTRDUFlSaFhUVUZVMjFkVXZrM29hCkVpeldVdmhKc1FHYnh2aFRUQlN3aVliOUQ3Ymx1MWl4UzJxNzczOTlVZ1E3cVM1QWE4SUdtcDg1Q2hRSUFZRWMKSTd6RGVWTGtrOGpkWkFCaTdGbDl0M05OQTU3WlVZVzErWE45K1RneWMxOVNsajFVbVF2RG96TEJDOTlNUmkvNApEQTIxRFpIODY3ekFYenFqZWUrckorQkZvNzVEQjlqd2tMTmVQZWl6bFF6dEhaalJTS2dpZ1I1T0pKa1JUci82CjduaTBtbzVITGNkU3hBSDFmdXdXS0hWS2RHQlQrNjhhYkUrZ2tRKytUOEx6dWErUW1qTE5RUWoxUkJIVjNLNVAKL3dvbXJKZG02d1ZLbm85RXlNait4azFwS05wb0F4UnR1WllmQ0RVVVBaNHVwQm1vMEs3d0Y0d21XdVdhK21Wdwplb1ZTcDRXMEhOWVJGU1pyWWxrc1AzdWViSHcva1FJREFRQUJBb0lDQUFzc3hPL2IzSTd3a0hpWU9wdmQ3b2ZxClJXVm9HM0ZHOVBkSCtrcU1DQW9zVXlpZ2lnWkZhQUZSY3BhZFBJUnBVRFZQOHQrUUx2RHhTSEtJVkNTR3lLRHgKN01mVTkxV3ZCUGtpc1NhWEV2TklEMHJ2WTJYbXl4WWdOcDBNcHdnbHhxZXlWSDNWSTFmZ09zQXpWVkpGSmtzeAp0NnVKV2U2R1lwRnlVZ3MzZytNdHhPYVJLZHcvWkFZb0dVRkR5WE5NR1JNdVRYYkg2WWxTOStFZ2RxZTJZbGtDCk41amkvODUydUlwSytXZUVnbmd1ZkVZNDdpVVhQSzFJTVB0UjRURUxOb3hkTWVBYnZBUG9La2QwMWZOWnVaQ3EKQ0dxNS9kMEQ4cDZKNjlUK3M1RnR1R1UrdkxtcUg3NmtsZjVmTTZnOFpCc2xSNStNQ0xlay9DaHRBZGU2VXBQRApXQ2EwazU3dmdneUdQdGVlVXY2RVJBMEp6SjlJd2VHZGdVWHhNdW5LK3ZSNWYydWJKWFJoMVJpNTNFSTNvVUxYClFvWm9hOTY3VzNUajQ3UzR2RlQyK2dLb0g2OXlNckdVNVkwcjJrSTFXMVVhWEJ1aVVrMi94amdyWVdTblUzUUQKZkM3ZXllTlNlN3c4UW9MMVBEYXJwVXdaK2xGZ0w3NFVScldLQU12WVhxa3NTMHVtb0tTSWo4cjZMM0hVSUVaUgpZRzhBTU91dFhrQk5lMkNpTXRKM2NYUXNIOWloQU9QL3AvaE9BTTBGNkM3Ymt1Vm85d1pRdDVESWxRWUl4TlArClFRZ2doRnhBNTlTWmpwRk00QkN5L0hEOENJY3VuSURZOVNlbXNSYXdyUVY1eGk1akFScVdOYTdBSVMvVlArdUUKQkpmS0dDNFlZVmxqS1VLeEgxVUJBb0lCQVFEcnZOWXNrd3ZhQ2Z6MlcvbkIrRjNjVE1RbjM2RENSYnZwQ0s1dApldm96TjJGbjBJdWFnN2RrYzN2NTFxTVNEd0h1cVNkVTRHUHZMcm83alpJaFNEZ1AwLzBLWmc0VmxtZE5HbEovCk1lcXhmOGRkOFdTQjZiUksrK2FRcEhaeDd2SUFTWkE4eHkvZ3F2NGJpSmlqVDhUQ2lSeXdYSTQ0ZlRYM0xLZTIKVG1Uc29XNk9yQmErSWJRYjBpTEh4WE4rZ3JDM0cxWWxIUlNvTEpKUkU0eFVLMGsvM1JLNU16RjRIYUNZb1BWOQpDOFpQellMR253SE9ERU8zbHRtSGJvQUNFa0VrT2dFV3U4RFo2YlYrMXJBcVh6WnN0L3hNZnJ5KzlMRVdYQUwvCkRnOEdkall0YzdyUTFZd1BIY1h6cFo2clVIdXh2K0p6VEE1ZzNCS1p6aWhwNFdHaEFvSUJBUURkTXE3N0dRWGMKYW5hYlMxanlFT3VzNFp5ZlJ4cW10NEVFaHZjY0dRVVVrV0IrWk11bnpyaENxb3ZwQ1dhVU9zWVhuNG45Y3BQSAo3bm1mOUJHbFI4NVhCVHNLM2d4bE5NMUhjSGFTNXZSem9WQVBNd3o2VVV0ZFNLWXRLR0Q3Wkxmbm9ISXN1SlEzCnJ6WWIyTFhpVmx6MWlNNUVmT0VrL1J5UjBwMGtleXVwa0F0OXBRV0hzaURYb0pibDE2d1ZLc2NDNGUzNjdRRWsKcFdoeXcyS3A4bXdtOGxqQllxZWtHdUREeGVZSDMzMVlGa2FMUEJCT2xPQnlveFlOUDdBVVREUlV3KzB1T01jNwozb0N1VE9jWnAxVWMwQURBOXRTRVRINklWdlFEUXZlYzR6MWRTVGRmUEkxRzVUTCt4Mzlvam5OcGVoYng0bEwvCmRxTTBmcFlPL2ZmeEFvSUJBRmwzOU8wNzdjNlY1ZHoyY1djTnhVbThGT0p4UEVrZlFEOGtYVmNOeW5HdnZoY3gKamhwWmpUdmhuSmJvd0VFMVV1MXFZNVFTQ2J1WVIzUWN1ZTVKdzRVMlZwNGd0NDIzNUlMZHo1dVlyVk1xaE5jQgpxN3ltbnhlcVhRcGVjTm15NzBQdXA0QjV0SkVYTkpQc2xzbThsNWVoaERMbkhjOFFybStlRWhUZDBlNEJJcjJoClVJeGVyRVcyemg1MXNPeTkyeVhUaVRGU3hTbENxVkYrRXM5TEVtVGJtYVNTYWw4RkY1TjEyMVhYSnkvWWRwNjkKY0dqc1BMTXIzR2xMSmVnalYzZlJUK0o1NWFxT3lhUlhCTXRBRVo3WGdUampETzJJWHNGMnNHaHV4SU1XVUYrVgp3YnhLbi9xSXVUMU1pVmpKbGZpVE0vWEFVdUN1QlowOEloaDFRcUVDZ2dFQUZwdzJySzRMSGxPM21mb2l0bU9xClkzcVFVdXVtdXNIcEt6aE1qQSsycURxUC9YdDZJY1lNcWF2YkwwL3ByMTh1bm4yTlVsM2k0ejNxS3NKOUIwTUcKd1hoa1o2RDQ3V052VkUwWG9iNS80RTN0N0EvUTFNbDRoYW1HYXZsRXFJM01DcDRvN1k5VWZ6aW10RVA3bTQ0dQpaRjYranR1ZysvSHZlS3hwcWEvNWI1U3N5QVFWUTZDZW9Ndm1nTW9CNmd2OFdid1VZbURWakJSb1Q4clBEQVllCnJnQjV1QkxJaGdyRlROMnV2TUZJZzdlTE1ISk1UR3dGWVZKd1Q1eGgrRUV0M0RoR3gwSEFnOHNqcGkxd05md1gKeENFeTRvYVloSWw1S2FDUndyK1dwZS9JZHYrajdGVTVMN1QvK0hFV0FlOEZ0eE5td3dUYWJRaUllRFkwU29ZRgpVUUtDQVFFQXRiclZqbTFsaDQ1REhIWnVsem4xNllIQzJrMUYwWG9FZFVSQ3o0QTFsMHBEK3ljL2srdmJ0Qmg0Cm1RRDV1a3FicHFFZy9GNUhDZmdOaHlieHNNdVV6NzFaU24zN2dwczNDWUdiUyt4RkhjZTJBakNTbUlYQWIxQjgKR0Z2WnV4UlB5QXU0YVBvT1J3RzM3NVBOM0VNNk83bzdxbjlYeExTZWRIMHExM2U0YkhYYm4rc2xOa1RIM2xmcwpLVnBOUUhVSUNDSW5vQ0llV1dwdnAwQnFoYjlKclRsbXd2c25zOHpZVDNiY3F5QXZHZGRnNUs3Y0MwRVJaem9ECnFJTkI3S05FVjQ1NmF0eDZVT3VYUlpKREMvaHNJUTZNaVBveUJacHRsK1ZIMEtQbEFIWGExb0FXZmNuL0U3MFYKK0RaeVBiMWxkQUdpb1hqditGd2h5VzZlWEVrQlBnPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||
</cert>
|
||||
<syslog/>
|
||||
</opnsense>
|
@ -0,0 +1,987 @@
|
||||
<?xml version="1.0"?>
|
||||
<opnsense>
|
||||
<theme>opnsense</theme>
|
||||
<sysctl>
|
||||
<item>
|
||||
<descr>Increase UFS read-ahead speeds to match the state of hard drives and NCQ.</descr>
|
||||
<tunable>vfs.read_max</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set the ephemeral port range to be lower.</descr>
|
||||
<tunable>net.inet.ip.portrange.first</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Drop packets to closed TCP ports without returning a RST</descr>
|
||||
<tunable>net.inet.tcp.blackhole</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Do not send ICMP port unreachable messages for closed UDP ports</descr>
|
||||
<tunable>net.inet.udp.blackhole</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Randomize the ID field in IP packets</descr>
|
||||
<tunable>net.inet.ip.random_id</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Source routing is another way for an attacker to try to reach non-routable addresses behind your box.
|
||||
It can also be used to probe for information about your internal networks. These functions come enabled
|
||||
as part of the standard FreeBSD core system.</descr>
|
||||
<tunable>net.inet.ip.sourceroute</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Source routing is another way for an attacker to try to reach non-routable addresses behind your box.
|
||||
It can also be used to probe for information about your internal networks. These functions come enabled
|
||||
as part of the standard FreeBSD core system.</descr>
|
||||
<tunable>net.inet.ip.accept_sourceroute</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>This option turns off the logging of redirect packets because there is no limit and this could fill
|
||||
up your logs consuming your whole hard drive.</descr>
|
||||
<tunable>net.inet.icmp.log_redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Drop SYN-FIN packets (breaks RFC1379, but nobody uses it anyway)</descr>
|
||||
<tunable>net.inet.tcp.drop_synfin</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable sending IPv6 redirects</descr>
|
||||
<tunable>net.inet6.ip6.redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable privacy settings for IPv6 (RFC 4941)</descr>
|
||||
<tunable>net.inet6.ip6.use_tempaddr</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Prefer privacy addresses and use them over the normal addresses</descr>
|
||||
<tunable>net.inet6.ip6.prefer_tempaddr</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Generate SYN cookies for outbound SYN-ACK packets</descr>
|
||||
<tunable>net.inet.tcp.syncookies</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum incoming/outgoing TCP datagram size (receive)</descr>
|
||||
<tunable>net.inet.tcp.recvspace</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum incoming/outgoing TCP datagram size (send)</descr>
|
||||
<tunable>net.inet.tcp.sendspace</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Do not delay ACK to try and piggyback it onto a data packet</descr>
|
||||
<tunable>net.inet.tcp.delayed_ack</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum outgoing UDP datagram size</descr>
|
||||
<tunable>net.inet.udp.maxdgram</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Handling of non-IP packets which are not passed to pfil (see if_bridge(4))</descr>
|
||||
<tunable>net.link.bridge.pfil_onlyip</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 1 to additionally filter on the physical interface for locally destined packets</descr>
|
||||
<tunable>net.link.bridge.pfil_local_phys</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 0 to disable filtering on the incoming and outgoing member interfaces.</descr>
|
||||
<tunable>net.link.bridge.pfil_member</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 1 to enable filtering on the bridge interface</descr>
|
||||
<tunable>net.link.bridge.pfil_bridge</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Allow unprivileged access to tap(4) device nodes</descr>
|
||||
<tunable>net.link.tap.user_open</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Randomize PID's (see src/sys/kern/kern_fork.c: sysctl_kern_randompid())</descr>
|
||||
<tunable>kern.randompid</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Disable CTRL+ALT+Delete reboot from keyboard.</descr>
|
||||
<tunable>hw.syscons.kbd_reboot</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable TCP extended debugging</descr>
|
||||
<tunable>net.inet.tcp.log_debug</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set ICMP Limits</descr>
|
||||
<tunable>net.inet.icmp.icmplim</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>TCP Offload Engine</descr>
|
||||
<tunable>net.inet.tcp.tso</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>UDP Checksums</descr>
|
||||
<tunable>net.inet.udp.checksum</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum socket buffer size</descr>
|
||||
<tunable>kern.ipc.maxsockbuf</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Page Table Isolation (Meltdown mitigation, requires reboot.)</descr>
|
||||
<tunable>vm.pmap.pti</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Disable Indirect Branch Restricted Speculation (Spectre V2 mitigation)</descr>
|
||||
<tunable>hw.ibrs_disable</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Hide processes running as other groups</descr>
|
||||
<tunable>security.bsd.see_other_gids</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Hide processes running as other users</descr>
|
||||
<tunable>security.bsd.see_other_uids</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable/disable sending of ICMP redirects in response to IP packets for which a better,
|
||||
and for the sender directly reachable, route and next hop is known.</descr>
|
||||
<tunable>net.inet.ip.redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum outgoing UDP datagram size</descr>
|
||||
<tunable>net.local.dgram.maxdgram</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
</sysctl>
|
||||
<system>
|
||||
<optimization>normal</optimization>
|
||||
<hostname>OPNsense</hostname>
|
||||
<domain>localdomain</domain>
|
||||
<dnsallowoverride>1</dnsallowoverride>
|
||||
<group>
|
||||
<name>admins</name>
|
||||
<description>System Administrators</description>
|
||||
<scope>system</scope>
|
||||
<gid>1999</gid>
|
||||
<member>0</member>
|
||||
<priv>page-all</priv>
|
||||
</group>
|
||||
<user>
|
||||
<name>root</name>
|
||||
<descr>System Administrator</descr>
|
||||
<scope>system</scope>
|
||||
<groupname>admins</groupname>
|
||||
<password>$2y$10$YRVoF4SgskIsrXOvOQjGieB9XqHPRra9R7d80B3BZdbY/j21TwBfS</password>
|
||||
<uid>0</uid>
|
||||
</user>
|
||||
<nextuid>2000</nextuid>
|
||||
<nextgid>2000</nextgid>
|
||||
<timezone>Etc/UTC</timezone>
|
||||
<timeservers>0.opnsense.pool.ntp.org 1.opnsense.pool.ntp.org 2.opnsense.pool.ntp.org 3.opnsense.pool.ntp.org</timeservers>
|
||||
<webgui>
|
||||
<protocol>https</protocol>
|
||||
<ssl-certref>6734d6c82dc59</ssl-certref>
|
||||
<port/>
|
||||
<ssl-ciphers/>
|
||||
<interfaces/>
|
||||
<compression/>
|
||||
</webgui>
|
||||
<disablenatreflection>yes</disablenatreflection>
|
||||
<usevirtualterminal>1</usevirtualterminal>
|
||||
<disableconsolemenu>1</disableconsolemenu>
|
||||
<disablevlanhwfilter>1</disablevlanhwfilter>
|
||||
<disablechecksumoffloading>1</disablechecksumoffloading>
|
||||
<disablesegmentationoffloading>1</disablesegmentationoffloading>
|
||||
<disablelargereceiveoffloading>1</disablelargereceiveoffloading>
|
||||
<ipv6allow>1</ipv6allow>
|
||||
<powerd_ac_mode>hadp</powerd_ac_mode>
|
||||
<powerd_battery_mode>hadp</powerd_battery_mode>
|
||||
<powerd_normal_mode>hadp</powerd_normal_mode>
|
||||
<bogons>
|
||||
<interval>monthly</interval>
|
||||
</bogons>
|
||||
<pf_share_forward>1</pf_share_forward>
|
||||
<lb_use_sticky>1</lb_use_sticky>
|
||||
<ssh>
|
||||
<group>admins</group>
|
||||
<noauto>1</noauto>
|
||||
<interfaces/>
|
||||
<kex/>
|
||||
<ciphers/>
|
||||
<macs/>
|
||||
<keys/>
|
||||
<keysig/>
|
||||
<enabled>enabled</enabled>
|
||||
<passwordauth>1</passwordauth>
|
||||
<permitrootlogin>1</permitrootlogin>
|
||||
</ssh>
|
||||
<rrdbackup>-1</rrdbackup>
|
||||
<netflowbackup>-1</netflowbackup>
|
||||
<firmware version="1.0.1">
|
||||
<mirror/>
|
||||
<flavour/>
|
||||
<plugins/>
|
||||
<type/>
|
||||
<subscription/>
|
||||
<reboot/>
|
||||
</firmware>
|
||||
<dnsserver>192.168.5.1</dnsserver>
|
||||
<language>en_US</language>
|
||||
<serialspeed>115200</serialspeed>
|
||||
<primaryconsole>video</primaryconsole>
|
||||
<secondaryconsole>serial</secondaryconsole>
|
||||
</system>
|
||||
<interfaces>
|
||||
<lan>
|
||||
<enable>1</enable>
|
||||
<if>le1</if>
|
||||
<ipaddr>10.100.8.1</ipaddr>
|
||||
<subnet>24</subnet>
|
||||
<ipaddrv6>track6</ipaddrv6>
|
||||
<subnetv6>64</subnetv6>
|
||||
<media/>
|
||||
<mediaopt/>
|
||||
<track6-interface>wan</track6-interface>
|
||||
<track6-prefix-id>0</track6-prefix-id>
|
||||
</lan>
|
||||
<lo0>
|
||||
<internal_dynamic>1</internal_dynamic>
|
||||
<descr>Loopback</descr>
|
||||
<enable>1</enable>
|
||||
<if>lo0</if>
|
||||
<ipaddr>127.0.0.1</ipaddr>
|
||||
<ipaddrv6>::1</ipaddrv6>
|
||||
<subnet>8</subnet>
|
||||
<subnetv6>128</subnetv6>
|
||||
<type>none</type>
|
||||
<virtual>1</virtual>
|
||||
</lo0>
|
||||
<wan>
|
||||
<if>le0</if>
|
||||
<descr/>
|
||||
<enable>1</enable>
|
||||
<spoofmac/>
|
||||
<ipaddr>dhcp</ipaddr>
|
||||
<dhcphostname/>
|
||||
<alias-address/>
|
||||
<alias-subnet>32</alias-subnet>
|
||||
<dhcprejectfrom/>
|
||||
<adv_dhcp_pt_timeout/>
|
||||
<adv_dhcp_pt_retry/>
|
||||
<adv_dhcp_pt_select_timeout/>
|
||||
<adv_dhcp_pt_reboot/>
|
||||
<adv_dhcp_pt_backoff_cutoff/>
|
||||
<adv_dhcp_pt_initial_interval/>
|
||||
<adv_dhcp_pt_values>SavedCfg</adv_dhcp_pt_values>
|
||||
<adv_dhcp_send_options/>
|
||||
<adv_dhcp_request_options/>
|
||||
<adv_dhcp_required_options/>
|
||||
<adv_dhcp_option_modifiers/>
|
||||
<adv_dhcp_config_advanced/>
|
||||
<adv_dhcp_config_file_override/>
|
||||
<adv_dhcp_config_file_override_path/>
|
||||
</wan>
|
||||
</interfaces>
|
||||
<dhcpd>
|
||||
<lan>
|
||||
<enable/>
|
||||
<range>
|
||||
<from>10.100.8.10</from>
|
||||
<to>10.100.8.245</to>
|
||||
</range>
|
||||
<staticmap>
|
||||
<mac>d8:5e:d3:e7:2c:8c</mac>
|
||||
<ipaddr>10.100.8.15</ipaddr>
|
||||
<hostname>rtx4090</hostname>
|
||||
<winsserver/>
|
||||
<dnsserver/>
|
||||
<ntpserver/>
|
||||
</staticmap>
|
||||
</lan>
|
||||
</dhcpd>
|
||||
<snmpd>
|
||||
<syslocation/>
|
||||
<syscontact/>
|
||||
<rocommunity>public</rocommunity>
|
||||
</snmpd>
|
||||
<nat>
|
||||
<outbound>
|
||||
<mode>automatic</mode>
|
||||
</outbound>
|
||||
</nat>
|
||||
<filter>
|
||||
<rule uuid="f79eded0-3c11-4f57-9aaa-55d4888589fa">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>wanip</network>
|
||||
<port>80</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518072.7612</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518072.7612</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="4a5e7b65-0d7f-4452-8a29-2ec61a47ec19">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>wanip</network>
|
||||
<port>443</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518084.0639</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518084.0639</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="0465308d-8605-466c-bcb4-95eeb989251a">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp/udp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<any>1</any>
|
||||
<port>22</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518114.2801</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518114.2801</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="2df05591-13e7-4d91-a1b8-d25e338ada5f">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<descr>Allow ping</descr>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>icmp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>(self)</network>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518356.7559</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518311.7033</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="f2ee612c-c290-4445-8045-df82a86db0e5">
|
||||
<type>pass</type>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<descr>Default allow LAN to any rule</descr>
|
||||
<interface>lan</interface>
|
||||
<source>
|
||||
<network>lan</network>
|
||||
</source>
|
||||
<destination>
|
||||
<any/>
|
||||
</destination>
|
||||
</rule>
|
||||
<rule uuid="b21f808a-6a4a-4cd6-9a83-1660cc8ea58b">
|
||||
<type>pass</type>
|
||||
<ipprotocol>inet6</ipprotocol>
|
||||
<descr>Default allow LAN IPv6 to any rule</descr>
|
||||
<interface>lan</interface>
|
||||
<source>
|
||||
<network>lan</network>
|
||||
</source>
|
||||
<destination>
|
||||
<any/>
|
||||
</destination>
|
||||
</rule>
|
||||
</filter>
|
||||
<rrd>
|
||||
<enable/>
|
||||
</rrd>
|
||||
<ntpd>
|
||||
<prefer>0.opnsense.pool.ntp.org</prefer>
|
||||
</ntpd>
|
||||
<widgets>
|
||||
<sequence>system_information-container:00000000-col3:show,services_status-container:00000001-col4:show,gateways-container:00000002-col4:show,interface_list-container:00000003-col4:show</sequence>
|
||||
<column_count>2</column_count>
|
||||
</widgets>
|
||||
<revision>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731534516.7156</time>
|
||||
<description>/interfaces.php made changes</description>
|
||||
</revision>
|
||||
<OPNsense>
|
||||
<DHCRelay version="1.0.1"/>
|
||||
<wireguard>
|
||||
<client version="1.0.0">
|
||||
<clients/>
|
||||
</client>
|
||||
<general version="0.0.1">
|
||||
<enabled>0</enabled>
|
||||
</general>
|
||||
<server version="1.0.0">
|
||||
<servers/>
|
||||
</server>
|
||||
</wireguard>
|
||||
<IPsec version="1.0.1">
|
||||
<general>
|
||||
<enabled/>
|
||||
</general>
|
||||
<keyPairs/>
|
||||
<preSharedKeys/>
|
||||
</IPsec>
|
||||
<Swanctl version="1.0.0">
|
||||
<Connections/>
|
||||
<locals/>
|
||||
<remotes/>
|
||||
<children/>
|
||||
<Pools/>
|
||||
<VTIs/>
|
||||
<SPDs/>
|
||||
</Swanctl>
|
||||
<OpenVPNExport version="0.0.1">
|
||||
<servers/>
|
||||
</OpenVPNExport>
|
||||
<OpenVPN version="1.0.0">
|
||||
<Overwrites/>
|
||||
<Instances/>
|
||||
<StaticKeys/>
|
||||
</OpenVPN>
|
||||
<captiveportal version="1.0.2">
|
||||
<zones/>
|
||||
<templates/>
|
||||
</captiveportal>
|
||||
<cron version="1.0.4">
|
||||
<jobs/>
|
||||
</cron>
|
||||
<Firewall>
|
||||
<Lvtemplate version="0.0.1">
|
||||
<templates/>
|
||||
</Lvtemplate>
|
||||
<Alias version="1.0.1">
|
||||
<geoip>
|
||||
<url/>
|
||||
</geoip>
|
||||
<aliases/>
|
||||
</Alias>
|
||||
<Category version="1.0.0">
|
||||
<categories/>
|
||||
</Category>
|
||||
<Filter version="1.0.4">
|
||||
<rules/>
|
||||
<snatrules/>
|
||||
<npt/>
|
||||
<onetoone/>
|
||||
</Filter>
|
||||
</Firewall>
|
||||
<Netflow version="1.0.1">
|
||||
<capture>
|
||||
<interfaces/>
|
||||
<egress_only/>
|
||||
<version>v9</version>
|
||||
<targets/>
|
||||
</capture>
|
||||
<collect>
|
||||
<enable>0</enable>
|
||||
</collect>
|
||||
<activeTimeout>1800</activeTimeout>
|
||||
<inactiveTimeout>15</inactiveTimeout>
|
||||
</Netflow>
|
||||
<IDS version="1.0.9">
|
||||
<rules/>
|
||||
<policies/>
|
||||
<userDefinedRules/>
|
||||
<files/>
|
||||
<fileTags/>
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<ips>0</ips>
|
||||
<promisc>0</promisc>
|
||||
<interfaces>wan</interfaces>
|
||||
<homenet>192.168.0.0/16,10.0.0.0/8,172.16.0.0/12</homenet>
|
||||
<defaultPacketSize/>
|
||||
<UpdateCron/>
|
||||
<AlertLogrotate>W0D23</AlertLogrotate>
|
||||
<AlertSaveLogs>4</AlertSaveLogs>
|
||||
<MPMAlgo/>
|
||||
<detect>
|
||||
<Profile/>
|
||||
<toclient_groups/>
|
||||
<toserver_groups/>
|
||||
</detect>
|
||||
<syslog>0</syslog>
|
||||
<syslog_eve>0</syslog_eve>
|
||||
<LogPayload>0</LogPayload>
|
||||
<verbosity/>
|
||||
</general>
|
||||
</IDS>
|
||||
<Interfaces>
|
||||
<loopbacks version="1.0.0"/>
|
||||
<neighbors version="1.0.0"/>
|
||||
<vxlans version="1.0.2"/>
|
||||
</Interfaces>
|
||||
<Kea>
|
||||
<ctrl_agent version="0.0.1">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<http_host>127.0.0.1</http_host>
|
||||
<http_port>8000</http_port>
|
||||
</general>
|
||||
</ctrl_agent>
|
||||
<dhcp4 version="1.0.0">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<interfaces/>
|
||||
<valid_lifetime>4000</valid_lifetime>
|
||||
<fwrules>1</fwrules>
|
||||
</general>
|
||||
<ha>
|
||||
<enabled>0</enabled>
|
||||
<this_server_name/>
|
||||
</ha>
|
||||
<subnets/>
|
||||
<reservations/>
|
||||
<ha_peers/>
|
||||
</dhcp4>
|
||||
</Kea>
|
||||
<monit version="1.0.13">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<interval>120</interval>
|
||||
<startdelay>120</startdelay>
|
||||
<mailserver>127.0.0.1</mailserver>
|
||||
<port>25</port>
|
||||
<username/>
|
||||
<password/>
|
||||
<ssl>0</ssl>
|
||||
<sslversion>auto</sslversion>
|
||||
<sslverify>1</sslverify>
|
||||
<logfile/>
|
||||
<statefile/>
|
||||
<eventqueuePath/>
|
||||
<eventqueueSlots/>
|
||||
<httpdEnabled>0</httpdEnabled>
|
||||
<httpdUsername>root</httpdUsername>
|
||||
<httpdPassword/>
|
||||
<httpdPort>2812</httpdPort>
|
||||
<httpdAllow/>
|
||||
<mmonitUrl/>
|
||||
<mmonitTimeout>5</mmonitTimeout>
|
||||
<mmonitRegisterCredentials>1</mmonitRegisterCredentials>
|
||||
</general>
|
||||
<alert uuid="15f1e9ca-5dd5-4b20-b595-b6b4f82245d0">
|
||||
<enabled>0</enabled>
|
||||
<recipient>root@localhost.local</recipient>
|
||||
<noton>0</noton>
|
||||
<events/>
|
||||
<format/>
|
||||
<reminder/>
|
||||
<description/>
|
||||
</alert>
|
||||
<service uuid="c1e99556-91f5-4dbf-81d7-7915a3213de9">
|
||||
<enabled>1</enabled>
|
||||
<name>$HOST</name>
|
||||
<description/>
|
||||
<type>system</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path/>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>91b4e409-211b-49d5-9fa3-dc9054106646,cbe9cb72-e8c2-4740-990c-abcc486b0654,c0708923-88de-4178-abdd-819737440ce0,e887125d-c5d2-45e6-b40d-2c400d5449d1</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="7513f341-7d21-4f11-903f-30d07b3aa41e">
|
||||
<enabled>1</enabled>
|
||||
<name>RootFs</name>
|
||||
<description/>
|
||||
<type>filesystem</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>cc3684f2-701e-4de4-883d-803e08cf47b6</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="f99ada79-ba1a-4ee1-81f1-ef570e8e5ea9">
|
||||
<enabled>0</enabled>
|
||||
<name>carp_status_change</name>
|
||||
<description/>
|
||||
<type>custom</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/usr/local/opnsense/scripts/OPNsense/Monit/carp_status</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>f2d734cb-2a0e-4375-9460-11bdd5b20503</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="dca8a81f-d389-4baa-b477-8b348194fd25">
|
||||
<enabled>0</enabled>
|
||||
<name>gateway_alert</name>
|
||||
<description/>
|
||||
<type>custom</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/usr/local/opnsense/scripts/OPNsense/Monit/gateway_alert</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>865105a2-cbea-4a01-9979-c67818da9d99</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<test uuid="ea6b821c-4f30-455b-bd5b-23a6f0c20554">
|
||||
<name>Ping</name>
|
||||
<type>NetworkPing</type>
|
||||
<condition>failed ping</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="16186b38-0e13-4cc3-ad18-ccc3fcc91837">
|
||||
<name>NetworkLink</name>
|
||||
<type>NetworkInterface</type>
|
||||
<condition>failed link</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="69117d4d-8c41-4712-97c0-87b4fa7c9837">
|
||||
<name>NetworkSaturation</name>
|
||||
<type>NetworkInterface</type>
|
||||
<condition>saturation is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="91b4e409-211b-49d5-9fa3-dc9054106646">
|
||||
<name>MemoryUsage</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>memory usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="cbe9cb72-e8c2-4740-990c-abcc486b0654">
|
||||
<name>CPUUsage</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>cpu usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="c0708923-88de-4178-abdd-819737440ce0">
|
||||
<name>LoadAvg1</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (1min) is greater than 4</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="e887125d-c5d2-45e6-b40d-2c400d5449d1">
|
||||
<name>LoadAvg5</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (5min) is greater than 3</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="c34aab30-9194-4667-b516-004b9c90c1c0">
|
||||
<name>LoadAvg15</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (15min) is greater than 2</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="cc3684f2-701e-4de4-883d-803e08cf47b6">
|
||||
<name>SpaceUsage</name>
|
||||
<type>SpaceUsage</type>
|
||||
<condition>space usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="f2d734cb-2a0e-4375-9460-11bdd5b20503">
|
||||
<name>ChangedStatus</name>
|
||||
<type>ProgramStatus</type>
|
||||
<condition>changed status</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="865105a2-cbea-4a01-9979-c67818da9d99">
|
||||
<name>NonZeroStatus</name>
|
||||
<type>ProgramStatus</type>
|
||||
<condition>status != 0</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
</monit>
|
||||
<Gateways version="1.0.0">
|
||||
<gateway_item uuid="a6ea102d-68bb-430f-af8b-269d52498fe1">
|
||||
<disabled>0</disabled>
|
||||
<name>WAN_GW</name>
|
||||
<descr>Interface WAN Gateway</descr>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<gateway>172.17.0.1</gateway>
|
||||
<defaultgw>1</defaultgw>
|
||||
<fargw>0</fargw>
|
||||
<monitor_disable>1</monitor_disable>
|
||||
<monitor_noroute/>
|
||||
<monitor/>
|
||||
<force_down/>
|
||||
<priority>255</priority>
|
||||
<weight>1</weight>
|
||||
<latencylow/>
|
||||
<latencyhigh/>
|
||||
<losslow/>
|
||||
<losshigh/>
|
||||
<interval/>
|
||||
<time_period/>
|
||||
<loss_interval/>
|
||||
<data_length/>
|
||||
</gateway_item>
|
||||
</Gateways>
|
||||
<Syslog version="1.0.2">
|
||||
<general>
|
||||
<enabled>1</enabled>
|
||||
<loglocal>1</loglocal>
|
||||
<maxpreserve>31</maxpreserve>
|
||||
<maxfilesize/>
|
||||
</general>
|
||||
<destinations/>
|
||||
</Syslog>
|
||||
<TrafficShaper version="1.0.3">
|
||||
<pipes/>
|
||||
<queues/>
|
||||
<rules/>
|
||||
</TrafficShaper>
|
||||
<unboundplus version="1.0.9">
|
||||
<general>
|
||||
<enabled>1</enabled>
|
||||
<port>53</port>
|
||||
<stats/>
|
||||
<active_interface/>
|
||||
<dns64/>
|
||||
<dns64prefix/>
|
||||
<noarecords/>
|
||||
<regdhcp/>
|
||||
<regdhcpdomain/>
|
||||
<regdhcpstatic/>
|
||||
<noreglladdr6/>
|
||||
<noregrecords/>
|
||||
<txtsupport/>
|
||||
<cacheflush/>
|
||||
<local_zone_type>transparent</local_zone_type>
|
||||
<outgoing_interface/>
|
||||
<enable_wpad/>
|
||||
</general>
|
||||
<advanced>
|
||||
<hideidentity/>
|
||||
<hideversion/>
|
||||
<prefetch/>
|
||||
<prefetchkey/>
|
||||
<aggressivensec>1</aggressivensec>
|
||||
<serveexpired/>
|
||||
<serveexpiredreplyttl/>
|
||||
<serveexpiredttl/>
|
||||
<serveexpiredttlreset/>
|
||||
<serveexpiredclienttimeout/>
|
||||
<qnameminstrict/>
|
||||
<extendedstatistics/>
|
||||
<logqueries/>
|
||||
<logreplies/>
|
||||
<logtagqueryreply/>
|
||||
<logservfail/>
|
||||
<loglocalactions/>
|
||||
<logverbosity>1</logverbosity>
|
||||
<valloglevel>0</valloglevel>
|
||||
<privatedomain/>
|
||||
<privateaddress>0.0.0.0/8,10.0.0.0/8,100.64.0.0/10,169.254.0.0/16,172.16.0.0/12,192.0.2.0/24,192.168.0.0/16,198.18.0.0/15,198.51.100.0/24,203.0.113.0/24,233.252.0.0/24,::1/128,2001:db8::/32,fc00::/8,fd00::/8,fe80::/10</privateaddress>
|
||||
<insecuredomain/>
|
||||
<msgcachesize/>
|
||||
<rrsetcachesize/>
|
||||
<outgoingnumtcp/>
|
||||
<incomingnumtcp/>
|
||||
<numqueriesperthread/>
|
||||
<outgoingrange/>
|
||||
<jostletimeout/>
|
||||
<cachemaxttl/>
|
||||
<cachemaxnegativettl/>
|
||||
<cacheminttl/>
|
||||
<infrahostttl/>
|
||||
<infrakeepprobing/>
|
||||
<infracachenumhosts/>
|
||||
<unwantedreplythreshold/>
|
||||
</advanced>
|
||||
<acls>
|
||||
<default_action>allow</default_action>
|
||||
</acls>
|
||||
<dnsbl>
|
||||
<enabled>0</enabled>
|
||||
<safesearch/>
|
||||
<type/>
|
||||
<lists/>
|
||||
<whitelists/>
|
||||
<blocklists/>
|
||||
<wildcards/>
|
||||
<address/>
|
||||
<nxdomain/>
|
||||
</dnsbl>
|
||||
<forwarding>
|
||||
<enabled/>
|
||||
</forwarding>
|
||||
<dots/>
|
||||
<hosts/>
|
||||
<aliases/>
|
||||
<domains/>
|
||||
</unboundplus>
|
||||
</OPNsense>
|
||||
<hasync version="1.0.0">
|
||||
<disablepreempt>0</disablepreempt>
|
||||
<disconnectppps>0</disconnectppps>
|
||||
<pfsyncenabled>0</pfsyncenabled>
|
||||
<pfsyncinterface>lan</pfsyncinterface>
|
||||
<pfsyncpeerip/>
|
||||
<pfsyncversion>1400</pfsyncversion>
|
||||
<synchronizetoip/>
|
||||
<username/>
|
||||
<password/>
|
||||
<syncitems/>
|
||||
</hasync>
|
||||
<openvpn/>
|
||||
<ifgroups version="1.0.0"/>
|
||||
<gifs version="1.0.0">
|
||||
<gif/>
|
||||
</gifs>
|
||||
<gres version="1.0.0">
|
||||
<gre/>
|
||||
</gres>
|
||||
<laggs version="1.0.0">
|
||||
<lagg/>
|
||||
</laggs>
|
||||
<virtualip version="1.0.0">
|
||||
<vip/>
|
||||
</virtualip>
|
||||
<vlans version="1.0.0">
|
||||
<vlan/>
|
||||
</vlans>
|
||||
<staticroutes version="1.0.0">
|
||||
<route/>
|
||||
</staticroutes>
|
||||
<bridges>
|
||||
<bridged/>
|
||||
</bridges>
|
||||
<ppps>
|
||||
<ppp/>
|
||||
</ppps>
|
||||
<wireless>
|
||||
<clone/>
|
||||
</wireless>
|
||||
<ca/>
|
||||
<dhcpdv6/>
|
||||
<cert uuid="547102e9-23ba-48b8-8af8-64be61049e96">
|
||||
<refid>6734d13fa9e4a</refid>
|
||||
<descr>Web GUI TLS certificate</descr>
|
||||
<caref/>
|
||||
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhIakNDQlFhZ0F3SUJBZ0lVSUhVRkpwc253VGtzYWRrZmRDNUp1SDhqWnZNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZa3hIVEFiQmdOVkJBTU1GRTlRVG5ObGJuTmxMbXh2WTJGc1pHOXRZV2x1TVFzd0NRWURWUVFHRXdKTwpUREVWTUJNR0ExVUVDQXdNV25WcFpDMUliMnhzWVc1a01SVXdFd1lEVlFRSERBeE5hV1JrWld4b1lYSnVhWE14CkxUQXJCZ05WQkFvTUpFOVFUbk5sYm5ObElITmxiR1l0YzJsbmJtVmtJSGRsWWlCalpYSjBhV1pwWTJGMFpUQWUKRncweU5ERXhNVE14TmpFNE1EbGFGdzB5TlRFeU1UVXhOakU0TURsYU1JR0pNUjB3R3dZRFZRUUREQlJQVUU1egpaVzV6WlM1c2IyTmhiR1J2YldGcGJqRUxNQWtHQTFVRUJoTUNUa3d4RlRBVEJnTlZCQWdNREZwMWFXUXRTRzlzCmJHRnVaREVWTUJNR0ExVUVCd3dNVFdsa1pHVnNhR0Z5Ym1sek1TMHdLd1lEVlFRS0RDUlBVRTV6Wlc1elpTQnoKWld4bUxYTnBaMjVsWkNCM1pXSWdZMlZ5ZEdsbWFXTmhkR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQwpEd0F3Z2dJS0FvSUNBUURKU1FlZ1RYckp5dDVWYmk0Rk9IeHJrOXhxQ21FRU54V2pINVVwNDBFK3hjUzZQU1NyCkNEclc3ZDlYcVJkOEpEZENtdGtLRGlMYWNaUzJMUm1abnd6VnRzZGtBR2pOYm5OM1hSNmlFajdGL0JnbVBlcDEKU2pJWnBTZzNkOS9YeHFPQTNZQllzTS9uUk9vWHlmTHcycFJOLzhHVjN3MHoxbVFZUitMZWI3UTFuc1c3dTJ5NworVHc5STZGU0J4bkdaR3RyUFl5NkVBb0NMdm1GQnFCYWxkWTQ2ejdlWjlIRkZXaE8ybWpaUzVPdTE3ZVozVHBxCnBRTVB1T2JxV3FyaE0xdjVjdmJodU5kREhNZ3ZVVFVnQ0RNK2FkS3dIc0dNNGw5ZGtOQTgxdGlJcXpzN1BqcjEKUm0wMlVuUXRneW8zY3hPRXVsYk9nU0hsdGhTMmtUMXE2UmhyemYvRGRJSEhta1RROGtwWVloWGc0VmpMQVdpSQpQbm9ncnZsRUlWMERhQ3ZEMjZiRkRDbVkxc29FbDV1NGtYanJScDRXK29NUVRHeG80NzFMQnNBMlh1Si82ZFJBCkJMVzh4dXBFODhEYmlrWW51NVdQaUp6ZXh4UVIyNU1FQVd6TCtKK0lubFExbmpMVWwyN3R0c1VQQ1VjL3c0NXoKcHBERHYwZnU0Nnp1S3EzY0VWRitiREsrQWdlT0Q2SXNzUjVRRTdFNVdkWjYrNWl6ZHB4eWdUeGh0L1k1RlBkSApHQjlCbDFrejR4bHRhczlvbmZrSDFkVHk3dzFNck43Z1l5WjgvS0pMWW9EY2NBOVFuNGt6bGtPeFVUMENuS1ExCmtWNk90aFRsVFgzK2duaUpJK3RXWUQ5bTRldXNzYWN1anpyWDl5TTNZcEloMnZqODJ0NHpPNjIrNFFJREFRQUIKbzRJQmVqQ0NBWFl3Q1FZRFZSMFRCQUl3QURBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQmtBd05BWUpZSVpJQVliNApRZ0VOQkNjV0pVOVFUbk5sYm5ObElFZGxibVZ5WVhSbFpDQlRaWEoyWlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEClZSME9CQllFRkJRZytucWI5QW9HSWtoTUxhNHFzWGRvY0JGcE1JR3pCZ05WSFNNRWdhc3dnYWloZ1kra2dZd3cKZ1lreEhUQWJCZ05WQkFNTUZFOVFUbk5sYm5ObExteHZZMkZzWkc5dFlXbHVNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVUlIVUYKSnBzbndUa3NhZGtmZEM1SnVIOGpadk13SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQwpNQXNHQTFVZER3UUVBd0lGb0RBZkJnTlZIUkVFR0RBV2doUlBVRTV6Wlc1elpTNXNiMk5oYkdSdmJXRnBiakFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQUZqNlQ1MmRIUklVMHJuZDE0d2dob2tjUkdrK0hIQloyTGlDRHpUeUwKNHdCeTJ1ZXJXQWdvYUZzeUlNQzhwWTBhWlc4TFlSd1BtRVB0OXlUS09ZZzF0NWtOUnk2RkF5akszeis5TGZTQwoxRlFpb0pma3FHRnhoc1IxV1R5RjBGNmJmM2tZRDZ4OWw1dEdqMXF3SndrekZWZWcvZGNtUVhvRTBmUDRqSFFvCmgxWXdiZ3pTa084TzRLUVhuWXVRM3g0bWdoZnBvR0hQM2xINlcybDJlWHpqSzllRjJtUG1ZS0p1M3JpSnkvL3gKRzhQWXBYNlNTN3RoVnNNeHF3cGJHbURXQXRuSnNrSmVsNDI1WUdOYlZ4YTNPOHE3RWxLNGFoNXpmai8wRnVwTgo3SnlqMWQyZjZFck14WlFnUi9EdmlUVnhISytRY1lBRXBqU2ZmZzBrRStpS1BlN0VYTVk1VU1aZUFTK1ZteG1LCjBPOWxaQXNpWUlEMzkwVjNTaDZxYjhoL2xMZ0V2NCtSNUw1VEpFaldYc0dQSUpGaHJNSFJWR1lhV3JIYWx3eHYKNjE5NFlpSXBEaUlHSVVSWGN1U3dNcndIQzN0bms2QVo2OW5CczVXT1JYM0NxOVhRRnVrVlA5eUMxQnRuSmFwbQpubUMzK3NtTTErRjkxUXlkVXJtbUxPNUVwUmtTMitBcmRTSklUR1NRNWt4L3VLNjhzV0QzVVdNNVRibUxrcWdOCkt6djZjemVCbzJiVExDT0JKUWJ4STFCckRPTUFMSDlCdXdUamVXdUVtWE9TWE1lTDFsejdhL2JZKzJxa1BSOVAKTE5IekE2QXZlVmxucDNaeFdqMjZFK3dwYnU5cHBaY0QzRGVHRnRnZzVJbUJ2ZDNWbjJ6UVc4a1ZMT1ZBdllSawptdWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</crt>
|
||||
<csr/>
|
||||
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpSQUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1M0d2dna3FBZ0VBQW9JQ0FRREpTUWVnVFhySnl0NVYKYmk0Rk9IeHJrOXhxQ21FRU54V2pINVVwNDBFK3hjUzZQU1NyQ0RyVzdkOVhxUmQ4SkRkQ210a0tEaUxhY1pTMgpMUm1abnd6VnRzZGtBR2pOYm5OM1hSNmlFajdGL0JnbVBlcDFTaklacFNnM2Q5L1h4cU9BM1lCWXNNL25ST29YCnlmTHcycFJOLzhHVjN3MHoxbVFZUitMZWI3UTFuc1c3dTJ5NytUdzlJNkZTQnhuR1pHdHJQWXk2RUFvQ0x2bUYKQnFCYWxkWTQ2ejdlWjlIRkZXaE8ybWpaUzVPdTE3ZVozVHBxcFFNUHVPYnFXcXJoTTF2NWN2Ymh1TmRESE1ndgpVVFVnQ0RNK2FkS3dIc0dNNGw5ZGtOQTgxdGlJcXpzN1BqcjFSbTAyVW5RdGd5bzNjeE9FdWxiT2dTSGx0aFMyCmtUMXE2UmhyemYvRGRJSEhta1RROGtwWVloWGc0VmpMQVdpSVBub2dydmxFSVYwRGFDdkQyNmJGRENtWTFzb0UKbDV1NGtYanJScDRXK29NUVRHeG80NzFMQnNBMlh1Si82ZFJBQkxXOHh1cEU4OERiaWtZbnU1V1BpSnpleHhRUgoyNU1FQVd6TCtKK0lubFExbmpMVWwyN3R0c1VQQ1VjL3c0NXpwcEREdjBmdTQ2enVLcTNjRVZGK2JESytBZ2VPCkQ2SXNzUjVRRTdFNVdkWjYrNWl6ZHB4eWdUeGh0L1k1RlBkSEdCOUJsMWt6NHhsdGFzOW9uZmtIMWRUeTd3MU0Kck43Z1l5WjgvS0pMWW9EY2NBOVFuNGt6bGtPeFVUMENuS1Exa1Y2T3RoVGxUWDMrZ25pSkkrdFdZRDltNGV1cwpzYWN1anpyWDl5TTNZcEloMnZqODJ0NHpPNjIrNFFJREFRQUJBb0lDQUNPNnZpc1BIY3pzb1NjK2dkWkU1dGNNCnZkc240UDFIenVRd0VzRUcrVG1zanVWMVBZbExrbkE4OU1DQmdDejEyOFpMcU51ZlUwSDkxK1Uzbjd2MGJ1bVAKd3BpR2R4UUNOMlpZaGZ2RWE5YW1qMTNZYjBJbks3b0FKbUdrT254NW91UFl6YlBRblBNRE9WK0VKa2JwTWRxZgptOHdmOWg2OXYzSk03bUZJS0UrOVVZR252UjhuMkhETTNwR3FONEhQS1A4MkE0RXlvQ2d2a1BTelRxc052bU5ICnBOY0RURW5rNlNsWUhUVDNOSzJjVnBldUhMUzUrazlqNWI5elhUSlE5TkpVZlN6bnEvUmFpMUZVNDY1K0xpUjEKMGVPWDdnajFWUExOcGgwcWtQQy9ubW0vZStVMmZXUGZZb2FDcWkrQ0VwU2twQXlQZ1FZZTJsSG0rYVU4MzZ2UQpuaHZuL0p5ZHJDL1NyTUFZaXpOZFYyZjlHTkNwcE1SbUZyOS9saVJiNEFpSzRLSDRETGdSRUxHaDJLNzJuOFRLCkxUSVhIV3RacisyMWU4c0Mxbm5MSENnK21wMHBvSWJsbEtoYk9VTmVxR09yWm95NFBXdDZMQndFYzN0MG1wVEMKODhiSUpqMzFCQngzTGE1SUE5b0FNRi9lbHJYdFhhVnl4bm5yTHdjYzFNVWpCV20rZDVqbC9WOEdIcEJRd3pXYwpPNWdNSXlQNUIvdzBacUcyZjV1akZkOHo4dElmcEFRRTJSbDNxRUFYNU1NY1JQaFlTNDJqTWl4czc3TmtOVldQCkpqUVoxVDVXQTVKOUxEL2FKRkplQ2MvbjhpNldOQ3FzdEQ5OVNPTCsrTTBFQTlka2lLNWtOcXFZeXZuRG9SZVcKSW84eXhvVnpObURsWjBkSU9UUzlBb0lCQVFEb2tvMWxPS05FNlBWWmRRU3lmS0JOTEZNcEl1V1VVZmp0ODU4awpJTTB0TnNyS0d2N3NmYkt0dlMvOWgwMGluU2FyWTJ4amVETG91WEI5VzdKY1B1NjRoNHYwek1lbXRhdDRyTUJnClA5bkQ3MW00dERqS2ZrZDAza2tUbk4ySTBxYkwzeFVoTjNEQlJZTU9veDFMa2M4MFFFMHhSUEM1YmRJaXcwemEKTWdtK1dOZVY1VEZoSkpQZ2dVRVo5U1A2aWV1VEY0OW9wRGNWdGUwQ0I0WnFUaTRWb3YvZFVDWGpNK0djRnNWdgpPWTZYTE9KTmRldHdnUVNkd1hlSzB1WlBpWnVKTGlsTEg4OFVKYWNoQThDZW1SclMxRUtxWElwK2dkQWV4MnhVCmY5amRMMGF2SlJEY0xqWlhETXBvWlJpc0JoWVArZzY3VHZza3FscDh4M2p2STlWVkFvSUJBUURkajZrdWNLM0MKYXprMzlqYllvM3RFZ0R5L2VGNnBjWFlpK21Ba1ZNRk9vSWJ5cmNyN3BqSnRMNFMyMEFDRmpBUGFQT042dWVVWQpQQm92dC9QODB1V1c5cGZCK29mRmdadzRqc3hLWFY4eEJmOVdLWVZndFBsOHhIL1RJcERTMjhVTlowNDlhUW4vCjlCRzNac0lyenk3RzFLRTZPLzBMMnVmMnFyaUxxRFQyV3dsdFVsbWs2Ym5NeThkR0sra1JLcFhvSm1RTlNHRHoKOXd4blU2ZmZ1NDdDLzRYMHRIVk1MVFVneFh4djdqN3BpSzI4dzBuZ1N5S3ozV0IzWTJwaFVsZEJIdEprQko1RQpoRm8zMXJCVDU5enhkb2crYXh1bkh4S3EySGFHRkt0ZUZ6RGpkTTFpQzE3bWNtWXBzR2tuenA0cjRjZm5FYTFSCko4Wmo5ZVFQaEVOZEFvSUJBUUN3d2hsbXNkb2MySFVJVFZDSm13QjJSdGJaYitWT2lkS0lmdDBYcHpwcFA3aDIKVEhndEl3ZDIxayt2LzNJWGVaclhMWlJHTVNkNEN1QTgxa0ZEckt6Z1lGeDFiR0hkQ1R2T1ZuVkxjWnUvTjUxWQpMTmp3eFhMbmxyMnhnMG8zMytuWERyQlBjNFJsejcvZ2t3WUQxa2pGckkwK2dlZjI5a2w4RkRUSHJMb05DaGFuCm5PNmZweDRneGZ2Rmo3T05pZDhhQnhEK2RiaEw3dDIzNmlJMWp6K2xRQ0g0Z1I2YWhHYldxOVBZU2NWZWprVmMKbTkrWnZPVFdSU0RteUkwMExDQ2k3UXVEUmlTcmFrYVFaL3F3VHlxOHk0ZnpWS3dKby8yYU52VFZiK2xSaWNuTgorWHpMNnU5dno0L1NNZXZEYWtqQVVjdDZmbmVQa1UxK2dsZ2VZSHlWQW9JQkFRRFJtYW0wVEZhbFdXaHMvNWtOClEwTkhINFhZb1JmMGRta0xXQStCNzBoY2lOS0JYRlp0ME9GZGw1bVdsSm9adk1hY1BBUDd3MGJ1c1ZVWWxZN1YKTy9LRTZVM1I3WjlxQWw1Mnh1aU81Vnc3ZFhBRDVBM1EyZ1EzdTNFdG5VS2lwOVA0QlNYb1JLbDRJVDV0WVdJSgpyZHVUciszQ3VLT0FCcHh4Snpxa3JBRkdtZ01HRCtUTWRXd1hTU1NBeHVPYklNMW1MSU4wYVdlSEJNMFFKdnptClZIb1BFVXA1b0FwamdWVUVacTk4K0VjK0NOWkxmL2d3bndQNllsQnpRWEtQRlNXRWJwTWNtWjNjTmRWZmc5T1YKM1FDUTBkQzhNL21hRlhSRWVibE95TmtCanpEcHpVTExJUFNyVDhoRVlpWm95VGVyVGRJZVVBUEZoYnBTTUhtTApFRlhsQW9JQkFRQ0VUdVJQRHZvMC9tdDhyTzhLNENsamtuU0gxZ1FBSjFha3U3UXg3NUJUTDB6OWRNY2lMK1JLCng1R1lFTW1wcUtNb2FPbWc0WFVRMVRlQ2Vic1R0NjMyWXp6cmNCU0d1RzVnN1o0UUVublUzRXU5QklIMUVSL2gKSEk0NWowU0xNRUpObkNiTkpnRVNRRUFCbzN3cHhrRTdiRGlNdTVPOXVqMlFRVTlTTm94QkFmbVFXRDJJaU1BRQpWYzV3QTNZajBMdElSYkJmdzNBTE9uNlRSc2xucy9JMnd2Z1RCQW9sU3NZbEtEK0NRY3hDZldlNmZwU21aYmlCClBGUE9DY1ZQTXhGeXBhZWFJMkRXNWRPNFNoNGQ0ZlZma2F3ck9LN1N2QnFZb0Y5L2VndThzQS9ZdklaRVltQUQKd0ZIOGs1QjJ4WXdiNkVmNmFFQ29ZTitsNWtlWmhNWTgKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||
</cert>
|
||||
<cert uuid="cad18e13-92c5-48b6-9b44-ad2e5dcc799e">
|
||||
<refid>6734d6c82dc59</refid>
|
||||
<descr>Web GUI TLS certificate</descr>
|
||||
<caref/>
|
||||
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhIakNDQlFhZ0F3SUJBZ0lVZkNETXpFclQ4dlVoenJaTVJta3JiT3dnSUdNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZa3hIVEFiQmdOVkJBTU1GRTlRVG5ObGJuTmxMbXh2WTJGc1pHOXRZV2x1TVFzd0NRWURWUVFHRXdKTwpUREVWTUJNR0ExVUVDQXdNV25WcFpDMUliMnhzWVc1a01SVXdFd1lEVlFRSERBeE5hV1JrWld4b1lYSnVhWE14CkxUQXJCZ05WQkFvTUpFOVFUbk5sYm5ObElITmxiR1l0YzJsbmJtVmtJSGRsWWlCalpYSjBhV1pwWTJGMFpUQWUKRncweU5ERXhNVE14TmpReE5EVmFGdzB5TlRFeU1UVXhOalF4TkRWYU1JR0pNUjB3R3dZRFZRUUREQlJQVUU1egpaVzV6WlM1c2IyTmhiR1J2YldGcGJqRUxNQWtHQTFVRUJoTUNUa3d4RlRBVEJnTlZCQWdNREZwMWFXUXRTRzlzCmJHRnVaREVWTUJNR0ExVUVCd3dNVFdsa1pHVnNhR0Z5Ym1sek1TMHdLd1lEVlFRS0RDUlBVRTV6Wlc1elpTQnoKWld4bUxYTnBaMjVsWkNCM1pXSWdZMlZ5ZEdsbWFXTmhkR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQwpEd0F3Z2dJS0FvSUNBUURMc0xEbjRta1R4RXJYdHdqTXoxencyeHJhNTZ5bTYrYzlRNEM3UjMyMzVuWjVPM1ovCnczL2tNV2Y5L25GbGpnMkFXWERJSmNXZjk0NFJFblFMdmlha2NNTHR1Qm1KTVRYZnVQWnhsSWE4Wlc0S0ZuT20KVFM0WXFCVzhHQkpJd0xtQ2kxb2RoWXhmUEQ2TFdEZnZYMm1tWEIrUFNxL0l4WEhOSjdxZVB4YzVuSzUyMW1uNQpuQ0FtZFBDY2JmdmdXdUM2TnhWbXpkeXpta1QvNnVqRUJFYTZ6RkQyUUtDN1N6a2ptZUNpd2VDQjc5NjZqeEV5ClFrVlFqYlQ5MFlyeENvdE8rbTJIQU5QZHNjT3FvNldXMEhmSlNpa2k4K2NDWHlzbGRFSzFZbmxueTNFWlVqTEwKVmplRS9XQVU0Q1BZUmhYVFVGVTIxZFV2azNvYUVpeldVdmhKc1FHYnh2aFRUQlN3aVliOUQ3Ymx1MWl4UzJxNwo3Mzk5VWdRN3FTNUFhOElHbXA4NUNoUUlBWUVjSTd6RGVWTGtrOGpkWkFCaTdGbDl0M05OQTU3WlVZVzErWE45CitUZ3ljMTlTbGoxVW1RdkRvekxCQzk5TVJpLzREQTIxRFpIODY3ekFYenFqZWUrckorQkZvNzVEQjlqd2tMTmUKUGVpemxRenRIWmpSU0tnaWdSNU9KSmtSVHIvNjduaTBtbzVITGNkU3hBSDFmdXdXS0hWS2RHQlQrNjhhYkUrZwprUSsrVDhMenVhK1FtakxOUVFqMVJCSFYzSzVQL3dvbXJKZG02d1ZLbm85RXlNait4azFwS05wb0F4UnR1WllmCkNEVVVQWjR1cEJtbzBLN3dGNHdtV3VXYSttVndlb1ZTcDRXMEhOWVJGU1pyWWxrc1AzdWViSHcva1FJREFRQUIKbzRJQmVqQ0NBWFl3Q1FZRFZSMFRCQUl3QURBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQmtBd05BWUpZSVpJQVliNApRZ0VOQkNjV0pVOVFUbk5sYm5ObElFZGxibVZ5WVhSbFpDQlRaWEoyWlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEClZSME9CQllFRktidDd0QkRKN1daV1lMblQ5cEhTMklPdTg1TU1JR3pCZ05WSFNNRWdhc3dnYWloZ1kra2dZd3cKZ1lreEhUQWJCZ05WQkFNTUZFOVFUbk5sYm5ObExteHZZMkZzWkc5dFlXbHVNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVWZDRE0KekVyVDh2VWh6clpNUm1rcmJPd2dJR013SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQwpNQXNHQTFVZER3UUVBd0lGb0RBZkJnTlZIUkVFR0RBV2doUlBVRTV6Wlc1elpTNXNiMk5oYkdSdmJXRnBiakFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQWNQbmllQ29FSmRjV25CVHdqRmE3bjZqTFMrZ1pUYUk2ZjAzWktQMFYKQ0pSaDUxWTNwb2dpcnJYcVNHQ1VGTVNHbGpsQ21mU2VhdW9GWFYwanZLejhnMGZ1NU9kYlhjd2FrZFBZSXgydQpVT0dMbllTaEdCNlpoMmhpWWdSVGFpemJoTVliQitzQkV4QU1CdHZRZElSZ3dBWkRNWE9jY0MwZnJaMFhRRlRFCnQ3by82VGYvZEprdnB0cmRYWW1INnFUWlA2MGxyTnlabVloTjc1NEluOFZLRVVSRWNZamg1ejlJanA1NTE1cU0Kb0VrSGNKbTBDNkh2VStETG1ybFpFYkV4bnVOMFQzWTBNZ0hiVFVhU2Y1L2FKVmlIM0dOMnMzbG1ZM0VXTS9Vcwo3azFyc2JTa2orZzJvQXlTcjU0Nlc4RkdaMjliZFlOYk1EaTQ4aXVRQWlzRlQrTGZXN3Y3RVl3WGJ3NUhSVkpNCjV2MlhnenJwN2Yxa08zckEzeXUyS1VSSktHdjJ1ZXhNSythb1VOZXhRT3ludmZGUTBCemRHQ1dlcmVvZTZ3bDMKbHc4Z2dCWDI1VGIxbzR3d1UzNXdtUUIrMC9rbjB0SXoveVBhY2JzbDAwZ0dJNFhTbWpRQmF0MUZYRHFEME1JMgp4S0RqMXZ2dkNTVnRKc09ESG95eDhLc3ptbno5UVFoV0ZNeC9LTXp1clh0OWtsWFRJc0t3d2NXMytZQWtQMzNaClgvOGJnZS8zK2RibTdNN3BndmFBNVFlU3VTbkwzNjdLT1g1NlNZNGFZWHhkc1haVDc0ZGxVRU1jbG9NU0NIOG4KR25QWlpyWTNHdnZaU2ovQWdqT2lDNHNBL2JSSmh4cCtUQndlRFByR0pFUEJFVW9sZEZHVXdraFJXMVVuRlc2YwpyTGM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</crt>
|
||||
<csr/>
|
||||
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRExzTERuNG1rVHhFclgKdHdqTXoxencyeHJhNTZ5bTYrYzlRNEM3UjMyMzVuWjVPM1ovdzMva01XZjkvbkZsamcyQVdYRElKY1dmOTQ0UgpFblFMdmlha2NNTHR1Qm1KTVRYZnVQWnhsSWE4Wlc0S0ZuT21UUzRZcUJXOEdCSkl3TG1DaTFvZGhZeGZQRDZMCldEZnZYMm1tWEIrUFNxL0l4WEhOSjdxZVB4YzVuSzUyMW1uNW5DQW1kUENjYmZ2Z1d1QzZOeFZtemR5em1rVC8KNnVqRUJFYTZ6RkQyUUtDN1N6a2ptZUNpd2VDQjc5NjZqeEV5UWtWUWpiVDkwWXJ4Q290TyttMkhBTlBkc2NPcQpvNldXMEhmSlNpa2k4K2NDWHlzbGRFSzFZbmxueTNFWlVqTExWamVFL1dBVTRDUFlSaFhUVUZVMjFkVXZrM29hCkVpeldVdmhKc1FHYnh2aFRUQlN3aVliOUQ3Ymx1MWl4UzJxNzczOTlVZ1E3cVM1QWE4SUdtcDg1Q2hRSUFZRWMKSTd6RGVWTGtrOGpkWkFCaTdGbDl0M05OQTU3WlVZVzErWE45K1RneWMxOVNsajFVbVF2RG96TEJDOTlNUmkvNApEQTIxRFpIODY3ekFYenFqZWUrckorQkZvNzVEQjlqd2tMTmVQZWl6bFF6dEhaalJTS2dpZ1I1T0pKa1JUci82CjduaTBtbzVITGNkU3hBSDFmdXdXS0hWS2RHQlQrNjhhYkUrZ2tRKytUOEx6dWErUW1qTE5RUWoxUkJIVjNLNVAKL3dvbXJKZG02d1ZLbm85RXlNait4azFwS05wb0F4UnR1WllmQ0RVVVBaNHVwQm1vMEs3d0Y0d21XdVdhK21Wdwplb1ZTcDRXMEhOWVJGU1pyWWxrc1AzdWViSHcva1FJREFRQUJBb0lDQUFzc3hPL2IzSTd3a0hpWU9wdmQ3b2ZxClJXVm9HM0ZHOVBkSCtrcU1DQW9zVXlpZ2lnWkZhQUZSY3BhZFBJUnBVRFZQOHQrUUx2RHhTSEtJVkNTR3lLRHgKN01mVTkxV3ZCUGtpc1NhWEV2TklEMHJ2WTJYbXl4WWdOcDBNcHdnbHhxZXlWSDNWSTFmZ09zQXpWVkpGSmtzeAp0NnVKV2U2R1lwRnlVZ3MzZytNdHhPYVJLZHcvWkFZb0dVRkR5WE5NR1JNdVRYYkg2WWxTOStFZ2RxZTJZbGtDCk41amkvODUydUlwSytXZUVnbmd1ZkVZNDdpVVhQSzFJTVB0UjRURUxOb3hkTWVBYnZBUG9La2QwMWZOWnVaQ3EKQ0dxNS9kMEQ4cDZKNjlUK3M1RnR1R1UrdkxtcUg3NmtsZjVmTTZnOFpCc2xSNStNQ0xlay9DaHRBZGU2VXBQRApXQ2EwazU3dmdneUdQdGVlVXY2RVJBMEp6SjlJd2VHZGdVWHhNdW5LK3ZSNWYydWJKWFJoMVJpNTNFSTNvVUxYClFvWm9hOTY3VzNUajQ3UzR2RlQyK2dLb0g2OXlNckdVNVkwcjJrSTFXMVVhWEJ1aVVrMi94amdyWVdTblUzUUQKZkM3ZXllTlNlN3c4UW9MMVBEYXJwVXdaK2xGZ0w3NFVScldLQU12WVhxa3NTMHVtb0tTSWo4cjZMM0hVSUVaUgpZRzhBTU91dFhrQk5lMkNpTXRKM2NYUXNIOWloQU9QL3AvaE9BTTBGNkM3Ymt1Vm85d1pRdDVESWxRWUl4TlArClFRZ2doRnhBNTlTWmpwRk00QkN5L0hEOENJY3VuSURZOVNlbXNSYXdyUVY1eGk1akFScVdOYTdBSVMvVlArdUUKQkpmS0dDNFlZVmxqS1VLeEgxVUJBb0lCQVFEcnZOWXNrd3ZhQ2Z6MlcvbkIrRjNjVE1RbjM2RENSYnZwQ0s1dApldm96TjJGbjBJdWFnN2RrYzN2NTFxTVNEd0h1cVNkVTRHUHZMcm83alpJaFNEZ1AwLzBLWmc0VmxtZE5HbEovCk1lcXhmOGRkOFdTQjZiUksrK2FRcEhaeDd2SUFTWkE4eHkvZ3F2NGJpSmlqVDhUQ2lSeXdYSTQ0ZlRYM0xLZTIKVG1Uc29XNk9yQmErSWJRYjBpTEh4WE4rZ3JDM0cxWWxIUlNvTEpKUkU0eFVLMGsvM1JLNU16RjRIYUNZb1BWOQpDOFpQellMR253SE9ERU8zbHRtSGJvQUNFa0VrT2dFV3U4RFo2YlYrMXJBcVh6WnN0L3hNZnJ5KzlMRVdYQUwvCkRnOEdkall0YzdyUTFZd1BIY1h6cFo2clVIdXh2K0p6VEE1ZzNCS1p6aWhwNFdHaEFvSUJBUURkTXE3N0dRWGMKYW5hYlMxanlFT3VzNFp5ZlJ4cW10NEVFaHZjY0dRVVVrV0IrWk11bnpyaENxb3ZwQ1dhVU9zWVhuNG45Y3BQSAo3bm1mOUJHbFI4NVhCVHNLM2d4bE5NMUhjSGFTNXZSem9WQVBNd3o2VVV0ZFNLWXRLR0Q3Wkxmbm9ISXN1SlEzCnJ6WWIyTFhpVmx6MWlNNUVmT0VrL1J5UjBwMGtleXVwa0F0OXBRV0hzaURYb0pibDE2d1ZLc2NDNGUzNjdRRWsKcFdoeXcyS3A4bXdtOGxqQllxZWtHdUREeGVZSDMzMVlGa2FMUEJCT2xPQnlveFlOUDdBVVREUlV3KzB1T01jNwozb0N1VE9jWnAxVWMwQURBOXRTRVRINklWdlFEUXZlYzR6MWRTVGRmUEkxRzVUTCt4Mzlvam5OcGVoYng0bEwvCmRxTTBmcFlPL2ZmeEFvSUJBRmwzOU8wNzdjNlY1ZHoyY1djTnhVbThGT0p4UEVrZlFEOGtYVmNOeW5HdnZoY3gKamhwWmpUdmhuSmJvd0VFMVV1MXFZNVFTQ2J1WVIzUWN1ZTVKdzRVMlZwNGd0NDIzNUlMZHo1dVlyVk1xaE5jQgpxN3ltbnhlcVhRcGVjTm15NzBQdXA0QjV0SkVYTkpQc2xzbThsNWVoaERMbkhjOFFybStlRWhUZDBlNEJJcjJoClVJeGVyRVcyemg1MXNPeTkyeVhUaVRGU3hTbENxVkYrRXM5TEVtVGJtYVNTYWw4RkY1TjEyMVhYSnkvWWRwNjkKY0dqc1BMTXIzR2xMSmVnalYzZlJUK0o1NWFxT3lhUlhCTXRBRVo3WGdUampETzJJWHNGMnNHaHV4SU1XVUYrVgp3YnhLbi9xSXVUMU1pVmpKbGZpVE0vWEFVdUN1QlowOEloaDFRcUVDZ2dFQUZwdzJySzRMSGxPM21mb2l0bU9xClkzcVFVdXVtdXNIcEt6aE1qQSsycURxUC9YdDZJY1lNcWF2YkwwL3ByMTh1bm4yTlVsM2k0ejNxS3NKOUIwTUcKd1hoa1o2RDQ3V052VkUwWG9iNS80RTN0N0EvUTFNbDRoYW1HYXZsRXFJM01DcDRvN1k5VWZ6aW10RVA3bTQ0dQpaRjYranR1ZysvSHZlS3hwcWEvNWI1U3N5QVFWUTZDZW9Ndm1nTW9CNmd2OFdid1VZbURWakJSb1Q4clBEQVllCnJnQjV1QkxJaGdyRlROMnV2TUZJZzdlTE1ISk1UR3dGWVZKd1Q1eGgrRUV0M0RoR3gwSEFnOHNqcGkxd05md1gKeENFeTRvYVloSWw1S2FDUndyK1dwZS9JZHYrajdGVTVMN1QvK0hFV0FlOEZ0eE5td3dUYWJRaUllRFkwU29ZRgpVUUtDQVFFQXRiclZqbTFsaDQ1REhIWnVsem4xNllIQzJrMUYwWG9FZFVSQ3o0QTFsMHBEK3ljL2srdmJ0Qmg0Cm1RRDV1a3FicHFFZy9GNUhDZmdOaHlieHNNdVV6NzFaU24zN2dwczNDWUdiUyt4RkhjZTJBakNTbUlYQWIxQjgKR0Z2WnV4UlB5QXU0YVBvT1J3RzM3NVBOM0VNNk83bzdxbjlYeExTZWRIMHExM2U0YkhYYm4rc2xOa1RIM2xmcwpLVnBOUUhVSUNDSW5vQ0llV1dwdnAwQnFoYjlKclRsbXd2c25zOHpZVDNiY3F5QXZHZGRnNUs3Y0MwRVJaem9ECnFJTkI3S05FVjQ1NmF0eDZVT3VYUlpKREMvaHNJUTZNaVBveUJacHRsK1ZIMEtQbEFIWGExb0FXZmNuL0U3MFYKK0RaeVBiMWxkQUdpb1hqditGd2h5VzZlWEVrQlBnPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||
</cert>
|
||||
<syslog/>
|
||||
</opnsense>
|
@ -0,0 +1,994 @@
|
||||
<?xml version="1.0"?>
|
||||
<opnsense>
|
||||
<theme>opnsense</theme>
|
||||
<sysctl>
|
||||
<item>
|
||||
<descr>Increase UFS read-ahead speeds to match the state of hard drives and NCQ.</descr>
|
||||
<tunable>vfs.read_max</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set the ephemeral port range to be lower.</descr>
|
||||
<tunable>net.inet.ip.portrange.first</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Drop packets to closed TCP ports without returning a RST</descr>
|
||||
<tunable>net.inet.tcp.blackhole</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Do not send ICMP port unreachable messages for closed UDP ports</descr>
|
||||
<tunable>net.inet.udp.blackhole</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Randomize the ID field in IP packets</descr>
|
||||
<tunable>net.inet.ip.random_id</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>
|
||||
Source routing is another way for an attacker to try to reach non-routable addresses behind your box.
|
||||
It can also be used to probe for information about your internal networks. These functions come enabled
|
||||
as part of the standard FreeBSD core system.
|
||||
</descr>
|
||||
<tunable>net.inet.ip.sourceroute</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>
|
||||
Source routing is another way for an attacker to try to reach non-routable addresses behind your box.
|
||||
It can also be used to probe for information about your internal networks. These functions come enabled
|
||||
as part of the standard FreeBSD core system.
|
||||
</descr>
|
||||
<tunable>net.inet.ip.accept_sourceroute</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>
|
||||
This option turns off the logging of redirect packets because there is no limit and this could fill
|
||||
up your logs consuming your whole hard drive.
|
||||
</descr>
|
||||
<tunable>net.inet.icmp.log_redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Drop SYN-FIN packets (breaks RFC1379, but nobody uses it anyway)</descr>
|
||||
<tunable>net.inet.tcp.drop_synfin</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable sending IPv6 redirects</descr>
|
||||
<tunable>net.inet6.ip6.redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable privacy settings for IPv6 (RFC 4941)</descr>
|
||||
<tunable>net.inet6.ip6.use_tempaddr</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Prefer privacy addresses and use them over the normal addresses</descr>
|
||||
<tunable>net.inet6.ip6.prefer_tempaddr</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Generate SYN cookies for outbound SYN-ACK packets</descr>
|
||||
<tunable>net.inet.tcp.syncookies</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum incoming/outgoing TCP datagram size (receive)</descr>
|
||||
<tunable>net.inet.tcp.recvspace</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum incoming/outgoing TCP datagram size (send)</descr>
|
||||
<tunable>net.inet.tcp.sendspace</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Do not delay ACK to try and piggyback it onto a data packet</descr>
|
||||
<tunable>net.inet.tcp.delayed_ack</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum outgoing UDP datagram size</descr>
|
||||
<tunable>net.inet.udp.maxdgram</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Handling of non-IP packets which are not passed to pfil (see if_bridge(4))</descr>
|
||||
<tunable>net.link.bridge.pfil_onlyip</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 1 to additionally filter on the physical interface for locally destined packets</descr>
|
||||
<tunable>net.link.bridge.pfil_local_phys</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 0 to disable filtering on the incoming and outgoing member interfaces.</descr>
|
||||
<tunable>net.link.bridge.pfil_member</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set to 1 to enable filtering on the bridge interface</descr>
|
||||
<tunable>net.link.bridge.pfil_bridge</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Allow unprivileged access to tap(4) device nodes</descr>
|
||||
<tunable>net.link.tap.user_open</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Randomize PID's (see src/sys/kern/kern_fork.c: sysctl_kern_randompid())</descr>
|
||||
<tunable>kern.randompid</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Disable CTRL+ALT+Delete reboot from keyboard.</descr>
|
||||
<tunable>hw.syscons.kbd_reboot</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable TCP extended debugging</descr>
|
||||
<tunable>net.inet.tcp.log_debug</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Set ICMP Limits</descr>
|
||||
<tunable>net.inet.icmp.icmplim</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>TCP Offload Engine</descr>
|
||||
<tunable>net.inet.tcp.tso</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>UDP Checksums</descr>
|
||||
<tunable>net.inet.udp.checksum</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum socket buffer size</descr>
|
||||
<tunable>kern.ipc.maxsockbuf</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Page Table Isolation (Meltdown mitigation, requires reboot.)</descr>
|
||||
<tunable>vm.pmap.pti</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Disable Indirect Branch Restricted Speculation (Spectre V2 mitigation)</descr>
|
||||
<tunable>hw.ibrs_disable</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Hide processes running as other groups</descr>
|
||||
<tunable>security.bsd.see_other_gids</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Hide processes running as other users</descr>
|
||||
<tunable>security.bsd.see_other_uids</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Enable/disable sending of ICMP redirects in response to IP packets for which a better,
|
||||
and for the sender directly reachable, route and next hop is known.
|
||||
</descr>
|
||||
<tunable>net.inet.ip.redirect</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
<item>
|
||||
<descr>Maximum outgoing UDP datagram size</descr>
|
||||
<tunable>net.local.dgram.maxdgram</tunable>
|
||||
<value>default</value>
|
||||
</item>
|
||||
</sysctl>
|
||||
<system>
|
||||
<optimization>normal</optimization>
|
||||
<hostname>OPNsense</hostname>
|
||||
<domain>localdomain</domain>
|
||||
<dnsallowoverride>1</dnsallowoverride>
|
||||
<group>
|
||||
<name>admins</name>
|
||||
<description>System Administrators</description>
|
||||
<scope>system</scope>
|
||||
<gid>1999</gid>
|
||||
<member>0</member>
|
||||
<priv>page-all</priv>
|
||||
</group>
|
||||
<user>
|
||||
<name>root</name>
|
||||
<descr>System Administrator</descr>
|
||||
<scope>system</scope>
|
||||
<groupname>admins</groupname>
|
||||
<password>$2y$10$YRVoF4SgskIsrXOvOQjGieB9XqHPRra9R7d80B3BZdbY/j21TwBfS</password>
|
||||
<uid>0</uid>
|
||||
</user>
|
||||
<nextuid>2000</nextuid>
|
||||
<nextgid>2000</nextgid>
|
||||
<timezone>Etc/UTC</timezone>
|
||||
<timeservers>0.opnsense.pool.ntp.org 1.opnsense.pool.ntp.org 2.opnsense.pool.ntp.org 3.opnsense.pool.ntp.org</timeservers>
|
||||
<webgui>
|
||||
<protocol>https</protocol>
|
||||
<ssl-certref>6734d6c82dc59</ssl-certref>
|
||||
<port/>
|
||||
<ssl-ciphers/>
|
||||
<interfaces/>
|
||||
<compression/>
|
||||
</webgui>
|
||||
<disablenatreflection>yes</disablenatreflection>
|
||||
<usevirtualterminal>1</usevirtualterminal>
|
||||
<disableconsolemenu>1</disableconsolemenu>
|
||||
<disablevlanhwfilter>1</disablevlanhwfilter>
|
||||
<disablechecksumoffloading>1</disablechecksumoffloading>
|
||||
<disablesegmentationoffloading>1</disablesegmentationoffloading>
|
||||
<disablelargereceiveoffloading>1</disablelargereceiveoffloading>
|
||||
<ipv6allow>1</ipv6allow>
|
||||
<powerd_ac_mode>hadp</powerd_ac_mode>
|
||||
<powerd_battery_mode>hadp</powerd_battery_mode>
|
||||
<powerd_normal_mode>hadp</powerd_normal_mode>
|
||||
<bogons>
|
||||
<interval>monthly</interval>
|
||||
</bogons>
|
||||
<pf_share_forward>1</pf_share_forward>
|
||||
<lb_use_sticky>1</lb_use_sticky>
|
||||
<ssh>
|
||||
<group>admins</group>
|
||||
<noauto>1</noauto>
|
||||
<interfaces/>
|
||||
<kex/>
|
||||
<ciphers/>
|
||||
<macs/>
|
||||
<keys/>
|
||||
<keysig/>
|
||||
<enabled>enabled</enabled>
|
||||
<passwordauth>1</passwordauth>
|
||||
<permitrootlogin>1</permitrootlogin>
|
||||
</ssh>
|
||||
<rrdbackup>-1</rrdbackup>
|
||||
<netflowbackup>-1</netflowbackup>
|
||||
<firmware version="1.0.1">
|
||||
<mirror/>
|
||||
<flavour/>
|
||||
<plugins/>
|
||||
<type/>
|
||||
<subscription/>
|
||||
<reboot/>
|
||||
</firmware>
|
||||
<dnsserver>192.168.5.1</dnsserver>
|
||||
<language>en_US</language>
|
||||
<serialspeed>115200</serialspeed>
|
||||
<primaryconsole>video</primaryconsole>
|
||||
<secondaryconsole>serial</secondaryconsole>
|
||||
</system>
|
||||
<interfaces>
|
||||
<lan>
|
||||
<enable>1</enable>
|
||||
<if>le1</if>
|
||||
<ipaddr>10.100.8.1</ipaddr>
|
||||
<subnet>24</subnet>
|
||||
<ipaddrv6>track6</ipaddrv6>
|
||||
<subnetv6>64</subnetv6>
|
||||
<media/>
|
||||
<mediaopt/>
|
||||
<track6-interface>wan</track6-interface>
|
||||
<track6-prefix-id>0</track6-prefix-id>
|
||||
</lan>
|
||||
<lo0>
|
||||
<internal_dynamic>1</internal_dynamic>
|
||||
<descr>Loopback</descr>
|
||||
<enable>1</enable>
|
||||
<if>lo0</if>
|
||||
<ipaddr>127.0.0.1</ipaddr>
|
||||
<ipaddrv6>::1</ipaddrv6>
|
||||
<subnet>8</subnet>
|
||||
<subnetv6>128</subnetv6>
|
||||
<type>none</type>
|
||||
<virtual>1</virtual>
|
||||
</lo0>
|
||||
<wan>
|
||||
<if>le0</if>
|
||||
<descr/>
|
||||
<enable>1</enable>
|
||||
<spoofmac/>
|
||||
<ipaddr>dhcp</ipaddr>
|
||||
<dhcphostname/>
|
||||
<alias-address/>
|
||||
<alias-subnet>32</alias-subnet>
|
||||
<dhcprejectfrom/>
|
||||
<adv_dhcp_pt_timeout/>
|
||||
<adv_dhcp_pt_retry/>
|
||||
<adv_dhcp_pt_select_timeout/>
|
||||
<adv_dhcp_pt_reboot/>
|
||||
<adv_dhcp_pt_backoff_cutoff/>
|
||||
<adv_dhcp_pt_initial_interval/>
|
||||
<adv_dhcp_pt_values>SavedCfg</adv_dhcp_pt_values>
|
||||
<adv_dhcp_send_options/>
|
||||
<adv_dhcp_request_options/>
|
||||
<adv_dhcp_required_options/>
|
||||
<adv_dhcp_option_modifiers/>
|
||||
<adv_dhcp_config_advanced/>
|
||||
<adv_dhcp_config_file_override/>
|
||||
<adv_dhcp_config_file_override_path/>
|
||||
</wan>
|
||||
</interfaces>
|
||||
<dhcpd>
|
||||
<lan>
|
||||
<enable/>
|
||||
<range>
|
||||
<from>10.100.8.10</from>
|
||||
<to>10.100.8.245</to>
|
||||
</range>
|
||||
<staticmap>
|
||||
<mac>d8:5e:d3:e7:2c:8c</mac>
|
||||
<ipaddr>10.100.8.15</ipaddr>
|
||||
<hostname>rtx4090</hostname>
|
||||
<winsserver/>
|
||||
<dnsserver/>
|
||||
<ntpserver/>
|
||||
</staticmap>
|
||||
</lan>
|
||||
</dhcpd>
|
||||
<snmpd>
|
||||
<syslocation/>
|
||||
<syscontact/>
|
||||
<rocommunity>public</rocommunity>
|
||||
</snmpd>
|
||||
<nat>
|
||||
<outbound>
|
||||
<mode>automatic</mode>
|
||||
</outbound>
|
||||
</nat>
|
||||
<filter>
|
||||
<rule uuid="f79eded0-3c11-4f57-9aaa-55d4888589fa">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>wanip</network>
|
||||
<port>80</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518072.7612</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518072.7612</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="4a5e7b65-0d7f-4452-8a29-2ec61a47ec19">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>wanip</network>
|
||||
<port>443</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518084.0639</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518084.0639</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="0465308d-8605-466c-bcb4-95eeb989251a">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>tcp/udp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<any>1</any>
|
||||
<port>22</port>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518114.2801</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518114.2801</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="2df05591-13e7-4d91-a1b8-d25e338ada5f">
|
||||
<type>pass</type>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<statetype>keep state</statetype>
|
||||
<descr>Allow ping</descr>
|
||||
<direction>in</direction>
|
||||
<quick>1</quick>
|
||||
<protocol>icmp</protocol>
|
||||
<source>
|
||||
<any>1</any>
|
||||
</source>
|
||||
<destination>
|
||||
<network>(self)</network>
|
||||
</destination>
|
||||
<updated>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518356.7559</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</updated>
|
||||
<created>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731518311.7033</time>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
</created>
|
||||
</rule>
|
||||
<rule uuid="f2ee612c-c290-4445-8045-df82a86db0e5">
|
||||
<type>pass</type>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<descr>Default allow LAN to any rule</descr>
|
||||
<interface>lan</interface>
|
||||
<source>
|
||||
<network>lan</network>
|
||||
</source>
|
||||
<destination>
|
||||
<any/>
|
||||
</destination>
|
||||
</rule>
|
||||
<rule uuid="b21f808a-6a4a-4cd6-9a83-1660cc8ea58b">
|
||||
<type>pass</type>
|
||||
<ipprotocol>inet6</ipprotocol>
|
||||
<descr>Default allow LAN IPv6 to any rule</descr>
|
||||
<interface>lan</interface>
|
||||
<source>
|
||||
<network>lan</network>
|
||||
</source>
|
||||
<destination>
|
||||
<any/>
|
||||
</destination>
|
||||
</rule>
|
||||
</filter>
|
||||
<rrd>
|
||||
<enable/>
|
||||
</rrd>
|
||||
<ntpd>
|
||||
<prefer>0.opnsense.pool.ntp.org</prefer>
|
||||
</ntpd>
|
||||
<widgets>
|
||||
<sequence>system_information-container:00000000-col3:show,services_status-container:00000001-col4:show,gateways-container:00000002-col4:show,interface_list-container:00000003-col4:show</sequence>
|
||||
<column_count>2</column_count>
|
||||
</widgets>
|
||||
<revision>
|
||||
<username>root@192.168.5.204</username>
|
||||
<time>1731534516.7156</time>
|
||||
<description>/interfaces.php made changes</description>
|
||||
</revision>
|
||||
<OPNsense>
|
||||
<DHCRelay version="1.0.1"/>
|
||||
<wireguard>
|
||||
<client version="1.0.0">
|
||||
<clients/>
|
||||
</client>
|
||||
<general version="0.0.1">
|
||||
<enabled>0</enabled>
|
||||
</general>
|
||||
<server version="1.0.0">
|
||||
<servers/>
|
||||
</server>
|
||||
</wireguard>
|
||||
<IPsec version="1.0.1">
|
||||
<general>
|
||||
<enabled/>
|
||||
</general>
|
||||
<keyPairs/>
|
||||
<preSharedKeys/>
|
||||
</IPsec>
|
||||
<Swanctl version="1.0.0">
|
||||
<Connections/>
|
||||
<locals/>
|
||||
<remotes/>
|
||||
<children/>
|
||||
<Pools/>
|
||||
<VTIs/>
|
||||
<SPDs/>
|
||||
</Swanctl>
|
||||
<OpenVPNExport version="0.0.1">
|
||||
<servers/>
|
||||
</OpenVPNExport>
|
||||
<OpenVPN version="1.0.0">
|
||||
<Overwrites/>
|
||||
<Instances/>
|
||||
<StaticKeys/>
|
||||
</OpenVPN>
|
||||
<captiveportal version="1.0.2">
|
||||
<zones/>
|
||||
<templates/>
|
||||
</captiveportal>
|
||||
<cron version="1.0.4">
|
||||
<jobs/>
|
||||
</cron>
|
||||
<Firewall>
|
||||
<Lvtemplate version="0.0.1">
|
||||
<templates/>
|
||||
</Lvtemplate>
|
||||
<Alias version="1.0.1">
|
||||
<geoip>
|
||||
<url/>
|
||||
</geoip>
|
||||
<aliases/>
|
||||
</Alias>
|
||||
<Category version="1.0.0">
|
||||
<categories/>
|
||||
</Category>
|
||||
<Filter version="1.0.4">
|
||||
<rules/>
|
||||
<snatrules/>
|
||||
<npt/>
|
||||
<onetoone/>
|
||||
</Filter>
|
||||
</Firewall>
|
||||
<Netflow version="1.0.1">
|
||||
<capture>
|
||||
<interfaces/>
|
||||
<egress_only/>
|
||||
<version>v9</version>
|
||||
<targets/>
|
||||
</capture>
|
||||
<collect>
|
||||
<enable>0</enable>
|
||||
</collect>
|
||||
<activeTimeout>1800</activeTimeout>
|
||||
<inactiveTimeout>15</inactiveTimeout>
|
||||
</Netflow>
|
||||
<IDS version="1.0.9">
|
||||
<rules/>
|
||||
<policies/>
|
||||
<userDefinedRules/>
|
||||
<files/>
|
||||
<fileTags/>
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<ips>0</ips>
|
||||
<promisc>0</promisc>
|
||||
<interfaces>wan</interfaces>
|
||||
<homenet>192.168.0.0/16,10.0.0.0/8,172.16.0.0/12</homenet>
|
||||
<defaultPacketSize/>
|
||||
<UpdateCron/>
|
||||
<AlertLogrotate>W0D23</AlertLogrotate>
|
||||
<AlertSaveLogs>4</AlertSaveLogs>
|
||||
<MPMAlgo/>
|
||||
<detect>
|
||||
<Profile/>
|
||||
<toclient_groups/>
|
||||
<toserver_groups/>
|
||||
</detect>
|
||||
<syslog>0</syslog>
|
||||
<syslog_eve>0</syslog_eve>
|
||||
<LogPayload>0</LogPayload>
|
||||
<verbosity/>
|
||||
</general>
|
||||
</IDS>
|
||||
<Interfaces>
|
||||
<loopbacks version="1.0.0"/>
|
||||
<neighbors version="1.0.0"/>
|
||||
<vxlans version="1.0.2"/>
|
||||
</Interfaces>
|
||||
<Kea>
|
||||
<ctrl_agent version="0.0.1">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<http_host>127.0.0.1</http_host>
|
||||
<http_port>8000</http_port>
|
||||
</general>
|
||||
</ctrl_agent>
|
||||
<dhcp4 version="1.0.0">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<interfaces/>
|
||||
<valid_lifetime>4000</valid_lifetime>
|
||||
<fwrules>1</fwrules>
|
||||
</general>
|
||||
<ha>
|
||||
<enabled>0</enabled>
|
||||
<this_server_name/>
|
||||
</ha>
|
||||
<subnets/>
|
||||
<reservations/>
|
||||
<ha_peers/>
|
||||
</dhcp4>
|
||||
</Kea>
|
||||
<monit version="1.0.13">
|
||||
<general>
|
||||
<enabled>0</enabled>
|
||||
<interval>120</interval>
|
||||
<startdelay>120</startdelay>
|
||||
<mailserver>127.0.0.1</mailserver>
|
||||
<port>25</port>
|
||||
<username/>
|
||||
<password/>
|
||||
<ssl>0</ssl>
|
||||
<sslversion>auto</sslversion>
|
||||
<sslverify>1</sslverify>
|
||||
<logfile/>
|
||||
<statefile/>
|
||||
<eventqueuePath/>
|
||||
<eventqueueSlots/>
|
||||
<httpdEnabled>0</httpdEnabled>
|
||||
<httpdUsername>root</httpdUsername>
|
||||
<httpdPassword/>
|
||||
<httpdPort>2812</httpdPort>
|
||||
<httpdAllow/>
|
||||
<mmonitUrl/>
|
||||
<mmonitTimeout>5</mmonitTimeout>
|
||||
<mmonitRegisterCredentials>1</mmonitRegisterCredentials>
|
||||
</general>
|
||||
<alert uuid="15f1e9ca-5dd5-4b20-b595-b6b4f82245d0">
|
||||
<enabled>0</enabled>
|
||||
<recipient>root@localhost.local</recipient>
|
||||
<noton>0</noton>
|
||||
<events/>
|
||||
<format/>
|
||||
<reminder/>
|
||||
<description/>
|
||||
</alert>
|
||||
<service uuid="c1e99556-91f5-4dbf-81d7-7915a3213de9">
|
||||
<enabled>1</enabled>
|
||||
<name>$HOST</name>
|
||||
<description/>
|
||||
<type>system</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path/>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>91b4e409-211b-49d5-9fa3-dc9054106646,cbe9cb72-e8c2-4740-990c-abcc486b0654,c0708923-88de-4178-abdd-819737440ce0,e887125d-c5d2-45e6-b40d-2c400d5449d1</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="7513f341-7d21-4f11-903f-30d07b3aa41e">
|
||||
<enabled>1</enabled>
|
||||
<name>RootFs</name>
|
||||
<description/>
|
||||
<type>filesystem</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>cc3684f2-701e-4de4-883d-803e08cf47b6</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="f99ada79-ba1a-4ee1-81f1-ef570e8e5ea9">
|
||||
<enabled>0</enabled>
|
||||
<name>carp_status_change</name>
|
||||
<description/>
|
||||
<type>custom</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/usr/local/opnsense/scripts/OPNsense/Monit/carp_status</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>f2d734cb-2a0e-4375-9460-11bdd5b20503</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<service uuid="dca8a81f-d389-4baa-b477-8b348194fd25">
|
||||
<enabled>0</enabled>
|
||||
<name>gateway_alert</name>
|
||||
<description/>
|
||||
<type>custom</type>
|
||||
<pidfile/>
|
||||
<match/>
|
||||
<path>/usr/local/opnsense/scripts/OPNsense/Monit/gateway_alert</path>
|
||||
<timeout>300</timeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<address/>
|
||||
<interface/>
|
||||
<start/>
|
||||
<stop/>
|
||||
<tests>865105a2-cbea-4a01-9979-c67818da9d99</tests>
|
||||
<depends/>
|
||||
<polltime/>
|
||||
</service>
|
||||
<test uuid="ea6b821c-4f30-455b-bd5b-23a6f0c20554">
|
||||
<name>Ping</name>
|
||||
<type>NetworkPing</type>
|
||||
<condition>failed ping</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="16186b38-0e13-4cc3-ad18-ccc3fcc91837">
|
||||
<name>NetworkLink</name>
|
||||
<type>NetworkInterface</type>
|
||||
<condition>failed link</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="69117d4d-8c41-4712-97c0-87b4fa7c9837">
|
||||
<name>NetworkSaturation</name>
|
||||
<type>NetworkInterface</type>
|
||||
<condition>saturation is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="91b4e409-211b-49d5-9fa3-dc9054106646">
|
||||
<name>MemoryUsage</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>memory usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="cbe9cb72-e8c2-4740-990c-abcc486b0654">
|
||||
<name>CPUUsage</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>cpu usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="c0708923-88de-4178-abdd-819737440ce0">
|
||||
<name>LoadAvg1</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (1min) is greater than 4</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="e887125d-c5d2-45e6-b40d-2c400d5449d1">
|
||||
<name>LoadAvg5</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (5min) is greater than 3</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="c34aab30-9194-4667-b516-004b9c90c1c0">
|
||||
<name>LoadAvg15</name>
|
||||
<type>SystemResource</type>
|
||||
<condition>loadavg (15min) is greater than 2</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="cc3684f2-701e-4de4-883d-803e08cf47b6">
|
||||
<name>SpaceUsage</name>
|
||||
<type>SpaceUsage</type>
|
||||
<condition>space usage is greater than 75%</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="f2d734cb-2a0e-4375-9460-11bdd5b20503">
|
||||
<name>ChangedStatus</name>
|
||||
<type>ProgramStatus</type>
|
||||
<condition>changed status</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
<test uuid="865105a2-cbea-4a01-9979-c67818da9d99">
|
||||
<name>NonZeroStatus</name>
|
||||
<type>ProgramStatus</type>
|
||||
<condition>status != 0</condition>
|
||||
<action>alert</action>
|
||||
<path/>
|
||||
</test>
|
||||
</monit>
|
||||
<Gateways version="1.0.0">
|
||||
<gateway_item uuid="a6ea102d-68bb-430f-af8b-269d52498fe1">
|
||||
<disabled>0</disabled>
|
||||
<name>WAN_GW</name>
|
||||
<descr>Interface WAN Gateway</descr>
|
||||
<interface>wan</interface>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<gateway>172.17.0.1</gateway>
|
||||
<defaultgw>1</defaultgw>
|
||||
<fargw>0</fargw>
|
||||
<monitor_disable>1</monitor_disable>
|
||||
<monitor_noroute/>
|
||||
<monitor/>
|
||||
<force_down/>
|
||||
<priority>255</priority>
|
||||
<weight>1</weight>
|
||||
<latencylow/>
|
||||
<latencyhigh/>
|
||||
<losslow/>
|
||||
<losshigh/>
|
||||
<interval/>
|
||||
<time_period/>
|
||||
<loss_interval/>
|
||||
<data_length/>
|
||||
</gateway_item>
|
||||
</Gateways>
|
||||
<Syslog version="1.0.2">
|
||||
<general>
|
||||
<enabled>1</enabled>
|
||||
<loglocal>1</loglocal>
|
||||
<maxpreserve>31</maxpreserve>
|
||||
<maxfilesize/>
|
||||
</general>
|
||||
<destinations/>
|
||||
</Syslog>
|
||||
<TrafficShaper version="1.0.3">
|
||||
<pipes/>
|
||||
<queues/>
|
||||
<rules/>
|
||||
</TrafficShaper>
|
||||
<unboundplus version="1.0.9">
|
||||
<general>
|
||||
<enabled>1</enabled>
|
||||
<port>53</port>
|
||||
<stats/>
|
||||
<active_interface/>
|
||||
<dns64/>
|
||||
<dns64prefix/>
|
||||
<noarecords/>
|
||||
<regdhcp/>
|
||||
<regdhcpdomain/>
|
||||
<regdhcpstatic/>
|
||||
<noreglladdr6/>
|
||||
<noregrecords/>
|
||||
<txtsupport/>
|
||||
<cacheflush/>
|
||||
<local_zone_type>transparent</local_zone_type>
|
||||
<outgoing_interface/>
|
||||
<enable_wpad/>
|
||||
</general>
|
||||
<advanced>
|
||||
<hideidentity/>
|
||||
<hideversion/>
|
||||
<prefetch/>
|
||||
<prefetchkey/>
|
||||
<aggressivensec>1</aggressivensec>
|
||||
<serveexpired/>
|
||||
<serveexpiredreplyttl/>
|
||||
<serveexpiredttl/>
|
||||
<serveexpiredttlreset/>
|
||||
<serveexpiredclienttimeout/>
|
||||
<qnameminstrict/>
|
||||
<extendedstatistics/>
|
||||
<logqueries/>
|
||||
<logreplies/>
|
||||
<logtagqueryreply/>
|
||||
<logservfail/>
|
||||
<loglocalactions/>
|
||||
<logverbosity>1</logverbosity>
|
||||
<valloglevel>0</valloglevel>
|
||||
<privatedomain/>
|
||||
<privateaddress>0.0.0.0/8,10.0.0.0/8,100.64.0.0/10,169.254.0.0/16,172.16.0.0/12,192.0.2.0/24,192.168.0.0/16,198.18.0.0/15,198.51.100.0/24,203.0.113.0/24,233.252.0.0/24,::1/128,2001:db8::/32,fc00::/8,fd00::/8,fe80::/10</privateaddress>
|
||||
<insecuredomain/>
|
||||
<msgcachesize/>
|
||||
<rrsetcachesize/>
|
||||
<outgoingnumtcp/>
|
||||
<incomingnumtcp/>
|
||||
<numqueriesperthread/>
|
||||
<outgoingrange/>
|
||||
<jostletimeout/>
|
||||
<cachemaxttl/>
|
||||
<cachemaxnegativettl/>
|
||||
<cacheminttl/>
|
||||
<infrahostttl/>
|
||||
<infrakeepprobing/>
|
||||
<infracachenumhosts/>
|
||||
<unwantedreplythreshold/>
|
||||
</advanced>
|
||||
<acls>
|
||||
<default_action>allow</default_action>
|
||||
</acls>
|
||||
<dnsbl>
|
||||
<enabled>0</enabled>
|
||||
<safesearch/>
|
||||
<type/>
|
||||
<lists/>
|
||||
<whitelists/>
|
||||
<blocklists/>
|
||||
<wildcards/>
|
||||
<address/>
|
||||
<nxdomain/>
|
||||
</dnsbl>
|
||||
<forwarding>
|
||||
<enabled/>
|
||||
</forwarding>
|
||||
<dots/>
|
||||
<hosts/>
|
||||
<aliases/>
|
||||
<domains/>
|
||||
</unboundplus>
|
||||
</OPNsense>
|
||||
<hasync version="1.0.0">
|
||||
<disablepreempt>0</disablepreempt>
|
||||
<disconnectppps>0</disconnectppps>
|
||||
<pfsyncenabled>0</pfsyncenabled>
|
||||
<pfsyncinterface>lan</pfsyncinterface>
|
||||
<pfsyncpeerip/>
|
||||
<pfsyncversion>1400</pfsyncversion>
|
||||
<synchronizetoip/>
|
||||
<username/>
|
||||
<password/>
|
||||
<syncitems/>
|
||||
</hasync>
|
||||
<openvpn/>
|
||||
<ifgroups version="1.0.0"/>
|
||||
<gifs version="1.0.0">
|
||||
<gif/>
|
||||
</gifs>
|
||||
<gres version="1.0.0">
|
||||
<gre/>
|
||||
</gres>
|
||||
<laggs version="1.0.0">
|
||||
<lagg/>
|
||||
</laggs>
|
||||
<virtualip version="1.0.0">
|
||||
<vip/>
|
||||
</virtualip>
|
||||
<vlans version="1.0.0">
|
||||
<vlan/>
|
||||
</vlans>
|
||||
<staticroutes version="1.0.0">
|
||||
<route/>
|
||||
</staticroutes>
|
||||
<bridges>
|
||||
<bridged/>
|
||||
</bridges>
|
||||
<ppps>
|
||||
<ppp/>
|
||||
</ppps>
|
||||
<wireless>
|
||||
<clone/>
|
||||
</wireless>
|
||||
<ca/>
|
||||
<dhcpdv6/>
|
||||
<cert uuid="547102e9-23ba-48b8-8af8-64be61049e96">
|
||||
<refid>6734d13fa9e4a</refid>
|
||||
<descr>Web GUI TLS certificate</descr>
|
||||
<caref/>
|
||||
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhIakNDQlFhZ0F3SUJBZ0lVSUhVRkpwc253VGtzYWRrZmRDNUp1SDhqWnZNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZa3hIVEFiQmdOVkJBTU1GRTlRVG5ObGJuTmxMbXh2WTJGc1pHOXRZV2x1TVFzd0NRWURWUVFHRXdKTwpUREVWTUJNR0ExVUVDQXdNV25WcFpDMUliMnhzWVc1a01SVXdFd1lEVlFRSERBeE5hV1JrWld4b1lYSnVhWE14CkxUQXJCZ05WQkFvTUpFOVFUbk5sYm5ObElITmxiR1l0YzJsbmJtVmtJSGRsWWlCalpYSjBhV1pwWTJGMFpUQWUKRncweU5ERXhNVE14TmpFNE1EbGFGdzB5TlRFeU1UVXhOakU0TURsYU1JR0pNUjB3R3dZRFZRUUREQlJQVUU1egpaVzV6WlM1c2IyTmhiR1J2YldGcGJqRUxNQWtHQTFVRUJoTUNUa3d4RlRBVEJnTlZCQWdNREZwMWFXUXRTRzlzCmJHRnVaREVWTUJNR0ExVUVCd3dNVFdsa1pHVnNhR0Z5Ym1sek1TMHdLd1lEVlFRS0RDUlBVRTV6Wlc1elpTQnoKWld4bUxYTnBaMjVsWkNCM1pXSWdZMlZ5ZEdsbWFXTmhkR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQwpEd0F3Z2dJS0FvSUNBUURKU1FlZ1RYckp5dDVWYmk0Rk9IeHJrOXhxQ21FRU54V2pINVVwNDBFK3hjUzZQU1NyCkNEclc3ZDlYcVJkOEpEZENtdGtLRGlMYWNaUzJMUm1abnd6VnRzZGtBR2pOYm5OM1hSNmlFajdGL0JnbVBlcDEKU2pJWnBTZzNkOS9YeHFPQTNZQllzTS9uUk9vWHlmTHcycFJOLzhHVjN3MHoxbVFZUitMZWI3UTFuc1c3dTJ5NworVHc5STZGU0J4bkdaR3RyUFl5NkVBb0NMdm1GQnFCYWxkWTQ2ejdlWjlIRkZXaE8ybWpaUzVPdTE3ZVozVHBxCnBRTVB1T2JxV3FyaE0xdjVjdmJodU5kREhNZ3ZVVFVnQ0RNK2FkS3dIc0dNNGw5ZGtOQTgxdGlJcXpzN1BqcjEKUm0wMlVuUXRneW8zY3hPRXVsYk9nU0hsdGhTMmtUMXE2UmhyemYvRGRJSEhta1RROGtwWVloWGc0VmpMQVdpSQpQbm9ncnZsRUlWMERhQ3ZEMjZiRkRDbVkxc29FbDV1NGtYanJScDRXK29NUVRHeG80NzFMQnNBMlh1Si82ZFJBCkJMVzh4dXBFODhEYmlrWW51NVdQaUp6ZXh4UVIyNU1FQVd6TCtKK0lubFExbmpMVWwyN3R0c1VQQ1VjL3c0NXoKcHBERHYwZnU0Nnp1S3EzY0VWRitiREsrQWdlT0Q2SXNzUjVRRTdFNVdkWjYrNWl6ZHB4eWdUeGh0L1k1RlBkSApHQjlCbDFrejR4bHRhczlvbmZrSDFkVHk3dzFNck43Z1l5WjgvS0pMWW9EY2NBOVFuNGt6bGtPeFVUMENuS1ExCmtWNk90aFRsVFgzK2duaUpJK3RXWUQ5bTRldXNzYWN1anpyWDl5TTNZcEloMnZqODJ0NHpPNjIrNFFJREFRQUIKbzRJQmVqQ0NBWFl3Q1FZRFZSMFRCQUl3QURBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQmtBd05BWUpZSVpJQVliNApRZ0VOQkNjV0pVOVFUbk5sYm5ObElFZGxibVZ5WVhSbFpDQlRaWEoyWlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEClZSME9CQllFRkJRZytucWI5QW9HSWtoTUxhNHFzWGRvY0JGcE1JR3pCZ05WSFNNRWdhc3dnYWloZ1kra2dZd3cKZ1lreEhUQWJCZ05WQkFNTUZFOVFUbk5sYm5ObExteHZZMkZzWkc5dFlXbHVNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVUlIVUYKSnBzbndUa3NhZGtmZEM1SnVIOGpadk13SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQwpNQXNHQTFVZER3UUVBd0lGb0RBZkJnTlZIUkVFR0RBV2doUlBVRTV6Wlc1elpTNXNiMk5oYkdSdmJXRnBiakFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQUZqNlQ1MmRIUklVMHJuZDE0d2dob2tjUkdrK0hIQloyTGlDRHpUeUwKNHdCeTJ1ZXJXQWdvYUZzeUlNQzhwWTBhWlc4TFlSd1BtRVB0OXlUS09ZZzF0NWtOUnk2RkF5akszeis5TGZTQwoxRlFpb0pma3FHRnhoc1IxV1R5RjBGNmJmM2tZRDZ4OWw1dEdqMXF3SndrekZWZWcvZGNtUVhvRTBmUDRqSFFvCmgxWXdiZ3pTa084TzRLUVhuWXVRM3g0bWdoZnBvR0hQM2xINlcybDJlWHpqSzllRjJtUG1ZS0p1M3JpSnkvL3gKRzhQWXBYNlNTN3RoVnNNeHF3cGJHbURXQXRuSnNrSmVsNDI1WUdOYlZ4YTNPOHE3RWxLNGFoNXpmai8wRnVwTgo3SnlqMWQyZjZFck14WlFnUi9EdmlUVnhISytRY1lBRXBqU2ZmZzBrRStpS1BlN0VYTVk1VU1aZUFTK1ZteG1LCjBPOWxaQXNpWUlEMzkwVjNTaDZxYjhoL2xMZ0V2NCtSNUw1VEpFaldYc0dQSUpGaHJNSFJWR1lhV3JIYWx3eHYKNjE5NFlpSXBEaUlHSVVSWGN1U3dNcndIQzN0bms2QVo2OW5CczVXT1JYM0NxOVhRRnVrVlA5eUMxQnRuSmFwbQpubUMzK3NtTTErRjkxUXlkVXJtbUxPNUVwUmtTMitBcmRTSklUR1NRNWt4L3VLNjhzV0QzVVdNNVRibUxrcWdOCkt6djZjemVCbzJiVExDT0JKUWJ4STFCckRPTUFMSDlCdXdUamVXdUVtWE9TWE1lTDFsejdhL2JZKzJxa1BSOVAKTE5IekE2QXZlVmxucDNaeFdqMjZFK3dwYnU5cHBaY0QzRGVHRnRnZzVJbUJ2ZDNWbjJ6UVc4a1ZMT1ZBdllSawptdWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</crt>
|
||||
<csr/>
|
||||
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpSQUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1M0d2dna3FBZ0VBQW9JQ0FRREpTUWVnVFhySnl0NVYKYmk0Rk9IeHJrOXhxQ21FRU54V2pINVVwNDBFK3hjUzZQU1NyQ0RyVzdkOVhxUmQ4SkRkQ210a0tEaUxhY1pTMgpMUm1abnd6VnRzZGtBR2pOYm5OM1hSNmlFajdGL0JnbVBlcDFTaklacFNnM2Q5L1h4cU9BM1lCWXNNL25ST29YCnlmTHcycFJOLzhHVjN3MHoxbVFZUitMZWI3UTFuc1c3dTJ5NytUdzlJNkZTQnhuR1pHdHJQWXk2RUFvQ0x2bUYKQnFCYWxkWTQ2ejdlWjlIRkZXaE8ybWpaUzVPdTE3ZVozVHBxcFFNUHVPYnFXcXJoTTF2NWN2Ymh1TmRESE1ndgpVVFVnQ0RNK2FkS3dIc0dNNGw5ZGtOQTgxdGlJcXpzN1BqcjFSbTAyVW5RdGd5bzNjeE9FdWxiT2dTSGx0aFMyCmtUMXE2UmhyemYvRGRJSEhta1RROGtwWVloWGc0VmpMQVdpSVBub2dydmxFSVYwRGFDdkQyNmJGRENtWTFzb0UKbDV1NGtYanJScDRXK29NUVRHeG80NzFMQnNBMlh1Si82ZFJBQkxXOHh1cEU4OERiaWtZbnU1V1BpSnpleHhRUgoyNU1FQVd6TCtKK0lubFExbmpMVWwyN3R0c1VQQ1VjL3c0NXpwcEREdjBmdTQ2enVLcTNjRVZGK2JESytBZ2VPCkQ2SXNzUjVRRTdFNVdkWjYrNWl6ZHB4eWdUeGh0L1k1RlBkSEdCOUJsMWt6NHhsdGFzOW9uZmtIMWRUeTd3MU0Kck43Z1l5WjgvS0pMWW9EY2NBOVFuNGt6bGtPeFVUMENuS1Exa1Y2T3RoVGxUWDMrZ25pSkkrdFdZRDltNGV1cwpzYWN1anpyWDl5TTNZcEloMnZqODJ0NHpPNjIrNFFJREFRQUJBb0lDQUNPNnZpc1BIY3pzb1NjK2dkWkU1dGNNCnZkc240UDFIenVRd0VzRUcrVG1zanVWMVBZbExrbkE4OU1DQmdDejEyOFpMcU51ZlUwSDkxK1Uzbjd2MGJ1bVAKd3BpR2R4UUNOMlpZaGZ2RWE5YW1qMTNZYjBJbks3b0FKbUdrT254NW91UFl6YlBRblBNRE9WK0VKa2JwTWRxZgptOHdmOWg2OXYzSk03bUZJS0UrOVVZR252UjhuMkhETTNwR3FONEhQS1A4MkE0RXlvQ2d2a1BTelRxc052bU5ICnBOY0RURW5rNlNsWUhUVDNOSzJjVnBldUhMUzUrazlqNWI5elhUSlE5TkpVZlN6bnEvUmFpMUZVNDY1K0xpUjEKMGVPWDdnajFWUExOcGgwcWtQQy9ubW0vZStVMmZXUGZZb2FDcWkrQ0VwU2twQXlQZ1FZZTJsSG0rYVU4MzZ2UQpuaHZuL0p5ZHJDL1NyTUFZaXpOZFYyZjlHTkNwcE1SbUZyOS9saVJiNEFpSzRLSDRETGdSRUxHaDJLNzJuOFRLCkxUSVhIV3RacisyMWU4c0Mxbm5MSENnK21wMHBvSWJsbEtoYk9VTmVxR09yWm95NFBXdDZMQndFYzN0MG1wVEMKODhiSUpqMzFCQngzTGE1SUE5b0FNRi9lbHJYdFhhVnl4bm5yTHdjYzFNVWpCV20rZDVqbC9WOEdIcEJRd3pXYwpPNWdNSXlQNUIvdzBacUcyZjV1akZkOHo4dElmcEFRRTJSbDNxRUFYNU1NY1JQaFlTNDJqTWl4czc3TmtOVldQCkpqUVoxVDVXQTVKOUxEL2FKRkplQ2MvbjhpNldOQ3FzdEQ5OVNPTCsrTTBFQTlka2lLNWtOcXFZeXZuRG9SZVcKSW84eXhvVnpObURsWjBkSU9UUzlBb0lCQVFEb2tvMWxPS05FNlBWWmRRU3lmS0JOTEZNcEl1V1VVZmp0ODU4awpJTTB0TnNyS0d2N3NmYkt0dlMvOWgwMGluU2FyWTJ4amVETG91WEI5VzdKY1B1NjRoNHYwek1lbXRhdDRyTUJnClA5bkQ3MW00dERqS2ZrZDAza2tUbk4ySTBxYkwzeFVoTjNEQlJZTU9veDFMa2M4MFFFMHhSUEM1YmRJaXcwemEKTWdtK1dOZVY1VEZoSkpQZ2dVRVo5U1A2aWV1VEY0OW9wRGNWdGUwQ0I0WnFUaTRWb3YvZFVDWGpNK0djRnNWdgpPWTZYTE9KTmRldHdnUVNkd1hlSzB1WlBpWnVKTGlsTEg4OFVKYWNoQThDZW1SclMxRUtxWElwK2dkQWV4MnhVCmY5amRMMGF2SlJEY0xqWlhETXBvWlJpc0JoWVArZzY3VHZza3FscDh4M2p2STlWVkFvSUJBUURkajZrdWNLM0MKYXprMzlqYllvM3RFZ0R5L2VGNnBjWFlpK21Ba1ZNRk9vSWJ5cmNyN3BqSnRMNFMyMEFDRmpBUGFQT042dWVVWQpQQm92dC9QODB1V1c5cGZCK29mRmdadzRqc3hLWFY4eEJmOVdLWVZndFBsOHhIL1RJcERTMjhVTlowNDlhUW4vCjlCRzNac0lyenk3RzFLRTZPLzBMMnVmMnFyaUxxRFQyV3dsdFVsbWs2Ym5NeThkR0sra1JLcFhvSm1RTlNHRHoKOXd4blU2ZmZ1NDdDLzRYMHRIVk1MVFVneFh4djdqN3BpSzI4dzBuZ1N5S3ozV0IzWTJwaFVsZEJIdEprQko1RQpoRm8zMXJCVDU5enhkb2crYXh1bkh4S3EySGFHRkt0ZUZ6RGpkTTFpQzE3bWNtWXBzR2tuenA0cjRjZm5FYTFSCko4Wmo5ZVFQaEVOZEFvSUJBUUN3d2hsbXNkb2MySFVJVFZDSm13QjJSdGJaYitWT2lkS0lmdDBYcHpwcFA3aDIKVEhndEl3ZDIxayt2LzNJWGVaclhMWlJHTVNkNEN1QTgxa0ZEckt6Z1lGeDFiR0hkQ1R2T1ZuVkxjWnUvTjUxWQpMTmp3eFhMbmxyMnhnMG8zMytuWERyQlBjNFJsejcvZ2t3WUQxa2pGckkwK2dlZjI5a2w4RkRUSHJMb05DaGFuCm5PNmZweDRneGZ2Rmo3T05pZDhhQnhEK2RiaEw3dDIzNmlJMWp6K2xRQ0g0Z1I2YWhHYldxOVBZU2NWZWprVmMKbTkrWnZPVFdSU0RteUkwMExDQ2k3UXVEUmlTcmFrYVFaL3F3VHlxOHk0ZnpWS3dKby8yYU52VFZiK2xSaWNuTgorWHpMNnU5dno0L1NNZXZEYWtqQVVjdDZmbmVQa1UxK2dsZ2VZSHlWQW9JQkFRRFJtYW0wVEZhbFdXaHMvNWtOClEwTkhINFhZb1JmMGRta0xXQStCNzBoY2lOS0JYRlp0ME9GZGw1bVdsSm9adk1hY1BBUDd3MGJ1c1ZVWWxZN1YKTy9LRTZVM1I3WjlxQWw1Mnh1aU81Vnc3ZFhBRDVBM1EyZ1EzdTNFdG5VS2lwOVA0QlNYb1JLbDRJVDV0WVdJSgpyZHVUciszQ3VLT0FCcHh4Snpxa3JBRkdtZ01HRCtUTWRXd1hTU1NBeHVPYklNMW1MSU4wYVdlSEJNMFFKdnptClZIb1BFVXA1b0FwamdWVUVacTk4K0VjK0NOWkxmL2d3bndQNllsQnpRWEtQRlNXRWJwTWNtWjNjTmRWZmc5T1YKM1FDUTBkQzhNL21hRlhSRWVibE95TmtCanpEcHpVTExJUFNyVDhoRVlpWm95VGVyVGRJZVVBUEZoYnBTTUhtTApFRlhsQW9JQkFRQ0VUdVJQRHZvMC9tdDhyTzhLNENsamtuU0gxZ1FBSjFha3U3UXg3NUJUTDB6OWRNY2lMK1JLCng1R1lFTW1wcUtNb2FPbWc0WFVRMVRlQ2Vic1R0NjMyWXp6cmNCU0d1RzVnN1o0UUVublUzRXU5QklIMUVSL2gKSEk0NWowU0xNRUpObkNiTkpnRVNRRUFCbzN3cHhrRTdiRGlNdTVPOXVqMlFRVTlTTm94QkFmbVFXRDJJaU1BRQpWYzV3QTNZajBMdElSYkJmdzNBTE9uNlRSc2xucy9JMnd2Z1RCQW9sU3NZbEtEK0NRY3hDZldlNmZwU21aYmlCClBGUE9DY1ZQTXhGeXBhZWFJMkRXNWRPNFNoNGQ0ZlZma2F3ck9LN1N2QnFZb0Y5L2VndThzQS9ZdklaRVltQUQKd0ZIOGs1QjJ4WXdiNkVmNmFFQ29ZTitsNWtlWmhNWTgKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||
</cert>
|
||||
<cert uuid="cad18e13-92c5-48b6-9b44-ad2e5dcc799e">
|
||||
<refid>6734d6c82dc59</refid>
|
||||
<descr>Web GUI TLS certificate</descr>
|
||||
<caref/>
|
||||
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhIakNDQlFhZ0F3SUJBZ0lVZkNETXpFclQ4dlVoenJaTVJta3JiT3dnSUdNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZa3hIVEFiQmdOVkJBTU1GRTlRVG5ObGJuTmxMbXh2WTJGc1pHOXRZV2x1TVFzd0NRWURWUVFHRXdKTwpUREVWTUJNR0ExVUVDQXdNV25WcFpDMUliMnhzWVc1a01SVXdFd1lEVlFRSERBeE5hV1JrWld4b1lYSnVhWE14CkxUQXJCZ05WQkFvTUpFOVFUbk5sYm5ObElITmxiR1l0YzJsbmJtVmtJSGRsWWlCalpYSjBhV1pwWTJGMFpUQWUKRncweU5ERXhNVE14TmpReE5EVmFGdzB5TlRFeU1UVXhOalF4TkRWYU1JR0pNUjB3R3dZRFZRUUREQlJQVUU1egpaVzV6WlM1c2IyTmhiR1J2YldGcGJqRUxNQWtHQTFVRUJoTUNUa3d4RlRBVEJnTlZCQWdNREZwMWFXUXRTRzlzCmJHRnVaREVWTUJNR0ExVUVCd3dNVFdsa1pHVnNhR0Z5Ym1sek1TMHdLd1lEVlFRS0RDUlBVRTV6Wlc1elpTQnoKWld4bUxYTnBaMjVsWkNCM1pXSWdZMlZ5ZEdsbWFXTmhkR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQwpEd0F3Z2dJS0FvSUNBUURMc0xEbjRta1R4RXJYdHdqTXoxencyeHJhNTZ5bTYrYzlRNEM3UjMyMzVuWjVPM1ovCnczL2tNV2Y5L25GbGpnMkFXWERJSmNXZjk0NFJFblFMdmlha2NNTHR1Qm1KTVRYZnVQWnhsSWE4Wlc0S0ZuT20KVFM0WXFCVzhHQkpJd0xtQ2kxb2RoWXhmUEQ2TFdEZnZYMm1tWEIrUFNxL0l4WEhOSjdxZVB4YzVuSzUyMW1uNQpuQ0FtZFBDY2JmdmdXdUM2TnhWbXpkeXpta1QvNnVqRUJFYTZ6RkQyUUtDN1N6a2ptZUNpd2VDQjc5NjZqeEV5ClFrVlFqYlQ5MFlyeENvdE8rbTJIQU5QZHNjT3FvNldXMEhmSlNpa2k4K2NDWHlzbGRFSzFZbmxueTNFWlVqTEwKVmplRS9XQVU0Q1BZUmhYVFVGVTIxZFV2azNvYUVpeldVdmhKc1FHYnh2aFRUQlN3aVliOUQ3Ymx1MWl4UzJxNwo3Mzk5VWdRN3FTNUFhOElHbXA4NUNoUUlBWUVjSTd6RGVWTGtrOGpkWkFCaTdGbDl0M05OQTU3WlVZVzErWE45CitUZ3ljMTlTbGoxVW1RdkRvekxCQzk5TVJpLzREQTIxRFpIODY3ekFYenFqZWUrckorQkZvNzVEQjlqd2tMTmUKUGVpemxRenRIWmpSU0tnaWdSNU9KSmtSVHIvNjduaTBtbzVITGNkU3hBSDFmdXdXS0hWS2RHQlQrNjhhYkUrZwprUSsrVDhMenVhK1FtakxOUVFqMVJCSFYzSzVQL3dvbXJKZG02d1ZLbm85RXlNait4azFwS05wb0F4UnR1WllmCkNEVVVQWjR1cEJtbzBLN3dGNHdtV3VXYSttVndlb1ZTcDRXMEhOWVJGU1pyWWxrc1AzdWViSHcva1FJREFRQUIKbzRJQmVqQ0NBWFl3Q1FZRFZSMFRCQUl3QURBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQmtBd05BWUpZSVpJQVliNApRZ0VOQkNjV0pVOVFUbk5sYm5ObElFZGxibVZ5WVhSbFpDQlRaWEoyWlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEClZSME9CQllFRktidDd0QkRKN1daV1lMblQ5cEhTMklPdTg1TU1JR3pCZ05WSFNNRWdhc3dnYWloZ1kra2dZd3cKZ1lreEhUQWJCZ05WQkFNTUZFOVFUbk5sYm5ObExteHZZMkZzWkc5dFlXbHVNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVWZDRE0KekVyVDh2VWh6clpNUm1rcmJPd2dJR013SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQwpNQXNHQTFVZER3UUVBd0lGb0RBZkJnTlZIUkVFR0RBV2doUlBVRTV6Wlc1elpTNXNiMk5oYkdSdmJXRnBiakFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQWNQbmllQ29FSmRjV25CVHdqRmE3bjZqTFMrZ1pUYUk2ZjAzWktQMFYKQ0pSaDUxWTNwb2dpcnJYcVNHQ1VGTVNHbGpsQ21mU2VhdW9GWFYwanZLejhnMGZ1NU9kYlhjd2FrZFBZSXgydQpVT0dMbllTaEdCNlpoMmhpWWdSVGFpemJoTVliQitzQkV4QU1CdHZRZElSZ3dBWkRNWE9jY0MwZnJaMFhRRlRFCnQ3by82VGYvZEprdnB0cmRYWW1INnFUWlA2MGxyTnlabVloTjc1NEluOFZLRVVSRWNZamg1ejlJanA1NTE1cU0Kb0VrSGNKbTBDNkh2VStETG1ybFpFYkV4bnVOMFQzWTBNZ0hiVFVhU2Y1L2FKVmlIM0dOMnMzbG1ZM0VXTS9Vcwo3azFyc2JTa2orZzJvQXlTcjU0Nlc4RkdaMjliZFlOYk1EaTQ4aXVRQWlzRlQrTGZXN3Y3RVl3WGJ3NUhSVkpNCjV2MlhnenJwN2Yxa08zckEzeXUyS1VSSktHdjJ1ZXhNSythb1VOZXhRT3ludmZGUTBCemRHQ1dlcmVvZTZ3bDMKbHc4Z2dCWDI1VGIxbzR3d1UzNXdtUUIrMC9rbjB0SXoveVBhY2JzbDAwZ0dJNFhTbWpRQmF0MUZYRHFEME1JMgp4S0RqMXZ2dkNTVnRKc09ESG95eDhLc3ptbno5UVFoV0ZNeC9LTXp1clh0OWtsWFRJc0t3d2NXMytZQWtQMzNaClgvOGJnZS8zK2RibTdNN3BndmFBNVFlU3VTbkwzNjdLT1g1NlNZNGFZWHhkc1haVDc0ZGxVRU1jbG9NU0NIOG4KR25QWlpyWTNHdnZaU2ovQWdqT2lDNHNBL2JSSmh4cCtUQndlRFByR0pFUEJFVW9sZEZHVXdraFJXMVVuRlc2YwpyTGM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</crt>
|
||||
<csr/>
|
||||
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRExzTERuNG1rVHhFclgKdHdqTXoxencyeHJhNTZ5bTYrYzlRNEM3UjMyMzVuWjVPM1ovdzMva01XZjkvbkZsamcyQVdYRElKY1dmOTQ0UgpFblFMdmlha2NNTHR1Qm1KTVRYZnVQWnhsSWE4Wlc0S0ZuT21UUzRZcUJXOEdCSkl3TG1DaTFvZGhZeGZQRDZMCldEZnZYMm1tWEIrUFNxL0l4WEhOSjdxZVB4YzVuSzUyMW1uNW5DQW1kUENjYmZ2Z1d1QzZOeFZtemR5em1rVC8KNnVqRUJFYTZ6RkQyUUtDN1N6a2ptZUNpd2VDQjc5NjZqeEV5UWtWUWpiVDkwWXJ4Q290TyttMkhBTlBkc2NPcQpvNldXMEhmSlNpa2k4K2NDWHlzbGRFSzFZbmxueTNFWlVqTExWamVFL1dBVTRDUFlSaFhUVUZVMjFkVXZrM29hCkVpeldVdmhKc1FHYnh2aFRUQlN3aVliOUQ3Ymx1MWl4UzJxNzczOTlVZ1E3cVM1QWE4SUdtcDg1Q2hRSUFZRWMKSTd6RGVWTGtrOGpkWkFCaTdGbDl0M05OQTU3WlVZVzErWE45K1RneWMxOVNsajFVbVF2RG96TEJDOTlNUmkvNApEQTIxRFpIODY3ekFYenFqZWUrckorQkZvNzVEQjlqd2tMTmVQZWl6bFF6dEhaalJTS2dpZ1I1T0pKa1JUci82CjduaTBtbzVITGNkU3hBSDFmdXdXS0hWS2RHQlQrNjhhYkUrZ2tRKytUOEx6dWErUW1qTE5RUWoxUkJIVjNLNVAKL3dvbXJKZG02d1ZLbm85RXlNait4azFwS05wb0F4UnR1WllmQ0RVVVBaNHVwQm1vMEs3d0Y0d21XdVdhK21Wdwplb1ZTcDRXMEhOWVJGU1pyWWxrc1AzdWViSHcva1FJREFRQUJBb0lDQUFzc3hPL2IzSTd3a0hpWU9wdmQ3b2ZxClJXVm9HM0ZHOVBkSCtrcU1DQW9zVXlpZ2lnWkZhQUZSY3BhZFBJUnBVRFZQOHQrUUx2RHhTSEtJVkNTR3lLRHgKN01mVTkxV3ZCUGtpc1NhWEV2TklEMHJ2WTJYbXl4WWdOcDBNcHdnbHhxZXlWSDNWSTFmZ09zQXpWVkpGSmtzeAp0NnVKV2U2R1lwRnlVZ3MzZytNdHhPYVJLZHcvWkFZb0dVRkR5WE5NR1JNdVRYYkg2WWxTOStFZ2RxZTJZbGtDCk41amkvODUydUlwSytXZUVnbmd1ZkVZNDdpVVhQSzFJTVB0UjRURUxOb3hkTWVBYnZBUG9La2QwMWZOWnVaQ3EKQ0dxNS9kMEQ4cDZKNjlUK3M1RnR1R1UrdkxtcUg3NmtsZjVmTTZnOFpCc2xSNStNQ0xlay9DaHRBZGU2VXBQRApXQ2EwazU3dmdneUdQdGVlVXY2RVJBMEp6SjlJd2VHZGdVWHhNdW5LK3ZSNWYydWJKWFJoMVJpNTNFSTNvVUxYClFvWm9hOTY3VzNUajQ3UzR2RlQyK2dLb0g2OXlNckdVNVkwcjJrSTFXMVVhWEJ1aVVrMi94amdyWVdTblUzUUQKZkM3ZXllTlNlN3c4UW9MMVBEYXJwVXdaK2xGZ0w3NFVScldLQU12WVhxa3NTMHVtb0tTSWo4cjZMM0hVSUVaUgpZRzhBTU91dFhrQk5lMkNpTXRKM2NYUXNIOWloQU9QL3AvaE9BTTBGNkM3Ymt1Vm85d1pRdDVESWxRWUl4TlArClFRZ2doRnhBNTlTWmpwRk00QkN5L0hEOENJY3VuSURZOVNlbXNSYXdyUVY1eGk1akFScVdOYTdBSVMvVlArdUUKQkpmS0dDNFlZVmxqS1VLeEgxVUJBb0lCQVFEcnZOWXNrd3ZhQ2Z6MlcvbkIrRjNjVE1RbjM2RENSYnZwQ0s1dApldm96TjJGbjBJdWFnN2RrYzN2NTFxTVNEd0h1cVNkVTRHUHZMcm83alpJaFNEZ1AwLzBLWmc0VmxtZE5HbEovCk1lcXhmOGRkOFdTQjZiUksrK2FRcEhaeDd2SUFTWkE4eHkvZ3F2NGJpSmlqVDhUQ2lSeXdYSTQ0ZlRYM0xLZTIKVG1Uc29XNk9yQmErSWJRYjBpTEh4WE4rZ3JDM0cxWWxIUlNvTEpKUkU0eFVLMGsvM1JLNU16RjRIYUNZb1BWOQpDOFpQellMR253SE9ERU8zbHRtSGJvQUNFa0VrT2dFV3U4RFo2YlYrMXJBcVh6WnN0L3hNZnJ5KzlMRVdYQUwvCkRnOEdkall0YzdyUTFZd1BIY1h6cFo2clVIdXh2K0p6VEE1ZzNCS1p6aWhwNFdHaEFvSUJBUURkTXE3N0dRWGMKYW5hYlMxanlFT3VzNFp5ZlJ4cW10NEVFaHZjY0dRVVVrV0IrWk11bnpyaENxb3ZwQ1dhVU9zWVhuNG45Y3BQSAo3bm1mOUJHbFI4NVhCVHNLM2d4bE5NMUhjSGFTNXZSem9WQVBNd3o2VVV0ZFNLWXRLR0Q3Wkxmbm9ISXN1SlEzCnJ6WWIyTFhpVmx6MWlNNUVmT0VrL1J5UjBwMGtleXVwa0F0OXBRV0hzaURYb0pibDE2d1ZLc2NDNGUzNjdRRWsKcFdoeXcyS3A4bXdtOGxqQllxZWtHdUREeGVZSDMzMVlGa2FMUEJCT2xPQnlveFlOUDdBVVREUlV3KzB1T01jNwozb0N1VE9jWnAxVWMwQURBOXRTRVRINklWdlFEUXZlYzR6MWRTVGRmUEkxRzVUTCt4Mzlvam5OcGVoYng0bEwvCmRxTTBmcFlPL2ZmeEFvSUJBRmwzOU8wNzdjNlY1ZHoyY1djTnhVbThGT0p4UEVrZlFEOGtYVmNOeW5HdnZoY3gKamhwWmpUdmhuSmJvd0VFMVV1MXFZNVFTQ2J1WVIzUWN1ZTVKdzRVMlZwNGd0NDIzNUlMZHo1dVlyVk1xaE5jQgpxN3ltbnhlcVhRcGVjTm15NzBQdXA0QjV0SkVYTkpQc2xzbThsNWVoaERMbkhjOFFybStlRWhUZDBlNEJJcjJoClVJeGVyRVcyemg1MXNPeTkyeVhUaVRGU3hTbENxVkYrRXM5TEVtVGJtYVNTYWw4RkY1TjEyMVhYSnkvWWRwNjkKY0dqc1BMTXIzR2xMSmVnalYzZlJUK0o1NWFxT3lhUlhCTXRBRVo3WGdUampETzJJWHNGMnNHaHV4SU1XVUYrVgp3YnhLbi9xSXVUMU1pVmpKbGZpVE0vWEFVdUN1QlowOEloaDFRcUVDZ2dFQUZwdzJySzRMSGxPM21mb2l0bU9xClkzcVFVdXVtdXNIcEt6aE1qQSsycURxUC9YdDZJY1lNcWF2YkwwL3ByMTh1bm4yTlVsM2k0ejNxS3NKOUIwTUcKd1hoa1o2RDQ3V052VkUwWG9iNS80RTN0N0EvUTFNbDRoYW1HYXZsRXFJM01DcDRvN1k5VWZ6aW10RVA3bTQ0dQpaRjYranR1ZysvSHZlS3hwcWEvNWI1U3N5QVFWUTZDZW9Ndm1nTW9CNmd2OFdid1VZbURWakJSb1Q4clBEQVllCnJnQjV1QkxJaGdyRlROMnV2TUZJZzdlTE1ISk1UR3dGWVZKd1Q1eGgrRUV0M0RoR3gwSEFnOHNqcGkxd05md1gKeENFeTRvYVloSWw1S2FDUndyK1dwZS9JZHYrajdGVTVMN1QvK0hFV0FlOEZ0eE5td3dUYWJRaUllRFkwU29ZRgpVUUtDQVFFQXRiclZqbTFsaDQ1REhIWnVsem4xNllIQzJrMUYwWG9FZFVSQ3o0QTFsMHBEK3ljL2srdmJ0Qmg0Cm1RRDV1a3FicHFFZy9GNUhDZmdOaHlieHNNdVV6NzFaU24zN2dwczNDWUdiUyt4RkhjZTJBakNTbUlYQWIxQjgKR0Z2WnV4UlB5QXU0YVBvT1J3RzM3NVBOM0VNNk83bzdxbjlYeExTZWRIMHExM2U0YkhYYm4rc2xOa1RIM2xmcwpLVnBOUUhVSUNDSW5vQ0llV1dwdnAwQnFoYjlKclRsbXd2c25zOHpZVDNiY3F5QXZHZGRnNUs3Y0MwRVJaem9ECnFJTkI3S05FVjQ1NmF0eDZVT3VYUlpKREMvaHNJUTZNaVBveUJacHRsK1ZIMEtQbEFIWGExb0FXZmNuL0U3MFYKK0RaeVBiMWxkQUdpb1hqditGd2h5VzZlWEVrQlBnPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||
</cert>
|
||||
<syslog/>
|
||||
</opnsense>
|
@ -0,0 +1,987 @@
|
||||
</acls>
|
||||
<acls>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<action>alert</action>
|
||||
<active_interface/>
|
||||
<activeTimeout>1800</activeTimeout>
|
||||
<address/>
|
||||
<address/>
|
||||
<address/>
|
||||
<address/>
|
||||
<address/>
|
||||
</advanced>
|
||||
<advanced>
|
||||
<adv_dhcp_config_advanced/>
|
||||
<adv_dhcp_config_file_override/>
|
||||
<adv_dhcp_config_file_override_path/>
|
||||
<adv_dhcp_option_modifiers/>
|
||||
<adv_dhcp_pt_backoff_cutoff/>
|
||||
<adv_dhcp_pt_initial_interval/>
|
||||
<adv_dhcp_pt_reboot/>
|
||||
<adv_dhcp_pt_retry/>
|
||||
<adv_dhcp_pt_select_timeout/>
|
||||
<adv_dhcp_pt_timeout/>
|
||||
<adv_dhcp_pt_values>SavedCfg</adv_dhcp_pt_values>
|
||||
<adv_dhcp_request_options/>
|
||||
<adv_dhcp_required_options/>
|
||||
<adv_dhcp_send_options/>
|
||||
<aggressivensec>1</aggressivensec>
|
||||
</alert>
|
||||
<AlertLogrotate>W0D23</AlertLogrotate>
|
||||
<AlertSaveLogs>4</AlertSaveLogs>
|
||||
<alert uuid="15f1e9ca-5dd5-4b20-b595-b6b4f82245d0">
|
||||
</Alias>
|
||||
<alias-address/>
|
||||
<aliases/>
|
||||
<aliases/>
|
||||
<alias-subnet>32</alias-subnet>
|
||||
<Alias version="1.0.1">
|
||||
and for the sender directly reachable, route and next hop is known.</descr>
|
||||
<any/>
|
||||
<any/>
|
||||
<any>1</any>
|
||||
<any>1</any>
|
||||
<any>1</any>
|
||||
<any>1</any>
|
||||
<any>1</any>
|
||||
as part of the standard FreeBSD core system.</descr>
|
||||
as part of the standard FreeBSD core system.</descr>
|
||||
<blocklists/>
|
||||
</bogons>
|
||||
<bogons>
|
||||
<bridged/>
|
||||
</bridges>
|
||||
<bridges>
|
||||
<ca/>
|
||||
<cacheflush/>
|
||||
<cachemaxnegativettl/>
|
||||
<cachemaxttl/>
|
||||
<cacheminttl/>
|
||||
</captiveportal>
|
||||
<captiveportal version="1.0.2">
|
||||
</capture>
|
||||
<capture>
|
||||
<caref/>
|
||||
<caref/>
|
||||
<categories/>
|
||||
</Category>
|
||||
<Category version="1.0.0">
|
||||
</cert>
|
||||
</cert>
|
||||
<cert uuid="547102e9-23ba-48b8-8af8-64be61049e96">
|
||||
<cert uuid="cad18e13-92c5-48b6-9b44-ad2e5dcc799e">
|
||||
<children/>
|
||||
<ciphers/>
|
||||
</client>
|
||||
<clients/>
|
||||
<client version="1.0.0">
|
||||
<clone/>
|
||||
</collect>
|
||||
<collect>
|
||||
<column_count>2</column_count>
|
||||
<compression/>
|
||||
<condition>changed status</condition>
|
||||
<condition>cpu usage is greater than 75%</condition>
|
||||
<condition>failed link</condition>
|
||||
<condition>failed ping</condition>
|
||||
<condition>loadavg (15min) is greater than 2</condition>
|
||||
<condition>loadavg (1min) is greater than 4</condition>
|
||||
<condition>loadavg (5min) is greater than 3</condition>
|
||||
<condition>memory usage is greater than 75%</condition>
|
||||
<condition>saturation is greater than 75%</condition>
|
||||
<condition>space usage is greater than 75%</condition>
|
||||
<condition>status != 0</condition>
|
||||
<Connections/>
|
||||
</created>
|
||||
</created>
|
||||
</created>
|
||||
</created>
|
||||
<created>
|
||||
<created>
|
||||
<created>
|
||||
<created>
|
||||
</cron>
|
||||
<cron version="1.0.4">
|
||||
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhIakNDQlFhZ0F3SUJBZ0lVSUhVRkpwc253VGtzYWRrZmRDNUp1SDhqWnZNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZa3hIVEFiQmdOVkJBTU1GRTlRVG5ObGJuTmxMbXh2WTJGc1pHOXRZV2x1TVFzd0NRWURWUVFHRXdKTwpUREVWTUJNR0ExVUVDQXdNV25WcFpDMUliMnhzWVc1a01SVXdFd1lEVlFRSERBeE5hV1JrWld4b1lYSnVhWE14CkxUQXJCZ05WQkFvTUpFOVFUbk5sYm5ObElITmxiR1l0YzJsbmJtVmtJSGRsWWlCalpYSjBhV1pwWTJGMFpUQWUKRncweU5ERXhNVE14TmpFNE1EbGFGdzB5TlRFeU1UVXhOakU0TURsYU1JR0pNUjB3R3dZRFZRUUREQlJQVUU1egpaVzV6WlM1c2IyTmhiR1J2YldGcGJqRUxNQWtHQTFVRUJoTUNUa3d4RlRBVEJnTlZCQWdNREZwMWFXUXRTRzlzCmJHRnVaREVWTUJNR0ExVUVCd3dNVFdsa1pHVnNhR0Z5Ym1sek1TMHdLd1lEVlFRS0RDUlBVRTV6Wlc1elpTQnoKWld4bUxYTnBaMjVsWkNCM1pXSWdZMlZ5ZEdsbWFXTmhkR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQwpEd0F3Z2dJS0FvSUNBUURKU1FlZ1RYckp5dDVWYmk0Rk9IeHJrOXhxQ21FRU54V2pINVVwNDBFK3hjUzZQU1NyCkNEclc3ZDlYcVJkOEpEZENtdGtLRGlMYWNaUzJMUm1abnd6VnRzZGtBR2pOYm5OM1hSNmlFajdGL0JnbVBlcDEKU2pJWnBTZzNkOS9YeHFPQTNZQllzTS9uUk9vWHlmTHcycFJOLzhHVjN3MHoxbVFZUitMZWI3UTFuc1c3dTJ5NworVHc5STZGU0J4bkdaR3RyUFl5NkVBb0NMdm1GQnFCYWxkWTQ2ejdlWjlIRkZXaE8ybWpaUzVPdTE3ZVozVHBxCnBRTVB1T2JxV3FyaE0xdjVjdmJodU5kREhNZ3ZVVFVnQ0RNK2FkS3dIc0dNNGw5ZGtOQTgxdGlJcXpzN1BqcjEKUm0wMlVuUXRneW8zY3hPRXVsYk9nU0hsdGhTMmtUMXE2UmhyemYvRGRJSEhta1RROGtwWVloWGc0VmpMQVdpSQpQbm9ncnZsRUlWMERhQ3ZEMjZiRkRDbVkxc29FbDV1NGtYanJScDRXK29NUVRHeG80NzFMQnNBMlh1Si82ZFJBCkJMVzh4dXBFODhEYmlrWW51NVdQaUp6ZXh4UVIyNU1FQVd6TCtKK0lubFExbmpMVWwyN3R0c1VQQ1VjL3c0NXoKcHBERHYwZnU0Nnp1S3EzY0VWRitiREsrQWdlT0Q2SXNzUjVRRTdFNVdkWjYrNWl6ZHB4eWdUeGh0L1k1RlBkSApHQjlCbDFrejR4bHRhczlvbmZrSDFkVHk3dzFNck43Z1l5WjgvS0pMWW9EY2NBOVFuNGt6bGtPeFVUMENuS1ExCmtWNk90aFRsVFgzK2duaUpJK3RXWUQ5bTRldXNzYWN1anpyWDl5TTNZcEloMnZqODJ0NHpPNjIrNFFJREFRQUIKbzRJQmVqQ0NBWFl3Q1FZRFZSMFRCQUl3QURBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQmtBd05BWUpZSVpJQVliNApRZ0VOQkNjV0pVOVFUbk5sYm5ObElFZGxibVZ5WVhSbFpDQlRaWEoyWlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEClZSME9CQllFRkJRZytucWI5QW9HSWtoTUxhNHFzWGRvY0JGcE1JR3pCZ05WSFNNRWdhc3dnYWloZ1kra2dZd3cKZ1lreEhUQWJCZ05WQkFNTUZFOVFUbk5sYm5ObExteHZZMkZzWkc5dFlXbHVNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVUlIVUYKSnBzbndUa3NhZGtmZEM1SnVIOGpadk13SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQwpNQXNHQTFVZER3UUVBd0lGb0RBZkJnTlZIUkVFR0RBV2doUlBVRTV6Wlc1elpTNXNiMk5oYkdSdmJXRnBiakFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQUZqNlQ1MmRIUklVMHJuZDE0d2dob2tjUkdrK0hIQloyTGlDRHpUeUwKNHdCeTJ1ZXJXQWdvYUZzeUlNQzhwWTBhWlc4TFlSd1BtRVB0OXlUS09ZZzF0NWtOUnk2RkF5akszeis5TGZTQwoxRlFpb0pma3FHRnhoc1IxV1R5RjBGNmJmM2tZRDZ4OWw1dEdqMXF3SndrekZWZWcvZGNtUVhvRTBmUDRqSFFvCmgxWXdiZ3pTa084TzRLUVhuWXVRM3g0bWdoZnBvR0hQM2xINlcybDJlWHpqSzllRjJtUG1ZS0p1M3JpSnkvL3gKRzhQWXBYNlNTN3RoVnNNeHF3cGJHbURXQXRuSnNrSmVsNDI1WUdOYlZ4YTNPOHE3RWxLNGFoNXpmai8wRnVwTgo3SnlqMWQyZjZFck14WlFnUi9EdmlUVnhISytRY1lBRXBqU2ZmZzBrRStpS1BlN0VYTVk1VU1aZUFTK1ZteG1LCjBPOWxaQXNpWUlEMzkwVjNTaDZxYjhoL2xMZ0V2NCtSNUw1VEpFaldYc0dQSUpGaHJNSFJWR1lhV3JIYWx3eHYKNjE5NFlpSXBEaUlHSVVSWGN1U3dNcndIQzN0bms2QVo2OW5CczVXT1JYM0NxOVhRRnVrVlA5eUMxQnRuSmFwbQpubUMzK3NtTTErRjkxUXlkVXJtbUxPNUVwUmtTMitBcmRTSklUR1NRNWt4L3VLNjhzV0QzVVdNNVRibUxrcWdOCkt6djZjemVCbzJiVExDT0JKUWJ4STFCckRPTUFMSDlCdXdUamVXdUVtWE9TWE1lTDFsejdhL2JZKzJxa1BSOVAKTE5IekE2QXZlVmxucDNaeFdqMjZFK3dwYnU5cHBaY0QzRGVHRnRnZzVJbUJ2ZDNWbjJ6UVc4a1ZMT1ZBdllSawptdWc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</crt>
|
||||
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhIakNDQlFhZ0F3SUJBZ0lVZkNETXpFclQ4dlVoenJaTVJta3JiT3dnSUdNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZa3hIVEFiQmdOVkJBTU1GRTlRVG5ObGJuTmxMbXh2WTJGc1pHOXRZV2x1TVFzd0NRWURWUVFHRXdKTwpUREVWTUJNR0ExVUVDQXdNV25WcFpDMUliMnhzWVc1a01SVXdFd1lEVlFRSERBeE5hV1JrWld4b1lYSnVhWE14CkxUQXJCZ05WQkFvTUpFOVFUbk5sYm5ObElITmxiR1l0YzJsbmJtVmtJSGRsWWlCalpYSjBhV1pwWTJGMFpUQWUKRncweU5ERXhNVE14TmpReE5EVmFGdzB5TlRFeU1UVXhOalF4TkRWYU1JR0pNUjB3R3dZRFZRUUREQlJQVUU1egpaVzV6WlM1c2IyTmhiR1J2YldGcGJqRUxNQWtHQTFVRUJoTUNUa3d4RlRBVEJnTlZCQWdNREZwMWFXUXRTRzlzCmJHRnVaREVWTUJNR0ExVUVCd3dNVFdsa1pHVnNhR0Z5Ym1sek1TMHdLd1lEVlFRS0RDUlBVRTV6Wlc1elpTQnoKWld4bUxYTnBaMjVsWkNCM1pXSWdZMlZ5ZEdsbWFXTmhkR1V3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQwpEd0F3Z2dJS0FvSUNBUURMc0xEbjRta1R4RXJYdHdqTXoxencyeHJhNTZ5bTYrYzlRNEM3UjMyMzVuWjVPM1ovCnczL2tNV2Y5L25GbGpnMkFXWERJSmNXZjk0NFJFblFMdmlha2NNTHR1Qm1KTVRYZnVQWnhsSWE4Wlc0S0ZuT20KVFM0WXFCVzhHQkpJd0xtQ2kxb2RoWXhmUEQ2TFdEZnZYMm1tWEIrUFNxL0l4WEhOSjdxZVB4YzVuSzUyMW1uNQpuQ0FtZFBDY2JmdmdXdUM2TnhWbXpkeXpta1QvNnVqRUJFYTZ6RkQyUUtDN1N6a2ptZUNpd2VDQjc5NjZqeEV5ClFrVlFqYlQ5MFlyeENvdE8rbTJIQU5QZHNjT3FvNldXMEhmSlNpa2k4K2NDWHlzbGRFSzFZbmxueTNFWlVqTEwKVmplRS9XQVU0Q1BZUmhYVFVGVTIxZFV2azNvYUVpeldVdmhKc1FHYnh2aFRUQlN3aVliOUQ3Ymx1MWl4UzJxNwo3Mzk5VWdRN3FTNUFhOElHbXA4NUNoUUlBWUVjSTd6RGVWTGtrOGpkWkFCaTdGbDl0M05OQTU3WlVZVzErWE45CitUZ3ljMTlTbGoxVW1RdkRvekxCQzk5TVJpLzREQTIxRFpIODY3ekFYenFqZWUrckorQkZvNzVEQjlqd2tMTmUKUGVpemxRenRIWmpSU0tnaWdSNU9KSmtSVHIvNjduaTBtbzVITGNkU3hBSDFmdXdXS0hWS2RHQlQrNjhhYkUrZwprUSsrVDhMenVhK1FtakxOUVFqMVJCSFYzSzVQL3dvbXJKZG02d1ZLbm85RXlNait4azFwS05wb0F4UnR1WllmCkNEVVVQWjR1cEJtbzBLN3dGNHdtV3VXYSttVndlb1ZTcDRXMEhOWVJGU1pyWWxrc1AzdWViSHcva1FJREFRQUIKbzRJQmVqQ0NBWFl3Q1FZRFZSMFRCQUl3QURBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQmtBd05BWUpZSVpJQVliNApRZ0VOQkNjV0pVOVFUbk5sYm5ObElFZGxibVZ5WVhSbFpDQlRaWEoyWlhJZ1EyVnlkR2xtYVdOaGRHVXdIUVlEClZSME9CQllFRktidDd0QkRKN1daV1lMblQ5cEhTMklPdTg1TU1JR3pCZ05WSFNNRWdhc3dnYWloZ1kra2dZd3cKZ1lreEhUQWJCZ05WQkFNTUZFOVFUbk5sYm5ObExteHZZMkZzWkc5dFlXbHVNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVWZDRE0KekVyVDh2VWh6clpNUm1rcmJPd2dJR013SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQwpNQXNHQTFVZER3UUVBd0lGb0RBZkJnTlZIUkVFR0RBV2doUlBVRTV6Wlc1elpTNXNiMk5oYkdSdmJXRnBiakFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQWNQbmllQ29FSmRjV25CVHdqRmE3bjZqTFMrZ1pUYUk2ZjAzWktQMFYKQ0pSaDUxWTNwb2dpcnJYcVNHQ1VGTVNHbGpsQ21mU2VhdW9GWFYwanZLejhnMGZ1NU9kYlhjd2FrZFBZSXgydQpVT0dMbllTaEdCNlpoMmhpWWdSVGFpemJoTVliQitzQkV4QU1CdHZRZElSZ3dBWkRNWE9jY0MwZnJaMFhRRlRFCnQ3by82VGYvZEprdnB0cmRYWW1INnFUWlA2MGxyTnlabVloTjc1NEluOFZLRVVSRWNZamg1ejlJanA1NTE1cU0Kb0VrSGNKbTBDNkh2VStETG1ybFpFYkV4bnVOMFQzWTBNZ0hiVFVhU2Y1L2FKVmlIM0dOMnMzbG1ZM0VXTS9Vcwo3azFyc2JTa2orZzJvQXlTcjU0Nlc4RkdaMjliZFlOYk1EaTQ4aXVRQWlzRlQrTGZXN3Y3RVl3WGJ3NUhSVkpNCjV2MlhnenJwN2Yxa08zckEzeXUyS1VSSktHdjJ1ZXhNSythb1VOZXhRT3ludmZGUTBCemRHQ1dlcmVvZTZ3bDMKbHc4Z2dCWDI1VGIxbzR3d1UzNXdtUUIrMC9rbjB0SXoveVBhY2JzbDAwZ0dJNFhTbWpRQmF0MUZYRHFEME1JMgp4S0RqMXZ2dkNTVnRKc09ESG95eDhLc3ptbno5UVFoV0ZNeC9LTXp1clh0OWtsWFRJc0t3d2NXMytZQWtQMzNaClgvOGJnZS8zK2RibTdNN3BndmFBNVFlU3VTbkwzNjdLT1g1NlNZNGFZWHhkc1haVDc0ZGxVRU1jbG9NU0NIOG4KR25QWlpyWTNHdnZaU2ovQWdqT2lDNHNBL2JSSmh4cCtUQndlRFByR0pFUEJFVW9sZEZHVXdraFJXMVVuRlc2YwpyTGM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K</crt>
|
||||
<csr/>
|
||||
<csr/>
|
||||
</ctrl_agent>
|
||||
<ctrl_agent version="0.0.1">
|
||||
<data_length/>
|
||||
<default_action>allow</default_action>
|
||||
<defaultgw>1</defaultgw>
|
||||
<defaultPacketSize/>
|
||||
<depends/>
|
||||
<depends/>
|
||||
<depends/>
|
||||
<depends/>
|
||||
<descr/>
|
||||
<descr>Allow ping</descr>
|
||||
<descr>Allow unprivileged access to tap(4) device nodes</descr>
|
||||
<descr>Default allow LAN IPv6 to any rule</descr>
|
||||
<descr>Default allow LAN to any rule</descr>
|
||||
<descr>Disable CTRL+ALT+Delete reboot from keyboard.</descr>
|
||||
<descr>Disable Indirect Branch Restricted Speculation (Spectre V2 mitigation)</descr>
|
||||
<descr>Do not delay ACK to try and piggyback it onto a data packet</descr>
|
||||
<descr>Do not send ICMP port unreachable messages for closed UDP ports</descr>
|
||||
<descr>Drop packets to closed TCP ports without returning a RST</descr>
|
||||
<descr>Drop SYN-FIN packets (breaks RFC1379, but nobody uses it anyway)</descr>
|
||||
<descr>Enable/disable sending of ICMP redirects in response to IP packets for which a better,
|
||||
<descr>Enable privacy settings for IPv6 (RFC 4941)</descr>
|
||||
<descr>Enable sending IPv6 redirects</descr>
|
||||
<descr>Enable TCP extended debugging</descr>
|
||||
<descr>Generate SYN cookies for outbound SYN-ACK packets</descr>
|
||||
<descr>Handling of non-IP packets which are not passed to pfil (see if_bridge(4))</descr>
|
||||
<descr>Hide processes running as other groups</descr>
|
||||
<descr>Hide processes running as other users</descr>
|
||||
<descr>Increase UFS read-ahead speeds to match the state of hard drives and NCQ.</descr>
|
||||
<descr>Interface WAN Gateway</descr>
|
||||
<description/>
|
||||
<description/>
|
||||
<description/>
|
||||
<description/>
|
||||
<description/>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
<description>/firewall_rules_edit.php made changes</description>
|
||||
<description>/interfaces.php made changes</description>
|
||||
<description>System Administrators</description>
|
||||
<descr>Loopback</descr>
|
||||
<descr>Maximum incoming/outgoing TCP datagram size (receive)</descr>
|
||||
<descr>Maximum incoming/outgoing TCP datagram size (send)</descr>
|
||||
<descr>Maximum outgoing UDP datagram size</descr>
|
||||
<descr>Maximum outgoing UDP datagram size</descr>
|
||||
<descr>Maximum socket buffer size</descr>
|
||||
<descr>Page Table Isolation (Meltdown mitigation, requires reboot.)</descr>
|
||||
<descr>Prefer privacy addresses and use them over the normal addresses</descr>
|
||||
<descr>Randomize PID's (see src/sys/kern/kern_fork.c: sysctl_kern_randompid())</descr>
|
||||
<descr>Randomize the ID field in IP packets</descr>
|
||||
<descr>Set ICMP Limits</descr>
|
||||
<descr>Set the ephemeral port range to be lower.</descr>
|
||||
<descr>Set to 0 to disable filtering on the incoming and outgoing member interfaces.</descr>
|
||||
<descr>Set to 1 to additionally filter on the physical interface for locally destined packets</descr>
|
||||
<descr>Set to 1 to enable filtering on the bridge interface</descr>
|
||||
<descr>Source routing is another way for an attacker to try to reach non-routable addresses behind your box.
|
||||
<descr>Source routing is another way for an attacker to try to reach non-routable addresses behind your box.
|
||||
<descr>System Administrator</descr>
|
||||
<descr>TCP Offload Engine</descr>
|
||||
<descr>This option turns off the logging of redirect packets because there is no limit and this could fill
|
||||
<descr>UDP Checksums</descr>
|
||||
<descr>Web GUI TLS certificate</descr>
|
||||
<descr>Web GUI TLS certificate</descr>
|
||||
</destination>
|
||||
</destination>
|
||||
</destination>
|
||||
</destination>
|
||||
</destination>
|
||||
</destination>
|
||||
<destination>
|
||||
<destination>
|
||||
<destination>
|
||||
<destination>
|
||||
<destination>
|
||||
<destination>
|
||||
<destinations/>
|
||||
</detect>
|
||||
<detect>
|
||||
</dhcp4>
|
||||
<dhcp4 version="1.0.0">
|
||||
</dhcpd>
|
||||
<dhcpd>
|
||||
<dhcpdv6/>
|
||||
<dhcphostname/>
|
||||
<dhcprejectfrom/>
|
||||
<DHCRelay version="1.0.1"/>
|
||||
<direction>in</direction>
|
||||
<direction>in</direction>
|
||||
<direction>in</direction>
|
||||
<direction>in</direction>
|
||||
<disablechecksumoffloading>1</disablechecksumoffloading>
|
||||
<disableconsolemenu>1</disableconsolemenu>
|
||||
<disabled>0</disabled>
|
||||
<disablelargereceiveoffloading>1</disablelargereceiveoffloading>
|
||||
<disablenatreflection>yes</disablenatreflection>
|
||||
<disablepreempt>0</disablepreempt>
|
||||
<disablesegmentationoffloading>1</disablesegmentationoffloading>
|
||||
<disablevlanhwfilter>1</disablevlanhwfilter>
|
||||
<disconnectppps>0</disconnectppps>
|
||||
<dns64/>
|
||||
<dns64prefix/>
|
||||
<dnsallowoverride>1</dnsallowoverride>
|
||||
</dnsbl>
|
||||
<dnsbl>
|
||||
<dnsserver/>
|
||||
<dnsserver>192.168.5.1</dnsserver>
|
||||
<domain>localdomain</domain>
|
||||
<domains/>
|
||||
<dots/>
|
||||
<egress_only/>
|
||||
<enable/>
|
||||
<enable/>
|
||||
<enable>0</enable>
|
||||
<enable>1</enable>
|
||||
<enable>1</enable>
|
||||
<enable>1</enable>
|
||||
<enabled/>
|
||||
<enabled/>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>0</enabled>
|
||||
<enabled>1</enabled>
|
||||
<enabled>1</enabled>
|
||||
<enabled>1</enabled>
|
||||
<enabled>1</enabled>
|
||||
<enabled>enabled</enabled>
|
||||
<enable_wpad/>
|
||||
<eventqueuePath/>
|
||||
<eventqueueSlots/>
|
||||
<events/>
|
||||
<extendedstatistics/>
|
||||
<fargw>0</fargw>
|
||||
<files/>
|
||||
<fileTags/>
|
||||
</filter>
|
||||
<filter>
|
||||
</Filter>
|
||||
<Filter version="1.0.4">
|
||||
</Firewall>
|
||||
<Firewall>
|
||||
</firmware>
|
||||
<firmware version="1.0.1">
|
||||
<flavour/>
|
||||
<force_down/>
|
||||
<format/>
|
||||
</forwarding>
|
||||
<forwarding>
|
||||
<from>10.100.8.10</from>
|
||||
<fwrules>1</fwrules>
|
||||
<gateway>172.17.0.1</gateway>
|
||||
</gateway_item>
|
||||
<gateway_item uuid="a6ea102d-68bb-430f-af8b-269d52498fe1">
|
||||
</Gateways>
|
||||
<Gateways version="1.0.0">
|
||||
</general>
|
||||
</general>
|
||||
<general>
|
||||
<general>
|
||||
</general>
|
||||
</general>
|
||||
</general>
|
||||
</general>
|
||||
</general>
|
||||
</general>
|
||||
<general>
|
||||
<general>
|
||||
<general>
|
||||
<general>
|
||||
<general>
|
||||
<general version="0.0.1">
|
||||
</geoip>
|
||||
<geoip>
|
||||
<gid>1999</gid>
|
||||
<gif/>
|
||||
</gifs>
|
||||
<gifs version="1.0.0">
|
||||
<gre/>
|
||||
</gres>
|
||||
<gres version="1.0.0">
|
||||
</group>
|
||||
<group>
|
||||
<group>admins</group>
|
||||
<groupname>admins</groupname>
|
||||
</ha>
|
||||
<ha>
|
||||
<ha_peers/>
|
||||
</hasync>
|
||||
<hasync version="1.0.0">
|
||||
<hideidentity/>
|
||||
<hideversion/>
|
||||
<homenet>192.168.0.0/16,10.0.0.0/8,172.16.0.0/12</homenet>
|
||||
<hostname>OPNsense</hostname>
|
||||
<hostname>rtx4090</hostname>
|
||||
<hosts/>
|
||||
<httpdAllow/>
|
||||
<httpdEnabled>0</httpdEnabled>
|
||||
<httpdPassword/>
|
||||
<httpdPort>2812</httpdPort>
|
||||
<httpdUsername>root</httpdUsername>
|
||||
<http_host>127.0.0.1</http_host>
|
||||
<http_port>8000</http_port>
|
||||
</IDS>
|
||||
<IDS version="1.0.9">
|
||||
<ifgroups version="1.0.0"/>
|
||||
<if>le0</if>
|
||||
<if>le1</if>
|
||||
<if>lo0</if>
|
||||
<inactiveTimeout>15</inactiveTimeout>
|
||||
<incomingnumtcp/>
|
||||
<infracachenumhosts/>
|
||||
<infrahostttl/>
|
||||
<infrakeepprobing/>
|
||||
<insecuredomain/>
|
||||
<Instances/>
|
||||
<interface/>
|
||||
<interface/>
|
||||
<interface/>
|
||||
<interface/>
|
||||
<interface>lan</interface>
|
||||
<interface>lan</interface>
|
||||
<interfaces/>
|
||||
<interfaces/>
|
||||
<interfaces/>
|
||||
<interfaces/>
|
||||
</interfaces>
|
||||
<interfaces>
|
||||
</Interfaces>
|
||||
<Interfaces>
|
||||
<interfaces>wan</interfaces>
|
||||
<interface>wan</interface>
|
||||
<interface>wan</interface>
|
||||
<interface>wan</interface>
|
||||
<interface>wan</interface>
|
||||
<interface>wan</interface>
|
||||
<internal_dynamic>1</internal_dynamic>
|
||||
<interval/>
|
||||
<interval>120</interval>
|
||||
<interval>monthly</interval>
|
||||
<ipaddr>10.100.8.15</ipaddr>
|
||||
<ipaddr>10.100.8.1</ipaddr>
|
||||
<ipaddr>127.0.0.1</ipaddr>
|
||||
<ipaddr>dhcp</ipaddr>
|
||||
<ipaddrv6>::1</ipaddrv6>
|
||||
<ipaddrv6>track6</ipaddrv6>
|
||||
<ipprotocol>inet6</ipprotocol>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<ipprotocol>inet</ipprotocol>
|
||||
<ips>0</ips>
|
||||
</IPsec>
|
||||
<IPsec version="1.0.1">
|
||||
<ipv6allow>1</ipv6allow>
|
||||
It can also be used to probe for information about your internal networks. These functions come enabled
|
||||
It can also be used to probe for information about your internal networks. These functions come enabled
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<item>
|
||||
<jobs/>
|
||||
<jostletimeout/>
|
||||
</Kea>
|
||||
<Kea>
|
||||
<kex/>
|
||||
<keyPairs/>
|
||||
<keys/>
|
||||
<keysig/>
|
||||
<lagg/>
|
||||
</laggs>
|
||||
<laggs version="1.0.0">
|
||||
</lan>
|
||||
</lan>
|
||||
<lan>
|
||||
<lan>
|
||||
<language>en_US</language>
|
||||
<latencyhigh/>
|
||||
<latencylow/>
|
||||
<lb_use_sticky>1</lb_use_sticky>
|
||||
<lists/>
|
||||
</lo0>
|
||||
<lo0>
|
||||
<locals/>
|
||||
<local_zone_type>transparent</local_zone_type>
|
||||
<logfile/>
|
||||
<loglocal>1</loglocal>
|
||||
<loglocalactions/>
|
||||
<LogPayload>0</LogPayload>
|
||||
<logqueries/>
|
||||
<logreplies/>
|
||||
<logservfail/>
|
||||
<logtagqueryreply/>
|
||||
<logverbosity>1</logverbosity>
|
||||
<loopbacks version="1.0.0"/>
|
||||
<losshigh/>
|
||||
<loss_interval/>
|
||||
<losslow/>
|
||||
</Lvtemplate>
|
||||
<Lvtemplate version="0.0.1">
|
||||
<mac>d8:5e:d3:e7:2c:8c</mac>
|
||||
<macs/>
|
||||
<mailserver>127.0.0.1</mailserver>
|
||||
<match/>
|
||||
<match/>
|
||||
<match/>
|
||||
<match/>
|
||||
<maxfilesize/>
|
||||
<maxpreserve>31</maxpreserve>
|
||||
<media/>
|
||||
<mediaopt/>
|
||||
<member>0</member>
|
||||
<mirror/>
|
||||
<mmonitRegisterCredentials>1</mmonitRegisterCredentials>
|
||||
<mmonitTimeout>5</mmonitTimeout>
|
||||
<mmonitUrl/>
|
||||
<mode>automatic</mode>
|
||||
</monit>
|
||||
<monitor/>
|
||||
<monitor_disable>1</monitor_disable>
|
||||
<monitor_noroute/>
|
||||
<monit version="1.0.13">
|
||||
<MPMAlgo/>
|
||||
<msgcachesize/>
|
||||
<name>$HOST</name>
|
||||
<name>admins</name>
|
||||
<name>carp_status_change</name>
|
||||
<name>ChangedStatus</name>
|
||||
<name>CPUUsage</name>
|
||||
<name>gateway_alert</name>
|
||||
<name>LoadAvg15</name>
|
||||
<name>LoadAvg1</name>
|
||||
<name>LoadAvg5</name>
|
||||
<name>MemoryUsage</name>
|
||||
<name>NetworkLink</name>
|
||||
<name>NetworkSaturation</name>
|
||||
<name>NonZeroStatus</name>
|
||||
<name>Ping</name>
|
||||
<name>RootFs</name>
|
||||
<name>root</name>
|
||||
<name>SpaceUsage</name>
|
||||
<name>WAN_GW</name>
|
||||
</nat>
|
||||
<nat>
|
||||
<neighbors version="1.0.0"/>
|
||||
</Netflow>
|
||||
<netflowbackup>-1</netflowbackup>
|
||||
<Netflow version="1.0.1">
|
||||
<network>lan</network>
|
||||
<network>lan</network>
|
||||
<network>(self)</network>
|
||||
<network>wanip</network>
|
||||
<network>wanip</network>
|
||||
<nextgid>2000</nextgid>
|
||||
<nextuid>2000</nextuid>
|
||||
<noarecords/>
|
||||
<noauto>1</noauto>
|
||||
<noreglladdr6/>
|
||||
<noregrecords/>
|
||||
<noton>0</noton>
|
||||
<npt/>
|
||||
</ntpd>
|
||||
<ntpd>
|
||||
<ntpserver/>
|
||||
<numqueriesperthread/>
|
||||
<nxdomain/>
|
||||
<onetoone/>
|
||||
<openvpn/>
|
||||
</OpenVPN>
|
||||
</OpenVPNExport>
|
||||
<OpenVPNExport version="0.0.1">
|
||||
<OpenVPN version="1.0.0">
|
||||
</opnsense>
|
||||
<opnsense>
|
||||
</OPNsense>
|
||||
<OPNsense>
|
||||
<optimization>normal</optimization>
|
||||
</outbound>
|
||||
<outbound>
|
||||
<outgoing_interface/>
|
||||
<outgoingnumtcp/>
|
||||
<outgoingrange/>
|
||||
<Overwrites/>
|
||||
<password/>
|
||||
<password/>
|
||||
<password>$2y$10$YRVoF4SgskIsrXOvOQjGieB9XqHPRra9R7d80B3BZdbY/j21TwBfS</password>
|
||||
<passwordauth>1</passwordauth>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path/>
|
||||
<path>/</path>
|
||||
<path>/usr/local/opnsense/scripts/OPNsense/Monit/carp_status</path>
|
||||
<path>/usr/local/opnsense/scripts/OPNsense/Monit/gateway_alert</path>
|
||||
<permitrootlogin>1</permitrootlogin>
|
||||
<pf_share_forward>1</pf_share_forward>
|
||||
<pfsyncenabled>0</pfsyncenabled>
|
||||
<pfsyncinterface>lan</pfsyncinterface>
|
||||
<pfsyncpeerip/>
|
||||
<pfsyncversion>1400</pfsyncversion>
|
||||
<pidfile/>
|
||||
<pidfile/>
|
||||
<pidfile/>
|
||||
<pidfile/>
|
||||
<pipes/>
|
||||
<plugins/>
|
||||
<policies/>
|
||||
<polltime/>
|
||||
<polltime/>
|
||||
<polltime/>
|
||||
<polltime/>
|
||||
<Pools/>
|
||||
<port/>
|
||||
<port>22</port>
|
||||
<port>25</port>
|
||||
<port>443</port>
|
||||
<port>53</port>
|
||||
<port>80</port>
|
||||
<powerd_ac_mode>hadp</powerd_ac_mode>
|
||||
<powerd_battery_mode>hadp</powerd_battery_mode>
|
||||
<powerd_normal_mode>hadp</powerd_normal_mode>
|
||||
<ppp/>
|
||||
</ppps>
|
||||
<ppps>
|
||||
<prefer>0.opnsense.pool.ntp.org</prefer>
|
||||
<prefetch/>
|
||||
<prefetchkey/>
|
||||
<preSharedKeys/>
|
||||
<primaryconsole>video</primaryconsole>
|
||||
<priority>255</priority>
|
||||
<privateaddress>0.0.0.0/8,10.0.0.0/8,100.64.0.0/10,169.254.0.0/16,172.16.0.0/12,192.0.2.0/24,192.168.0.0/16,198.18.0.0/15,198.51.100.0/24,203.0.113.0/24,233.252.0.0/24,::1/128,2001:db8::/32,fc00::/8,fd00::/8,fe80::/10</privateaddress>
|
||||
<privatedomain/>
|
||||
<priv>page-all</priv>
|
||||
<Profile/>
|
||||
<promisc>0</promisc>
|
||||
<protocol>https</protocol>
|
||||
<protocol>icmp</protocol>
|
||||
<protocol>tcp</protocol>
|
||||
<protocol>tcp</protocol>
|
||||
<protocol>tcp/udp</protocol>
|
||||
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRExzTERuNG1rVHhFclgKdHdqTXoxencyeHJhNTZ5bTYrYzlRNEM3UjMyMzVuWjVPM1ovdzMva01XZjkvbkZsamcyQVdYRElKY1dmOTQ0UgpFblFMdmlha2NNTHR1Qm1KTVRYZnVQWnhsSWE4Wlc0S0ZuT21UUzRZcUJXOEdCSkl3TG1DaTFvZGhZeGZQRDZMCldEZnZYMm1tWEIrUFNxL0l4WEhOSjdxZVB4YzVuSzUyMW1uNW5DQW1kUENjYmZ2Z1d1QzZOeFZtemR5em1rVC8KNnVqRUJFYTZ6RkQyUUtDN1N6a2ptZUNpd2VDQjc5NjZqeEV5UWtWUWpiVDkwWXJ4Q290TyttMkhBTlBkc2NPcQpvNldXMEhmSlNpa2k4K2NDWHlzbGRFSzFZbmxueTNFWlVqTExWamVFL1dBVTRDUFlSaFhUVUZVMjFkVXZrM29hCkVpeldVdmhKc1FHYnh2aFRUQlN3aVliOUQ3Ymx1MWl4UzJxNzczOTlVZ1E3cVM1QWE4SUdtcDg1Q2hRSUFZRWMKSTd6RGVWTGtrOGpkWkFCaTdGbDl0M05OQTU3WlVZVzErWE45K1RneWMxOVNsajFVbVF2RG96TEJDOTlNUmkvNApEQTIxRFpIODY3ekFYenFqZWUrckorQkZvNzVEQjlqd2tMTmVQZWl6bFF6dEhaalJTS2dpZ1I1T0pKa1JUci82CjduaTBtbzVITGNkU3hBSDFmdXdXS0hWS2RHQlQrNjhhYkUrZ2tRKytUOEx6dWErUW1qTE5RUWoxUkJIVjNLNVAKL3dvbXJKZG02d1ZLbm85RXlNait4azFwS05wb0F4UnR1WllmQ0RVVVBaNHVwQm1vMEs3d0Y0d21XdVdhK21Wdwplb1ZTcDRXMEhOWVJGU1pyWWxrc1AzdWViSHcva1FJREFRQUJBb0lDQUFzc3hPL2IzSTd3a0hpWU9wdmQ3b2ZxClJXVm9HM0ZHOVBkSCtrcU1DQW9zVXlpZ2lnWkZhQUZSY3BhZFBJUnBVRFZQOHQrUUx2RHhTSEtJVkNTR3lLRHgKN01mVTkxV3ZCUGtpc1NhWEV2TklEMHJ2WTJYbXl4WWdOcDBNcHdnbHhxZXlWSDNWSTFmZ09zQXpWVkpGSmtzeAp0NnVKV2U2R1lwRnlVZ3MzZytNdHhPYVJLZHcvWkFZb0dVRkR5WE5NR1JNdVRYYkg2WWxTOStFZ2RxZTJZbGtDCk41amkvODUydUlwSytXZUVnbmd1ZkVZNDdpVVhQSzFJTVB0UjRURUxOb3hkTWVBYnZBUG9La2QwMWZOWnVaQ3EKQ0dxNS9kMEQ4cDZKNjlUK3M1RnR1R1UrdkxtcUg3NmtsZjVmTTZnOFpCc2xSNStNQ0xlay9DaHRBZGU2VXBQRApXQ2EwazU3dmdneUdQdGVlVXY2RVJBMEp6SjlJd2VHZGdVWHhNdW5LK3ZSNWYydWJKWFJoMVJpNTNFSTNvVUxYClFvWm9hOTY3VzNUajQ3UzR2RlQyK2dLb0g2OXlNckdVNVkwcjJrSTFXMVVhWEJ1aVVrMi94amdyWVdTblUzUUQKZkM3ZXllTlNlN3c4UW9MMVBEYXJwVXdaK2xGZ0w3NFVScldLQU12WVhxa3NTMHVtb0tTSWo4cjZMM0hVSUVaUgpZRzhBTU91dFhrQk5lMkNpTXRKM2NYUXNIOWloQU9QL3AvaE9BTTBGNkM3Ymt1Vm85d1pRdDVESWxRWUl4TlArClFRZ2doRnhBNTlTWmpwRk00QkN5L0hEOENJY3VuSURZOVNlbXNSYXdyUVY1eGk1akFScVdOYTdBSVMvVlArdUUKQkpmS0dDNFlZVmxqS1VLeEgxVUJBb0lCQVFEcnZOWXNrd3ZhQ2Z6MlcvbkIrRjNjVE1RbjM2RENSYnZwQ0s1dApldm96TjJGbjBJdWFnN2RrYzN2NTFxTVNEd0h1cVNkVTRHUHZMcm83alpJaFNEZ1AwLzBLWmc0VmxtZE5HbEovCk1lcXhmOGRkOFdTQjZiUksrK2FRcEhaeDd2SUFTWkE4eHkvZ3F2NGJpSmlqVDhUQ2lSeXdYSTQ0ZlRYM0xLZTIKVG1Uc29XNk9yQmErSWJRYjBpTEh4WE4rZ3JDM0cxWWxIUlNvTEpKUkU0eFVLMGsvM1JLNU16RjRIYUNZb1BWOQpDOFpQellMR253SE9ERU8zbHRtSGJvQUNFa0VrT2dFV3U4RFo2YlYrMXJBcVh6WnN0L3hNZnJ5KzlMRVdYQUwvCkRnOEdkall0YzdyUTFZd1BIY1h6cFo2clVIdXh2K0p6VEE1ZzNCS1p6aWhwNFdHaEFvSUJBUURkTXE3N0dRWGMKYW5hYlMxanlFT3VzNFp5ZlJ4cW10NEVFaHZjY0dRVVVrV0IrWk11bnpyaENxb3ZwQ1dhVU9zWVhuNG45Y3BQSAo3bm1mOUJHbFI4NVhCVHNLM2d4bE5NMUhjSGFTNXZSem9WQVBNd3o2VVV0ZFNLWXRLR0Q3Wkxmbm9ISXN1SlEzCnJ6WWIyTFhpVmx6MWlNNUVmT0VrL1J5UjBwMGtleXVwa0F0OXBRV0hzaURYb0pibDE2d1ZLc2NDNGUzNjdRRWsKcFdoeXcyS3A4bXdtOGxqQllxZWtHdUREeGVZSDMzMVlGa2FMUEJCT2xPQnlveFlOUDdBVVREUlV3KzB1T01jNwozb0N1VE9jWnAxVWMwQURBOXRTRVRINklWdlFEUXZlYzR6MWRTVGRmUEkxRzVUTCt4Mzlvam5OcGVoYng0bEwvCmRxTTBmcFlPL2ZmeEFvSUJBRmwzOU8wNzdjNlY1ZHoyY1djTnhVbThGT0p4UEVrZlFEOGtYVmNOeW5HdnZoY3gKamhwWmpUdmhuSmJvd0VFMVV1MXFZNVFTQ2J1WVIzUWN1ZTVKdzRVMlZwNGd0NDIzNUlMZHo1dVlyVk1xaE5jQgpxN3ltbnhlcVhRcGVjTm15NzBQdXA0QjV0SkVYTkpQc2xzbThsNWVoaERMbkhjOFFybStlRWhUZDBlNEJJcjJoClVJeGVyRVcyemg1MXNPeTkyeVhUaVRGU3hTbENxVkYrRXM5TEVtVGJtYVNTYWw4RkY1TjEyMVhYSnkvWWRwNjkKY0dqc1BMTXIzR2xMSmVnalYzZlJUK0o1NWFxT3lhUlhCTXRBRVo3WGdUampETzJJWHNGMnNHaHV4SU1XVUYrVgp3YnhLbi9xSXVUMU1pVmpKbGZpVE0vWEFVdUN1QlowOEloaDFRcUVDZ2dFQUZwdzJySzRMSGxPM21mb2l0bU9xClkzcVFVdXVtdXNIcEt6aE1qQSsycURxUC9YdDZJY1lNcWF2YkwwL3ByMTh1bm4yTlVsM2k0ejNxS3NKOUIwTUcKd1hoa1o2RDQ3V052VkUwWG9iNS80RTN0N0EvUTFNbDRoYW1HYXZsRXFJM01DcDRvN1k5VWZ6aW10RVA3bTQ0dQpaRjYranR1ZysvSHZlS3hwcWEvNWI1U3N5QVFWUTZDZW9Ndm1nTW9CNmd2OFdid1VZbURWakJSb1Q4clBEQVllCnJnQjV1QkxJaGdyRlROMnV2TUZJZzdlTE1ISk1UR3dGWVZKd1Q1eGgrRUV0M0RoR3gwSEFnOHNqcGkxd05md1gKeENFeTRvYVloSWw1S2FDUndyK1dwZS9JZHYrajdGVTVMN1QvK0hFV0FlOEZ0eE5td3dUYWJRaUllRFkwU29ZRgpVUUtDQVFFQXRiclZqbTFsaDQ1REhIWnVsem4xNllIQzJrMUYwWG9FZFVSQ3o0QTFsMHBEK3ljL2srdmJ0Qmg0Cm1RRDV1a3FicHFFZy9GNUhDZmdOaHlieHNNdVV6NzFaU24zN2dwczNDWUdiUyt4RkhjZTJBakNTbUlYQWIxQjgKR0Z2WnV4UlB5QXU0YVBvT1J3RzM3NVBOM0VNNk83bzdxbjlYeExTZWRIMHExM2U0YkhYYm4rc2xOa1RIM2xmcwpLVnBOUUhVSUNDSW5vQ0llV1dwdnAwQnFoYjlKclRsbXd2c25zOHpZVDNiY3F5QXZHZGRnNUs3Y0MwRVJaem9ECnFJTkI3S05FVjQ1NmF0eDZVT3VYUlpKREMvaHNJUTZNaVBveUJacHRsK1ZIMEtQbEFIWGExb0FXZmNuL0U3MFYKK0RaeVBiMWxkQUdpb1hqditGd2h5VzZlWEVrQlBnPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpSQUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1M0d2dna3FBZ0VBQW9JQ0FRREpTUWVnVFhySnl0NVYKYmk0Rk9IeHJrOXhxQ21FRU54V2pINVVwNDBFK3hjUzZQU1NyQ0RyVzdkOVhxUmQ4SkRkQ210a0tEaUxhY1pTMgpMUm1abnd6VnRzZGtBR2pOYm5OM1hSNmlFajdGL0JnbVBlcDFTaklacFNnM2Q5L1h4cU9BM1lCWXNNL25ST29YCnlmTHcycFJOLzhHVjN3MHoxbVFZUitMZWI3UTFuc1c3dTJ5NytUdzlJNkZTQnhuR1pHdHJQWXk2RUFvQ0x2bUYKQnFCYWxkWTQ2ejdlWjlIRkZXaE8ybWpaUzVPdTE3ZVozVHBxcFFNUHVPYnFXcXJoTTF2NWN2Ymh1TmRESE1ndgpVVFVnQ0RNK2FkS3dIc0dNNGw5ZGtOQTgxdGlJcXpzN1BqcjFSbTAyVW5RdGd5bzNjeE9FdWxiT2dTSGx0aFMyCmtUMXE2UmhyemYvRGRJSEhta1RROGtwWVloWGc0VmpMQVdpSVBub2dydmxFSVYwRGFDdkQyNmJGRENtWTFzb0UKbDV1NGtYanJScDRXK29NUVRHeG80NzFMQnNBMlh1Si82ZFJBQkxXOHh1cEU4OERiaWtZbnU1V1BpSnpleHhRUgoyNU1FQVd6TCtKK0lubFExbmpMVWwyN3R0c1VQQ1VjL3c0NXpwcEREdjBmdTQ2enVLcTNjRVZGK2JESytBZ2VPCkQ2SXNzUjVRRTdFNVdkWjYrNWl6ZHB4eWdUeGh0L1k1RlBkSEdCOUJsMWt6NHhsdGFzOW9uZmtIMWRUeTd3MU0Kck43Z1l5WjgvS0pMWW9EY2NBOVFuNGt6bGtPeFVUMENuS1Exa1Y2T3RoVGxUWDMrZ25pSkkrdFdZRDltNGV1cwpzYWN1anpyWDl5TTNZcEloMnZqODJ0NHpPNjIrNFFJREFRQUJBb0lDQUNPNnZpc1BIY3pzb1NjK2dkWkU1dGNNCnZkc240UDFIenVRd0VzRUcrVG1zanVWMVBZbExrbkE4OU1DQmdDejEyOFpMcU51ZlUwSDkxK1Uzbjd2MGJ1bVAKd3BpR2R4UUNOMlpZaGZ2RWE5YW1qMTNZYjBJbks3b0FKbUdrT254NW91UFl6YlBRblBNRE9WK0VKa2JwTWRxZgptOHdmOWg2OXYzSk03bUZJS0UrOVVZR252UjhuMkhETTNwR3FONEhQS1A4MkE0RXlvQ2d2a1BTelRxc052bU5ICnBOY0RURW5rNlNsWUhUVDNOSzJjVnBldUhMUzUrazlqNWI5elhUSlE5TkpVZlN6bnEvUmFpMUZVNDY1K0xpUjEKMGVPWDdnajFWUExOcGgwcWtQQy9ubW0vZStVMmZXUGZZb2FDcWkrQ0VwU2twQXlQZ1FZZTJsSG0rYVU4MzZ2UQpuaHZuL0p5ZHJDL1NyTUFZaXpOZFYyZjlHTkNwcE1SbUZyOS9saVJiNEFpSzRLSDRETGdSRUxHaDJLNzJuOFRLCkxUSVhIV3RacisyMWU4c0Mxbm5MSENnK21wMHBvSWJsbEtoYk9VTmVxR09yWm95NFBXdDZMQndFYzN0MG1wVEMKODhiSUpqMzFCQngzTGE1SUE5b0FNRi9lbHJYdFhhVnl4bm5yTHdjYzFNVWpCV20rZDVqbC9WOEdIcEJRd3pXYwpPNWdNSXlQNUIvdzBacUcyZjV1akZkOHo4dElmcEFRRTJSbDNxRUFYNU1NY1JQaFlTNDJqTWl4czc3TmtOVldQCkpqUVoxVDVXQTVKOUxEL2FKRkplQ2MvbjhpNldOQ3FzdEQ5OVNPTCsrTTBFQTlka2lLNWtOcXFZeXZuRG9SZVcKSW84eXhvVnpObURsWjBkSU9UUzlBb0lCQVFEb2tvMWxPS05FNlBWWmRRU3lmS0JOTEZNcEl1V1VVZmp0ODU4awpJTTB0TnNyS0d2N3NmYkt0dlMvOWgwMGluU2FyWTJ4amVETG91WEI5VzdKY1B1NjRoNHYwek1lbXRhdDRyTUJnClA5bkQ3MW00dERqS2ZrZDAza2tUbk4ySTBxYkwzeFVoTjNEQlJZTU9veDFMa2M4MFFFMHhSUEM1YmRJaXcwemEKTWdtK1dOZVY1VEZoSkpQZ2dVRVo5U1A2aWV1VEY0OW9wRGNWdGUwQ0I0WnFUaTRWb3YvZFVDWGpNK0djRnNWdgpPWTZYTE9KTmRldHdnUVNkd1hlSzB1WlBpWnVKTGlsTEg4OFVKYWNoQThDZW1SclMxRUtxWElwK2dkQWV4MnhVCmY5amRMMGF2SlJEY0xqWlhETXBvWlJpc0JoWVArZzY3VHZza3FscDh4M2p2STlWVkFvSUJBUURkajZrdWNLM0MKYXprMzlqYllvM3RFZ0R5L2VGNnBjWFlpK21Ba1ZNRk9vSWJ5cmNyN3BqSnRMNFMyMEFDRmpBUGFQT042dWVVWQpQQm92dC9QODB1V1c5cGZCK29mRmdadzRqc3hLWFY4eEJmOVdLWVZndFBsOHhIL1RJcERTMjhVTlowNDlhUW4vCjlCRzNac0lyenk3RzFLRTZPLzBMMnVmMnFyaUxxRFQyV3dsdFVsbWs2Ym5NeThkR0sra1JLcFhvSm1RTlNHRHoKOXd4blU2ZmZ1NDdDLzRYMHRIVk1MVFVneFh4djdqN3BpSzI4dzBuZ1N5S3ozV0IzWTJwaFVsZEJIdEprQko1RQpoRm8zMXJCVDU5enhkb2crYXh1bkh4S3EySGFHRkt0ZUZ6RGpkTTFpQzE3bWNtWXBzR2tuenA0cjRjZm5FYTFSCko4Wmo5ZVFQaEVOZEFvSUJBUUN3d2hsbXNkb2MySFVJVFZDSm13QjJSdGJaYitWT2lkS0lmdDBYcHpwcFA3aDIKVEhndEl3ZDIxayt2LzNJWGVaclhMWlJHTVNkNEN1QTgxa0ZEckt6Z1lGeDFiR0hkQ1R2T1ZuVkxjWnUvTjUxWQpMTmp3eFhMbmxyMnhnMG8zMytuWERyQlBjNFJsejcvZ2t3WUQxa2pGckkwK2dlZjI5a2w4RkRUSHJMb05DaGFuCm5PNmZweDRneGZ2Rmo3T05pZDhhQnhEK2RiaEw3dDIzNmlJMWp6K2xRQ0g0Z1I2YWhHYldxOVBZU2NWZWprVmMKbTkrWnZPVFdSU0RteUkwMExDQ2k3UXVEUmlTcmFrYVFaL3F3VHlxOHk0ZnpWS3dKby8yYU52VFZiK2xSaWNuTgorWHpMNnU5dno0L1NNZXZEYWtqQVVjdDZmbmVQa1UxK2dsZ2VZSHlWQW9JQkFRRFJtYW0wVEZhbFdXaHMvNWtOClEwTkhINFhZb1JmMGRta0xXQStCNzBoY2lOS0JYRlp0ME9GZGw1bVdsSm9adk1hY1BBUDd3MGJ1c1ZVWWxZN1YKTy9LRTZVM1I3WjlxQWw1Mnh1aU81Vnc3ZFhBRDVBM1EyZ1EzdTNFdG5VS2lwOVA0QlNYb1JLbDRJVDV0WVdJSgpyZHVUciszQ3VLT0FCcHh4Snpxa3JBRkdtZ01HRCtUTWRXd1hTU1NBeHVPYklNMW1MSU4wYVdlSEJNMFFKdnptClZIb1BFVXA1b0FwamdWVUVacTk4K0VjK0NOWkxmL2d3bndQNllsQnpRWEtQRlNXRWJwTWNtWjNjTmRWZmc5T1YKM1FDUTBkQzhNL21hRlhSRWVibE95TmtCanpEcHpVTExJUFNyVDhoRVlpWm95VGVyVGRJZVVBUEZoYnBTTUhtTApFRlhsQW9JQkFRQ0VUdVJQRHZvMC9tdDhyTzhLNENsamtuU0gxZ1FBSjFha3U3UXg3NUJUTDB6OWRNY2lMK1JLCng1R1lFTW1wcUtNb2FPbWc0WFVRMVRlQ2Vic1R0NjMyWXp6cmNCU0d1RzVnN1o0UUVublUzRXU5QklIMUVSL2gKSEk0NWowU0xNRUpObkNiTkpnRVNRRUFCbzN3cHhrRTdiRGlNdTVPOXVqMlFRVTlTTm94QkFmbVFXRDJJaU1BRQpWYzV3QTNZajBMdElSYkJmdzNBTE9uNlRSc2xucy9JMnd2Z1RCQW9sU3NZbEtEK0NRY3hDZldlNmZwU21aYmlCClBGUE9DY1ZQTXhGeXBhZWFJMkRXNWRPNFNoNGQ0ZlZma2F3ck9LN1N2QnFZb0Y5L2VndThzQS9ZdklaRVltQUQKd0ZIOGs1QjJ4WXdiNkVmNmFFQ29ZTitsNWtlWmhNWTgKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||
<qnameminstrict/>
|
||||
<queues/>
|
||||
<quick>1</quick>
|
||||
<quick>1</quick>
|
||||
<quick>1</quick>
|
||||
<quick>1</quick>
|
||||
</range>
|
||||
<range>
|
||||
<reboot/>
|
||||
<recipient>root@localhost.local</recipient>
|
||||
<refid>6734d13fa9e4a</refid>
|
||||
<refid>6734d6c82dc59</refid>
|
||||
<regdhcp/>
|
||||
<regdhcpdomain/>
|
||||
<regdhcpstatic/>
|
||||
<reminder/>
|
||||
<remotes/>
|
||||
<reservations/>
|
||||
</revision>
|
||||
<revision>
|
||||
<rocommunity>public</rocommunity>
|
||||
<route/>
|
||||
</rrd>
|
||||
<rrd>
|
||||
<rrdbackup>-1</rrdbackup>
|
||||
<rrsetcachesize/>
|
||||
</rule>
|
||||
</rule>
|
||||
</rule>
|
||||
</rule>
|
||||
</rule>
|
||||
</rule>
|
||||
<rules/>
|
||||
<rules/>
|
||||
<rules/>
|
||||
<rule uuid="0465308d-8605-466c-bcb4-95eeb989251a">
|
||||
<rule uuid="2df05591-13e7-4d91-a1b8-d25e338ada5f">
|
||||
<rule uuid="4a5e7b65-0d7f-4452-8a29-2ec61a47ec19">
|
||||
<rule uuid="b21f808a-6a4a-4cd6-9a83-1660cc8ea58b">
|
||||
<rule uuid="f2ee612c-c290-4445-8045-df82a86db0e5">
|
||||
<rule uuid="f79eded0-3c11-4f57-9aaa-55d4888589fa">
|
||||
<safesearch/>
|
||||
<scope>system</scope>
|
||||
<scope>system</scope>
|
||||
<secondaryconsole>serial</secondaryconsole>
|
||||
<sequence>system_information-container:00000000-col3:show,services_status-container:00000001-col4:show,gateways-container:00000002-col4:show,interface_list-container:00000003-col4:show</sequence>
|
||||
<serialspeed>115200</serialspeed>
|
||||
<serveexpired/>
|
||||
<serveexpiredclienttimeout/>
|
||||
<serveexpiredreplyttl/>
|
||||
<serveexpiredttl/>
|
||||
<serveexpiredttlreset/>
|
||||
</server>
|
||||
<servers/>
|
||||
<servers/>
|
||||
<server version="1.0.0">
|
||||
</service>
|
||||
</service>
|
||||
</service>
|
||||
</service>
|
||||
<service uuid="7513f341-7d21-4f11-903f-30d07b3aa41e">
|
||||
<service uuid="c1e99556-91f5-4dbf-81d7-7915a3213de9">
|
||||
<service uuid="dca8a81f-d389-4baa-b477-8b348194fd25">
|
||||
<service uuid="f99ada79-ba1a-4ee1-81f1-ef570e8e5ea9">
|
||||
<snatrules/>
|
||||
</snmpd>
|
||||
<snmpd>
|
||||
</source>
|
||||
</source>
|
||||
</source>
|
||||
</source>
|
||||
</source>
|
||||
</source>
|
||||
<source>
|
||||
<source>
|
||||
<source>
|
||||
<source>
|
||||
<source>
|
||||
<source>
|
||||
<SPDs/>
|
||||
<spoofmac/>
|
||||
</ssh>
|
||||
<ssh>
|
||||
<ssl>0</ssl>
|
||||
<ssl-certref>6734d6c82dc59</ssl-certref>
|
||||
<ssl-ciphers/>
|
||||
<sslverify>1</sslverify>
|
||||
<sslversion>auto</sslversion>
|
||||
<start/>
|
||||
<start/>
|
||||
<start/>
|
||||
<start/>
|
||||
<startdelay>120</startdelay>
|
||||
<starttimeout>30</starttimeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<starttimeout>30</starttimeout>
|
||||
<statefile/>
|
||||
<statetype>keep state</statetype>
|
||||
<statetype>keep state</statetype>
|
||||
<statetype>keep state</statetype>
|
||||
<statetype>keep state</statetype>
|
||||
<StaticKeys/>
|
||||
</staticmap>
|
||||
<staticmap>
|
||||
</staticroutes>
|
||||
<staticroutes version="1.0.0">
|
||||
<stats/>
|
||||
<stop/>
|
||||
<stop/>
|
||||
<stop/>
|
||||
<stop/>
|
||||
<subnet>24</subnet>
|
||||
<subnet>8</subnet>
|
||||
<subnets/>
|
||||
<subnetv6>128</subnetv6>
|
||||
<subnetv6>64</subnetv6>
|
||||
<subscription/>
|
||||
</Swanctl>
|
||||
<Swanctl version="1.0.0">
|
||||
<synchronizetoip/>
|
||||
<syncitems/>
|
||||
<syscontact/>
|
||||
</sysctl>
|
||||
<sysctl>
|
||||
<syslocation/>
|
||||
<syslog/>
|
||||
</Syslog>
|
||||
<syslog>0</syslog>
|
||||
<syslog_eve>0</syslog_eve>
|
||||
<Syslog version="1.0.2">
|
||||
</system>
|
||||
<system>
|
||||
<targets/>
|
||||
<templates/>
|
||||
<templates/>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
</test>
|
||||
<tests>865105a2-cbea-4a01-9979-c67818da9d99</tests>
|
||||
<tests>91b4e409-211b-49d5-9fa3-dc9054106646,cbe9cb72-e8c2-4740-990c-abcc486b0654,c0708923-88de-4178-abdd-819737440ce0,e887125d-c5d2-45e6-b40d-2c400d5449d1</tests>
|
||||
<tests>cc3684f2-701e-4de4-883d-803e08cf47b6</tests>
|
||||
<tests>f2d734cb-2a0e-4375-9460-11bdd5b20503</tests>
|
||||
<test uuid="16186b38-0e13-4cc3-ad18-ccc3fcc91837">
|
||||
<test uuid="69117d4d-8c41-4712-97c0-87b4fa7c9837">
|
||||
<test uuid="865105a2-cbea-4a01-9979-c67818da9d99">
|
||||
<test uuid="91b4e409-211b-49d5-9fa3-dc9054106646">
|
||||
<test uuid="c0708923-88de-4178-abdd-819737440ce0">
|
||||
<test uuid="c34aab30-9194-4667-b516-004b9c90c1c0">
|
||||
<test uuid="cbe9cb72-e8c2-4740-990c-abcc486b0654">
|
||||
<test uuid="cc3684f2-701e-4de4-883d-803e08cf47b6">
|
||||
<test uuid="e887125d-c5d2-45e6-b40d-2c400d5449d1">
|
||||
<test uuid="ea6b821c-4f30-455b-bd5b-23a6f0c20554">
|
||||
<test uuid="f2d734cb-2a0e-4375-9460-11bdd5b20503">
|
||||
<theme>opnsense</theme>
|
||||
<this_server_name/>
|
||||
<time>1731518072.7612</time>
|
||||
<time>1731518072.7612</time>
|
||||
<time>1731518084.0639</time>
|
||||
<time>1731518084.0639</time>
|
||||
<time>1731518114.2801</time>
|
||||
<time>1731518114.2801</time>
|
||||
<time>1731518311.7033</time>
|
||||
<time>1731518356.7559</time>
|
||||
<time>1731534516.7156</time>
|
||||
<timeout>300</timeout>
|
||||
<timeout>300</timeout>
|
||||
<timeout>300</timeout>
|
||||
<timeout>300</timeout>
|
||||
<time_period/>
|
||||
<timeservers>0.opnsense.pool.ntp.org 1.opnsense.pool.ntp.org 2.opnsense.pool.ntp.org 3.opnsense.pool.ntp.org</timeservers>
|
||||
<timezone>Etc/UTC</timezone>
|
||||
<to>10.100.8.245</to>
|
||||
<toclient_groups/>
|
||||
<toserver_groups/>
|
||||
<track6-interface>wan</track6-interface>
|
||||
<track6-prefix-id>0</track6-prefix-id>
|
||||
</TrafficShaper>
|
||||
<TrafficShaper version="1.0.3">
|
||||
<tunable>hw.ibrs_disable</tunable>
|
||||
<tunable>hw.syscons.kbd_reboot</tunable>
|
||||
<tunable>kern.ipc.maxsockbuf</tunable>
|
||||
<tunable>kern.randompid</tunable>
|
||||
<tunable>net.inet6.ip6.prefer_tempaddr</tunable>
|
||||
<tunable>net.inet6.ip6.redirect</tunable>
|
||||
<tunable>net.inet6.ip6.use_tempaddr</tunable>
|
||||
<tunable>net.inet.icmp.icmplim</tunable>
|
||||
<tunable>net.inet.icmp.log_redirect</tunable>
|
||||
<tunable>net.inet.ip.accept_sourceroute</tunable>
|
||||
<tunable>net.inet.ip.portrange.first</tunable>
|
||||
<tunable>net.inet.ip.random_id</tunable>
|
||||
<tunable>net.inet.ip.redirect</tunable>
|
||||
<tunable>net.inet.ip.sourceroute</tunable>
|
||||
<tunable>net.inet.tcp.blackhole</tunable>
|
||||
<tunable>net.inet.tcp.delayed_ack</tunable>
|
||||
<tunable>net.inet.tcp.drop_synfin</tunable>
|
||||
<tunable>net.inet.tcp.log_debug</tunable>
|
||||
<tunable>net.inet.tcp.recvspace</tunable>
|
||||
<tunable>net.inet.tcp.sendspace</tunable>
|
||||
<tunable>net.inet.tcp.syncookies</tunable>
|
||||
<tunable>net.inet.tcp.tso</tunable>
|
||||
<tunable>net.inet.udp.blackhole</tunable>
|
||||
<tunable>net.inet.udp.checksum</tunable>
|
||||
<tunable>net.inet.udp.maxdgram</tunable>
|
||||
<tunable>net.link.bridge.pfil_bridge</tunable>
|
||||
<tunable>net.link.bridge.pfil_local_phys</tunable>
|
||||
<tunable>net.link.bridge.pfil_member</tunable>
|
||||
<tunable>net.link.bridge.pfil_onlyip</tunable>
|
||||
<tunable>net.link.tap.user_open</tunable>
|
||||
<tunable>net.local.dgram.maxdgram</tunable>
|
||||
<tunable>security.bsd.see_other_gids</tunable>
|
||||
<tunable>security.bsd.see_other_uids</tunable>
|
||||
<tunable>vfs.read_max</tunable>
|
||||
<tunable>vm.pmap.pti</tunable>
|
||||
<txtsupport/>
|
||||
<type/>
|
||||
<type/>
|
||||
<type>custom</type>
|
||||
<type>custom</type>
|
||||
<type>filesystem</type>
|
||||
<type>NetworkInterface</type>
|
||||
<type>NetworkInterface</type>
|
||||
<type>NetworkPing</type>
|
||||
<type>none</type>
|
||||
<type>pass</type>
|
||||
<type>pass</type>
|
||||
<type>pass</type>
|
||||
<type>pass</type>
|
||||
<type>pass</type>
|
||||
<type>pass</type>
|
||||
<type>ProgramStatus</type>
|
||||
<type>ProgramStatus</type>
|
||||
<type>SpaceUsage</type>
|
||||
<type>SystemResource</type>
|
||||
<type>SystemResource</type>
|
||||
<type>SystemResource</type>
|
||||
<type>SystemResource</type>
|
||||
<type>SystemResource</type>
|
||||
<type>system</type>
|
||||
<uid>0</uid>
|
||||
</unboundplus>
|
||||
<unboundplus version="1.0.9">
|
||||
<unwantedreplythreshold/>
|
||||
<UpdateCron/>
|
||||
</updated>
|
||||
</updated>
|
||||
</updated>
|
||||
</updated>
|
||||
<updated>
|
||||
<updated>
|
||||
<updated>
|
||||
<updated>
|
||||
up your logs consuming your whole hard drive.</descr>
|
||||
<url/>
|
||||
</user>
|
||||
<user>
|
||||
<userDefinedRules/>
|
||||
<username/>
|
||||
<username/>
|
||||
<username>root@192.168.5.204</username>
|
||||
<username>root@192.168.5.204</username>
|
||||
<username>root@192.168.5.204</username>
|
||||
<username>root@192.168.5.204</username>
|
||||
<username>root@192.168.5.204</username>
|
||||
<username>root@192.168.5.204</username>
|
||||
<username>root@192.168.5.204</username>
|
||||
<username>root@192.168.5.204</username>
|
||||
<username>root@192.168.5.204</username>
|
||||
<usevirtualterminal>1</usevirtualterminal>
|
||||
<valid_lifetime>4000</valid_lifetime>
|
||||
<valloglevel>0</valloglevel>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<value>default</value>
|
||||
<verbosity/>
|
||||
<version>v9</version>
|
||||
<vip/>
|
||||
<virtual>1</virtual>
|
||||
</virtualip>
|
||||
<virtualip version="1.0.0">
|
||||
<vlan/>
|
||||
</vlans>
|
||||
<vlans version="1.0.0">
|
||||
<VTIs/>
|
||||
<vxlans version="1.0.2"/>
|
||||
</wan>
|
||||
<wan>
|
||||
</webgui>
|
||||
<webgui>
|
||||
<weight>1</weight>
|
||||
<whitelists/>
|
||||
</widgets>
|
||||
<widgets>
|
||||
<wildcards/>
|
||||
<winsserver/>
|
||||
</wireguard>
|
||||
<wireguard>
|
||||
</wireless>
|
||||
<wireless>
|
||||
<?xml version="1.0"?>
|
||||
<zones/>
|
Loading…
Reference in New Issue
Block a user