From 38509f1fbad27de70eef1e81eaa2c5084765ca8f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michael=20D=C3=9Crre?= Date: Thu, 27 Jan 2022 13:43:37 +0100 Subject: [PATCH] improve sdnc-web for external apps MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit add package manager for more flexibility Issue-ID: SDNC-1658 Signed-off-by: Michael DÜrre Change-Id: I30f4aaa24cf05fce212282b06d5e08437dbcfa8b Signed-off-by: Michael DÜrre Former-commit-id: f41f011ff2e18befd77dd63ab828ea14aafac2a7 --- installation/sdnc-web/README.md | 56 ++++ installation/sdnc-web/certs/cacert.pem | 31 ++ installation/sdnc-web/certs/cert.pem | 102 +++++++ installation/sdnc-web/certs/key.pem | 29 ++ installation/sdnc-web/pom.xml | 31 +- installation/sdnc-web/src/main/docker/Dockerfile | 21 +- .../sdnc-web/src/main/resources/favicon.ico | Bin 0 -> 268322 bytes .../sdnc-web/src/main/resources/http_site.conf | 33 +- .../sdnc-web/src/main/resources/https_site.conf | 34 +-- .../sdnc-web/src/main/resources/location.rules | 46 +++ .../src/main/resources/odlux.application.list | 9 + .../sdnc-web/src/main/scripts/configure.py | 34 +++ .../sdnc-web/src/main/scripts/configure.sh | 106 ------- installation/sdnc-web/src/main/scripts/core.py | 333 +++++++++++++++++++++ installation/sdnc-web/src/main/scripts/opm.py | 126 ++++++++ installation/sdnc-web/src/main/scripts/run.sh | 11 +- 16 files changed, 817 insertions(+), 185 deletions(-) create mode 100644 installation/sdnc-web/README.md create mode 100644 installation/sdnc-web/certs/cacert.pem create mode 100644 installation/sdnc-web/certs/cert.pem create mode 100644 installation/sdnc-web/certs/key.pem create mode 100644 installation/sdnc-web/src/main/resources/favicon.ico create mode 100644 installation/sdnc-web/src/main/resources/location.rules create mode 100644 installation/sdnc-web/src/main/resources/odlux.application.list create mode 100644 installation/sdnc-web/src/main/scripts/configure.py delete mode 100644 installation/sdnc-web/src/main/scripts/configure.sh create mode 100644 installation/sdnc-web/src/main/scripts/core.py create mode 100755 installation/sdnc-web/src/main/scripts/opm.py diff --git a/installation/sdnc-web/README.md b/installation/sdnc-web/README.md new file mode 100644 index 00000000..d793b676 --- /dev/null +++ b/installation/sdnc-web/README.md @@ -0,0 +1,56 @@ +# sdnc web image + + +## folder structure + +| folder | description | +| ------ | ----------- | +| /opt/bitnami/nginx/conf/server_blocks/http(s)_site.conf | nginx config | +| /opt/bitnami/nginx/conf/server_blocks/location.rules | forwarding rules for nginx | +| /app/odlux | http content files (html, js, css, ...) | +| /app/odlux.application.list | application list file | +| /app/opm.py | Odlux package manager for install or uninstall apps | +| /app/init.d/ | autoinstall folder for opm | + +## Default app order + +| index | application | +| ----- | ----------- | +| 1 | connectApp | +| 10 | faultApp | +| 20 | maintenanceApp | +| 30 | configurationApp | +| 55 | performanceHistoryApp | +| 70 | inventoryApp | +| 75 | eventLogApp | +| 90 | mediatorApp | +| 200 | helpApp | + + +## usage + +### auto installation + +To auto install additional applications for odlux they can be easily injected before startup into the ```/app/init.d/``` folder. There are two options of file format allowed. + +[1] The first fileformat is e.g. 55linkCalculationApp.jar but also .zip is allowed. The important thing is that a number is leading the app package to specify the order number where the menu item is ordered in the menu bar. So the linkCalculationApp would be located between performanceApp and inventoryApp. + +[2] The second is the default jar format, like it would be installed into the opendaylight karaf environment, including a blueprint and the sources. There the filename is not important because application name and index will be detected by the blueprint information. + + +### manual method +``` +opm install --name myApp --index 53 --file myarchive.zip +``` +``` +opm install --url https://link-to-my-odlux-application.jar +``` + +``` +opm uninstall --name myApp +``` + +``` +opm list +``` + diff --git a/installation/sdnc-web/certs/cacert.pem b/installation/sdnc-web/certs/cacert.pem new file mode 100644 index 00000000..0146e6b4 --- /dev/null +++ b/installation/sdnc-web/certs/cacert.pem @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFPjCCAyagAwIBAgIJAJ6u7cCnzrWdMA0GCSqGSIb3DQEBCwUAMCwxDjAMBgNV +BAsMBU9TQUFGMQ0wCwYDVQQKDARPTkFQMQswCQYDVQQGEwJVUzAeFw0xODA0MDUx +NDE1MjhaFw0zODAzMzExNDE1MjhaMCwxDjAMBgNVBAsMBU9TQUFGMQ0wCwYDVQQK +DARPTkFQMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAMA5pkgRs7NhGG4ew5JouhyYakgYUyFaG121+/h8qbSdt0hVQv56+EA41Yq7 +XGie7RYDQK9NmAFF3gruE+6X7wvJiChp+Cyd7sFMnb65uWhxEdxWTM2BJFrgfzUn +H8ZCxgaCo3XH4PzlKRy2LQQJEJECwl/RZmRCXijMt5e9h8XoZY/fKkKcZZUsWNCM +pTo266wjvA9MXLmdgReRj0+vrCjrNqy+htwJDztoiHWiYPqT6o8EvGcgjNqjlZx7 +NUNf8MfLDByqKF6+wRbHv1GKjn3/Vijd45Fv8riyRYROiFanvbV6jIfBkv8PZbXg +2VDWsYsgp8NAvMxK+iV8cO+Ck3lBI2GOPZbCEqpPVTYbLUz6sczAlCXwQoPzDIZY +wYa3eR/gYLY1gP2iEVHORag3bLPap9ZX5E8DZkzTNTjovvLk8KaCmfcaUMJsBtDd +ApcUitz10cnRyZc1sX3gE1f3DpzQM6t9C5sOVyRhDcSrKqqwb9m0Ss04XAS9FsqM +P3UWYQyqDXSxlUAYaX892u8mV1hxnt2gjb22RloXMM6TovM3sSrJS0wH+l1nznd6 +aFXftS/G4ZVIVZ/LfT1is4StoyPWZCwwwly1z8qJQ/zhip5NgZTxQw4mi7ww35DY +PdAQOCoajfSvFjqslQ/cPRi/MRCu079heVb5fQnnzVtnpFQRAgMBAAGjYzBhMB0G +A1UdDgQWBBRTVTPyS+vQUbHBeJrBKDF77+rtSTAfBgNVHSMEGDAWgBRTVTPyS+vQ +UbHBeJrBKDF77+rtSTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAN +BgkqhkiG9w0BAQsFAAOCAgEAPx/IaK94n02wPxpnYTy+LVLIxwdq/kawNd6IbiMz +L87zmNMDmHcGbfoRCj8OkhuggX9Lx1/CkhpXimuYsZOFQi5blr/u+v4mIbsgbmi9 +7j+cUHDP0zLycvSvxKHty51LwmaX9a4wkJl5zBU4O1sd/H9tWcEmwJ39ltKoBKBx +c94Zc3iMm5ytRWGj+0rKzLDAXEWpoZ5bE5PLJauA6UDCxDLfs3FwhbS7uDggxYvf +jySF5FCNET94oJ+m8s7VeHvoa8iPGKvXrIqdd7XDHnqJJlVKr7m9S0fMbyEB8ci2 +RtOXDt93ifY1uhoEtEykn4dqBSp8ezvNMnwoXdYPDvTd9uCAFeWFLVreBAWxd25h +PsBTkZA5hpa/rA+mKv6Af4VBViYr8cz4dZCsFChuioVebe9ighrfjB//qKepFjPF +CyjzKN1u0JKm/2x/ORqxkTONG8p3uDwoIOyimUcTtTMv42bfYD88RKakqSFXE9G+ +Z0LlaKABqfjK49o/tsAp+c5LoNlYllKhnetO3QAdraHwdmC36BhoghzR1jpX751A +cZn2VH3Q4XKyp01cJNCJIrua+A+bx6zh3RyW6zIIkbRCbET+UD+4mr8WIcSE3mtR +ZVlnhUDO4z9//WKMVzwS9Rh8/kuszrGFI1KQozXCHLrce3YP6RYZfOed79LXaRwX +dYY= +-----END CERTIFICATE----- diff --git a/installation/sdnc-web/certs/cert.pem b/installation/sdnc-web/certs/cert.pem new file mode 100644 index 00000000..1195a126 --- /dev/null +++ b/installation/sdnc-web/certs/cert.pem @@ -0,0 +1,102 @@ +Bag Attributes + friendlyName: sdnc@sdnc.onap.org + localKeyID: 54 69 6D 65 20 31 36 31 31 36 38 33 32 39 38 35 32 32 +Key Attributes: +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIk4s7xBaGXdgCAggA +MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECI7qjnyFxa3mBIIEyHgvXzCmhOT/ +atHsneicZqaGXxz57z1mPosvGwf2w6WerxOyW+cFejNepgMH+c5MQAfTuTD0H5g3 +SoyC9TKfHBld439sKO3hnDBROsypugO2uP4ownGiKQxOdwHNCOS8nC1EbUYC6nHR +B5QtRpDHZzB2t9dd6+RU1PuPUFRxjIPZsCM1DdKKhMHQHr8WDSbi170XfzC6O2Ko +23tgDq9cQYTqmgFedjyWpEmxfcibaujGOZ4VQej+tn60A03cXHG05tN/XvDCbQty +9bw1kiS8e+qmdUhkEIhR2aY0Z9sCUOLwJPDg/1vE0ZwK/bRGRD432PD+dmSLFV+v +m2m/ec8IQer8hCleI6GBaFI28QZyS2jznbzS7b/hU+nyxkZXejAymU1OBcNV4H8M +qf5ITWs+Ma5fc/8X90MlJacmBo3JuusTvDImLFP+5Nn5Yo3cnDeiAyMo0vFuywrv +bATYAncPlzksb6py3D5iXmLxREgLI14/TdZLhcYXBHw76oPz+/CH0A2P/HICPIjr +zF8U6zNI4bIguBTfVmm6YLjzOkVkKx4e/0fJiQO1yhzIsghhByIMg1uPcm0olNQz +r+YRPKTqFCPRxyGgPMleN56qeLhN8Q1WyJzIJoVVpDFc+4Stbv71C/po6/6A3v4r +hGUPCSsj8wJN+ozdamDWpeyRVCwXmmKwJU96pbnhdH/l6CPjmniAuKLzOMLJH1AD +FJEm1Frpz40BDC2U/165+nlfcHZfePWVPpNuqWzUfywqu8ORS/pYhapFoLLafQIn +22KhnPnbNXclIzuI0wiKjoNAfzJM0S9hysdojK/bptaZXUFeBEe41A8exuOjOxRh +pJqqgq2cRx6cmnAy0dr54+GoZr3haQCqTk814cxumOHqQdWllblA1D9b5Wd+8T5+ +tYdzYatsvjeY/VDH5czAbUhgBHGO3Vkxm49QemcopNDeCZ7RXmSwl2X6HLfCwnfH +9zsdNrIMfSTdRk9H4iHTyFRyoPViX6wYxlD7B9hJWggEyDVg9RvJImOSKyWk+NKd +WmfxaywgUJkxsJeEBCso8V690lm//oWrc17qWEd29h/9J0MPNa2zXJyG1Yq1RohZ +JW3IcnE8gCoyHVjxBCVjKPA6dXtfDNfmCDyEG+GgPglQUj9TBIRGmn9e067M6dB9 +vhnK12SBQNTyoH5vWSbP2u5wk6jV5QKYyqMbNHAD1uvsBbWy4FpoI+epp2Y3XcAr +kgBzopKSaCbj1thxxUHsMYBspVDR+D0SR4fsHhj+Y3jmr37s3q1NOSkWUMcMa7Hi +zaozRSo8hYUwP5RHpPcNCTcK0dhFPAWXyGPtP7IribGQDhUAdde/s4yPuSLa28zy +uTKWU5vSlaE+9WRSKvbA8HdKTPv45dV/qUCHITvPOdsqkWJ3qhNQMrrD9Mx17oj/ +zGZTcRGQG62dfYUR9v2rGE6Gj7MzaE1SrQgYqtCzWfJ9e3fBqOlko5jtZ5Kz86DU +ZFISrkb1sATngzWFtvyNgHFx4fUsYDJbc8XlB47H5Byyj/6SypS6dMpwqpNezn8s +xQi3yUfpg7GQzTFKdwmqK/KVeh0KZF/0FM+ZCUPh6IaRDcp8+Hm7H72ZD4vPxs4s +8bvLx9bxfiI+/6Om51IQrQ== +-----END ENCRYPTED PRIVATE KEY----- +Bag Attributes + friendlyName: sdnc@sdnc.onap.org + localKeyID: 54 69 6D 65 20 31 36 31 31 36 38 33 32 39 38 35 32 32 +subject=CN = sdnc, OU = sdnc@sdnc.onap.org:DEV, OU = OSAAF, O = ONAP, C = US + +issuer=C = US, O = ONAP, OU = OSAAF, CN = intermediateCA_9 + +-----BEGIN CERTIFICATE----- +MIIE6zCCA9OgAwIBAgIJALyx+8HFJuYTMA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNV +BAYTAlVTMQ0wCwYDVQQKDARPTkFQMQ4wDAYDVQQLDAVPU0FBRjEZMBcGA1UEAwwQ +aW50ZXJtZWRpYXRlQ0FfOTAeFw0yMTAxMjYxNzQ4MThaFw0yMjAxMjYxNzQ4MTha +MFwxDTALBgNVBAMMBHNkbmMxHzAdBgNVBAsMFnNkbmNAc2RuYy5vbmFwLm9yZzpE +RVYxDjAMBgNVBAsMBU9TQUFGMQ0wCwYDVQQKDARPTkFQMQswCQYDVQQGEwJVUzCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALQtwrW3Eiru18BADUiBIbEU +sruiLu63h6jDprLqrxGt57d5MSpxaRoOPoWDPE/Z6LvMwTGfiQIPsFnZ2H3YtDsI +/p1fOFAHxCUl5Cs4HnYjJUkDs2U7dXUYZR8enNPZRfFZNUOajxERUgyE/0g+yHS1 +AlysMInFDblmNEYgQoNiN996FpBamHivCDXw612bBkkZQOTeKJaCZ0DPGIYGAJtf +Q1kIL7Y1D3c3C0VD39homtxqIb21rje63YVISprbfKX0RxijkWw0wXjaRDwxPGwH +TrDHgsrPH/zv9Hak6cJkTw5e7VBHHlL1sHYgPSDLd/8PFGkmD4a/N/IKLy/14KMC +AwEAAaOCAcMwggG/MAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgXgMCAGA1UdJQEB +/wQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBUBgNVHSMETTBLgBSB95lbELnIjN7z +Ul7qTmmgQz6s3aEwpC4wLDEOMAwGA1UECwwFT1NBQUYxDTALBgNVBAoMBE9OQVAx +CzAJBgNVBAYTAlVTggEHMB0GA1UdDgQWBBRUhHQPlauGoN9fiGiB7WYr+oIHJDCC +AQkGA1UdEQSCAQAwgf2BH21hcmsuZC5tYW5hZ2VyQHBlb3BsZS5vc2FhZi5jb22C +BHNkbmOCG2MxLnZtMS5zZG5jLnNpbXBsZWRlbW8ub25hcIIbYzIudm0xLnNkbmMu +c2ltcGxlZGVtby5vbmFwghtjMy52bTEuc2RuYy5zaW1wbGVkZW1vLm9uYXCCG2M0 +LnZtMS5zZG5jLnNpbXBsZWRlbW8ub25hcIIJb25hcC1zZG5jgg5vbmFwLXNkbmMu +b25hcIIcc2RuYy5hcGkuc2ltcGxlZGVtby5vbmFwLm9yZ4IJc2RuYy5vbmFwghx2 +bTEuc2RuYy5zaW1wbGVkZW1vLm9uYXAub3JnMA0GCSqGSIb3DQEBCwUAA4IBAQAg +7fybHysjWyKejSfPnodYuLfQoCIaXe5C4JbwLGKweAost5E6ud2rscN/c5UYNPs/ +IskfnMxULLzJpEXdUHwLQaLJj0fQQBRHq23s8P7Emu44ZeEzxAQfI+4pKRzTYxag +4dIitf91nhUq5SQI/pcki+/ElkwfeKHYQLBDU8ygG/gZKh1UHxIjfva7v/ENqL2h +H8UDXsLhOx/guaJzH2CRQdKMminsdtnNgSRRPzWRe4EMc2ah6G6E4B/Za/n7Rhq5 +r6jpvM/XIxPCY4ci5jJIbvdahS4I54kMaLRTSl4gT8+n8ie/GzhZlXX+1MR8HCZc +8SWDYxmc8MkJ20iekiSc +-----END CERTIFICATE----- +Bag Attributes + friendlyName: CN=intermediateCA_9,OU=OSAAF,O=ONAP,C=US +subject=C = US, O = ONAP, OU = OSAAF, CN = intermediateCA_9 + +issuer=OU = OSAAF, O = ONAP, C = US + +-----BEGIN CERTIFICATE----- +MIIEdTCCAl2gAwIBAgIBBzANBgkqhkiG9w0BAQsFADAsMQ4wDAYDVQQLDAVPU0FB +RjENMAsGA1UECgwET05BUDELMAkGA1UEBhMCVVMwHhcNMTgwODE3MTg1MTM3WhcN +MjMwODE3MTg1MTM3WjBHMQswCQYDVQQGEwJVUzENMAsGA1UECgwET05BUDEOMAwG +A1UECwwFT1NBQUYxGTAXBgNVBAMMEGludGVybWVkaWF0ZUNBXzkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCv0HHUkba3uNtNI3jPKimUcd6RNwmhSCJL +neMWpnjqp5/A+HCKyNsEaT4y177hNLmCm/aMm1u2JIfikc+8wEqLCSBBPz+P0h+d +o+sZ7U+4oeQizdYYpEdzHJ2SieHHa8vtu80rU3nO2NEIkuYC20HcKSEtl8fFKsk3 +nqlhY+tGfYJPTXcDOQAO40BTcgat3C3uIJHkWJJ4RivunE4LEuRv9QyKgAw7rkJV +v+f7guqpZlXy6dzAkuU7XULWcgo55MkZlssoiErMvEZJad5aWKvRY3g7qUjaQ6wO +15wOAUoRBW96eeZZbytgn8kybcBy++Ue49gPtgm1MF/KlAsp0MD5AgMBAAGjgYYw +gYMwHQYDVR0OBBYEFIH3mVsQuciM3vNSXupOaaBDPqzdMB8GA1UdIwQYMBaAFFNV +M/JL69BRscF4msEoMXvv6u1JMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0B +AQsFAAOCAgEADxNymiCNr2e37iLReoaxKmZvwox0cTiNAaj7iafRzmwIoY3VXO8Q +ix5IYcp4FaQ7fV1jyp/AmaSnyHf6Osl0sx8PxsQkO7ALttxKUrjfbvNSVUA2C/vl +u5m7UVJLIUtFDZBWanzUSmkTsYLHpiANFQKd2c/cU1qXcyzgJVFEFVyyHNkF7Is+ ++pjG9M1hwQHOoTnEuU013P7X1mHek+RXEfhJWwe7UsZnBKZaZKbQZu7hEtqKWYp/ +QsHgnjoLYXsh0WD5rz/mBxdTdDLGpFqWDzDqb8rsYnqBzoowvsasV8X8OSkov0Ht +8Yka0ckFH9yf8j1Cwmbl6ttuonOhky3N/gwLEozuhy7TPcZGVyzevF70kXy7g1CX +kpFGJyEHXoprlNi8FR4I+NFzbDe6a2cFow1JN19AJ9Z5Rk5m7M0mQPaQ4RcikjB3 +aoLsASCJTm1OpOFHfxEKiBW4Lsp3Uc5/Rb9ZNbfLrwqWZRM7buW1e3ekLqntgbky +uKKISHqVJuw/vXHl1jNibEo9+JuQ88VNuAcm7WpGUogeCa2iAlPTckPZei+MwZ8w +tpvxTyYlZEC8DWzY1VC29+W2N5cvh01e2E3Ql08W1zL63dqrgdEZ3VWjzooYi4ep +BmMXTvouW+Flyvcw/0oTcfN0biDIt0mCkZ5CQVjfGL9DTOYteR5hw+k= +-----END CERTIFICATE----- diff --git a/installation/sdnc-web/certs/key.pem b/installation/sdnc-web/certs/key.pem new file mode 100644 index 00000000..04bc8491 --- /dev/null +++ b/installation/sdnc-web/certs/key.pem @@ -0,0 +1,29 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC0LcK1txIq7tfA +QA1IgSGxFLK7oi7ut4eow6ay6q8Rree3eTEqcWkaDj6FgzxP2ei7zMExn4kCD7BZ +2dh92LQ7CP6dXzhQB8QlJeQrOB52IyVJA7NlO3V1GGUfHpzT2UXxWTVDmo8REVIM +hP9IPsh0tQJcrDCJxQ25ZjRGIEKDYjffehaQWph4rwg18OtdmwZJGUDk3iiWgmdA +zxiGBgCbX0NZCC+2NQ93NwtFQ9/YaJrcaiG9ta43ut2FSEqa23yl9EcYo5FsNMF4 +2kQ8MTxsB06wx4LKzx/87/R2pOnCZE8OXu1QRx5S9bB2ID0gy3f/DxRpJg+Gvzfy +Ci8v9eCjAgMBAAECggEAbB+J2MIjhOAPWK8XSYs0TK+/EhohT9+S6RN/1Z4/sLxL +cS6o8m9cQuaJXlWCu+hoYUpeJQk3jqUbjs/LurlwbnzXTlj10hDXA/PZGJZ0sTAm +D8rIvNcRhVM+W45jTj30WwDNleQKNpPOSPUGvLPwVxjIchRijEpUEg3jELILOAuW +ebloKLqc5SDAPKIpepZO7bz4L/dVlQSEBp3OTzyfeecbBNS2Vfw0K+I5BqGJAssZ +Dq+ixSHRj6mdvm7tf5e14j65W8VKvUoHbktp9z2OBCItySV4g1dqrfM7T9SqsosH +cbwR5dIieiFnhdg94rfpzH2QTCBt5MGUpCcv+CbQAQKBgQDkenCAImG1jAjzQNxb +7LXLJeIqJC2E3290hEYge2Bi+1/WmV222AAwNUEPQfKa7qUJRLpX8a4p+9kTaZos +93szyYEyp4vf93GDHvQPmKMJDCbbxa94txd5dnrtYTN+MCPjpwr+75++JRUUwcNr +k3mkzM87zhSBkyYcGiCsza4gQQKBgQDJ4enp8Zly3GqufbWJNpKut6e9hC6f4qWi +4qRUBmjnogm0HiGmn83n9B6SI6OnaRy/dXgPBogZDeETyzGu78nArDK+cy8wSy0H +aPuApqGJzsuAl6YWudYt4ooBcJL99XgTGxFAb2q04JKxh18V6DRfj7pY2uhZongI +OdcMSE2H4wKBgQCUzNEcAkhUbmEd264oCB/VsFR9UZZ7pPD3l3X8jZ2WmVQvdS69 +eCuXOfenMjIIiUfeo24g/HuLSER2Ch6pDnykm6WTEd9c+9Bnru8QgT4dFFbyZusC +2WtmZa1lkBpzInMdPptAsVr+ATSbkh3tn9xnYiPNNUfRo738K2AAauvugQKBgQCd +dzbqoOXdr4sOm0LzybtTyDBwJB/x2ej0Se9/EpjUw5DqCu6YduE2YTVPK7lEpTol +JE0G+0NAt5CtzbntB1/Ihwf1gQZ3lsuCkiJJ0K8DPGeC38ZOx5kFpUObp+EfcU29 +KUmlhsImX1xMWJiUD9B6ETN6hxTghVc2o1bXX7YJnQKBgQCGiRnjCEmKd8hefkS8 +ub9F4kdOzXmG4XhK+oZWVGPXIGfnoxm6IbWcjSArA/m8TLfJSHPKujnLOnOkffpi +7+PWzTHn5BFDGUb8z3mxwJV8e9szoDkljoiUwYU/S8eatAm6lyJv1gp2wmDI9DfT +86BefCEvGk3EzAo3L6hhHdICzA== +-----END PRIVATE KEY----- + diff --git a/installation/sdnc-web/pom.xml b/installation/sdnc-web/pom.xml index 8817c936..2724c7a5 100644 --- a/installation/sdnc-web/pom.xml +++ b/installation/sdnc-web/pom.xml @@ -59,7 +59,7 @@ copy-dockerfile copy-resources - + validate ${basedir}/target/docker-stage @@ -78,27 +78,27 @@ copy-siteconf copy-resources - + validate - ${basedir}/target/docker-stage + ${basedir}/target/docker-stage/conf src/main/resources *.conf + *.rules true - copy-scripts copy-resources - + validate ${basedir}/target/docker-stage/bin @@ -107,12 +107,33 @@ src/main/scripts *.sh + *.py true + + copy-favicon + + copy-resources + + validate + + ${basedir}/target/docker-stage/html + + + src/main/resources + + favicon.ico + odlux.application.list + + false + + + + diff --git a/installation/sdnc-web/src/main/docker/Dockerfile b/installation/sdnc-web/src/main/docker/Dockerfile index a552137f..9f3f6870 100644 --- a/installation/sdnc-web/src/main/docker/Dockerfile +++ b/installation/sdnc-web/src/main/docker/Dockerfile @@ -22,12 +22,14 @@ # Base bitnami nginx image FROM ${base.image.repo} LABEL maintainer="CCSDK Team (onap-ccsdk@lists.onap.org)" - +USER root +RUN apt-get update && apt-get install python3-minimal python3-urllib3 unzip openssl -y +USER 1001 # copy ODLUX files to nginx COPY html /opt/bitnami/nginx/html # copy site conf files -COPY *.conf /opt/bitnami/nginx/conf/server_blocks/ +COPY conf/* /opt/bitnami/nginx/conf/server_blocks/ # setup environment variables ENV WEBPROTOCOL="HTTP" \ @@ -38,20 +40,25 @@ ENV WEBPROTOCOL="HTTP" \ TRPCEURL="" \ TOPOURL="" \ TILEURL="" \ - DNS_RESOLVER="1.1.1.1" \ + SITEDOCURL="" \ + DNS_RESOLVER="1.1.1.1 ipv6=off" \ + DNS_INTERNAL_RESOLVER="127.0.0.11" \ SSL_CERT_DIR="/app/cert" \ SSL_CERTIFICATE="cert.pem" \ SSL_CERTIFICATE_KEY="cert.key" # Check if /app can be used. If so, create "custom" directory and copy the files there. -COPY bin/*.sh /opt/bitnami/nginx/sbin/ +COPY bin/* /opt/bitnami/nginx/sbin/ USER root -RUN chmod +x /opt/bitnami/nginx/sbin/configure.sh /opt/bitnami/nginx/sbin/run.sh +RUN chmod +x /opt/bitnami/nginx/sbin/run.sh /opt/bitnami/nginx/sbin/opm.py # By default, docker copies files with the permissions of the build user. To avoid cases where build user # has 644 which can result in failure of certain commands -RUN chmod -R g+w /opt/bitnami/nginx/html/odlux - +RUN chmod -R g+w /opt/bitnami/nginx/html/odlux && mkdir /app/init.d +RUN chmod 666 /opt/bitnami/nginx/conf/server_blocks/*.rules +#RUN chown 1001:1001 /app/odlux.application.list && chmod 777 /app/odlux.application.list +RUN chown -R 1001:1001 /app +RUN ln -s /opt/bitnami/nginx/sbin/opm.py /usr/local/bin/opm USER 1001 CMD [ "/opt/bitnami/nginx/sbin/run.sh" ] diff --git a/installation/sdnc-web/src/main/resources/favicon.ico b/installation/sdnc-web/src/main/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..650067ebaa707d0a3b2155cc6ab31bf11c120861 GIT binary patch literal 268322 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ⅆnUkXW8-^j=xD>R+ob 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%0AC0mRC$HuMGRC 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 I;CA}_FQ`l!JOBUy literal 0 HcmV?d00001 diff --git a/installation/sdnc-web/src/main/resources/http_site.conf b/installation/sdnc-web/src/main/resources/http_site.conf index ea6c33be..3d9ade13 100644 --- a/installation/sdnc-web/src/main/resources/http_site.conf +++ b/installation/sdnc-web/src/main/resources/http_site.conf @@ -49,36 +49,5 @@ server { server_name _; - location ~ ^/$ { - return 301 /odlux/index.html; - } - location ~ ^/help/$ { - try_files /help/$args.json $uri; - } - location ~ ^/transportpce { - if ($request_uri ~* "/transportpce/(.*)") { - proxy_pass TRPCEURL/$1; - } - } - location ~ ^/topology { - proxy_pass TOPOURL; - } - location ~ ^/tiles/ { - resolver DNS_RESOLVER; - if ($request_uri ~* "/tiles/(.*)") { - proxy_pass TILEURL/$1; - } - } - location / { - try_files $uri $uri/ @backend; - } - location /websocket { - proxy_pass SDNRPROTOCOL://SDNRHOST:SDNRPORT/websocket; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location @backend { - proxy_pass SDNRPROTOCOL://SDNRHOST:SDNRPORT; - } + include server_blocks/location.rules; } diff --git a/installation/sdnc-web/src/main/resources/https_site.conf b/installation/sdnc-web/src/main/resources/https_site.conf index 5e61fece..6dcfb790 100644 --- a/installation/sdnc-web/src/main/resources/https_site.conf +++ b/installation/sdnc-web/src/main/resources/https_site.conf @@ -68,36 +68,6 @@ server { server_name _; - location ~ ^/$ { - return 301 /odlux/index.html; - } - location ~ ^/help/$ { - try_files /help/$args.json $uri; - } - location ~ ^/transportpce { - if ($request_uri ~* "/transportpce/(.*)") { - proxy_pass TRPCEURL/$1; - } - } - location ~ ^/topology { - proxy_pass TOPOURL; - } - location ~ ^/tiles/ { - resolver DNS_RESOLVER; - if ($request_uri ~* "/tiles/(.*)") { - proxy_pass TILEURL/$1; - } - } - location / { - try_files $uri $uri/ @backend; - } - location /websocket { - proxy_pass SDNRPROTOCOL://SDNRHOST:SDNRPORT/websocket; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - location @backend { - proxy_pass SDNRPROTOCOL://SDNRHOST:SDNRPORT; - } + include server_blocks/location.rules; + } diff --git a/installation/sdnc-web/src/main/resources/location.rules b/installation/sdnc-web/src/main/resources/location.rules new file mode 100644 index 00000000..83120d60 --- /dev/null +++ b/installation/sdnc-web/src/main/resources/location.rules @@ -0,0 +1,46 @@ +location ~ ^/$ { + return 301 " /odlux/index.html"; +} +location ~ ^/help/$ { + try_files /help/$args.json $uri; +} +location ~ ^/transportpce { + resolver DNS_INTERNAL_RESOLVER; + if ($request_uri ~* "/transportpce/(.*)") { + proxy_pass TRPCEURL/$1; + } +} +location ~ ^/topology/ { + resolver DNS_INTERNAL_RESOLVER; + proxy_pass TOPOURL; +} +location ~ ^/sitedoc/ { + resolver DNS_INTERNAL_RESOLVER; + if ($request_uri ~* "/sitedoc/(.*)") { + proxy_pass SITEDOCURL/topology/stadok/$1; + } +} +location ~ ^/tiles/ { + resolver DNS_RESOLVER; + if ($request_uri ~* "/tiles/(.*)") { + proxy_pass TILEURL/$1; + } +} +location ~ ^/terrain/ { + resolver DNS_INTERNAL_RESOLVER; + if ($request_uri ~* "/terrain/(.*)") { + proxy_pass TERRAINURL/$1; + } +} +location / { + try_files $uri $uri/ @backend; +} +location /websocket { + proxy_pass SDNRPROTOCOL://SDNRHOST:SDNRPORT/websocket; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; +} +location @backend { + proxy_pass SDNRPROTOCOL://SDNRHOST:SDNRPORT; +} \ No newline at end of file diff --git a/installation/sdnc-web/src/main/resources/odlux.application.list b/installation/sdnc-web/src/main/resources/odlux.application.list new file mode 100644 index 00000000..9176aae6 --- /dev/null +++ b/installation/sdnc-web/src/main/resources/odlux.application.list @@ -0,0 +1,9 @@ +1 connectApp +10 faultApp +20 maintenanceApp +30 configurationApp +55 performanceHistoryApp +70 inventoryApp +75 eventLogApp +90 mediatorApp +200 helpApp diff --git a/installation/sdnc-web/src/main/scripts/configure.py b/installation/sdnc-web/src/main/scripts/configure.py new file mode 100644 index 00000000..255cbcd5 --- /dev/null +++ b/installation/sdnc-web/src/main/scripts/configure.py @@ -0,0 +1,34 @@ +#!/bin/bash + +### +# ============LICENSE_START======================================================= +# ONAP : ccsdk distribution web +# ================================================================================ +# Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. +# All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +# load core methods to call +from core import * + +# Comment listening on 8080 in nginx.conf as we don't want nginx to listen on any port other than SDNR +sedInFile('listen','\#listen', '/opt/bitnami/nginx/conf/nginx.conf') +initial_load() +update_index_html() + +check_for_rule_template() + +update_nginx_site_conf() diff --git a/installation/sdnc-web/src/main/scripts/configure.sh b/installation/sdnc-web/src/main/scripts/configure.sh deleted file mode 100644 index a257e6e1..00000000 --- a/installation/sdnc-web/src/main/scripts/configure.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash - -### -# ============LICENSE_START======================================================= -# ONAP : ccsdk distribution web -# ================================================================================ -# Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. -# All rights reserved. -# ================================================================================ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============LICENSE_END========================================================= -### - -# Comment listening on 8080 in nginx.conf as we don't want nginx to listen on any port other than SDNR -sed -i 's/listen/\#listen/g' /opt/bitnami/nginx/conf/nginx.conf - -update_index_html() { - - # Backup the index.html file - cp /opt/bitnami/nginx/html/odlux/index.html /opt/bitnami/nginx/html/odlux/index.html.backup - #default values - ODLUX_AUTH_METHOD="basic" - ENABLE_ODLUX_RBAC=${ENABLE_ODLUX_RBAC:-false} - - if [ "$ENABLE_OAUTH" == "true" ]; then - ODLUX_AUTH_METHOD="oauth" - fi - echo "authentication is $ODLUX_AUTH_METHOD" - echo "rbac access is enabled: $ENABLE_ODLUX_RBAC" - ODLUX_CONFIG='{"authentication":"'$ODLUX_AUTH_METHOD'","enablePolicy":'$ENABLE_ODLUX_RBAC'}' -# sed -z 's/