Compare commits
52 Commits
v0.12.3
...
master-120
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aba7a9e1c9 | ||
|
|
3db22a2479 | ||
|
|
884321cfce | ||
|
|
20c07a22e3 | ||
|
|
bf126d3a84 | ||
|
|
1e59f131e8 | ||
|
|
dfcd49bb5d | ||
|
|
a7ab26c81e | ||
|
|
35855daa12 | ||
|
|
3ce0b3d633 | ||
|
|
569d2390b9 | ||
|
|
a39e468b96 | ||
|
|
bbc47e6e11 | ||
|
|
4fb8c2f684 | ||
|
|
65dcdc674a | ||
|
|
ebc2b208d2 | ||
|
|
b29fc0993b | ||
|
|
a3d0cb37a3 | ||
|
|
85d549cc51 | ||
|
|
5f46ec2541 | ||
|
|
9db0c358a4 | ||
|
|
eefc6a7894 | ||
|
|
c529a6d127 | ||
|
|
347c6aba3b | ||
|
|
400892565d | ||
|
|
b9873fa471 | ||
|
|
62fe583a21 | ||
|
|
a69f597f43 | ||
|
|
cdb4392633 | ||
|
|
41f77f128e | ||
|
|
af68a0c7e4 | ||
|
|
0ea2193878 | ||
|
|
06b08593b7 | ||
|
|
6b3ff10027 | ||
|
|
53d278a91e | ||
|
|
820fa61b43 | ||
|
|
3f60df9071 | ||
|
|
0bbd4f0282 | ||
|
|
1fa4d19e93 | ||
|
|
f56b4905c9 | ||
|
|
575bf2927d | ||
|
|
6bacd0a45c | ||
|
|
7f5de2d70e | ||
|
|
f0d5398748 | ||
|
|
813458c4c1 | ||
|
|
aae493ac82 | ||
|
|
f5234d2830 | ||
|
|
f6acb888d2 | ||
|
|
5328f53943 | ||
|
|
70a4d76283 | ||
|
|
373bfbfe3f | ||
|
|
b8417fb7a0 |
2
.github/workflows/compiles.yml
vendored
2
.github/workflows/compiles.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/crosscompile-1.yml
vendored
2
.github/workflows/crosscompile-1.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/crosscompile-2.yml
vendored
2
.github/workflows/crosscompile-2.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/crosscompile-3.yml
vendored
2
.github/workflows/crosscompile-3.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/crosscompile-4.yml
vendored
2
.github/workflows/crosscompile-4.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/crosscompile-5.yml
vendored
2
.github/workflows/crosscompile-5.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/go-test-pkg.yml
vendored
2
.github/workflows/go-test-pkg.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/go.yml
vendored
2
.github/workflows/go.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x, 1.17.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/integration.yml
vendored
2
.github/workflows/integration.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x, 1.17.x]
|
||||
go-version: [1.17.x]
|
||||
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
go-version: [1.16.x, 1.17.x]
|
||||
go-version: [1.17.x]
|
||||
os: [ubuntu-latest]
|
||||
steps:
|
||||
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||
|
||||
@@ -53,12 +53,12 @@ docker pull minio/console
|
||||
```
|
||||
|
||||
### Build from source
|
||||
> You will need a working Go environment. Therefore, please follow [How to install Go](https://golang.org/doc/install).
|
||||
> Minimum version required is go1.17
|
||||
|
||||
```
|
||||
GO111MODULE=on go install github.com/minio/console/cmd/console@latest
|
||||
go install github.com/minio/console/cmd/console@latest
|
||||
```
|
||||
> You will need a working Go environment. Therefore, please follow [How to install Go](https://golang.org/doc/install).
|
||||
> Minimum version required is go1.16
|
||||
|
||||
## Setup
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import (
|
||||
"io/ioutil"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/minio/console/restapi"
|
||||
@@ -173,6 +174,10 @@ func loadOperatorAllCerts(ctx *cli.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
if restapi.GlobalTLSCertsManager != nil {
|
||||
restapi.GlobalTLSCertsManager.ReloadOnSignal(syscall.SIGHUP)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/go-openapi/loads"
|
||||
@@ -172,6 +173,10 @@ func loadAllCerts(ctx *cli.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
if restapi.GlobalTLSCertsManager != nil {
|
||||
restapi.GlobalTLSCertsManager.ReloadOnSignal(syscall.SIGHUP)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
116
go.mod
116
go.mod
@@ -1,6 +1,6 @@
|
||||
module github.com/minio/console
|
||||
|
||||
go 1.16
|
||||
go 1.17
|
||||
|
||||
require (
|
||||
github.com/blang/semver/v4 v4.0.0
|
||||
@@ -13,6 +13,7 @@ require (
|
||||
github.com/go-openapi/strfmt v0.20.0
|
||||
github.com/go-openapi/swag v0.19.14
|
||||
github.com/go-openapi/validate v0.20.2
|
||||
github.com/golang-jwt/jwt/v4 v4.1.0
|
||||
github.com/gorilla/websocket v1.4.2
|
||||
github.com/jessevdk/go-flags v1.4.0
|
||||
github.com/klauspost/compress v1.13.6
|
||||
@@ -24,7 +25,7 @@ require (
|
||||
github.com/minio/minio-go/v7 v7.0.15
|
||||
github.com/minio/operator v0.0.0-20211011212245-31460bbbc4b7
|
||||
github.com/minio/operator/logsearchapi v0.0.0-20211011212245-31460bbbc4b7
|
||||
github.com/minio/pkg v1.1.5
|
||||
github.com/minio/pkg v1.1.9
|
||||
github.com/minio/selfupdate v0.3.1
|
||||
github.com/mitchellh/go-homedir v1.1.0
|
||||
github.com/rs/xid v1.3.0
|
||||
@@ -40,4 +41,115 @@ require (
|
||||
k8s.io/client-go v0.21.1
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/PuerkitoBio/purell v1.1.1 // indirect
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
|
||||
github.com/StackExchange/wmi v1.2.1 // indirect
|
||||
github.com/VividCortex/ewma v1.1.1 // indirect
|
||||
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/briandowns/spinner v1.16.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
||||
github.com/cheggaaa/pb v1.0.29 // indirect
|
||||
github.com/coreos/go-semver v0.3.0 // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0 // indirect
|
||||
github.com/docker/go-units v0.4.0 // indirect
|
||||
github.com/emicklei/go-restful v2.9.5+incompatible // indirect
|
||||
github.com/evanphx/json-patch v4.9.0+incompatible // indirect
|
||||
github.com/fatih/color v1.13.0 // indirect
|
||||
github.com/fatih/structs v1.1.0 // indirect
|
||||
github.com/georgysavva/scany v0.2.7 // indirect
|
||||
github.com/go-logr/logr v0.4.0 // indirect
|
||||
github.com/go-ole/go-ole v1.2.5 // indirect
|
||||
github.com/go-openapi/analysis v0.20.0 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.19.5 // indirect
|
||||
github.com/go-openapi/jsonreference v0.19.5 // indirect
|
||||
github.com/go-stack/stack v1.8.0 // indirect
|
||||
github.com/goccy/go-json v0.7.9 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
|
||||
github.com/golang/protobuf v1.5.2 // indirect
|
||||
github.com/google/go-cmp v0.5.5 // indirect
|
||||
github.com/google/gofuzz v1.1.0 // indirect
|
||||
github.com/google/uuid v1.3.0 // indirect
|
||||
github.com/googleapis/gnostic v0.5.1 // indirect
|
||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||
github.com/hashicorp/golang-lru v0.5.4 // indirect
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
|
||||
github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect
|
||||
github.com/lestrrat-go/blackmagic v1.0.0 // indirect
|
||||
github.com/lestrrat-go/httpcc v1.0.0 // indirect
|
||||
github.com/lestrrat-go/iter v1.0.1 // indirect
|
||||
github.com/lestrrat-go/jwx v1.2.7 // indirect
|
||||
github.com/lestrrat-go/option v1.0.0 // indirect
|
||||
github.com/mailru/easyjson v0.7.6 // indirect
|
||||
github.com/mattn/go-colorable v0.1.10 // indirect
|
||||
github.com/mattn/go-ieproxy v0.0.1 // indirect
|
||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.13 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
|
||||
github.com/mb0/glob v0.0.0-20160210091149-1eb79d2de6c4 // indirect
|
||||
github.com/minio/argon2 v1.0.0 // indirect
|
||||
github.com/minio/colorjson v1.0.1 // indirect
|
||||
github.com/minio/filepath v1.0.0 // indirect
|
||||
github.com/minio/md5-simd v1.1.2 // indirect
|
||||
github.com/minio/sha256-simd v1.0.0 // indirect
|
||||
github.com/mitchellh/mapstructure v1.4.1 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/philhofer/fwd v1.1.1 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pkg/profile v1.6.0 // indirect
|
||||
github.com/pkg/xattr v0.4.3 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/posener/complete v1.2.3 // indirect
|
||||
github.com/prometheus/client_golang v1.11.0 // indirect
|
||||
github.com/prometheus/client_model v0.2.0 // indirect
|
||||
github.com/prometheus/common v0.31.1 // indirect
|
||||
github.com/prometheus/procfs v0.7.3 // indirect
|
||||
github.com/rivo/uniseg v0.2.0 // indirect
|
||||
github.com/rjeczalik/notify v0.9.2 // indirect
|
||||
github.com/shirou/gopsutil/v3 v3.21.8 // indirect
|
||||
github.com/sirupsen/logrus v1.8.1 // indirect
|
||||
github.com/stretchr/objx v0.2.0 // indirect
|
||||
github.com/tidwall/gjson v1.10.2 // indirect
|
||||
github.com/tidwall/match v1.1.1 // indirect
|
||||
github.com/tidwall/pretty v1.2.0 // indirect
|
||||
github.com/tinylib/msgp v1.1.6 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.9 // indirect
|
||||
github.com/tklauser/numcpus v0.3.0 // indirect
|
||||
go.etcd.io/etcd/api/v3 v3.5.0 // indirect
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect
|
||||
go.etcd.io/etcd/client/v3 v3.5.0 // indirect
|
||||
go.mongodb.org/mongo-driver v1.4.6 // indirect
|
||||
go.uber.org/atomic v1.9.0 // indirect
|
||||
go.uber.org/multierr v1.7.0 // indirect
|
||||
go.uber.org/zap v1.19.1 // indirect
|
||||
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6 // indirect
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
|
||||
golang.org/x/text v0.3.7 // indirect
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba // indirect
|
||||
google.golang.org/appengine v1.6.6 // indirect
|
||||
google.golang.org/genproto v0.0.0-20210928142010-c7af6a1a74c9 // indirect
|
||||
google.golang.org/grpc v1.41.0 // indirect
|
||||
google.golang.org/protobuf v1.27.1 // indirect
|
||||
gopkg.in/h2non/filetype.v1 v1.0.5 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/ini.v1 v1.63.2 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
|
||||
k8s.io/klog/v2 v2.8.0 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7 // indirect
|
||||
k8s.io/utils v0.0.0-20201110183641-67b214c5f920 // indirect
|
||||
maze.io/x/duration v0.0.0-20160924141736-faac084b6075 // indirect
|
||||
sigs.k8s.io/controller-runtime v0.8.0 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.1.0 // indirect
|
||||
sigs.k8s.io/yaml v1.2.0 // indirect
|
||||
)
|
||||
|
||||
replace google.golang.org/grpc => google.golang.org/grpc v1.29.1
|
||||
|
||||
6
go.sum
6
go.sum
@@ -487,6 +487,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69
|
||||
github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
||||
github.com/golang-jwt/jwt/v4 v4.1.0 h1:XUgk2Ex5veyVFVeLm0xhusUTQybEbexJXrvPNOKkSY0=
|
||||
github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
@@ -929,8 +931,8 @@ github.com/minio/pkg v1.0.3/go.mod h1:obU54TZ9QlMv0TRaDgQ/JTzf11ZSXxnSfLrm4tMtBP
|
||||
github.com/minio/pkg v1.0.4/go.mod h1:obU54TZ9QlMv0TRaDgQ/JTzf11ZSXxnSfLrm4tMtBP8=
|
||||
github.com/minio/pkg v1.0.11/go.mod h1:32x/3OmGB0EOi1N+3ggnp+B5VFkSBBB9svPMVfpnf14=
|
||||
github.com/minio/pkg v1.1.3/go.mod h1:32x/3OmGB0EOi1N+3ggnp+B5VFkSBBB9svPMVfpnf14=
|
||||
github.com/minio/pkg v1.1.5 h1:phwKkJBQdVLyxOXC3RChPVGLtebplzQJ5jJ3l/HBvnk=
|
||||
github.com/minio/pkg v1.1.5/go.mod h1:32x/3OmGB0EOi1N+3ggnp+B5VFkSBBB9svPMVfpnf14=
|
||||
github.com/minio/pkg v1.1.9 h1:NJrcrQyFCSgyF+u6v7FbPXjjNV0oSnBuBevhsTKmA2U=
|
||||
github.com/minio/pkg v1.1.9/go.mod h1:32x/3OmGB0EOi1N+3ggnp+B5VFkSBBB9svPMVfpnf14=
|
||||
github.com/minio/selfupdate v0.3.1 h1:BWEFSNnrZVMUWXbXIgLDNDjbejkmpAmZvy/nCz1HlEs=
|
||||
github.com/minio/selfupdate v0.3.1/go.mod h1:b8ThJzzH7u2MkF6PcIra7KaXO9Khf6alWPvMSyTDCFM=
|
||||
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="17" height="16.986" viewBox="0 0 17 16.986">
|
||||
<g id="Tools" transform="translate(-56.747 -82.596)">
|
||||
<g id="Grupo_1868" data-name="Grupo 1868">
|
||||
<path id="Trazado_6843" data-name="Trazado 6843" d="M71.847,82.6,68.6,84.36l.016.961-2.387,2.387,2.411,2.411,2.42-2.42.871,0,1.82-3.206Z" fill="#bccee6"/>
|
||||
<path id="Trazado_6844" data-name="Trazado 6844" d="M61.539,92.4l-4.525,4.525a.852.852,0,0,0,0,1.205l1.205,1.206a.853.853,0,0,0,1.206,0l4.524-4.525Z" fill="#bccee6"/>
|
||||
</g>
|
||||
<path id="Trazado_6845" data-name="Trazado 6845" d="M73.162,96.921l-9.736-9.735a3.381,3.381,0,0,0-4.152-4.153L61.343,85.1l-2.411,2.411-2.069-2.069A3.381,3.381,0,0,0,61.016,89.6l9.735,9.736a.853.853,0,0,0,1.206,0l1.205-1.206A.852.852,0,0,0,73.162,96.921Z" fill="#bccee6"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 828 B |
BIN
images/pic1.png
BIN
images/pic1.png
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 1.8 MiB |
BIN
images/pic2.png
BIN
images/pic2.png
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 1.8 MiB |
@@ -15,7 +15,7 @@ spec:
|
||||
serviceAccountName: console-sa
|
||||
containers:
|
||||
- name: console
|
||||
image: minio/console:v0.12.3
|
||||
image: minio/console:v0.12.6
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
env:
|
||||
- name: CONSOLE_OPERATOR_MODE
|
||||
|
||||
@@ -32,7 +32,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: console
|
||||
image: minio/console:v0.12.3
|
||||
image: minio/console:v0.12.6
|
||||
imagePullPolicy: "IfNotPresent"
|
||||
env:
|
||||
- name: CONSOLE_MINIO_SERVER
|
||||
|
||||
@@ -42,6 +42,9 @@ type AdminInfoResponse struct {
|
||||
// objects
|
||||
Objects int64 `json:"objects,omitempty"`
|
||||
|
||||
// prometheus not ready
|
||||
PrometheusNotReady bool `json:"prometheusNotReady,omitempty"`
|
||||
|
||||
// servers
|
||||
Servers []*ServerProperties `json:"servers"`
|
||||
|
||||
|
||||
@@ -40,18 +40,12 @@ type Bucket struct {
|
||||
// access
|
||||
Access *BucketAccess `json:"access,omitempty"`
|
||||
|
||||
// allowed actions
|
||||
AllowedActions []string `json:"allowedActions"`
|
||||
|
||||
// creation date
|
||||
CreationDate string `json:"creation_date,omitempty"`
|
||||
|
||||
// details
|
||||
Details *BucketDetails `json:"details,omitempty"`
|
||||
|
||||
// manage
|
||||
Manage bool `json:"manage,omitempty"`
|
||||
|
||||
// name
|
||||
// Required: true
|
||||
// Min Length: 3
|
||||
|
||||
@@ -49,8 +49,8 @@ type SessionResponse struct {
|
||||
// pages
|
||||
Pages []string `json:"pages"`
|
||||
|
||||
// policy
|
||||
Policy *IamPolicy `json:"policy,omitempty"`
|
||||
// permissions
|
||||
Permissions map[string][]string `json:"permissions,omitempty"`
|
||||
|
||||
// status
|
||||
// Enum: [ok]
|
||||
@@ -61,10 +61,6 @@ type SessionResponse struct {
|
||||
func (m *SessionResponse) Validate(formats strfmt.Registry) error {
|
||||
var res []error
|
||||
|
||||
if err := m.validatePolicy(formats); err != nil {
|
||||
res = append(res, err)
|
||||
}
|
||||
|
||||
if err := m.validateStatus(formats); err != nil {
|
||||
res = append(res, err)
|
||||
}
|
||||
@@ -75,23 +71,6 @@ func (m *SessionResponse) Validate(formats strfmt.Registry) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *SessionResponse) validatePolicy(formats strfmt.Registry) error {
|
||||
if swag.IsZero(m.Policy) { // not required
|
||||
return nil
|
||||
}
|
||||
|
||||
if m.Policy != nil {
|
||||
if err := m.Policy.Validate(formats); err != nil {
|
||||
if ve, ok := err.(*errors.Validation); ok {
|
||||
return ve.ValidateName("policy")
|
||||
}
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
var sessionResponseTypeStatusPropEnum []interface{}
|
||||
|
||||
func init() {
|
||||
@@ -131,31 +110,8 @@ func (m *SessionResponse) validateStatus(formats strfmt.Registry) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ContextValidate validate this session response based on the context it is used
|
||||
// ContextValidate validates this session response based on context it is used
|
||||
func (m *SessionResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
|
||||
var res []error
|
||||
|
||||
if err := m.contextValidatePolicy(ctx, formats); err != nil {
|
||||
res = append(res, err)
|
||||
}
|
||||
|
||||
if len(res) > 0 {
|
||||
return errors.CompositeValidationError(res...)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *SessionResponse) contextValidatePolicy(ctx context.Context, formats strfmt.Registry) error {
|
||||
|
||||
if m.Policy != nil {
|
||||
if err := m.Policy.ContextValidate(ctx, formats); err != nil {
|
||||
if ve, ok := err.(*errors.Validation); ok {
|
||||
return ve.ValidateName("policy")
|
||||
}
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ import (
|
||||
func registerLoginHandlers(api *operations.OperatorAPI) {
|
||||
// GET login strategy
|
||||
api.UserAPILoginDetailHandler = user_api.LoginDetailHandlerFunc(func(params user_api.LoginDetailParams) middleware.Responder {
|
||||
loginDetails, err := getLoginDetailsResponse()
|
||||
loginDetails, err := getLoginDetailsResponse(params.HTTPRequest)
|
||||
if err != nil {
|
||||
return user_api.NewLoginDetailDefault(int(err.Code)).WithPayload(err)
|
||||
}
|
||||
@@ -60,7 +60,7 @@ func registerLoginHandlers(api *operations.OperatorAPI) {
|
||||
})
|
||||
// POST login using external IDP
|
||||
api.UserAPILoginOauth2AuthHandler = user_api.LoginOauth2AuthHandlerFunc(func(params user_api.LoginOauth2AuthParams) middleware.Responder {
|
||||
loginResponse, err := getLoginOauth2AuthResponse(params.Body)
|
||||
loginResponse, err := getLoginOauth2AuthResponse(params.HTTPRequest, params.Body)
|
||||
if err != nil {
|
||||
return user_api.NewLoginOauth2AuthDefault(int(err.Code)).WithPayload(err)
|
||||
}
|
||||
@@ -91,14 +91,14 @@ func login(credentials restapi.ConsoleCredentialsI) (*string, error) {
|
||||
}
|
||||
|
||||
// getLoginDetailsResponse returns information regarding the Console authentication mechanism.
|
||||
func getLoginDetailsResponse() (*models.LoginDetails, *models.Error) {
|
||||
func getLoginDetailsResponse(r *http.Request) (*models.LoginDetails, *models.Error) {
|
||||
loginStrategy := models.LoginDetailsLoginStrategyServiceDashAccount
|
||||
redirectURL := ""
|
||||
|
||||
if oauth2.IsIDPEnabled() {
|
||||
loginStrategy = models.LoginDetailsLoginStrategyRedirect
|
||||
// initialize new oauth2 client
|
||||
oauth2Client, err := oauth2.NewOauth2ProviderClient(nil, restapi.GetConsoleHTTPClient())
|
||||
oauth2Client, err := oauth2.NewOauth2ProviderClient(nil, r, restapi.GetConsoleHTTPClient())
|
||||
if err != nil {
|
||||
return nil, prepareError(err)
|
||||
}
|
||||
@@ -123,12 +123,12 @@ func verifyUserAgainstIDP(ctx context.Context, provider auth.IdentityProviderI,
|
||||
return oauth2Token, nil
|
||||
}
|
||||
|
||||
func getLoginOauth2AuthResponse(lr *models.LoginOauth2AuthRequest) (*models.LoginResponse, *models.Error) {
|
||||
func getLoginOauth2AuthResponse(r *http.Request, lr *models.LoginOauth2AuthRequest) (*models.LoginResponse, *models.Error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
|
||||
defer cancel()
|
||||
if oauth2.IsIDPEnabled() {
|
||||
// initialize new oauth2 client
|
||||
oauth2Client, err := oauth2.NewOauth2ProviderClient(nil, restapi.GetConsoleHTTPClient())
|
||||
oauth2Client, err := oauth2.NewOauth2ProviderClient(nil, r, restapi.GetConsoleHTTPClient())
|
||||
if err != nil {
|
||||
return nil, prepareError(err)
|
||||
}
|
||||
|
||||
@@ -943,6 +943,11 @@ func getTenantCreatedResponse(session *models.Principal, params operator_api.Cre
|
||||
},
|
||||
}
|
||||
|
||||
_, err = clientSet.CoreV1().Secrets(ns).Create(ctx, &instanceSecret, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
return nil, prepareError(err)
|
||||
}
|
||||
|
||||
// Enable/Disable console object browser for MinIO tenant (default is on)
|
||||
enabledConsole := "on"
|
||||
if tenantReq.EnableConsole != nil && !*tenantReq.EnableConsole {
|
||||
@@ -952,11 +957,6 @@ func getTenantCreatedResponse(session *models.Principal, params operator_api.Cre
|
||||
tenantConfigurationENV["MINIO_ROOT_USER"] = accessKey
|
||||
tenantConfigurationENV["MINIO_ROOT_PASSWORD"] = secretKey
|
||||
|
||||
_, err = clientSet.CoreV1().Secrets(ns).Create(ctx, &instanceSecret, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
return nil, prepareError(err)
|
||||
}
|
||||
|
||||
// delete secrets created if an error occurred during tenant creation,
|
||||
defer func() {
|
||||
if mError != nil {
|
||||
|
||||
@@ -19,6 +19,7 @@ package operatorapi
|
||||
import (
|
||||
"context"
|
||||
"crypto"
|
||||
"crypto/tls"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
@@ -307,6 +308,10 @@ func createOrReplaceExternalCertSecrets(ctx context.Context, clientSet K8sClient
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// check if the key pair is valid
|
||||
if _, err = tls.X509KeyPair(tlsCrt, tlsKey); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
externalTLSCertificateSecret := &corev1.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: keyPairSecretName,
|
||||
|
||||
@@ -185,7 +185,8 @@ func serveProxy(responseWriter http.ResponseWriter, req *http.Request) {
|
||||
responseWriter.WriteHeader(500)
|
||||
return
|
||||
}
|
||||
targetURL.Path = strings.Replace(req.URL.Path, fmt.Sprintf("/api/proxy/%s/%s", tenant.Namespace, tenant.Name), "", -1)
|
||||
tenantBase := fmt.Sprintf("/api/proxy/%s/%s", tenant.Namespace, tenant.Name)
|
||||
targetURL.Path = strings.Replace(req.URL.Path, tenantBase, "", -1)
|
||||
|
||||
proxiedCookie := &http.Cookie{
|
||||
Name: "token",
|
||||
@@ -207,8 +208,17 @@ func serveProxy(responseWriter http.ResponseWriter, req *http.Request) {
|
||||
CheckRedirect: func(req *http.Request, via []*http.Request) error {
|
||||
return http.ErrUseLastResponse
|
||||
}}
|
||||
|
||||
// are we proxying something with cp=y? (console proxy) then add cpb (console proxy base) so the console
|
||||
// on the other side updates the <base href="" /> to this value overriding sub path or root
|
||||
if v := req.URL.Query().Get("cp"); v == "y" {
|
||||
q := req.URL.Query()
|
||||
q.Add("cpb", tenantBase)
|
||||
req.URL.RawQuery = q.Encode()
|
||||
}
|
||||
// copy query params
|
||||
targetURL.RawQuery = req.URL.Query().Encode()
|
||||
|
||||
proxRequest, err := http.NewRequest(req.Method, targetURL.String(), req.Body)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
// This file is part of MinIO Orchestrator
|
||||
// Copyright (c) 2021 MinIO, Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
package acl
|
||||
|
||||
import iampolicy "github.com/minio/pkg/iam/policy"
|
||||
|
||||
var BucketViewerRole = iampolicy.NewActionSet(
|
||||
iampolicy.ListBucketAction,
|
||||
iampolicy.GetObjectAction,
|
||||
)
|
||||
|
||||
var BucketEditorRole = iampolicy.NewActionSet(
|
||||
iampolicy.ListBucketAction,
|
||||
iampolicy.GetObjectAction,
|
||||
iampolicy.DeleteObjectAction,
|
||||
iampolicy.PutObjectAction,
|
||||
)
|
||||
var BucketAdminRole = iampolicy.NewActionSet(
|
||||
iampolicy.AbortMultipartUploadAction,
|
||||
iampolicy.CreateBucketAction,
|
||||
iampolicy.DeleteBucketAction,
|
||||
iampolicy.ForceDeleteBucketAction,
|
||||
iampolicy.DeleteBucketPolicyAction,
|
||||
iampolicy.GetBucketLocationAction,
|
||||
iampolicy.GetBucketNotificationAction,
|
||||
iampolicy.GetBucketPolicyAction,
|
||||
iampolicy.HeadBucketAction,
|
||||
iampolicy.ListAllMyBucketsAction,
|
||||
iampolicy.GetBucketPolicyStatusAction,
|
||||
iampolicy.ListBucketVersionsAction,
|
||||
iampolicy.ListBucketMultipartUploadsAction,
|
||||
iampolicy.ListenNotificationAction,
|
||||
iampolicy.ListenBucketNotificationAction,
|
||||
iampolicy.ListMultipartUploadPartsAction,
|
||||
iampolicy.PutBucketLifecycleAction,
|
||||
iampolicy.GetBucketLifecycleAction,
|
||||
iampolicy.PutBucketNotificationAction,
|
||||
iampolicy.PutBucketPolicyAction,
|
||||
iampolicy.BypassGovernanceRetentionAction,
|
||||
iampolicy.PutObjectRetentionAction,
|
||||
iampolicy.GetObjectRetentionAction,
|
||||
iampolicy.GetObjectLegalHoldAction,
|
||||
iampolicy.PutObjectLegalHoldAction,
|
||||
iampolicy.GetBucketObjectLockConfigurationAction,
|
||||
iampolicy.PutBucketObjectLockConfigurationAction,
|
||||
iampolicy.GetBucketTaggingAction,
|
||||
iampolicy.PutBucketTaggingAction,
|
||||
iampolicy.GetObjectVersionAction,
|
||||
iampolicy.GetObjectVersionTaggingAction,
|
||||
iampolicy.DeleteObjectVersionAction,
|
||||
iampolicy.DeleteObjectVersionTaggingAction,
|
||||
iampolicy.PutObjectVersionTaggingAction,
|
||||
iampolicy.GetObjectTaggingAction,
|
||||
iampolicy.PutObjectTaggingAction,
|
||||
iampolicy.DeleteObjectTaggingAction,
|
||||
iampolicy.PutBucketEncryptionAction,
|
||||
iampolicy.GetBucketEncryptionAction,
|
||||
iampolicy.PutBucketVersioningAction,
|
||||
iampolicy.GetBucketVersioningAction,
|
||||
iampolicy.GetReplicationConfigurationAction,
|
||||
iampolicy.PutReplicationConfigurationAction,
|
||||
iampolicy.ReplicateObjectAction,
|
||||
iampolicy.ReplicateDeleteAction,
|
||||
iampolicy.ReplicateTagsAction,
|
||||
iampolicy.GetObjectVersionForReplicationAction,
|
||||
iampolicy.AllActions,
|
||||
iampolicy.AllAdminActions,
|
||||
)
|
||||
@@ -45,15 +45,19 @@ func GetIDPSecret() string {
|
||||
return env.Get(ConsoleIDPSecret, "")
|
||||
}
|
||||
|
||||
// Public endpoint used by the identity oidcProvider when redirecting the user after identity verification
|
||||
// Public endpoint used by the identity oidcProvider when redirecting
|
||||
// the user after identity verification
|
||||
func GetIDPCallbackURL() string {
|
||||
return env.Get(ConsoleIDPCallbackURL, "")
|
||||
}
|
||||
|
||||
func GetIDPCallbackURLDynamic() bool {
|
||||
return env.Get(ConsoleIDPCallbackURLDynamic, "") == "on"
|
||||
}
|
||||
|
||||
func IsIDPEnabled() bool {
|
||||
return GetIDPURL() != "" &&
|
||||
GetIDPClientID() != "" &&
|
||||
GetIDPCallbackURL() != ""
|
||||
GetIDPClientID() != ""
|
||||
}
|
||||
|
||||
var defaultPassphraseForIDPHmac = utils.RandomCharString(64)
|
||||
|
||||
@@ -18,14 +18,15 @@ package oauth2
|
||||
|
||||
// Environment constants for console IDP/SSO configuration
|
||||
const (
|
||||
ConsoleMinIOServer = "CONSOLE_MINIO_SERVER"
|
||||
ConsoleIDPURL = "CONSOLE_IDP_URL"
|
||||
ConsoleIDPClientID = "CONSOLE_IDP_CLIENT_ID"
|
||||
ConsoleIDPSecret = "CONSOLE_IDP_SECRET"
|
||||
ConsoleIDPCallbackURL = "CONSOLE_IDP_CALLBACK"
|
||||
ConsoleIDPHmacPassphrase = "CONSOLE_IDP_HMAC_PASSPHRASE"
|
||||
ConsoleIDPHmacSalt = "CONSOLE_IDP_HMAC_SALT"
|
||||
ConsoleIDPScopes = "CONSOLE_IDP_SCOPES"
|
||||
ConsoleIDPUserInfo = "CONSOLE_IDP_USERINFO"
|
||||
ConsoleIDPTokenExpiration = "CONSOLE_IDP_TOKEN_EXPIRATION"
|
||||
ConsoleMinIOServer = "CONSOLE_MINIO_SERVER"
|
||||
ConsoleIDPURL = "CONSOLE_IDP_URL"
|
||||
ConsoleIDPClientID = "CONSOLE_IDP_CLIENT_ID"
|
||||
ConsoleIDPSecret = "CONSOLE_IDP_SECRET"
|
||||
ConsoleIDPCallbackURL = "CONSOLE_IDP_CALLBACK"
|
||||
ConsoleIDPCallbackURLDynamic = "CONSOLE_IDP_CALLBACK_DYNAMIC"
|
||||
ConsoleIDPHmacPassphrase = "CONSOLE_IDP_HMAC_PASSPHRASE"
|
||||
ConsoleIDPHmacSalt = "CONSOLE_IDP_HMAC_SALT"
|
||||
ConsoleIDPScopes = "CONSOLE_IDP_SCOPES"
|
||||
ConsoleIDPUserInfo = "CONSOLE_IDP_USERINFO"
|
||||
ConsoleIDPTokenExpiration = "CONSOLE_IDP_TOKEN_EXPIRATION"
|
||||
)
|
||||
|
||||
@@ -119,11 +119,33 @@ var derivedKey = func() []byte {
|
||||
return pbkdf2.Key([]byte(getPassphraseForIDPHmac()), []byte(getSaltForIDPHmac()), 4096, 32, sha1.New)
|
||||
}
|
||||
|
||||
const (
|
||||
schemeHTTP = "http"
|
||||
schemeHTTPS = "https"
|
||||
)
|
||||
|
||||
func getLoginCallbackURL(r *http.Request) string {
|
||||
scheme := getSourceScheme(r)
|
||||
if scheme == "" {
|
||||
if r.TLS != nil {
|
||||
scheme = schemeHTTPS
|
||||
} else {
|
||||
scheme = schemeHTTP
|
||||
}
|
||||
}
|
||||
|
||||
redirectURL := scheme + "://" + r.Host + "/oauth_callback"
|
||||
_, err := url.Parse(redirectURL)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return redirectURL
|
||||
}
|
||||
|
||||
// NewOauth2ProviderClient instantiates a new oauth2 client using the configured credentials
|
||||
// it returns a *Provider object that contains the necessary configuration to initiate an
|
||||
// oauth2 authentication flow
|
||||
func NewOauth2ProviderClient(scopes []string, httpClient *http.Client) (*Provider, error) {
|
||||
|
||||
func NewOauth2ProviderClient(scopes []string, r *http.Request, httpClient *http.Client) (*Provider, error) {
|
||||
ddoc, err := parseDiscoveryDoc(GetIDPURL(), httpClient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -134,6 +156,13 @@ func NewOauth2ProviderClient(scopes []string, httpClient *http.Client) (*Provide
|
||||
scopes = strings.Split(getIDPScopes(), ",")
|
||||
}
|
||||
|
||||
redirectURL := GetIDPCallbackURL()
|
||||
if GetIDPCallbackURLDynamic() {
|
||||
// dynamic redirect if set, will generate redirect URLs
|
||||
// dynamically based on incoming requests.
|
||||
redirectURL = getLoginCallbackURL(r)
|
||||
}
|
||||
|
||||
// add "openid" scope always.
|
||||
scopes = append(scopes, "openid")
|
||||
|
||||
@@ -141,7 +170,7 @@ func NewOauth2ProviderClient(scopes []string, httpClient *http.Client) (*Provide
|
||||
client.oauth2Config = &xoauth2.Config{
|
||||
ClientID: GetIDPClientID(),
|
||||
ClientSecret: GetIDPSecret(),
|
||||
RedirectURL: GetIDPCallbackURL(),
|
||||
RedirectURL: redirectURL,
|
||||
Endpoint: oauth2.Endpoint{
|
||||
AuthURL: ddoc.AuthEndpoint,
|
||||
TokenURL: ddoc.TokenEndpoint,
|
||||
|
||||
70
pkg/auth/idp/oauth2/proxy.go
Normal file
70
pkg/auth/idp/oauth2/proxy.go
Normal file
@@ -0,0 +1,70 @@
|
||||
// This file is part of MinIO Console Server
|
||||
// Copyright (c) 2021 MinIO, Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
package oauth2
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
// De-facto standard header keys.
|
||||
xForwardedProto = http.CanonicalHeaderKey("X-Forwarded-Proto")
|
||||
xForwardedScheme = http.CanonicalHeaderKey("X-Forwarded-Scheme")
|
||||
)
|
||||
|
||||
var (
|
||||
// RFC7239 defines a new "Forwarded: " header designed to replace the
|
||||
// existing use of X-Forwarded-* headers.
|
||||
// e.g. Forwarded: for=192.0.2.60;proto=https;by=203.0.113.43
|
||||
forwarded = http.CanonicalHeaderKey("Forwarded")
|
||||
// Allows for a sub-match of the first value after 'for=' to the next
|
||||
// comma, semi-colon or space. The match is case-insensitive.
|
||||
forRegex = regexp.MustCompile(`(?i)(?:for=)([^(;|,| )]+)(.*)`)
|
||||
// Allows for a sub-match for the first instance of scheme (http|https)
|
||||
// prefixed by 'proto='. The match is case-insensitive.
|
||||
protoRegex = regexp.MustCompile(`(?i)^(;|,| )+(?:proto=)(https|http)`)
|
||||
)
|
||||
|
||||
// getSourceScheme retrieves the scheme from the X-Forwarded-Proto and RFC7239
|
||||
// Forwarded headers (in that order).
|
||||
func getSourceScheme(r *http.Request) string {
|
||||
var scheme string
|
||||
|
||||
// Retrieve the scheme from X-Forwarded-Proto.
|
||||
if proto := r.Header.Get(xForwardedProto); proto != "" {
|
||||
scheme = strings.ToLower(proto)
|
||||
} else if proto = r.Header.Get(xForwardedScheme); proto != "" {
|
||||
scheme = strings.ToLower(proto)
|
||||
} else if proto := r.Header.Get(forwarded); proto != "" {
|
||||
// match should contain at least two elements if the protocol was
|
||||
// specified in the Forwarded header. The first element will always be
|
||||
// the 'for=', which we ignore, subsequently we proceed to look for
|
||||
// 'proto=' which should precede right after `for=` if not
|
||||
// we simply ignore the values and return empty. This is in line
|
||||
// with the approach we took for returning first ip from multiple
|
||||
// params.
|
||||
if match := forRegex.FindStringSubmatch(proto); len(match) > 1 {
|
||||
if match = protoRegex.FindStringSubmatch(match[2]); len(match) > 1 {
|
||||
scheme = strings.ToLower(match[2])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return scheme
|
||||
}
|
||||
@@ -1,23 +1,378 @@
|
||||
{
|
||||
"files": {
|
||||
"static/js/0.bbd0bc57.chunk.js": "./static/js/0.bbd0bc57.chunk.js",
|
||||
"static/js/0.bbd0bc57.chunk.js.map": "./static/js/0.bbd0bc57.chunk.js.map",
|
||||
"static/js/1.ebd5e498.chunk.js": "./static/js/1.ebd5e498.chunk.js",
|
||||
"static/js/1.ebd5e498.chunk.js.map": "./static/js/1.ebd5e498.chunk.js.map",
|
||||
"static/js/2.55f9ac3c.chunk.js": "./static/js/2.55f9ac3c.chunk.js",
|
||||
"static/js/2.55f9ac3c.chunk.js.map": "./static/js/2.55f9ac3c.chunk.js.map",
|
||||
"static/js/3.6601e8a9.chunk.js": "./static/js/3.6601e8a9.chunk.js",
|
||||
"static/js/3.6601e8a9.chunk.js.map": "./static/js/3.6601e8a9.chunk.js.map",
|
||||
"static/js/4.1c829629.chunk.js": "./static/js/4.1c829629.chunk.js",
|
||||
"static/js/4.1c829629.chunk.js.map": "./static/js/4.1c829629.chunk.js.map",
|
||||
"static/js/5.061631f9.chunk.js": "./static/js/5.061631f9.chunk.js",
|
||||
"static/js/5.061631f9.chunk.js.map": "./static/js/5.061631f9.chunk.js.map",
|
||||
"static/js/6.c64c35bd.chunk.js": "./static/js/6.c64c35bd.chunk.js",
|
||||
"static/js/6.c64c35bd.chunk.js.map": "./static/js/6.c64c35bd.chunk.js.map",
|
||||
"static/css/7.6b194dc9.chunk.css": "./static/css/7.6b194dc9.chunk.css",
|
||||
"static/js/7.f8801d30.chunk.js": "./static/js/7.f8801d30.chunk.js",
|
||||
"static/js/7.f8801d30.chunk.js.map": "./static/js/7.f8801d30.chunk.js.map",
|
||||
"static/js/8.ae7674a3.chunk.js": "./static/js/8.ae7674a3.chunk.js",
|
||||
"static/js/8.ae7674a3.chunk.js.map": "./static/js/8.ae7674a3.chunk.js.map",
|
||||
"static/js/9.46c2ef0c.chunk.js": "./static/js/9.46c2ef0c.chunk.js",
|
||||
"static/js/9.46c2ef0c.chunk.js.map": "./static/js/9.46c2ef0c.chunk.js.map",
|
||||
"static/js/10.07fb2067.chunk.js": "./static/js/10.07fb2067.chunk.js",
|
||||
"static/js/10.07fb2067.chunk.js.map": "./static/js/10.07fb2067.chunk.js.map",
|
||||
"static/js/11.c8f95120.chunk.js": "./static/js/11.c8f95120.chunk.js",
|
||||
"static/js/11.c8f95120.chunk.js.map": "./static/js/11.c8f95120.chunk.js.map",
|
||||
"static/js/12.264e7a62.chunk.js": "./static/js/12.264e7a62.chunk.js",
|
||||
"static/js/12.264e7a62.chunk.js.map": "./static/js/12.264e7a62.chunk.js.map",
|
||||
"main.css": "./static/css/main.ed78990a.chunk.css",
|
||||
"main.js": "./static/js/main.841aeb65.chunk.js",
|
||||
"main.js.map": "./static/js/main.841aeb65.chunk.js.map",
|
||||
"runtime-main.js": "./static/js/runtime-main.30f8243a.js",
|
||||
"runtime-main.js.map": "./static/js/runtime-main.30f8243a.js.map",
|
||||
"static/css/2.34c487e1.chunk.css": "./static/css/2.34c487e1.chunk.css",
|
||||
"static/js/2.fef97d1a.chunk.js": "./static/js/2.fef97d1a.chunk.js",
|
||||
"static/js/2.fef97d1a.chunk.js.map": "./static/js/2.fef97d1a.chunk.js.map",
|
||||
"main.js": "./static/js/main.52981f9d.chunk.js",
|
||||
"main.js.map": "./static/js/main.52981f9d.chunk.js.map",
|
||||
"runtime-main.js": "./static/js/runtime-main.4514f95a.js",
|
||||
"runtime-main.js.map": "./static/js/runtime-main.4514f95a.js.map",
|
||||
"static/js/15.1baad81d.chunk.js": "./static/js/15.1baad81d.chunk.js",
|
||||
"static/js/15.1baad81d.chunk.js.map": "./static/js/15.1baad81d.chunk.js.map",
|
||||
"static/js/16.5ed162fe.chunk.js": "./static/js/16.5ed162fe.chunk.js",
|
||||
"static/js/16.5ed162fe.chunk.js.map": "./static/js/16.5ed162fe.chunk.js.map",
|
||||
"static/js/17.21848d07.chunk.js": "./static/js/17.21848d07.chunk.js",
|
||||
"static/js/17.21848d07.chunk.js.map": "./static/js/17.21848d07.chunk.js.map",
|
||||
"static/css/18.f324abd6.chunk.css": "./static/css/18.f324abd6.chunk.css",
|
||||
"static/js/18.a7d18626.chunk.js": "./static/js/18.a7d18626.chunk.js",
|
||||
"static/js/18.a7d18626.chunk.js.map": "./static/js/18.a7d18626.chunk.js.map",
|
||||
"static/js/19.1a867b14.chunk.js": "./static/js/19.1a867b14.chunk.js",
|
||||
"static/js/19.1a867b14.chunk.js.map": "./static/js/19.1a867b14.chunk.js.map",
|
||||
"static/css/20.6b194dc9.chunk.css": "./static/css/20.6b194dc9.chunk.css",
|
||||
"static/js/20.403b4b86.chunk.js": "./static/js/20.403b4b86.chunk.js",
|
||||
"static/js/20.403b4b86.chunk.js.map": "./static/js/20.403b4b86.chunk.js.map",
|
||||
"static/js/21.450b6032.chunk.js": "./static/js/21.450b6032.chunk.js",
|
||||
"static/js/21.450b6032.chunk.js.map": "./static/js/21.450b6032.chunk.js.map",
|
||||
"static/js/22.0d1b899b.chunk.js": "./static/js/22.0d1b899b.chunk.js",
|
||||
"static/js/22.0d1b899b.chunk.js.map": "./static/js/22.0d1b899b.chunk.js.map",
|
||||
"static/js/23.8b895b3a.chunk.js": "./static/js/23.8b895b3a.chunk.js",
|
||||
"static/js/23.8b895b3a.chunk.js.map": "./static/js/23.8b895b3a.chunk.js.map",
|
||||
"static/css/24.6b194dc9.chunk.css": "./static/css/24.6b194dc9.chunk.css",
|
||||
"static/js/24.d67662c1.chunk.js": "./static/js/24.d67662c1.chunk.js",
|
||||
"static/js/24.d67662c1.chunk.js.map": "./static/js/24.d67662c1.chunk.js.map",
|
||||
"static/js/25.c2a20410.chunk.js": "./static/js/25.c2a20410.chunk.js",
|
||||
"static/js/25.c2a20410.chunk.js.map": "./static/js/25.c2a20410.chunk.js.map",
|
||||
"static/js/26.d6d6dd11.chunk.js": "./static/js/26.d6d6dd11.chunk.js",
|
||||
"static/js/26.d6d6dd11.chunk.js.map": "./static/js/26.d6d6dd11.chunk.js.map",
|
||||
"static/js/27.7f709b1f.chunk.js": "./static/js/27.7f709b1f.chunk.js",
|
||||
"static/js/27.7f709b1f.chunk.js.map": "./static/js/27.7f709b1f.chunk.js.map",
|
||||
"static/js/28.9a05dc15.chunk.js": "./static/js/28.9a05dc15.chunk.js",
|
||||
"static/js/28.9a05dc15.chunk.js.map": "./static/js/28.9a05dc15.chunk.js.map",
|
||||
"static/js/29.d35d5c75.chunk.js": "./static/js/29.d35d5c75.chunk.js",
|
||||
"static/js/29.d35d5c75.chunk.js.map": "./static/js/29.d35d5c75.chunk.js.map",
|
||||
"static/js/30.c2930a7f.chunk.js": "./static/js/30.c2930a7f.chunk.js",
|
||||
"static/js/30.c2930a7f.chunk.js.map": "./static/js/30.c2930a7f.chunk.js.map",
|
||||
"static/js/31.81b55354.chunk.js": "./static/js/31.81b55354.chunk.js",
|
||||
"static/js/31.81b55354.chunk.js.map": "./static/js/31.81b55354.chunk.js.map",
|
||||
"static/js/32.6c02b5ca.chunk.js": "./static/js/32.6c02b5ca.chunk.js",
|
||||
"static/js/32.6c02b5ca.chunk.js.map": "./static/js/32.6c02b5ca.chunk.js.map",
|
||||
"static/js/33.84557aa4.chunk.js": "./static/js/33.84557aa4.chunk.js",
|
||||
"static/js/33.84557aa4.chunk.js.map": "./static/js/33.84557aa4.chunk.js.map",
|
||||
"static/js/34.9d6400d3.chunk.js": "./static/js/34.9d6400d3.chunk.js",
|
||||
"static/js/34.9d6400d3.chunk.js.map": "./static/js/34.9d6400d3.chunk.js.map",
|
||||
"static/js/35.481a69d5.chunk.js": "./static/js/35.481a69d5.chunk.js",
|
||||
"static/js/35.481a69d5.chunk.js.map": "./static/js/35.481a69d5.chunk.js.map",
|
||||
"static/js/36.85f2f46d.chunk.js": "./static/js/36.85f2f46d.chunk.js",
|
||||
"static/js/36.85f2f46d.chunk.js.map": "./static/js/36.85f2f46d.chunk.js.map",
|
||||
"static/js/37.0ace1551.chunk.js": "./static/js/37.0ace1551.chunk.js",
|
||||
"static/js/37.0ace1551.chunk.js.map": "./static/js/37.0ace1551.chunk.js.map",
|
||||
"static/js/38.93590454.chunk.js": "./static/js/38.93590454.chunk.js",
|
||||
"static/js/38.93590454.chunk.js.map": "./static/js/38.93590454.chunk.js.map",
|
||||
"static/js/39.f42b42eb.chunk.js": "./static/js/39.f42b42eb.chunk.js",
|
||||
"static/js/39.f42b42eb.chunk.js.map": "./static/js/39.f42b42eb.chunk.js.map",
|
||||
"static/js/40.8d90a759.chunk.js": "./static/js/40.8d90a759.chunk.js",
|
||||
"static/js/40.8d90a759.chunk.js.map": "./static/js/40.8d90a759.chunk.js.map",
|
||||
"static/js/41.c1d199d2.chunk.js": "./static/js/41.c1d199d2.chunk.js",
|
||||
"static/js/41.c1d199d2.chunk.js.map": "./static/js/41.c1d199d2.chunk.js.map",
|
||||
"static/js/42.89b00241.chunk.js": "./static/js/42.89b00241.chunk.js",
|
||||
"static/js/42.89b00241.chunk.js.map": "./static/js/42.89b00241.chunk.js.map",
|
||||
"static/js/43.8e856c33.chunk.js": "./static/js/43.8e856c33.chunk.js",
|
||||
"static/js/43.8e856c33.chunk.js.map": "./static/js/43.8e856c33.chunk.js.map",
|
||||
"static/js/44.43e33c33.chunk.js": "./static/js/44.43e33c33.chunk.js",
|
||||
"static/js/44.43e33c33.chunk.js.map": "./static/js/44.43e33c33.chunk.js.map",
|
||||
"static/js/45.5f25b4d8.chunk.js": "./static/js/45.5f25b4d8.chunk.js",
|
||||
"static/js/45.5f25b4d8.chunk.js.map": "./static/js/45.5f25b4d8.chunk.js.map",
|
||||
"static/js/46.c82c9815.chunk.js": "./static/js/46.c82c9815.chunk.js",
|
||||
"static/js/46.c82c9815.chunk.js.map": "./static/js/46.c82c9815.chunk.js.map",
|
||||
"static/js/47.60af91fe.chunk.js": "./static/js/47.60af91fe.chunk.js",
|
||||
"static/js/47.60af91fe.chunk.js.map": "./static/js/47.60af91fe.chunk.js.map",
|
||||
"static/js/48.39511227.chunk.js": "./static/js/48.39511227.chunk.js",
|
||||
"static/js/48.39511227.chunk.js.map": "./static/js/48.39511227.chunk.js.map",
|
||||
"static/js/49.eb9d18f3.chunk.js": "./static/js/49.eb9d18f3.chunk.js",
|
||||
"static/js/49.eb9d18f3.chunk.js.map": "./static/js/49.eb9d18f3.chunk.js.map",
|
||||
"static/js/50.38ae74de.chunk.js": "./static/js/50.38ae74de.chunk.js",
|
||||
"static/js/50.38ae74de.chunk.js.map": "./static/js/50.38ae74de.chunk.js.map",
|
||||
"static/js/51.d3ea31df.chunk.js": "./static/js/51.d3ea31df.chunk.js",
|
||||
"static/js/51.d3ea31df.chunk.js.map": "./static/js/51.d3ea31df.chunk.js.map",
|
||||
"static/js/52.16d79d9c.chunk.js": "./static/js/52.16d79d9c.chunk.js",
|
||||
"static/js/52.16d79d9c.chunk.js.map": "./static/js/52.16d79d9c.chunk.js.map",
|
||||
"static/js/53.00903129.chunk.js": "./static/js/53.00903129.chunk.js",
|
||||
"static/js/53.00903129.chunk.js.map": "./static/js/53.00903129.chunk.js.map",
|
||||
"static/js/54.83a33e19.chunk.js": "./static/js/54.83a33e19.chunk.js",
|
||||
"static/js/54.83a33e19.chunk.js.map": "./static/js/54.83a33e19.chunk.js.map",
|
||||
"static/js/55.6e76a15b.chunk.js": "./static/js/55.6e76a15b.chunk.js",
|
||||
"static/js/55.6e76a15b.chunk.js.map": "./static/js/55.6e76a15b.chunk.js.map",
|
||||
"static/js/56.ac23329e.chunk.js": "./static/js/56.ac23329e.chunk.js",
|
||||
"static/js/56.ac23329e.chunk.js.map": "./static/js/56.ac23329e.chunk.js.map",
|
||||
"static/js/57.bc6b2353.chunk.js": "./static/js/57.bc6b2353.chunk.js",
|
||||
"static/js/57.bc6b2353.chunk.js.map": "./static/js/57.bc6b2353.chunk.js.map",
|
||||
"static/js/58.151e4454.chunk.js": "./static/js/58.151e4454.chunk.js",
|
||||
"static/js/58.151e4454.chunk.js.map": "./static/js/58.151e4454.chunk.js.map",
|
||||
"static/js/59.31635310.chunk.js": "./static/js/59.31635310.chunk.js",
|
||||
"static/js/59.31635310.chunk.js.map": "./static/js/59.31635310.chunk.js.map",
|
||||
"static/js/60.f06460fb.chunk.js": "./static/js/60.f06460fb.chunk.js",
|
||||
"static/js/60.f06460fb.chunk.js.map": "./static/js/60.f06460fb.chunk.js.map",
|
||||
"static/js/61.80c7b467.chunk.js": "./static/js/61.80c7b467.chunk.js",
|
||||
"static/js/61.80c7b467.chunk.js.map": "./static/js/61.80c7b467.chunk.js.map",
|
||||
"static/js/62.75395315.chunk.js": "./static/js/62.75395315.chunk.js",
|
||||
"static/js/62.75395315.chunk.js.map": "./static/js/62.75395315.chunk.js.map",
|
||||
"static/js/63.583ab3e1.chunk.js": "./static/js/63.583ab3e1.chunk.js",
|
||||
"static/js/63.583ab3e1.chunk.js.map": "./static/js/63.583ab3e1.chunk.js.map",
|
||||
"static/js/64.27d7ec0b.chunk.js": "./static/js/64.27d7ec0b.chunk.js",
|
||||
"static/js/64.27d7ec0b.chunk.js.map": "./static/js/64.27d7ec0b.chunk.js.map",
|
||||
"static/js/65.6b671c69.chunk.js": "./static/js/65.6b671c69.chunk.js",
|
||||
"static/js/65.6b671c69.chunk.js.map": "./static/js/65.6b671c69.chunk.js.map",
|
||||
"static/js/66.836ae09c.chunk.js": "./static/js/66.836ae09c.chunk.js",
|
||||
"static/js/66.836ae09c.chunk.js.map": "./static/js/66.836ae09c.chunk.js.map",
|
||||
"static/js/67.33b066bc.chunk.js": "./static/js/67.33b066bc.chunk.js",
|
||||
"static/js/67.33b066bc.chunk.js.map": "./static/js/67.33b066bc.chunk.js.map",
|
||||
"static/js/68.a1d2353a.chunk.js": "./static/js/68.a1d2353a.chunk.js",
|
||||
"static/js/68.a1d2353a.chunk.js.map": "./static/js/68.a1d2353a.chunk.js.map",
|
||||
"static/js/69.318b2252.chunk.js": "./static/js/69.318b2252.chunk.js",
|
||||
"static/js/69.318b2252.chunk.js.map": "./static/js/69.318b2252.chunk.js.map",
|
||||
"static/js/70.9706af72.chunk.js": "./static/js/70.9706af72.chunk.js",
|
||||
"static/js/70.9706af72.chunk.js.map": "./static/js/70.9706af72.chunk.js.map",
|
||||
"static/js/71.caa0071f.chunk.js": "./static/js/71.caa0071f.chunk.js",
|
||||
"static/js/71.caa0071f.chunk.js.map": "./static/js/71.caa0071f.chunk.js.map",
|
||||
"static/js/72.0f0f9990.chunk.js": "./static/js/72.0f0f9990.chunk.js",
|
||||
"static/js/72.0f0f9990.chunk.js.map": "./static/js/72.0f0f9990.chunk.js.map",
|
||||
"static/js/73.4143c0df.chunk.js": "./static/js/73.4143c0df.chunk.js",
|
||||
"static/js/73.4143c0df.chunk.js.map": "./static/js/73.4143c0df.chunk.js.map",
|
||||
"static/js/74.544576ad.chunk.js": "./static/js/74.544576ad.chunk.js",
|
||||
"static/js/74.544576ad.chunk.js.map": "./static/js/74.544576ad.chunk.js.map",
|
||||
"static/js/75.7c8f2bc1.chunk.js": "./static/js/75.7c8f2bc1.chunk.js",
|
||||
"static/js/75.7c8f2bc1.chunk.js.map": "./static/js/75.7c8f2bc1.chunk.js.map",
|
||||
"static/js/76.ed8b684e.chunk.js": "./static/js/76.ed8b684e.chunk.js",
|
||||
"static/js/76.ed8b684e.chunk.js.map": "./static/js/76.ed8b684e.chunk.js.map",
|
||||
"static/js/77.aed4e09e.chunk.js": "./static/js/77.aed4e09e.chunk.js",
|
||||
"static/js/77.aed4e09e.chunk.js.map": "./static/js/77.aed4e09e.chunk.js.map",
|
||||
"static/js/78.e3fadd3c.chunk.js": "./static/js/78.e3fadd3c.chunk.js",
|
||||
"static/js/78.e3fadd3c.chunk.js.map": "./static/js/78.e3fadd3c.chunk.js.map",
|
||||
"static/js/79.0de4c88d.chunk.js": "./static/js/79.0de4c88d.chunk.js",
|
||||
"static/js/79.0de4c88d.chunk.js.map": "./static/js/79.0de4c88d.chunk.js.map",
|
||||
"static/js/80.45e27426.chunk.js": "./static/js/80.45e27426.chunk.js",
|
||||
"static/js/80.45e27426.chunk.js.map": "./static/js/80.45e27426.chunk.js.map",
|
||||
"static/js/81.1115d1b3.chunk.js": "./static/js/81.1115d1b3.chunk.js",
|
||||
"static/js/81.1115d1b3.chunk.js.map": "./static/js/81.1115d1b3.chunk.js.map",
|
||||
"static/js/82.efb7d7fb.chunk.js": "./static/js/82.efb7d7fb.chunk.js",
|
||||
"static/js/82.efb7d7fb.chunk.js.map": "./static/js/82.efb7d7fb.chunk.js.map",
|
||||
"static/js/83.d035f073.chunk.js": "./static/js/83.d035f073.chunk.js",
|
||||
"static/js/83.d035f073.chunk.js.map": "./static/js/83.d035f073.chunk.js.map",
|
||||
"static/js/84.fc8c205e.chunk.js": "./static/js/84.fc8c205e.chunk.js",
|
||||
"static/js/84.fc8c205e.chunk.js.map": "./static/js/84.fc8c205e.chunk.js.map",
|
||||
"static/js/85.f4fcc302.chunk.js": "./static/js/85.f4fcc302.chunk.js",
|
||||
"static/js/85.f4fcc302.chunk.js.map": "./static/js/85.f4fcc302.chunk.js.map",
|
||||
"static/js/86.8badb158.chunk.js": "./static/js/86.8badb158.chunk.js",
|
||||
"static/js/86.8badb158.chunk.js.map": "./static/js/86.8badb158.chunk.js.map",
|
||||
"static/js/87.45e618b4.chunk.js": "./static/js/87.45e618b4.chunk.js",
|
||||
"static/js/87.45e618b4.chunk.js.map": "./static/js/87.45e618b4.chunk.js.map",
|
||||
"static/js/88.cfde196a.chunk.js": "./static/js/88.cfde196a.chunk.js",
|
||||
"static/js/88.cfde196a.chunk.js.map": "./static/js/88.cfde196a.chunk.js.map",
|
||||
"static/js/89.aa4762b3.chunk.js": "./static/js/89.aa4762b3.chunk.js",
|
||||
"static/js/89.aa4762b3.chunk.js.map": "./static/js/89.aa4762b3.chunk.js.map",
|
||||
"static/js/90.d2e87c3b.chunk.js": "./static/js/90.d2e87c3b.chunk.js",
|
||||
"static/js/90.d2e87c3b.chunk.js.map": "./static/js/90.d2e87c3b.chunk.js.map",
|
||||
"static/js/91.eefacc4a.chunk.js": "./static/js/91.eefacc4a.chunk.js",
|
||||
"static/js/91.eefacc4a.chunk.js.map": "./static/js/91.eefacc4a.chunk.js.map",
|
||||
"static/js/92.2ee4fd9e.chunk.js": "./static/js/92.2ee4fd9e.chunk.js",
|
||||
"static/js/92.2ee4fd9e.chunk.js.map": "./static/js/92.2ee4fd9e.chunk.js.map",
|
||||
"static/js/93.99f2b03d.chunk.js": "./static/js/93.99f2b03d.chunk.js",
|
||||
"static/js/93.99f2b03d.chunk.js.map": "./static/js/93.99f2b03d.chunk.js.map",
|
||||
"static/js/94.81a9a16d.chunk.js": "./static/js/94.81a9a16d.chunk.js",
|
||||
"static/js/94.81a9a16d.chunk.js.map": "./static/js/94.81a9a16d.chunk.js.map",
|
||||
"static/js/95.b72f29ae.chunk.js": "./static/js/95.b72f29ae.chunk.js",
|
||||
"static/js/95.b72f29ae.chunk.js.map": "./static/js/95.b72f29ae.chunk.js.map",
|
||||
"static/js/96.39ddd5ec.chunk.js": "./static/js/96.39ddd5ec.chunk.js",
|
||||
"static/js/96.39ddd5ec.chunk.js.map": "./static/js/96.39ddd5ec.chunk.js.map",
|
||||
"static/js/97.bb4de9b6.chunk.js": "./static/js/97.bb4de9b6.chunk.js",
|
||||
"static/js/97.bb4de9b6.chunk.js.map": "./static/js/97.bb4de9b6.chunk.js.map",
|
||||
"static/js/98.a8b77dbd.chunk.js": "./static/js/98.a8b77dbd.chunk.js",
|
||||
"static/js/98.a8b77dbd.chunk.js.map": "./static/js/98.a8b77dbd.chunk.js.map",
|
||||
"static/js/99.84cf0f84.chunk.js": "./static/js/99.84cf0f84.chunk.js",
|
||||
"static/js/99.84cf0f84.chunk.js.map": "./static/js/99.84cf0f84.chunk.js.map",
|
||||
"static/js/100.6299b626.chunk.js": "./static/js/100.6299b626.chunk.js",
|
||||
"static/js/100.6299b626.chunk.js.map": "./static/js/100.6299b626.chunk.js.map",
|
||||
"static/js/101.34a91628.chunk.js": "./static/js/101.34a91628.chunk.js",
|
||||
"static/js/101.34a91628.chunk.js.map": "./static/js/101.34a91628.chunk.js.map",
|
||||
"static/js/102.6e64a997.chunk.js": "./static/js/102.6e64a997.chunk.js",
|
||||
"static/js/102.6e64a997.chunk.js.map": "./static/js/102.6e64a997.chunk.js.map",
|
||||
"static/js/103.1b1d19c9.chunk.js": "./static/js/103.1b1d19c9.chunk.js",
|
||||
"static/js/103.1b1d19c9.chunk.js.map": "./static/js/103.1b1d19c9.chunk.js.map",
|
||||
"static/js/104.6768e9ed.chunk.js": "./static/js/104.6768e9ed.chunk.js",
|
||||
"static/js/104.6768e9ed.chunk.js.map": "./static/js/104.6768e9ed.chunk.js.map",
|
||||
"static/js/105.2b8c04ef.chunk.js": "./static/js/105.2b8c04ef.chunk.js",
|
||||
"static/js/105.2b8c04ef.chunk.js.map": "./static/js/105.2b8c04ef.chunk.js.map",
|
||||
"static/js/106.3d1121a5.chunk.js": "./static/js/106.3d1121a5.chunk.js",
|
||||
"static/js/106.3d1121a5.chunk.js.map": "./static/js/106.3d1121a5.chunk.js.map",
|
||||
"static/js/107.6df4ee34.chunk.js": "./static/js/107.6df4ee34.chunk.js",
|
||||
"static/js/107.6df4ee34.chunk.js.map": "./static/js/107.6df4ee34.chunk.js.map",
|
||||
"static/js/108.c9698302.chunk.js": "./static/js/108.c9698302.chunk.js",
|
||||
"static/js/108.c9698302.chunk.js.map": "./static/js/108.c9698302.chunk.js.map",
|
||||
"static/js/109.b12bf36d.chunk.js": "./static/js/109.b12bf36d.chunk.js",
|
||||
"static/js/109.b12bf36d.chunk.js.map": "./static/js/109.b12bf36d.chunk.js.map",
|
||||
"static/js/110.4160d1cf.chunk.js": "./static/js/110.4160d1cf.chunk.js",
|
||||
"static/js/110.4160d1cf.chunk.js.map": "./static/js/110.4160d1cf.chunk.js.map",
|
||||
"static/js/111.8071a262.chunk.js": "./static/js/111.8071a262.chunk.js",
|
||||
"static/js/111.8071a262.chunk.js.map": "./static/js/111.8071a262.chunk.js.map",
|
||||
"static/js/112.41140a20.chunk.js": "./static/js/112.41140a20.chunk.js",
|
||||
"static/js/112.41140a20.chunk.js.map": "./static/js/112.41140a20.chunk.js.map",
|
||||
"static/js/113.aa291f2b.chunk.js": "./static/js/113.aa291f2b.chunk.js",
|
||||
"static/js/113.aa291f2b.chunk.js.map": "./static/js/113.aa291f2b.chunk.js.map",
|
||||
"static/js/114.3e9f3d6f.chunk.js": "./static/js/114.3e9f3d6f.chunk.js",
|
||||
"static/js/114.3e9f3d6f.chunk.js.map": "./static/js/114.3e9f3d6f.chunk.js.map",
|
||||
"static/js/115.a30115de.chunk.js": "./static/js/115.a30115de.chunk.js",
|
||||
"static/js/115.a30115de.chunk.js.map": "./static/js/115.a30115de.chunk.js.map",
|
||||
"static/js/116.d1f1794c.chunk.js": "./static/js/116.d1f1794c.chunk.js",
|
||||
"static/js/116.d1f1794c.chunk.js.map": "./static/js/116.d1f1794c.chunk.js.map",
|
||||
"static/js/117.ac5e3d3f.chunk.js": "./static/js/117.ac5e3d3f.chunk.js",
|
||||
"static/js/117.ac5e3d3f.chunk.js.map": "./static/js/117.ac5e3d3f.chunk.js.map",
|
||||
"static/js/118.75e137ea.chunk.js": "./static/js/118.75e137ea.chunk.js",
|
||||
"static/js/118.75e137ea.chunk.js.map": "./static/js/118.75e137ea.chunk.js.map",
|
||||
"static/js/119.3829b916.chunk.js": "./static/js/119.3829b916.chunk.js",
|
||||
"static/js/119.3829b916.chunk.js.map": "./static/js/119.3829b916.chunk.js.map",
|
||||
"static/js/120.a152a982.chunk.js": "./static/js/120.a152a982.chunk.js",
|
||||
"static/js/120.a152a982.chunk.js.map": "./static/js/120.a152a982.chunk.js.map",
|
||||
"static/js/121.8a84c08f.chunk.js": "./static/js/121.8a84c08f.chunk.js",
|
||||
"static/js/121.8a84c08f.chunk.js.map": "./static/js/121.8a84c08f.chunk.js.map",
|
||||
"static/js/122.b59117f1.chunk.js": "./static/js/122.b59117f1.chunk.js",
|
||||
"static/js/122.b59117f1.chunk.js.map": "./static/js/122.b59117f1.chunk.js.map",
|
||||
"static/js/123.3b2fcf96.chunk.js": "./static/js/123.3b2fcf96.chunk.js",
|
||||
"static/js/123.3b2fcf96.chunk.js.map": "./static/js/123.3b2fcf96.chunk.js.map",
|
||||
"static/js/124.f686bc55.chunk.js": "./static/js/124.f686bc55.chunk.js",
|
||||
"static/js/124.f686bc55.chunk.js.map": "./static/js/124.f686bc55.chunk.js.map",
|
||||
"static/js/125.3716e01d.chunk.js": "./static/js/125.3716e01d.chunk.js",
|
||||
"static/js/125.3716e01d.chunk.js.map": "./static/js/125.3716e01d.chunk.js.map",
|
||||
"static/js/126.dc80cc09.chunk.js": "./static/js/126.dc80cc09.chunk.js",
|
||||
"static/js/126.dc80cc09.chunk.js.map": "./static/js/126.dc80cc09.chunk.js.map",
|
||||
"static/js/127.456d964d.chunk.js": "./static/js/127.456d964d.chunk.js",
|
||||
"static/js/127.456d964d.chunk.js.map": "./static/js/127.456d964d.chunk.js.map",
|
||||
"static/js/128.857aed05.chunk.js": "./static/js/128.857aed05.chunk.js",
|
||||
"static/js/128.857aed05.chunk.js.map": "./static/js/128.857aed05.chunk.js.map",
|
||||
"static/js/129.c9119817.chunk.js": "./static/js/129.c9119817.chunk.js",
|
||||
"static/js/129.c9119817.chunk.js.map": "./static/js/129.c9119817.chunk.js.map",
|
||||
"static/js/130.002b076a.chunk.js": "./static/js/130.002b076a.chunk.js",
|
||||
"static/js/130.002b076a.chunk.js.map": "./static/js/130.002b076a.chunk.js.map",
|
||||
"static/js/131.b3ff42ed.chunk.js": "./static/js/131.b3ff42ed.chunk.js",
|
||||
"static/js/131.b3ff42ed.chunk.js.map": "./static/js/131.b3ff42ed.chunk.js.map",
|
||||
"static/js/132.d779112d.chunk.js": "./static/js/132.d779112d.chunk.js",
|
||||
"static/js/132.d779112d.chunk.js.map": "./static/js/132.d779112d.chunk.js.map",
|
||||
"static/js/133.fa8f764a.chunk.js": "./static/js/133.fa8f764a.chunk.js",
|
||||
"static/js/133.fa8f764a.chunk.js.map": "./static/js/133.fa8f764a.chunk.js.map",
|
||||
"static/js/134.c0345466.chunk.js": "./static/js/134.c0345466.chunk.js",
|
||||
"static/js/134.c0345466.chunk.js.map": "./static/js/134.c0345466.chunk.js.map",
|
||||
"static/js/135.9ff2b814.chunk.js": "./static/js/135.9ff2b814.chunk.js",
|
||||
"static/js/135.9ff2b814.chunk.js.map": "./static/js/135.9ff2b814.chunk.js.map",
|
||||
"static/js/136.46fa081d.chunk.js": "./static/js/136.46fa081d.chunk.js",
|
||||
"static/js/136.46fa081d.chunk.js.map": "./static/js/136.46fa081d.chunk.js.map",
|
||||
"static/js/137.1aafc2ce.chunk.js": "./static/js/137.1aafc2ce.chunk.js",
|
||||
"static/js/137.1aafc2ce.chunk.js.map": "./static/js/137.1aafc2ce.chunk.js.map",
|
||||
"static/js/138.d6b4d31f.chunk.js": "./static/js/138.d6b4d31f.chunk.js",
|
||||
"static/js/138.d6b4d31f.chunk.js.map": "./static/js/138.d6b4d31f.chunk.js.map",
|
||||
"static/js/139.9f3b7a83.chunk.js": "./static/js/139.9f3b7a83.chunk.js",
|
||||
"static/js/139.9f3b7a83.chunk.js.map": "./static/js/139.9f3b7a83.chunk.js.map",
|
||||
"static/js/140.94226bd3.chunk.js": "./static/js/140.94226bd3.chunk.js",
|
||||
"static/js/140.94226bd3.chunk.js.map": "./static/js/140.94226bd3.chunk.js.map",
|
||||
"static/js/141.08ea2e6f.chunk.js": "./static/js/141.08ea2e6f.chunk.js",
|
||||
"static/js/141.08ea2e6f.chunk.js.map": "./static/js/141.08ea2e6f.chunk.js.map",
|
||||
"static/js/142.9aad0162.chunk.js": "./static/js/142.9aad0162.chunk.js",
|
||||
"static/js/142.9aad0162.chunk.js.map": "./static/js/142.9aad0162.chunk.js.map",
|
||||
"static/js/143.6b054de5.chunk.js": "./static/js/143.6b054de5.chunk.js",
|
||||
"static/js/143.6b054de5.chunk.js.map": "./static/js/143.6b054de5.chunk.js.map",
|
||||
"static/js/144.710f22e0.chunk.js": "./static/js/144.710f22e0.chunk.js",
|
||||
"static/js/144.710f22e0.chunk.js.map": "./static/js/144.710f22e0.chunk.js.map",
|
||||
"static/js/145.b34f91a6.chunk.js": "./static/js/145.b34f91a6.chunk.js",
|
||||
"static/js/145.b34f91a6.chunk.js.map": "./static/js/145.b34f91a6.chunk.js.map",
|
||||
"static/js/146.461d939d.chunk.js": "./static/js/146.461d939d.chunk.js",
|
||||
"static/js/146.461d939d.chunk.js.map": "./static/js/146.461d939d.chunk.js.map",
|
||||
"static/js/147.c3e6b738.chunk.js": "./static/js/147.c3e6b738.chunk.js",
|
||||
"static/js/147.c3e6b738.chunk.js.map": "./static/js/147.c3e6b738.chunk.js.map",
|
||||
"static/js/148.7930bf90.chunk.js": "./static/js/148.7930bf90.chunk.js",
|
||||
"static/js/148.7930bf90.chunk.js.map": "./static/js/148.7930bf90.chunk.js.map",
|
||||
"static/js/149.5bbf4dec.chunk.js": "./static/js/149.5bbf4dec.chunk.js",
|
||||
"static/js/149.5bbf4dec.chunk.js.map": "./static/js/149.5bbf4dec.chunk.js.map",
|
||||
"static/js/150.dc404782.chunk.js": "./static/js/150.dc404782.chunk.js",
|
||||
"static/js/150.dc404782.chunk.js.map": "./static/js/150.dc404782.chunk.js.map",
|
||||
"static/js/151.b148b310.chunk.js": "./static/js/151.b148b310.chunk.js",
|
||||
"static/js/151.b148b310.chunk.js.map": "./static/js/151.b148b310.chunk.js.map",
|
||||
"static/js/152.41b05532.chunk.js": "./static/js/152.41b05532.chunk.js",
|
||||
"static/js/152.41b05532.chunk.js.map": "./static/js/152.41b05532.chunk.js.map",
|
||||
"static/js/153.0c334304.chunk.js": "./static/js/153.0c334304.chunk.js",
|
||||
"static/js/153.0c334304.chunk.js.map": "./static/js/153.0c334304.chunk.js.map",
|
||||
"static/js/154.972b7fe1.chunk.js": "./static/js/154.972b7fe1.chunk.js",
|
||||
"static/js/154.972b7fe1.chunk.js.map": "./static/js/154.972b7fe1.chunk.js.map",
|
||||
"static/js/155.f61be17a.chunk.js": "./static/js/155.f61be17a.chunk.js",
|
||||
"static/js/155.f61be17a.chunk.js.map": "./static/js/155.f61be17a.chunk.js.map",
|
||||
"static/js/156.55ee670c.chunk.js": "./static/js/156.55ee670c.chunk.js",
|
||||
"static/js/156.55ee670c.chunk.js.map": "./static/js/156.55ee670c.chunk.js.map",
|
||||
"static/js/157.de124a2f.chunk.js": "./static/js/157.de124a2f.chunk.js",
|
||||
"static/js/157.de124a2f.chunk.js.map": "./static/js/157.de124a2f.chunk.js.map",
|
||||
"static/js/158.bfc41a16.chunk.js": "./static/js/158.bfc41a16.chunk.js",
|
||||
"static/js/158.bfc41a16.chunk.js.map": "./static/js/158.bfc41a16.chunk.js.map",
|
||||
"static/js/159.89112ee8.chunk.js": "./static/js/159.89112ee8.chunk.js",
|
||||
"static/js/159.89112ee8.chunk.js.map": "./static/js/159.89112ee8.chunk.js.map",
|
||||
"static/js/160.45dc50b0.chunk.js": "./static/js/160.45dc50b0.chunk.js",
|
||||
"static/js/160.45dc50b0.chunk.js.map": "./static/js/160.45dc50b0.chunk.js.map",
|
||||
"static/js/161.aec4eb58.chunk.js": "./static/js/161.aec4eb58.chunk.js",
|
||||
"static/js/161.aec4eb58.chunk.js.map": "./static/js/161.aec4eb58.chunk.js.map",
|
||||
"static/js/162.69652a57.chunk.js": "./static/js/162.69652a57.chunk.js",
|
||||
"static/js/162.69652a57.chunk.js.map": "./static/js/162.69652a57.chunk.js.map",
|
||||
"static/js/163.a5abf14d.chunk.js": "./static/js/163.a5abf14d.chunk.js",
|
||||
"static/js/163.a5abf14d.chunk.js.map": "./static/js/163.a5abf14d.chunk.js.map",
|
||||
"index.html": "./index.html",
|
||||
"static/css/2.34c487e1.chunk.css.map": "./static/css/2.34c487e1.chunk.css.map",
|
||||
"static/css/18.f324abd6.chunk.css.map": "./static/css/18.f324abd6.chunk.css.map",
|
||||
"static/css/20.6b194dc9.chunk.css.map": "./static/css/20.6b194dc9.chunk.css.map",
|
||||
"static/css/24.6b194dc9.chunk.css.map": "./static/css/24.6b194dc9.chunk.css.map",
|
||||
"static/css/7.6b194dc9.chunk.css.map": "./static/css/7.6b194dc9.chunk.css.map",
|
||||
"static/css/main.ed78990a.chunk.css.map": "./static/css/main.ed78990a.chunk.css.map",
|
||||
"static/js/2.fef97d1a.chunk.js.LICENSE.txt": "./static/js/2.fef97d1a.chunk.js.LICENSE.txt"
|
||||
"static/js/112.41140a20.chunk.js.LICENSE.txt": "./static/js/112.41140a20.chunk.js.LICENSE.txt",
|
||||
"static/js/15.1baad81d.chunk.js.LICENSE.txt": "./static/js/15.1baad81d.chunk.js.LICENSE.txt",
|
||||
"static/js/16.5ed162fe.chunk.js.LICENSE.txt": "./static/js/16.5ed162fe.chunk.js.LICENSE.txt",
|
||||
"static/js/17.21848d07.chunk.js.LICENSE.txt": "./static/js/17.21848d07.chunk.js.LICENSE.txt",
|
||||
"static/js/18.a7d18626.chunk.js.LICENSE.txt": "./static/js/18.a7d18626.chunk.js.LICENSE.txt",
|
||||
"static/js/19.1a867b14.chunk.js.LICENSE.txt": "./static/js/19.1a867b14.chunk.js.LICENSE.txt",
|
||||
"static/js/22.0d1b899b.chunk.js.LICENSE.txt": "./static/js/22.0d1b899b.chunk.js.LICENSE.txt",
|
||||
"static/js/25.c2a20410.chunk.js.LICENSE.txt": "./static/js/25.c2a20410.chunk.js.LICENSE.txt",
|
||||
"static/js/26.d6d6dd11.chunk.js.LICENSE.txt": "./static/js/26.d6d6dd11.chunk.js.LICENSE.txt",
|
||||
"static/js/28.9a05dc15.chunk.js.LICENSE.txt": "./static/js/28.9a05dc15.chunk.js.LICENSE.txt",
|
||||
"static/js/38.93590454.chunk.js.LICENSE.txt": "./static/js/38.93590454.chunk.js.LICENSE.txt",
|
||||
"static/js/4.1c829629.chunk.js.LICENSE.txt": "./static/js/4.1c829629.chunk.js.LICENSE.txt",
|
||||
"static/js/47.60af91fe.chunk.js.LICENSE.txt": "./static/js/47.60af91fe.chunk.js.LICENSE.txt",
|
||||
"static/js/49.eb9d18f3.chunk.js.LICENSE.txt": "./static/js/49.eb9d18f3.chunk.js.LICENSE.txt",
|
||||
"static/js/5.061631f9.chunk.js.LICENSE.txt": "./static/js/5.061631f9.chunk.js.LICENSE.txt",
|
||||
"static/js/50.38ae74de.chunk.js.LICENSE.txt": "./static/js/50.38ae74de.chunk.js.LICENSE.txt",
|
||||
"static/js/51.d3ea31df.chunk.js.LICENSE.txt": "./static/js/51.d3ea31df.chunk.js.LICENSE.txt",
|
||||
"static/js/75.7c8f2bc1.chunk.js.LICENSE.txt": "./static/js/75.7c8f2bc1.chunk.js.LICENSE.txt",
|
||||
"static/js/76.ed8b684e.chunk.js.LICENSE.txt": "./static/js/76.ed8b684e.chunk.js.LICENSE.txt",
|
||||
"static/js/8.ae7674a3.chunk.js.LICENSE.txt": "./static/js/8.ae7674a3.chunk.js.LICENSE.txt",
|
||||
"static/js/82.efb7d7fb.chunk.js.LICENSE.txt": "./static/js/82.efb7d7fb.chunk.js.LICENSE.txt",
|
||||
"static/js/86.8badb158.chunk.js.LICENSE.txt": "./static/js/86.8badb158.chunk.js.LICENSE.txt",
|
||||
"static/js/87.45e618b4.chunk.js.LICENSE.txt": "./static/js/87.45e618b4.chunk.js.LICENSE.txt",
|
||||
"static/js/88.cfde196a.chunk.js.LICENSE.txt": "./static/js/88.cfde196a.chunk.js.LICENSE.txt",
|
||||
"static/js/89.aa4762b3.chunk.js.LICENSE.txt": "./static/js/89.aa4762b3.chunk.js.LICENSE.txt",
|
||||
"static/js/9.46c2ef0c.chunk.js.LICENSE.txt": "./static/js/9.46c2ef0c.chunk.js.LICENSE.txt",
|
||||
"static/js/95.b72f29ae.chunk.js.LICENSE.txt": "./static/js/95.b72f29ae.chunk.js.LICENSE.txt",
|
||||
"static/js/97.bb4de9b6.chunk.js.LICENSE.txt": "./static/js/97.bb4de9b6.chunk.js.LICENSE.txt"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.30f8243a.js",
|
||||
"static/css/2.34c487e1.chunk.css",
|
||||
"static/js/2.fef97d1a.chunk.js",
|
||||
"static/js/runtime-main.4514f95a.js",
|
||||
"static/css/18.f324abd6.chunk.css",
|
||||
"static/js/18.a7d18626.chunk.js",
|
||||
"static/css/main.ed78990a.chunk.css",
|
||||
"static/js/main.841aeb65.chunk.js"
|
||||
"static/js/main.52981f9d.chunk.js"
|
||||
]
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/css/18.f324abd6.chunk.css
Normal file
2
portal-ui/build/static/css/18.f324abd6.chunk.css
Normal file
@@ -0,0 +1,2 @@
|
||||
.ReactVirtualized__Table__headerRow{font-weight:700;text-transform:uppercase}.ReactVirtualized__Table__headerRow,.ReactVirtualized__Table__row{display:flex;flex-direction:row;align-items:center}.ReactVirtualized__Table__headerTruncatedText{display:inline-block;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ReactVirtualized__Table__headerColumn,.ReactVirtualized__Table__rowColumn{margin-right:10px;min-width:0}.ReactVirtualized__Table__rowColumn{text-overflow:ellipsis;white-space:nowrap}.ReactVirtualized__Table__headerColumn:first-of-type,.ReactVirtualized__Table__rowColumn:first-of-type{margin-left:10px}.ReactVirtualized__Table__sortableHeaderColumn{cursor:pointer}.ReactVirtualized__Table__sortableHeaderIconContainer{display:flex;align-items:center}.ReactVirtualized__Table__sortableHeaderIcon{flex:0 0 24px;height:1em;width:1em;fill:currentColor}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top}.react-grid-item img{pointer-events:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform}.react-grid-item.resizing{z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e,.react-grid-item>.react-resizable-handle.react-resizable-handle-w{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+");background-position:100% 100%;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
|
||||
/*# sourceMappingURL=18.f324abd6.chunk.css.map */
|
||||
1
portal-ui/build/static/css/18.f324abd6.chunk.css.map
Normal file
1
portal-ui/build/static/css/18.f324abd6.chunk.css.map
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/css/20.6b194dc9.chunk.css.map
Normal file
1
portal-ui/build/static/css/20.6b194dc9.chunk.css.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/css/24.6b194dc9.chunk.css
Normal file
2
portal-ui/build/static/css/24.6b194dc9.chunk.css
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/css/24.6b194dc9.chunk.css.map
Normal file
1
portal-ui/build/static/css/24.6b194dc9.chunk.css.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/css/7.6b194dc9.chunk.css
Normal file
2
portal-ui/build/static/css/7.6b194dc9.chunk.css
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/css/7.6b194dc9.chunk.css.map
Normal file
1
portal-ui/build/static/css/7.6b194dc9.chunk.css.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/0.bbd0bc57.chunk.js
Normal file
2
portal-ui/build/static/js/0.bbd0bc57.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/0.bbd0bc57.chunk.js.map
Normal file
1
portal-ui/build/static/js/0.bbd0bc57.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/1.ebd5e498.chunk.js
Normal file
2
portal-ui/build/static/js/1.ebd5e498.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/1.ebd5e498.chunk.js.map
Normal file
1
portal-ui/build/static/js/1.ebd5e498.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/10.07fb2067.chunk.js
Normal file
2
portal-ui/build/static/js/10.07fb2067.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/10.07fb2067.chunk.js.map
Normal file
1
portal-ui/build/static/js/10.07fb2067.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/100.6299b626.chunk.js
Normal file
2
portal-ui/build/static/js/100.6299b626.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/100.6299b626.chunk.js.map
Normal file
1
portal-ui/build/static/js/100.6299b626.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/101.34a91628.chunk.js
Normal file
2
portal-ui/build/static/js/101.34a91628.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/101.34a91628.chunk.js.map
Normal file
1
portal-ui/build/static/js/101.34a91628.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/102.6e64a997.chunk.js
Normal file
2
portal-ui/build/static/js/102.6e64a997.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/102.6e64a997.chunk.js.map
Normal file
1
portal-ui/build/static/js/102.6e64a997.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/103.1b1d19c9.chunk.js
Normal file
2
portal-ui/build/static/js/103.1b1d19c9.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/103.1b1d19c9.chunk.js.map
Normal file
1
portal-ui/build/static/js/103.1b1d19c9.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/104.6768e9ed.chunk.js
Normal file
2
portal-ui/build/static/js/104.6768e9ed.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/104.6768e9ed.chunk.js.map
Normal file
1
portal-ui/build/static/js/104.6768e9ed.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/105.2b8c04ef.chunk.js
Normal file
2
portal-ui/build/static/js/105.2b8c04ef.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/105.2b8c04ef.chunk.js.map
Normal file
1
portal-ui/build/static/js/105.2b8c04ef.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/106.3d1121a5.chunk.js
Normal file
2
portal-ui/build/static/js/106.3d1121a5.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/106.3d1121a5.chunk.js.map
Normal file
1
portal-ui/build/static/js/106.3d1121a5.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/107.6df4ee34.chunk.js
Normal file
2
portal-ui/build/static/js/107.6df4ee34.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/107.6df4ee34.chunk.js.map
Normal file
1
portal-ui/build/static/js/107.6df4ee34.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/108.c9698302.chunk.js
Normal file
2
portal-ui/build/static/js/108.c9698302.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/108.c9698302.chunk.js.map
Normal file
1
portal-ui/build/static/js/108.c9698302.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/109.b12bf36d.chunk.js
Normal file
2
portal-ui/build/static/js/109.b12bf36d.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/109.b12bf36d.chunk.js.map
Normal file
1
portal-ui/build/static/js/109.b12bf36d.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/11.c8f95120.chunk.js
Normal file
2
portal-ui/build/static/js/11.c8f95120.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/11.c8f95120.chunk.js.map
Normal file
1
portal-ui/build/static/js/11.c8f95120.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/110.4160d1cf.chunk.js
Normal file
2
portal-ui/build/static/js/110.4160d1cf.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/110.4160d1cf.chunk.js.map
Normal file
1
portal-ui/build/static/js/110.4160d1cf.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/111.8071a262.chunk.js
Normal file
2
portal-ui/build/static/js/111.8071a262.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/111.8071a262.chunk.js.map
Normal file
1
portal-ui/build/static/js/111.8071a262.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
3
portal-ui/build/static/js/112.41140a20.chunk.js
Normal file
3
portal-ui/build/static/js/112.41140a20.chunk.js
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
|
||||
/** @license React v17.0.2
|
||||
* react-is.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
1
portal-ui/build/static/js/112.41140a20.chunk.js.map
Normal file
1
portal-ui/build/static/js/112.41140a20.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/113.aa291f2b.chunk.js
Normal file
2
portal-ui/build/static/js/113.aa291f2b.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/113.aa291f2b.chunk.js.map
Normal file
1
portal-ui/build/static/js/113.aa291f2b.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/114.3e9f3d6f.chunk.js
Normal file
2
portal-ui/build/static/js/114.3e9f3d6f.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/114.3e9f3d6f.chunk.js.map
Normal file
1
portal-ui/build/static/js/114.3e9f3d6f.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/115.a30115de.chunk.js
Normal file
2
portal-ui/build/static/js/115.a30115de.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/115.a30115de.chunk.js.map
Normal file
1
portal-ui/build/static/js/115.a30115de.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/116.d1f1794c.chunk.js
Normal file
2
portal-ui/build/static/js/116.d1f1794c.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/116.d1f1794c.chunk.js.map
Normal file
1
portal-ui/build/static/js/116.d1f1794c.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/117.ac5e3d3f.chunk.js
Normal file
2
portal-ui/build/static/js/117.ac5e3d3f.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/117.ac5e3d3f.chunk.js.map
Normal file
1
portal-ui/build/static/js/117.ac5e3d3f.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/118.75e137ea.chunk.js
Normal file
2
portal-ui/build/static/js/118.75e137ea.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/118.75e137ea.chunk.js.map
Normal file
1
portal-ui/build/static/js/118.75e137ea.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/119.3829b916.chunk.js
Normal file
2
portal-ui/build/static/js/119.3829b916.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/119.3829b916.chunk.js.map
Normal file
1
portal-ui/build/static/js/119.3829b916.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/12.264e7a62.chunk.js
Normal file
2
portal-ui/build/static/js/12.264e7a62.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/12.264e7a62.chunk.js.map
Normal file
1
portal-ui/build/static/js/12.264e7a62.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/120.a152a982.chunk.js
Normal file
2
portal-ui/build/static/js/120.a152a982.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/120.a152a982.chunk.js.map
Normal file
1
portal-ui/build/static/js/120.a152a982.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/121.8a84c08f.chunk.js
Normal file
2
portal-ui/build/static/js/121.8a84c08f.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/121.8a84c08f.chunk.js.map
Normal file
1
portal-ui/build/static/js/121.8a84c08f.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
2
portal-ui/build/static/js/122.b59117f1.chunk.js
Normal file
2
portal-ui/build/static/js/122.b59117f1.chunk.js
Normal file
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/122.b59117f1.chunk.js.map
Normal file
1
portal-ui/build/static/js/122.b59117f1.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user