mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 05:07:41 +00:00
Merge 1.6.0 changes back to patch.
This commit is contained in:
29
.github/workflows/pr-build.yml
vendored
Normal file
29
.github/workflows/pr-build.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
name: Pull request CI build
|
||||||
|
|
||||||
|
# Run build for all pull requests
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
# Limit to only one build for a given PR source branch at a time,
|
||||||
|
# cancelling any in-progress builds
|
||||||
|
concurrency:
|
||||||
|
group: guacamole-client-pr-${{ github.head_ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
docker_build:
|
||||||
|
name: Run docker build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Build Docker container
|
||||||
|
shell: sh
|
||||||
|
run: |
|
||||||
|
docker build --pull --no-cache --force-rm .
|
@@ -1,3 +1,4 @@
|
|||||||
|
.github/**
|
||||||
CONTRIBUTING
|
CONTRIBUTING
|
||||||
doc/licenses/*/**/*
|
doc/licenses/*/**/*
|
||||||
doc/**/html/*.html
|
doc/**/html/*.html
|
||||||
|
22
Dockerfile
22
Dockerfile
@@ -24,11 +24,11 @@
|
|||||||
# Use args for Tomcat image label to allow image builder to choose alternatives
|
# Use args for Tomcat image label to allow image builder to choose alternatives
|
||||||
# such as `--build-arg TOMCAT_JRE=jre8-alpine`
|
# such as `--build-arg TOMCAT_JRE=jre8-alpine`
|
||||||
#
|
#
|
||||||
ARG TOMCAT_VERSION=8.5
|
ARG TOMCAT_VERSION=9
|
||||||
ARG TOMCAT_JRE=jdk8
|
ARG TOMCAT_JRE=jdk21
|
||||||
|
|
||||||
# Use official maven image for the build
|
# Use official maven image for the build
|
||||||
FROM maven:3-eclipse-temurin-8-focal AS builder
|
FROM maven:3-eclipse-temurin-21 AS builder
|
||||||
|
|
||||||
# Use Mozilla's Firefox PPA (newer Ubuntu lacks a "firefox-esr" package and
|
# Use Mozilla's Firefox PPA (newer Ubuntu lacks a "firefox-esr" package and
|
||||||
# provides only a transitional "firefox" package that actually requires Snap
|
# provides only a transitional "firefox" package that actually requires Snap
|
||||||
@@ -61,6 +61,9 @@ ENV \
|
|||||||
|
|
||||||
# Add configuration scripts
|
# Add configuration scripts
|
||||||
COPY guacamole-docker/bin/ /opt/guacamole/bin/
|
COPY guacamole-docker/bin/ /opt/guacamole/bin/
|
||||||
|
COPY guacamole-docker/build.d/ /opt/guacamole/build.d/
|
||||||
|
COPY guacamole-docker/entrypoint.d/ /opt/guacamole/entrypoint.d/
|
||||||
|
COPY guacamole-docker/environment/ /opt/guacamole/environment/
|
||||||
|
|
||||||
# Copy source to container for sake of build
|
# Copy source to container for sake of build
|
||||||
COPY . "$BUILD_DIR"
|
COPY . "$BUILD_DIR"
|
||||||
@@ -68,12 +71,14 @@ COPY . "$BUILD_DIR"
|
|||||||
# Run the build itself
|
# Run the build itself
|
||||||
RUN /opt/guacamole/bin/build-guacamole.sh "$BUILD_DIR" /opt/guacamole
|
RUN /opt/guacamole/bin/build-guacamole.sh "$BUILD_DIR" /opt/guacamole
|
||||||
|
|
||||||
|
RUN rm -rf /opt/guacamole/build.d /opt/guacamole/bin/build-guacamole.sh
|
||||||
|
|
||||||
# For the runtime image, we start with the official Tomcat distribution
|
# For the runtime image, we start with the official Tomcat distribution
|
||||||
FROM tomcat:${TOMCAT_VERSION}-${TOMCAT_JRE}
|
FROM tomcat:${TOMCAT_VERSION}-${TOMCAT_JRE}
|
||||||
|
|
||||||
# Install XMLStarlet for server.xml alterations and unzip for LOGBACK_LEVEL case
|
# Install XMLStarlet for server.xml alterations
|
||||||
RUN apt-get update -qq \
|
RUN apt-get update -qq \
|
||||||
&& apt-get install -y xmlstarlet unzip\
|
&& apt-get install -y xmlstarlet \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# This is where the build artifacts go in the runtime image
|
# This is where the build artifacts go in the runtime image
|
||||||
@@ -91,6 +96,11 @@ RUN useradd --system --create-home --shell /usr/sbin/nologin --uid $UID --gid $G
|
|||||||
# Run with user guacamole
|
# Run with user guacamole
|
||||||
USER guacamole
|
USER guacamole
|
||||||
|
|
||||||
|
# Environment variable defaults
|
||||||
|
ENV BAN_ENABLED=true \
|
||||||
|
ENABLE_FILE_ENVIRONMENT_PROPERTIES=true \
|
||||||
|
GUACAMOLE_HOME=/etc/guacamole
|
||||||
|
|
||||||
# Start Guacamole under Tomcat, listening on 0.0.0.0:8080
|
# Start Guacamole under Tomcat, listening on 0.0.0.0:8080
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
CMD ["/opt/guacamole/bin/start.sh" ]
|
CMD ["/opt/guacamole/bin/entrypoint.sh" ]
|
||||||
|
17
doc/licenses/apache-commons-codec-1.11/NOTICE
Normal file
17
doc/licenses/apache-commons-codec-1.11/NOTICE
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
Apache Commons Codec
|
||||||
|
Copyright 2002-2020 The Apache Software Foundation
|
||||||
|
|
||||||
|
This product includes software developed at
|
||||||
|
The Apache Software Foundation (https://www.apache.org/).
|
||||||
|
|
||||||
|
src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java
|
||||||
|
contains test data from http://aspell.net/test/orig/batch0.tab.
|
||||||
|
Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org)
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
|
||||||
|
The content of package org.apache.commons.codec.language.bm has been translated
|
||||||
|
from the original php source code available at http://stevemorse.org/phoneticinfo.htm
|
||||||
|
with permission from the original authors.
|
||||||
|
Original source copyright:
|
||||||
|
Copyright (c) 2008 Alexander Beider & Stephen P. Morse.
|
8
doc/licenses/apache-commons-codec-1.11/README
Normal file
8
doc/licenses/apache-commons-codec-1.11/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Apache Commons Codec (http://commons.apache.org/proper/commons-codec/)
|
||||||
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.11
|
||||||
|
From: 'Apache Software Foundation' (https://www.apache.org/)
|
||||||
|
License(s):
|
||||||
|
Apache v2.0
|
||||||
|
|
@@ -0,0 +1 @@
|
|||||||
|
commons-codec:commons-codec:jar:1.11
|
22
doc/licenses/base64-js-1.5.1/LICENSE
Normal file
22
doc/licenses/base64-js-1.5.1/LICENSE
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2014 Jameson Little
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
Footer
|
8
doc/licenses/base64-js-1.5.1/README
Normal file
8
doc/licenses/base64-js-1.5.1/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
base64-js (https://github.com/beatgammit/base64-js)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.5.1
|
||||||
|
From: 'Jameson Little' (https://github.com/beatgammit/)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/base640-js-1.5.1/LICENSE)
|
||||||
|
|
1
doc/licenses/base64-js-1.5.1/dep-coordinates.txt
Normal file
1
doc/licenses/base64-js-1.5.1/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
base64-js:1.5.1
|
20
doc/licenses/bouncycastle-pkix-fips-1.0.7/LICENSE
Normal file
20
doc/licenses/bouncycastle-pkix-fips-1.0.7/LICENSE
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
Copyright (c) 2000 - 2021 The Legion of the Bouncy Castle Inc.
|
||||||
|
(https://www.bouncycastle.org)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
8
doc/licenses/bouncycastle-pkix-fips-1.0.7/README
Normal file
8
doc/licenses/bouncycastle-pkix-fips-1.0.7/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
BouncyCastle PKIX APIs, FIPS Distribution (https://www.bouncycastle.org/fips-java)
|
||||||
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.0.7
|
||||||
|
From: 'The Legion of Bouncy Castle' (https://www.bouncycastle.org)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/bouncycastle-pkix-fips-1.0.7/LICENSE)
|
||||||
|
|
@@ -0,0 +1 @@
|
|||||||
|
org.bouncycastle:bcpkix-fips:jar:1.0.7
|
21
doc/licenses/buffer-4.9.2/LICENSE
Normal file
21
doc/licenses/buffer-4.9.2/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) Feross Aboukhadijeh, and other contributors.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
7
doc/licenses/buffer-4.9.2/README
Normal file
7
doc/licenses/buffer-4.9.2/README
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
buffer (https://github.com/feross/buffer)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 4.9.2
|
||||||
|
From: 'Feross Aboukhadijeh' (https://github.com/feross)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/buffer-4.9.2/LICENSE)
|
1
doc/licenses/buffer-4.9.2/dep-coordinates.txt
Normal file
1
doc/licenses/buffer-4.9.2/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
buffer:4.9.2
|
22
doc/licenses/checker-qual-3.19.0/LICENSE.txt
Normal file
22
doc/licenses/checker-qual-3.19.0/LICENSE.txt
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
Checker Framework qualifiers
|
||||||
|
Copyright 2004-present by the Checker Framework developers
|
||||||
|
|
||||||
|
MIT License:
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
8
doc/licenses/checker-qual-3.19.0/README
Normal file
8
doc/licenses/checker-qual-3.19.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Checker Framework qualifiers (https://checkerframework.org/)
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
Version: 3.19.0
|
||||||
|
From: 'Checker Framework developers' (https://checkerframework.org/)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/checker-qual-3.19.0/LICENSE.txt)
|
||||||
|
|
1
doc/licenses/checker-qual-3.19.0/dep-coordinates.txt
Normal file
1
doc/licenses/checker-qual-3.19.0/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
org.checkerframework:checker-qual:jar:3.19.0
|
19
doc/licenses/core-util-is-1.0.3/LICENSE
Normal file
19
doc/licenses/core-util-is-1.0.3/LICENSE
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
Copyright Node.js contributors. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to
|
||||||
|
deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
IN THE SOFTWARE.
|
7
doc/licenses/core-util-is-1.0.3/README
Normal file
7
doc/licenses/core-util-is-1.0.3/README
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
core-util-is (https://github.com/isaacs/core-util-is)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.0.3
|
||||||
|
From: 'Node.js contributors'
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/core-util-is-1.0.3/LICENSE)
|
1
doc/licenses/core-util-is-1.0.3/dep-coordinates.txt
Normal file
1
doc/licenses/core-util-is-1.0.3/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
core-util-is:1.0.3
|
21
doc/licenses/csv-6.3.9/LICENSE
Normal file
21
doc/licenses/csv-6.3.9/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2010 Adaltas
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
7
doc/licenses/csv-6.3.9/README
Normal file
7
doc/licenses/csv-6.3.9/README
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
node-csv (https://github.com/adaltas/node-csv)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 6.3.9
|
||||||
|
From: 'Adaltas' (https://github.com/adaltas)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/csv-6.3.9/LICENSE)
|
2
doc/licenses/csv-6.3.9/dep-coordinates.txt
Normal file
2
doc/licenses/csv-6.3.9/dep-coordinates.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
csv:6.3.9
|
||||||
|
csv-parse:5.5.6
|
13
doc/licenses/d3-path-3.1.0/LICENSE
Normal file
13
doc/licenses/d3-path-3.1.0/LICENSE
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Copyright 2015-2022 Mike Bostock
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any purpose
|
||||||
|
with or without fee is hereby granted, provided that the above copyright notice
|
||||||
|
and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||||
|
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||||
|
THIS SOFTWARE.
|
8
doc/licenses/d3-path-3.1.0/README
Normal file
8
doc/licenses/d3-path-3.1.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
d3-path (https://github.com/d3/d3-path)
|
||||||
|
----------------------------------------------------------
|
||||||
|
|
||||||
|
Version: 3.1.0
|
||||||
|
From: 'Mike Bostock'
|
||||||
|
License(s):
|
||||||
|
BSD 0-clause (bundled/d3-path-3.1.0/LICENSE)
|
||||||
|
|
1
doc/licenses/d3-path-3.1.0/dep-coordinates.txt
Normal file
1
doc/licenses/d3-path-3.1.0/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
d3-path:3.1.0
|
13
doc/licenses/d3-shape-3.2.0/LICENSE
Normal file
13
doc/licenses/d3-shape-3.2.0/LICENSE
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Copyright 2010-2022 Mike Bostock
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any purpose
|
||||||
|
with or without fee is hereby granted, provided that the above copyright notice
|
||||||
|
and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||||
|
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||||
|
THIS SOFTWARE.
|
8
doc/licenses/d3-shape-3.2.0/README
Normal file
8
doc/licenses/d3-shape-3.2.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
d3-path (https://github.com/d3/d3-shape)
|
||||||
|
----------------------------------------------------------
|
||||||
|
|
||||||
|
Version: 3.2.0
|
||||||
|
From: 'Mike Bostock'
|
||||||
|
License(s):
|
||||||
|
BSD 0-clause (bundled/d3-shape-3.2.0/LICENSE)
|
||||||
|
|
1
doc/licenses/d3-shape-3.2.0/dep-coordinates.txt
Normal file
1
doc/licenses/d3-shape-3.2.0/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
d3-shape:3.2.0
|
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2011, Duo Security, Inc.
|
Copyright (c) 2022 Cisco Systems, Inc. and/or its affiliates
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
@@ -22,4 +22,4 @@ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
8
doc/licenses/duo-universal-sdk-1.1.3/README
Normal file
8
doc/licenses/duo-universal-sdk-1.1.3/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Duo Universal SDK for Java (https://duo.com/docs/duoweb)
|
||||||
|
--------------------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.1.3
|
||||||
|
From: 'Cisco Systems'
|
||||||
|
License(s):
|
||||||
|
Duo License (bundled/duo-universal-sdk-1.1.3/LICENSE)
|
||||||
|
|
1
doc/licenses/duo-universal-sdk-1.1.3/dep-coordinates.txt
Normal file
1
doc/licenses/duo-universal-sdk-1.1.3/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
com.duosecurity:duo-universal-sdk:jar:1.1.3
|
8
doc/licenses/error-prone-2.10.0/README
Normal file
8
doc/licenses/error-prone-2.10.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Error Prone (https://errorprone.info/)
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Version: 2.10.0
|
||||||
|
From: 'Google Inc.' (http://www.google.com/)
|
||||||
|
License(s):
|
||||||
|
Apache v2.0
|
||||||
|
|
1
doc/licenses/error-prone-2.10.0/dep-coordinates.txt
Normal file
1
doc/licenses/error-prone-2.10.0/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
com.google.errorprone:error_prone_annotations:jar:2.10.0
|
22
doc/licenses/events-3.3.0/LICENSE
Normal file
22
doc/licenses/events-3.3.0/LICENSE
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
MIT
|
||||||
|
|
||||||
|
Copyright Joyent, Inc. and other Node contributors.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||||
|
persons to whom the Software is furnished to do so, subject to the
|
||||||
|
following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||||
|
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||||
|
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||||
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||||
|
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
7
doc/licenses/events-3.3.0/README
Normal file
7
doc/licenses/events-3.3.0/README
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
events (https://github.com/browserify/events)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 3.3.0
|
||||||
|
From: 'Node.js contributors, Joyent, Inc., and other Node contributors'
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/events-3.3.0/LICENSE)
|
1
doc/licenses/events-3.3.0/dep-coordinates.txt
Normal file
1
doc/licenses/events-3.3.0/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
events:3.3.0
|
21
doc/licenses/fuzzysort-2.0.4/LICENSE
Normal file
21
doc/licenses/fuzzysort-2.0.4/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2018 Stephen Kamenar
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
8
doc/licenses/fuzzysort-2.0.4/README
Normal file
8
doc/licenses/fuzzysort-2.0.4/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fuzzysort (https://github.com/farzher/fuzzysort/tree/master)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 2.0.4
|
||||||
|
From: 'Stephen Kamenar' (https://github.com/farzher)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/fuzzysort-2.0.4/LICENSE)
|
||||||
|
|
1
doc/licenses/fuzzysort-2.0.4/dep-coordinates.txt
Normal file
1
doc/licenses/fuzzysort-2.0.4/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
fuzzysort:2.0.4
|
11
doc/licenses/ieee754-1.2.1/LICENSE
Normal file
11
doc/licenses/ieee754-1.2.1/LICENSE
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Copyright 2008 Fair Oaks Labs, Inc.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
7
doc/licenses/ieee754-1.2.1/README
Normal file
7
doc/licenses/ieee754-1.2.1/README
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
ieee754 (https://github.com/feross/ieee754)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.2.1
|
||||||
|
From: 'Fair Oaks Labs, Inc'
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/ieee754-1.2.1/LICENSE)
|
1
doc/licenses/ieee754-1.2.1/dep-coordinates.txt
Normal file
1
doc/licenses/ieee754-1.2.1/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ieee754:1.2.1
|
15
doc/licenses/inherits-2.0.4/LICENSE
Normal file
15
doc/licenses/inherits-2.0.4/LICENSE
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
The ISC License
|
||||||
|
|
||||||
|
Copyright (c) Isaac Z. Schlueter
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
8
doc/licenses/inherits-2.0.4/README
Normal file
8
doc/licenses/inherits-2.0.4/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
inherits (https://github.com/isaacs/inherits)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 2.0.4
|
||||||
|
From: 'Isaac Z. Schlueter' (https://github.com/isaacs)
|
||||||
|
License(s):
|
||||||
|
ISC (bundled/inherits-2.0.4/LICENSE)
|
||||||
|
|
1
doc/licenses/inherits-2.0.4/dep-coordinates.txt
Normal file
1
doc/licenses/inherits-2.0.4/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
inherits:2.0.4
|
21
doc/licenses/isarray-1.0.0/LICENSE
Normal file
21
doc/licenses/isarray-1.0.0/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
8
doc/licenses/isarray-1.0.0/README
Normal file
8
doc/licenses/isarray-1.0.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
isarray (https://github.com/juliangruber/isarray)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.0.0
|
||||||
|
From: 'Julian Gruber' (https://github.com/juliangruber)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/isarray-1.0.0/LICENSE)
|
||||||
|
|
1
doc/licenses/isarray-1.0.0/dep-coordinates.txt
Normal file
1
doc/licenses/isarray-1.0.0/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
isarray:1.0.0
|
21
doc/licenses/java-jwt-3.3.0/LICENSE
Normal file
21
doc/licenses/java-jwt-3.3.0/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Auth0, Inc. <support@auth0.com> (http://auth0.com)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
8
doc/licenses/java-jwt-3.3.0/README
Normal file
8
doc/licenses/java-jwt-3.3.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Java JWT (https://github.com/auth0/java-jwt)
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
Version: 3.3.0
|
||||||
|
From: 'Auth0 by Okta' (https://www.auth0.com)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/java-jwt-3.3.0/LICENSE)
|
||||||
|
|
1
doc/licenses/java-jwt-3.3.0/dep-coordinates.txt
Normal file
1
doc/licenses/java-jwt-3.3.0/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
com.auth0:java-jwt:jar:3.3.0
|
2
doc/licenses/kotlin-1.4.10/NOTICE.txt
Normal file
2
doc/licenses/kotlin-1.4.10/NOTICE.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Kotlin Compiler
|
||||||
|
Copyright 2010-2023 JetBrains s.r.o and respective authors and developers
|
8
doc/licenses/kotlin-1.4.10/README
Normal file
8
doc/licenses/kotlin-1.4.10/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Kotlin (https://kotlinlang.org/)
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Version: 1.4.10
|
||||||
|
From: 'JetBrains s.r.o and respective authors and developers'
|
||||||
|
License(s):
|
||||||
|
Apache v2.0
|
||||||
|
|
5
doc/licenses/kotlin-1.4.10/dep-coordinates.txt
Normal file
5
doc/licenses/kotlin-1.4.10/dep-coordinates.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
org.jetbrains.kotlin:kotlin-reflect:jar:1.4.10
|
||||||
|
org.jetbrains.kotlin:kotlin-stdlib:jar:1.4.10
|
||||||
|
org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.4.10
|
||||||
|
org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.4.10
|
||||||
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10
|
13
doc/licenses/logging-interceptor-4.9.1/NOTICE
Normal file
13
doc/licenses/logging-interceptor-4.9.1/NOTICE
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Copyright 2019 Square, Inc.
|
||||||
|
|
||||||
|
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.
|
8
doc/licenses/logging-interceptor-4.9.1/README
Normal file
8
doc/licenses/logging-interceptor-4.9.1/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
OkHttp Logging Interceptor (https://square.github.io/okhttp/)
|
||||||
|
-------------------------------------------------------------
|
||||||
|
|
||||||
|
Version: 4.9.1
|
||||||
|
From: 'Square Inc'
|
||||||
|
License(s):
|
||||||
|
Apache v2.0
|
||||||
|
|
@@ -0,0 +1 @@
|
|||||||
|
com.squareup.okhttp3:logging-interceptor:jar:4.9.1
|
13
doc/licenses/okhttp-4.12.0/NOTICE
Normal file
13
doc/licenses/okhttp-4.12.0/NOTICE
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Copyright 2021 Square, Inc.
|
||||||
|
|
||||||
|
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.
|
8
doc/licenses/okhttp-4.12.0/README
Normal file
8
doc/licenses/okhttp-4.12.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
OkHttp (https://square.github.io/okhttp/)
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
Version: 4.12.0
|
||||||
|
From: 'Square Inc'
|
||||||
|
License(s):
|
||||||
|
Apache 2.0
|
||||||
|
|
2
doc/licenses/okhttp-4.12.0/dep-coordinates.txt
Normal file
2
doc/licenses/okhttp-4.12.0/dep-coordinates.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
com.squareup.okhttp3:okhttp:jar:4.12.0
|
||||||
|
com.squareup.okhttp3:logging-interceptor:jar:4.12.0
|
13
doc/licenses/okio-3.6.0/NOTICE
Normal file
13
doc/licenses/okio-3.6.0/NOTICE
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Copyright 2020 Square, Inc.
|
||||||
|
|
||||||
|
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.
|
8
doc/licenses/okio-3.6.0/README
Normal file
8
doc/licenses/okio-3.6.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Okio (https://square.github.io/okio/)
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Version: 3.6.0
|
||||||
|
From: 'Square Inc'
|
||||||
|
License(s):
|
||||||
|
Apache 2.0
|
||||||
|
|
2
doc/licenses/okio-3.6.0/dep-coordinates.txt
Normal file
2
doc/licenses/okio-3.6.0/dep-coordinates.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
com.squareup.okio:okio:jar:3.6.0
|
||||||
|
com.squareup.okio:okio-jvm:jar:3.6.0
|
8
doc/licenses/process-nextick-args-2.0.1/README
Normal file
8
doc/licenses/process-nextick-args-2.0.1/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
process-nextick-args (https://github.com/calvinmetcalf/process-nextick-args)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 2.0.1
|
||||||
|
From: 'Calvin Metcalf' (https://github.com/calvinmetcalf)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/process-nextick-args-2.0.1/license.md)
|
||||||
|
|
@@ -0,0 +1 @@
|
|||||||
|
process-nextick-args:2.0.1
|
19
doc/licenses/process-nextick-args-2.0.1/license.md
Normal file
19
doc/licenses/process-nextick-args-2.0.1/license.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Copyright (c) 2015 Calvin Metcalf
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.**
|
47
doc/licenses/readable-stream-2.3.7/LICENSE
Normal file
47
doc/licenses/readable-stream-2.3.7/LICENSE
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
Node.js is licensed for use as follows:
|
||||||
|
|
||||||
|
"""
|
||||||
|
Copyright Node.js contributors. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to
|
||||||
|
deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
IN THE SOFTWARE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
This license applies to parts of Node.js originating from the
|
||||||
|
https://github.com/joyent/node repository:
|
||||||
|
|
||||||
|
"""
|
||||||
|
Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to
|
||||||
|
deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
IN THE SOFTWARE.
|
||||||
|
"""
|
8
doc/licenses/readable-stream-2.3.7/README
Normal file
8
doc/licenses/readable-stream-2.3.7/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
readable-stream (https://github.com/nodejs/readable-stream)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 2.3.7
|
||||||
|
From: 'Node.js contributors, Joyent, Inc., and other Node contributors'
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/readable-stream-2.3.7/LICENSE)
|
||||||
|
|
1
doc/licenses/readable-stream-2.3.7/dep-coordinates.txt
Normal file
1
doc/licenses/readable-stream-2.3.7/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
readable-stream:2.3.7
|
13
doc/licenses/retrofit-2.9.0/NOTICE
Normal file
13
doc/licenses/retrofit-2.9.0/NOTICE
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
Copyright 2013 Square, Inc.
|
||||||
|
|
||||||
|
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.
|
8
doc/licenses/retrofit-2.9.0/README
Normal file
8
doc/licenses/retrofit-2.9.0/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Retrofit (https://square.github.io/retrofit/)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 2.9.0
|
||||||
|
From: 'Square Inc'
|
||||||
|
License(s):
|
||||||
|
Apache 2.0
|
||||||
|
|
2
doc/licenses/retrofit-2.9.0/dep-coordinates.txt
Normal file
2
doc/licenses/retrofit-2.9.0/dep-coordinates.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
com.squareup.retrofit2:retrofit:jar:2.9.0
|
||||||
|
com.squareup.retrofit2:converter-jackson:jar:2.9.0
|
21
doc/licenses/safe-buffer-5.1.2/LICENSE
Normal file
21
doc/licenses/safe-buffer-5.1.2/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) Feross Aboukhadijeh
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
8
doc/licenses/safe-buffer-5.1.2/README
Normal file
8
doc/licenses/safe-buffer-5.1.2/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
safe-buffer (https://github.com/feross/safe-buffer)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 5.1.2
|
||||||
|
From: 'Feross Aboukhadijeh' (https://github.com/feross)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/safe-buffer-5.1.2/LICENSE)
|
||||||
|
|
1
doc/licenses/safe-buffer-5.1.2/dep-coordinates.txt
Normal file
1
doc/licenses/safe-buffer-5.1.2/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
safe-buffer:5.1.2
|
20
doc/licenses/setimmediate-1.0.5/LICENSE.txt
Normal file
20
doc/licenses/setimmediate-1.0.5/LICENSE.txt
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, and Domenic Denicola
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
8
doc/licenses/setimmediate-1.0.5/README
Normal file
8
doc/licenses/setimmediate-1.0.5/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
setImmediate.js (https://github.com/YuzuJS/setImmediate)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.0.5
|
||||||
|
From: 'Yuzu (by Barnes & Noble Education)' (https://github.com/YuzuJS)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/setimmediate-1.0.5/LICENSE.txt)
|
||||||
|
|
1
doc/licenses/setimmediate-1.0.5/dep-coordinates.txt
Normal file
1
doc/licenses/setimmediate-1.0.5/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
setimmediate:1.0.5
|
20
doc/licenses/stream-browserify-2.0.2/LICENSE
Normal file
20
doc/licenses/stream-browserify-2.0.2/LICENSE
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) James Halliday
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
8
doc/licenses/stream-browserify-2.0.2/README
Normal file
8
doc/licenses/stream-browserify-2.0.2/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
stream-browserify (https://github.com/browserify/stream-browserify)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 2.0.2
|
||||||
|
From: 'James Halliday'
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/stream-browserify-2.0.2/LICENSE)
|
||||||
|
|
1
doc/licenses/stream-browserify-2.0.2/dep-coordinates.txt
Normal file
1
doc/licenses/stream-browserify-2.0.2/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
stream-browserify:2.0.2
|
47
doc/licenses/string_decoder-1.1.1/LICENSE
Normal file
47
doc/licenses/string_decoder-1.1.1/LICENSE
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
Node.js is licensed for use as follows:
|
||||||
|
|
||||||
|
"""
|
||||||
|
Copyright Node.js contributors. All rights reserved.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to
|
||||||
|
deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
IN THE SOFTWARE.
|
||||||
|
"""
|
||||||
|
|
||||||
|
This license applies to parts of Node.js originating from the
|
||||||
|
https://github.com/joyent/node repository:
|
||||||
|
|
||||||
|
"""
|
||||||
|
Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to
|
||||||
|
deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
IN THE SOFTWARE.
|
||||||
|
"""
|
8
doc/licenses/string_decoder-1.1.1/README
Normal file
8
doc/licenses/string_decoder-1.1.1/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
string_decoder (https://github.com/nodejs/string_decoder)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.1.1
|
||||||
|
From: 'Node.js contributors, Joyent, Inc., and other Node contributors'
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/string_decoder-1.1.1/LICENSE)
|
||||||
|
|
1
doc/licenses/string_decoder-1.1.1/dep-coordinates.txt
Normal file
1
doc/licenses/string_decoder-1.1.1/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
string_decoder:1.1.1
|
23
doc/licenses/timers-browserify-2.0.12/LICENSE.md
Normal file
23
doc/licenses/timers-browserify-2.0.12/LICENSE.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# timers-browserify
|
||||||
|
|
||||||
|
This project uses the [MIT](http://jryans.mit-license.org/) license:
|
||||||
|
|
||||||
|
Copyright © 2012 J. Ryan Stinnett <jryans@gmail.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the “Software”),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
8
doc/licenses/timers-browserify-2.0.12/README
Normal file
8
doc/licenses/timers-browserify-2.0.12/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
timers-browserify (https://github.com/browserify/timers-browserify)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 2.0.12
|
||||||
|
From: 'J. Ryan Stinnett' (https://github.com/jryans)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/timers-browserify-2.0.12/LICENSE.md)
|
||||||
|
|
@@ -0,0 +1 @@
|
|||||||
|
timers-browserify:2.0.12
|
24
doc/licenses/util-deprecate-1.0.2/LICENSE
Normal file
24
doc/licenses/util-deprecate-1.0.2/LICENSE
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
(The MIT License)
|
||||||
|
|
||||||
|
Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
8
doc/licenses/util-deprecate-1.0.2/README
Normal file
8
doc/licenses/util-deprecate-1.0.2/README
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
util-deprecate (https://github.com/TooTallNate/util-deprecate)
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
Version: 1.0.2
|
||||||
|
From: 'Nathan Rajlich' (https://github.com/TooTallNate)
|
||||||
|
License(s):
|
||||||
|
MIT (bundled/util-deprecate-1.0.2/LICENSE)
|
||||||
|
|
1
doc/licenses/util-deprecate-1.0.2/dep-coordinates.txt
Normal file
1
doc/licenses/util-deprecate-1.0.2/dep-coordinates.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
util-deprecate:1.0.2
|
0
extensions/guacamole-auth-ban/.ratignore
Normal file
0
extensions/guacamole-auth-ban/.ratignore
Normal file
81
extensions/guacamole-auth-ban/pom.xml
Normal file
81
extensions/guacamole-auth-ban/pom.xml
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you 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.
|
||||||
|
-->
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
|
||||||
|
http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.guacamole</groupId>
|
||||||
|
<artifactId>guacamole-auth-ban</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>1.5.5</version>
|
||||||
|
<name>guacamole-auth-ban</name>
|
||||||
|
<url>http://guacamole.apache.org/</url>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.apache.guacamole</groupId>
|
||||||
|
<artifactId>extensions</artifactId>
|
||||||
|
<version>1.5.5</version>
|
||||||
|
<relativePath>../</relativePath>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- Java servlet API -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.servlet</groupId>
|
||||||
|
<artifactId>servlet-api</artifactId>
|
||||||
|
<version>2.5</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Guacamole Extension API -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.guacamole</groupId>
|
||||||
|
<artifactId>guacamole-ext</artifactId>
|
||||||
|
<version>1.5.5</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
|
||||||
|
<!-- Exclude transitive dependencies that will be overridden by
|
||||||
|
newer versions required by Caffeine -->
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.checkerframework</groupId>
|
||||||
|
<artifactId>checker-qual</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>com.google.errorprone</groupId>
|
||||||
|
<artifactId>error_prone_annotations</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Guava Base Libraries -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.ben-manes.caffeine</groupId>
|
||||||
|
<artifactId>caffeine</artifactId>
|
||||||
|
<version>2.9.3</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
54
extensions/guacamole-auth-ban/src/main/assembly/dist.xml
Normal file
54
extensions/guacamole-auth-ban/src/main/assembly/dist.xml
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you 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.
|
||||||
|
-->
|
||||||
|
<assembly
|
||||||
|
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0
|
||||||
|
http://maven.apache.org/xsd/assembly-1.1.0.xsd">
|
||||||
|
|
||||||
|
<id>dist</id>
|
||||||
|
<baseDirectory>${project.artifactId}-${project.version}</baseDirectory>
|
||||||
|
|
||||||
|
<!-- Output tar.gz -->
|
||||||
|
<formats>
|
||||||
|
<format>tar.gz</format>
|
||||||
|
</formats>
|
||||||
|
|
||||||
|
<!-- Include licenses and extension .jar -->
|
||||||
|
<fileSets>
|
||||||
|
|
||||||
|
<!-- Include licenses -->
|
||||||
|
<fileSet>
|
||||||
|
<outputDirectory></outputDirectory>
|
||||||
|
<directory>target/licenses</directory>
|
||||||
|
</fileSet>
|
||||||
|
|
||||||
|
<!-- Include extension .jar -->
|
||||||
|
<fileSet>
|
||||||
|
<directory>target</directory>
|
||||||
|
<outputDirectory></outputDirectory>
|
||||||
|
<includes>
|
||||||
|
<include>*.jar</include>
|
||||||
|
</includes>
|
||||||
|
</fileSet>
|
||||||
|
|
||||||
|
</fileSets>
|
||||||
|
|
||||||
|
</assembly>
|
@@ -0,0 +1,200 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.guacamole.auth.ban;
|
||||||
|
|
||||||
|
import org.apache.guacamole.auth.ban.status.AuthenticationFailureTracker;
|
||||||
|
import org.apache.guacamole.GuacamoleException;
|
||||||
|
import org.apache.guacamole.auth.ban.status.InMemoryAuthenticationFailureTracker;
|
||||||
|
import org.apache.guacamole.auth.ban.status.NullAuthenticationFailureTracker;
|
||||||
|
import org.apache.guacamole.environment.Environment;
|
||||||
|
import org.apache.guacamole.environment.LocalEnvironment;
|
||||||
|
import org.apache.guacamole.net.auth.credentials.GuacamoleInsufficientCredentialsException;
|
||||||
|
import org.apache.guacamole.net.event.AuthenticationFailureEvent;
|
||||||
|
import org.apache.guacamole.net.event.AuthenticationSuccessEvent;
|
||||||
|
import org.apache.guacamole.net.event.listener.Listener;
|
||||||
|
import org.apache.guacamole.net.event.AuthenticationRequestReceivedEvent;
|
||||||
|
import org.apache.guacamole.properties.IntegerGuacamoleProperty;
|
||||||
|
import org.apache.guacamole.properties.LongGuacamoleProperty;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listener implementation which automatically tracks authentication failures
|
||||||
|
* such that further authentication attempts may be automatically blocked if
|
||||||
|
* they match configured criteria.
|
||||||
|
*/
|
||||||
|
public class BanningAuthenticationListener implements Listener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logger for this class.
|
||||||
|
*/
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(BanningAuthenticationListener.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum number of failed authentication attempts allowed before an
|
||||||
|
* address is temporarily banned.
|
||||||
|
*/
|
||||||
|
private static final IntegerGuacamoleProperty MAX_ATTEMPTS = new IntegerGuacamoleProperty() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "ban-max-invalid-attempts";
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The length of time that each address should be banned after reaching the
|
||||||
|
* maximum number of failed authentication attempts, in seconds.
|
||||||
|
*/
|
||||||
|
private static final IntegerGuacamoleProperty IP_BAN_DURATION = new IntegerGuacamoleProperty() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "ban-address-duration";
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum number of failed authentication attempts tracked at any
|
||||||
|
* given time. Once this number of addresses is exceeded, the oldest
|
||||||
|
* authentication attempts are rotated off on an LRU basis.
|
||||||
|
*/
|
||||||
|
private static final LongGuacamoleProperty MAX_ADDRESSES = new LongGuacamoleProperty() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "ban-max-addresses";
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default maximum number of failed authentication attempts allowed
|
||||||
|
* before an address is temporarily banned.
|
||||||
|
*/
|
||||||
|
private static final int DEFAULT_MAX_ATTEMPTS = 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default length of time that each address should be banned after
|
||||||
|
* reaching the maximum number of failed authentication attempts, in
|
||||||
|
* seconds.
|
||||||
|
*/
|
||||||
|
private static final int DEFAULT_IP_BAN_DURATION = 300;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum number of failed authentication attempts tracked at any
|
||||||
|
* given time. Once this number of addresses is exceeded, the oldest
|
||||||
|
* authentication attempts are rotated off on an LRU basis.
|
||||||
|
*/
|
||||||
|
private static final long DEFAULT_MAX_ADDRESSES = 10485760;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tracker of addresses that have repeatedly failed authentication.
|
||||||
|
*/
|
||||||
|
private final AuthenticationFailureTracker tracker;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new BanningAuthenticationListener which automatically bans
|
||||||
|
* further authentication attempts from addresses that have repeatedly
|
||||||
|
* failed to authenticate. The ban duration and maximum number of failed
|
||||||
|
* attempts allowed before banning are configured within
|
||||||
|
* guacamole.properties.
|
||||||
|
*
|
||||||
|
* @throws GuacamoleException
|
||||||
|
* If an error occurs parsing the configuration properties used by this
|
||||||
|
* extension.
|
||||||
|
*/
|
||||||
|
public BanningAuthenticationListener() throws GuacamoleException {
|
||||||
|
|
||||||
|
Environment environment = LocalEnvironment.getInstance();
|
||||||
|
int maxAttempts = environment.getProperty(MAX_ATTEMPTS, DEFAULT_MAX_ATTEMPTS);
|
||||||
|
int banDuration = environment.getProperty(IP_BAN_DURATION, DEFAULT_IP_BAN_DURATION);
|
||||||
|
long maxAddresses = environment.getProperty(MAX_ADDRESSES, DEFAULT_MAX_ADDRESSES);
|
||||||
|
|
||||||
|
// Configure auth failure tracking behavior and inform administrator of
|
||||||
|
// ultimate result
|
||||||
|
if (maxAttempts <= 0) {
|
||||||
|
this.tracker = new NullAuthenticationFailureTracker();
|
||||||
|
logger.info("Maximum failed authentication attempts has been set "
|
||||||
|
+ "to {}. Automatic banning of brute-force authentication "
|
||||||
|
+ "attempts will be disabled.", maxAttempts);
|
||||||
|
}
|
||||||
|
else if (banDuration <= 0) {
|
||||||
|
this.tracker = new NullAuthenticationFailureTracker();
|
||||||
|
logger.info("Ban duration for addresses that repeatedly fail "
|
||||||
|
+ "authentication has been set to {}. Automatic banning "
|
||||||
|
+ "of brute-force authentication attempts will be "
|
||||||
|
+ "disabled.", banDuration);
|
||||||
|
}
|
||||||
|
else if (maxAddresses <= 0) {
|
||||||
|
this.tracker = new NullAuthenticationFailureTracker();
|
||||||
|
logger.info("Maximum number of tracked addresses has been set to "
|
||||||
|
+ "{}. Automatic banning of brute-force authentication "
|
||||||
|
+ "attempts will be disabled.", maxAddresses);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.tracker = new InMemoryAuthenticationFailureTracker(maxAttempts, banDuration, maxAddresses);
|
||||||
|
logger.info("Addresses will be automatically banned for {} "
|
||||||
|
+ "seconds after {} failed authentication attempts. Up "
|
||||||
|
+ "to {} unique addresses will be tracked/banned at any "
|
||||||
|
+ "given time.", banDuration, maxAttempts, maxAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleEvent(Object event) throws GuacamoleException {
|
||||||
|
|
||||||
|
// Notify auth tracker of each request received BEFORE the request is
|
||||||
|
// processed ...
|
||||||
|
if (event instanceof AuthenticationRequestReceivedEvent) {
|
||||||
|
AuthenticationRequestReceivedEvent request = (AuthenticationRequestReceivedEvent) event;
|
||||||
|
tracker.notifyAuthenticationRequestReceived(request.getCredentials());
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... as well as every explicit failure ...
|
||||||
|
else if (event instanceof AuthenticationFailureEvent) {
|
||||||
|
|
||||||
|
AuthenticationFailureEvent failure = (AuthenticationFailureEvent) event;
|
||||||
|
|
||||||
|
// Requests for additional credentials are not failures per se,
|
||||||
|
// but continuations of a multi-request authentication attempt that
|
||||||
|
// has not yet succeeded OR failed
|
||||||
|
if (failure.getFailure() instanceof GuacamoleInsufficientCredentialsException) {
|
||||||
|
tracker.notifyAuthenticationRequestReceived(failure.getCredentials());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Consider all other errors to be failed auth attempts
|
||||||
|
tracker.notifyAuthenticationFailed(failure.getCredentials());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... and explicit success.
|
||||||
|
else if (event instanceof AuthenticationSuccessEvent) {
|
||||||
|
AuthenticationSuccessEvent success = (AuthenticationSuccessEvent) event;
|
||||||
|
tracker.notifyAuthenticationSuccess(success.getCredentials());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.guacamole.auth.ban.status;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current status of an authentication failure, including the number of
|
||||||
|
* times the failure has occurred.
|
||||||
|
*/
|
||||||
|
public class AuthenticationFailureStatus {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The timestamp of the last authentication failure, as returned by
|
||||||
|
* System.nanoTime().
|
||||||
|
*/
|
||||||
|
private long lastFailure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of failures that have occurred.
|
||||||
|
*/
|
||||||
|
private final AtomicInteger failureCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum number of failures that may occur before the user/address
|
||||||
|
* causing the failures is blocked.
|
||||||
|
*/
|
||||||
|
private final int maxAttempts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The amount of time that a user/address must remain blocked after they
|
||||||
|
* have reached the maximum number of failures. Unlike the value provided
|
||||||
|
* at construction time, this value is maintained in nanoseconds.
|
||||||
|
*/
|
||||||
|
private final long duration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an AuthenticationFailureStatus that is initialized to zero
|
||||||
|
* failures and is subject to the given restrictions. Additional failures
|
||||||
|
* may be flagged after creation with {@link #notifyFailed()}.
|
||||||
|
*
|
||||||
|
* @param maxAttempts
|
||||||
|
* The maximum number of failures that may occur before the
|
||||||
|
* user/address causing the failures is blocked.
|
||||||
|
*
|
||||||
|
* @param duration
|
||||||
|
* The amount of time, in seconds, that a user/address must remain
|
||||||
|
* blocked after they have reached the maximum number of failures.
|
||||||
|
*/
|
||||||
|
public AuthenticationFailureStatus(int maxAttempts, int duration) {
|
||||||
|
this.lastFailure = System.nanoTime();
|
||||||
|
this.failureCount = new AtomicInteger(0);
|
||||||
|
this.maxAttempts = maxAttempts;
|
||||||
|
this.duration = TimeUnit.SECONDS.toNanos(duration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates this authentication failure, noting that the failure it
|
||||||
|
* represents has recurred.
|
||||||
|
*/
|
||||||
|
public void notifyFailed() {
|
||||||
|
lastFailure = System.nanoTime();
|
||||||
|
failureCount.incrementAndGet();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether this authentication failure is recent enough that it
|
||||||
|
* should still be tracked. This function will return false for
|
||||||
|
* authentication failures that have not recurred for at least the duration
|
||||||
|
* provided at construction time.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* true if this authentication failure is recent enough that it should
|
||||||
|
* still be tracked, false otherwise.
|
||||||
|
*/
|
||||||
|
public boolean isValid() {
|
||||||
|
return System.nanoTime() - lastFailure <= duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the user/address causing this authentication failure
|
||||||
|
* should be blocked based on the restrictions provided at construction
|
||||||
|
* time.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* true if the user/address causing this failure should be blocked,
|
||||||
|
* false otherwise.
|
||||||
|
*/
|
||||||
|
public boolean isBlocked() {
|
||||||
|
return isValid() && failureCount.get() >= maxAttempts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the total number of authentication failures that have been
|
||||||
|
* recorded through creating this object and invoking
|
||||||
|
* {@link #notifyFailed()}.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* The total number of failures that have occurred.
|
||||||
|
*/
|
||||||
|
public int getFailures() {
|
||||||
|
return failureCount.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.guacamole.auth.ban.status;
|
||||||
|
|
||||||
|
import org.apache.guacamole.GuacamoleException;
|
||||||
|
import org.apache.guacamole.net.auth.Credentials;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tracks past authentication results, automatically blocking the IP addresses
|
||||||
|
* of machines that repeatedly fail to authenticate.
|
||||||
|
*/
|
||||||
|
public interface AuthenticationFailureTracker {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reports that an authentication request has been received, but it is
|
||||||
|
* either not yet known whether the request has succeeded or failed. If the
|
||||||
|
* associated address is currently being blocked, an exception will be
|
||||||
|
* thrown.
|
||||||
|
*
|
||||||
|
* @param credentials
|
||||||
|
* The credentials associated with the authentication request.
|
||||||
|
*
|
||||||
|
* @throws GuacamoleException
|
||||||
|
* If the authentication request is being blocked due to brute force
|
||||||
|
* prevention rules.
|
||||||
|
*/
|
||||||
|
void notifyAuthenticationRequestReceived(Credentials credentials)
|
||||||
|
throws GuacamoleException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reports that an authentication request has been received and has
|
||||||
|
* succeeded. If the associated address is currently being blocked, an
|
||||||
|
* exception will be thrown.
|
||||||
|
*
|
||||||
|
* @param credentials
|
||||||
|
* The credentials associated with the successful authentication
|
||||||
|
* request.
|
||||||
|
*
|
||||||
|
* @throws GuacamoleException
|
||||||
|
* If the authentication request is being blocked due to brute force
|
||||||
|
* prevention rules.
|
||||||
|
*/
|
||||||
|
void notifyAuthenticationSuccess(Credentials credentials)
|
||||||
|
throws GuacamoleException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reports that an authentication request has been received and has
|
||||||
|
* failed. If the associated address is currently being blocked, an
|
||||||
|
* exception will be thrown.
|
||||||
|
*
|
||||||
|
* @param credentials
|
||||||
|
* The credentials associated with the failed authentication request.
|
||||||
|
*
|
||||||
|
* @throws GuacamoleException
|
||||||
|
* If the authentication request is being blocked due to brute force
|
||||||
|
* prevention rules.
|
||||||
|
*/
|
||||||
|
void notifyAuthenticationFailed(Credentials credentials)
|
||||||
|
throws GuacamoleException;
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,196 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.guacamole.auth.ban.status;
|
||||||
|
|
||||||
|
import com.github.benmanes.caffeine.cache.Cache;
|
||||||
|
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||||
|
import org.apache.guacamole.GuacamoleException;
|
||||||
|
import org.apache.guacamole.GuacamoleServerException;
|
||||||
|
import org.apache.guacamole.language.TranslatableGuacamoleClientTooManyException;
|
||||||
|
import org.apache.guacamole.net.auth.Credentials;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AuthenticationFailureTracker implementation that tracks the failure status
|
||||||
|
* of each IP address in memory. The maximum amount of memory consumed is
|
||||||
|
* bounded by the configured maximum number of addresses tracked.
|
||||||
|
*/
|
||||||
|
public class InMemoryAuthenticationFailureTracker implements AuthenticationFailureTracker {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logger for this class.
|
||||||
|
*/
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(InMemoryAuthenticationFailureTracker.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All authentication failures currently being tracked, stored by the
|
||||||
|
* associated IP address.
|
||||||
|
*/
|
||||||
|
private final Cache<String, AuthenticationFailureStatus> failures;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The maximum number of failed authentication attempts allowed before an
|
||||||
|
* address is temporarily banned.
|
||||||
|
*/
|
||||||
|
private final int maxAttempts;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The length of time that each address should be banned after reaching the
|
||||||
|
* maximum number of failed authentication attempts, in seconds.
|
||||||
|
*/
|
||||||
|
private final int banDuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new AuthenticationFailureTracker that automatically blocks
|
||||||
|
* authentication attempts based on the provided blocking criteria.
|
||||||
|
*
|
||||||
|
* @param maxAttempts
|
||||||
|
* The maximum number of failed authentication attempts allowed before
|
||||||
|
* an address is temporarily banned.
|
||||||
|
*
|
||||||
|
* @param banDuration
|
||||||
|
* The length of time that each address should be banned after reaching
|
||||||
|
* the maximum number of failed authentication attempts, in seconds.
|
||||||
|
*
|
||||||
|
* @param maxAddresses
|
||||||
|
* The maximum number of unique IP addresses that should be tracked
|
||||||
|
* before discarding older tracked failures.
|
||||||
|
*/
|
||||||
|
public InMemoryAuthenticationFailureTracker(int maxAttempts, int banDuration,
|
||||||
|
long maxAddresses) {
|
||||||
|
|
||||||
|
this.maxAttempts = maxAttempts;
|
||||||
|
this.banDuration = banDuration;
|
||||||
|
|
||||||
|
// Limit maximum number of tracked addresses to configured upper bound
|
||||||
|
this.failures = Caffeine.newBuilder()
|
||||||
|
.maximumSize(maxAddresses)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reports that the given address has just failed to authenticate and
|
||||||
|
* returns the AuthenticationFailureStatus that represents that failure. If
|
||||||
|
* the address isn't already being tracked, it will begin being tracked as
|
||||||
|
* of this call. If the address is already tracked, the returned
|
||||||
|
* AuthenticationFailureStatus will represent past authentication failures,
|
||||||
|
* as well.
|
||||||
|
*
|
||||||
|
* @param address
|
||||||
|
* The address that has failed to authenticate.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* An AuthenticationFailureStatus that represents this latest
|
||||||
|
* authentication failure for the given address, as well as any past
|
||||||
|
* failures.
|
||||||
|
*/
|
||||||
|
private AuthenticationFailureStatus getAuthenticationFailure(String address) {
|
||||||
|
|
||||||
|
AuthenticationFailureStatus status = failures.get(address,
|
||||||
|
(addr) -> new AuthenticationFailureStatus(maxAttempts, banDuration));
|
||||||
|
|
||||||
|
status.notifyFailed();
|
||||||
|
return status;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reports that an authentication request has been received, as well as
|
||||||
|
* whether that request is known to have failed. If the associated address
|
||||||
|
* is currently being blocked, an exception will be thrown.
|
||||||
|
*
|
||||||
|
* @param credentials
|
||||||
|
* The credentials associated with the authentication request.
|
||||||
|
*
|
||||||
|
* @param failed
|
||||||
|
* Whether the request is known to have failed. If the status of the
|
||||||
|
* request is not yet known, this should be false.
|
||||||
|
*
|
||||||
|
* @throws GuacamoleException
|
||||||
|
* If the authentication request is being blocked due to brute force
|
||||||
|
* prevention rules.
|
||||||
|
*/
|
||||||
|
private void notifyAuthenticationStatus(Credentials credentials,
|
||||||
|
boolean failed) throws GuacamoleException {
|
||||||
|
|
||||||
|
// Ignore requests that do not contain explicit parameters of any kind
|
||||||
|
if (credentials.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Determine originating address of the authentication request
|
||||||
|
String address = credentials.getRemoteAddress();
|
||||||
|
if (address == null)
|
||||||
|
throw new GuacamoleServerException("Source address cannot be determined.");
|
||||||
|
|
||||||
|
// Get current failure status for the address associated with the
|
||||||
|
// authentication request, adding/updating that status if the request
|
||||||
|
// was itself a failure
|
||||||
|
AuthenticationFailureStatus status;
|
||||||
|
if (failed) {
|
||||||
|
status = getAuthenticationFailure(address);
|
||||||
|
logger.info("Authentication has failed for address \"{}\" (current total failures: {}/{}).",
|
||||||
|
address, status.getFailures(), maxAttempts);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
status = failures.getIfPresent(address);
|
||||||
|
|
||||||
|
if (status != null) {
|
||||||
|
|
||||||
|
// Explicitly block further processing of authentication/authorization
|
||||||
|
// if too many failures have occurred
|
||||||
|
if (status.isBlocked()) {
|
||||||
|
logger.warn("Blocking authentication attempt from address \"{}\" due to number of authentication failures.", address);
|
||||||
|
throw new TranslatableGuacamoleClientTooManyException("Too "
|
||||||
|
+ "many failed authentication attempts.",
|
||||||
|
"LOGIN.ERROR_TOO_MANY_ATTEMPTS");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean up tracking of failures if the address is no longer
|
||||||
|
// relevant (all failures are sufficiently old)
|
||||||
|
else if (!status.isValid()) {
|
||||||
|
logger.debug("Removing address \"{}\" from tracking as there are no recent authentication failures.", address);
|
||||||
|
failures.invalidate(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyAuthenticationRequestReceived(Credentials credentials)
|
||||||
|
throws GuacamoleException {
|
||||||
|
notifyAuthenticationStatus(credentials, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyAuthenticationSuccess(Credentials credentials)
|
||||||
|
throws GuacamoleException {
|
||||||
|
notifyAuthenticationStatus(credentials, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyAuthenticationFailed(Credentials credentials)
|
||||||
|
throws GuacamoleException {
|
||||||
|
notifyAuthenticationStatus(credentials, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.guacamole.auth.ban.status;
|
||||||
|
|
||||||
|
import org.apache.guacamole.GuacamoleException;
|
||||||
|
import org.apache.guacamole.net.auth.Credentials;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AuthenticationFailureTracker implementation that does nothing. All requests
|
||||||
|
* are ignored, regardless of status, and no tracking is performed.
|
||||||
|
*/
|
||||||
|
public class NullAuthenticationFailureTracker implements AuthenticationFailureTracker {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyAuthenticationRequestReceived(Credentials credentials)
|
||||||
|
throws GuacamoleException {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyAuthenticationSuccess(Credentials credentials)
|
||||||
|
throws GuacamoleException {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyAuthenticationFailed(Credentials credentials)
|
||||||
|
throws GuacamoleException {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user