diff --git a/.buildkite/aarch64_pipeline.yml b/.buildkite/aarch64_pipeline.yml new file mode 100644 index 000000000..6e25b565d --- /dev/null +++ b/.buildkite/aarch64_pipeline.yml @@ -0,0 +1,111 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json + +agents: + provider: aws + imagePrefix: platform-ingest-logstash-ubuntu-2204-aarch64 + instanceType: "m6g.4xlarge" + diskSizeGb: 200 + +steps: + - group: "Testing Phase" + key: "testing-phase" + steps: + - label: ":rspec: Ruby unit tests" + key: "ruby-unit-tests" + command: | + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh + ci/unit_tests.sh ruby + + - label: ":java: Java unit tests" + key: "java-unit-tests" + env: + # https://github.com/elastic/logstash/pull/15486 for background + ENABLE_SONARQUBE: "false" + command: | + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh + ci/unit_tests.sh java + + - label: ":lab_coat: Integration Tests / part 1" + key: "integration-tests-part-1" + command: | + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh + ci/integration_tests.sh split 0 + + - label: ":lab_coat: Integration Tests / part 2" + key: "integration-tests-part-2" + command: | + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh + ci/integration_tests.sh split 1 + + - label: ":lab_coat: IT Persistent Queues / part 1" + key: "integration-tests-qa-part-1" + command: | + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh + export FEATURE_FLAG=persistent_queues + ci/integration_tests.sh split 0 + + - label: ":lab_coat: IT Persistent Queues / part 2" + key: "integration-tests-qa-part-2" + command: | + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh + export FEATURE_FLAG=persistent_queues + ci/integration_tests.sh split 1 + + - label: ":lab_coat: x-pack unit tests" + key: "x-pack-unit-tests" + command: | + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh + x-pack/ci/unit_tests.sh + + - label: ":lab_coat: x-pack integration" + key: "integration-tests-x-pack" + command: | + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh + x-pack/ci/integration_tests.sh + + - group: "Acceptance Phase" + depends_on: "testing-phase" + key: "acceptance-phase" + steps: + - label: "Docker [{{matrix}}] flavor acceptance" + command: + set -euo pipefail + + source .buildkite/scripts/common/vm-agent.sh && ci/docker_acceptance_tests.sh {{matrix}} + matrix: + - "full" + - "oss" + + # *** TODO: enable after clarifying if acceptance tests really need vagrant on aarch64 + # - label: "Acceptance tests on {{matrix.distribution}}" + # agents: + # provider: aws + # imagePrefix: platform-ingest-logstash-{{matrix.distribution}}-aarch64 + # instanceType: "m6g.4xlarge" + # diskSizeGb: 200 + # command: + # set -euo pipefail + + # source .buildkite/scripts/common/vm-agent.sh && ci/acceptance_tests.sh {{matrix.suite}} + # matrix: + # setup: + # suite: + # - "debian" + # distribution: + # - "ubuntu-2204" diff --git a/.buildkite/dra_pipeline.yml b/.buildkite/dra_pipeline.yml new file mode 100644 index 000000000..4cd3cea93 --- /dev/null +++ b/.buildkite/dra_pipeline.yml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json + +steps: + - label: ":pipeline: Generate steps" + command: | + set -euo pipefail + + echo "--- Building [${WORKFLOW_TYPE}] artifacts" + python3 -m pip install pyyaml + echo "--- Building dynamic pipeline steps" + python3 .buildkite/scripts/dra/generatesteps.py | buildkite-agent pipeline upload diff --git a/.buildkite/exhaustive_tests_pipeline.yml b/.buildkite/exhaustive_tests_pipeline.yml new file mode 100644 index 000000000..fadccf232 --- /dev/null +++ b/.buildkite/exhaustive_tests_pipeline.yml @@ -0,0 +1,39 @@ +steps: + - label: "Exhaustive tests pipeline" + command: | + #!/usr/bin/env bash + echo "--- Check for docs changes" + set +e + .buildkite/scripts/common/check-files-changed.sh '^docs/.*' + if [[ $$? -eq 0 ]]; then + echo "^^^ +++" + echo "Skipping running pipeline as all changes are related to docs." + exit 0 + else + echo "Changes are not exclusively related to docs, continuing." + fi + + set -eo pipefail + + echo "--- Downloading prerequisites" + python3 -m pip install ruamel.yaml + curl -fsSL --retry-max-time 60 --retry 3 --retry-delay 5 -o /usr/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 + chmod a+x /usr/bin/yq + + echo "--- Printing generated dynamic steps" + set +e + python3 .buildkite/scripts/exhaustive-tests/generate-steps.py >pipeline_steps.yml + if [[ $$? -ne 0 ]]; then + echo "^^^ +++" + echo "There was a problem rendering the pipeline steps." + cat pipeline_steps.yml + echo "Exiting now." + exit 1 + else + set -eo pipefail + cat pipeline_steps.yml | yq . + fi + + set -eo pipefail + echo "--- Uploading steps to buildkite" + cat pipeline_steps.yml | buildkite-agent pipeline upload diff --git a/.buildkite/linux_jdk_matrix_pipeline.yml b/.buildkite/linux_jdk_matrix_pipeline.yml new file mode 100644 index 000000000..1a34f259e --- /dev/null +++ b/.buildkite/linux_jdk_matrix_pipeline.yml @@ -0,0 +1,91 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json + +env: + DEFAULT_MATRIX_OS: "ubuntu-2204" + DEFAULT_MATRIX_JDK: "adoptiumjdk_17" + +steps: + - input: "Test Parameters" + if: build.source != "schedule" && build.source != "trigger_job" + fields: + - select: "Operating System" + key: "matrix-os" + hint: "The operating system variant(s) to run on:" + required: true + multiple: true + default: "${DEFAULT_MATRIX_OS}" + options: + - label: "Ubuntu 22.04" + value: "ubuntu-2204" + - label: "Ubuntu 20.04" + value: "ubuntu-2004" + - label: "Debian 12" + value: "debian-12" + - label: "Debian 11" + value: "debian-11" + - label: "Debian 10" + value: "debian-10" + - label: "RHEL 9" + value: "rhel-9" + - label: "RHEL 8" + value: "rhel-8" + - label: "CentOS 7" + value: "centos-7" + - label: "Oracle Linux 8" + value: "oraclelinux-8" + - label: "Oracle Linux 7" + value: "oraclelinux-7" + - label: "Rocky Linux 8" + value: "rocky-linux-8" + - label: "Amazon Linux (2023)" + value: "amazonlinux-2023" + - label: "OpenSUSE Leap 15" + value: "opensuse-leap-15" + + - select: "Java" + key: "matrix-jdk" + hint: "The JDK to test with:" + required: true + multiple: true + default: "${DEFAULT_MATRIX_JDK}" + options: + - label: "Adoptium JDK 17 (Eclipse Temurin)" + value: "adoptiumjdk_17" + - label: "Adoptium JDK 11 (Eclipse Temurin)" + value: "adoptiumjdk_11" + - label: "OpenJDK 17" + value: "openjdk_17" + - label: "OpenJDK 11" + value: "openjdk_11" + - label: "Zulu 17" + value: "zulu_17" + - label: "Zulu 11" + value: "zulu_11" + + - wait: ~ + if: build.source != "schedule" && build.source != "trigger_job" + + - command: | + set -euo pipefail + + echo "--- Downloading prerequisites" + python3 -m pip install ruamel.yaml + + echo "--- Printing generated dynamic steps" + export MATRIX_OSES="$(buildkite-agent meta-data get matrix-os --default=${DEFAULT_MATRIX_OS})" + export MATRIX_JDKS="$(buildkite-agent meta-data get matrix-jdk --default=${DEFAULT_MATRIX_JDK})" + set +eo pipefail + python3 .buildkite/scripts/jdk-matrix-tests/generate-steps.py >pipeline_steps.yml + if [[ $$? -ne 0 ]]; then + echo "^^^ +++" + echo "There was a problem rendering the pipeline steps." + cat pipeline_steps.yml + echo "Exiting now." + exit 1 + else + set -eo pipefail + cat pipeline_steps.yml + fi + + echo "--- Uploading steps to buildkite" + cat pipeline_steps.yml | buildkite-agent pipeline upload diff --git a/.buildkite/pull_request_pipeline.yml b/.buildkite/pull_request_pipeline.yml new file mode 100644 index 000000000..d81f54754 --- /dev/null +++ b/.buildkite/pull_request_pipeline.yml @@ -0,0 +1,184 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json + +steps: + - label: ":passport_control: License check" + key: "license-check" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci" + cpu: "4" + memory: "6Gi" + ephemeralStorage: "100Gi" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + + source .buildkite/scripts/common/container-agent.sh + export JRUBY_OPTS="-J-Xmx1g" + export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info" + ci/license_check.sh -m 4G + + - label: ":rspec: Ruby unit tests" + key: "ruby-unit-tests" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci" + cpu: "4" + memory: "8Gi" + ephemeralStorage: "100Gi" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + + source .buildkite/scripts/common/container-agent.sh + ci/unit_tests.sh ruby + + - label: ":java: Java unit tests" + key: "java-unit-tests" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci" + cpu: "8" + memory: "16Gi" + ephemeralStorage: "100Gi" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + if [[ $BUILDKITE_PULL_REQUEST == "false" ]]; then + # https://github.com/elastic/logstash/pull/15486 for background + export ENABLE_SONARQUBE="false" + else + source .buildkite/scripts/pull-requests/sonar-env.sh + fi + + source .buildkite/scripts/common/container-agent.sh + ci/unit_tests.sh java + artifact_paths: + - "**/build/test-results/javaTests/TEST-*.xml" + + - label: ":lab_coat: Integration Tests / part 1" + key: "integration-tests-part-1" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci-no-root" + cpu: "8" + memory: "16Gi" + ephemeralStorage: "100Gi" + # Run as a non-root user + imageUID: "1002" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + + source .buildkite/scripts/common/container-agent.sh + ci/integration_tests.sh split 0 + + - label: ":lab_coat: Integration Tests / part 2" + key: "integration-tests-part-2" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci-no-root" + cpu: "8" + memory: "16Gi" + ephemeralStorage: "100Gi" + # Run as a non-root user + imageUID: "1002" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + + source .buildkite/scripts/common/container-agent.sh + ci/integration_tests.sh split 1 + + - label: ":lab_coat: IT Persistent Queues / part 1" + key: "integration-tests-qa-part-1" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci-no-root" + cpu: "8" + memory: "16Gi" + ephemeralStorage: "100Gi" + # Run as non root (logstash) user. UID is hardcoded in image. + imageUID: "1002" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + + source .buildkite/scripts/common/container-agent.sh + export FEATURE_FLAG=persistent_queues + ci/integration_tests.sh split 0 + + - label: ":lab_coat: IT Persistent Queues / part 2" + key: "integration-tests-qa-part-2" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci-no-root" + cpu: "8" + memory: "16Gi" + ephemeralStorage: "100Gi" + # Run as non root (logstash) user. UID is hardcoded in image. + imageUID: "1002" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + + source .buildkite/scripts/common/container-agent.sh + export FEATURE_FLAG=persistent_queues + ci/integration_tests.sh split 1 + + - label: ":lab_coat: x-pack unit tests" + key: "x-pack-unit-tests" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci-no-root" + cpu: "8" + memory: "16Gi" + ephemeralStorage: "100Gi" + # Run as non root (logstash) user. UID is hardcoded in image. + imageUID: "1002" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + + source .buildkite/scripts/common/container-agent.sh + x-pack/ci/unit_tests.sh + + - label: ":lab_coat: x-pack integration" + key: "integration-tests-x-pack" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci-no-root" + cpu: "8" + memory: "16Gi" + ephemeralStorage: "100Gi" + # Run as non root (logstash) user. UID is hardcoded in image. + imageUID: "1002" + retry: + automatic: + - limit: 3 + command: | + set -euo pipefail + + source .buildkite/scripts/common/container-agent.sh + x-pack/ci/integration_tests.sh + + - wait: ~ + continue_on_failure: true + + - label: "🏁 Annotate JUnit results" + # the plugin requires docker run, hence the use of a VM + agents: + provider: gcp + imageProject: elastic-images-prod + image: family/platform-ingest-logstash-ubuntu-2204 + machineType: "n2-standard-2" + plugins: + - junit-annotate#v2.4.1: + artifacts: "**/TEST-*.xml" diff --git a/.buildkite/scripts/common/check-files-changed.sh b/.buildkite/scripts/common/check-files-changed.sh new file mode 100755 index 000000000..c04db83b2 --- /dev/null +++ b/.buildkite/scripts/common/check-files-changed.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# ********************************************************** +# Returns true if current checkout compared to parent commit +# has changes ONLY matching the argument regexp +# +# Used primarily to skip running the exhaustive pipeline +# when only docs changes have happened. +# ******************************************************** + +if [[ -z "$1" ]]; then + echo "Usage: $0 " + exit 1 +fi + +previous_commit=$(git rev-parse HEAD^) +changed_files=$(git diff --name-only $previous_commit) + +if [[ -n "$changed_files" ]] && [[ -z "$(echo "$changed_files" | grep -vE "$1")" ]]; then + echo "All files compared to the previous commit [$previous_commit] match the specified regex: [$1]" + echo "Files changed:" + git diff --name-only HEAD^ + exit 0 +else + exit 1 +fi diff --git a/.buildkite/scripts/common/container-agent.sh b/.buildkite/scripts/common/container-agent.sh new file mode 100644 index 000000000..e0e2019e2 --- /dev/null +++ b/.buildkite/scripts/common/container-agent.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# ******************************************************** +# This file contains prerequisite bootstrap invocations +# required for Logstash CI when using containerized agents +# ******************************************************** + +set -euo pipefail + +if [[ $(whoami) == "logstash" ]] +then + export PATH="/home/logstash/.rbenv/bin:$PATH" + eval "$(rbenv init -)" +else + export PATH="/usr/local/rbenv/bin:$PATH" + eval "$(rbenv init -)" +fi diff --git a/.buildkite/scripts/common/vm-agent-multi-jdk.sh b/.buildkite/scripts/common/vm-agent-multi-jdk.sh new file mode 100644 index 000000000..364b0ba24 --- /dev/null +++ b/.buildkite/scripts/common/vm-agent-multi-jdk.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +# ************************************************************** +# This file contains prerequisite bootstrap invocations +# required for Logstash CI when using custom multi-jdk VM images +# It is primarily used by the exhaustive BK pipeline. +# ************************************************************** + +set -euo pipefail + +source .ci/java-versions.properties +export BUILD_JAVA_HOME=/opt/buildkite-agent/.java/$LS_BUILD_JAVA + +export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$BUILD_JAVA_HOME/bin:$PATH" + +eval "$(rbenv init -)" diff --git a/.buildkite/scripts/common/vm-agent.sh b/.buildkite/scripts/common/vm-agent.sh new file mode 100644 index 000000000..f01a92254 --- /dev/null +++ b/.buildkite/scripts/common/vm-agent.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# ******************************************************** +# This file contains prerequisite bootstrap invocations +# required for Logstash CI when using VM/baremetal agents +# ******************************************************** + +set -euo pipefail + +export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:/opt/buildkite-agent/.java/bin:$PATH" +export JAVA_HOME="/opt/buildkite-agent/.java" +eval "$(rbenv init -)" diff --git a/.buildkite/scripts/common/vm-images.json b/.buildkite/scripts/common/vm-images.json new file mode 100644 index 000000000..6d34fb2a1 --- /dev/null +++ b/.buildkite/scripts/common/vm-images.json @@ -0,0 +1,13 @@ +{ + "#comment": "This file lists all custom vm images. We use it to make decisions about randomized CI jobs.", + "linux": { + "ubuntu": ["ubuntu-2204", "ubuntu-2004"], + "debian": ["debian-12", "debian-11", "debian-10"], + "rhel": ["rhel-9", "rhel-8"], + "oraclelinux": ["oraclelinux-8", "oraclelinux-7"], + "rocky": ["rocky-linux-8"], + "amazonlinux": ["amazonlinux-2023"], + "opensuse": ["opensuse-leap-15"] + }, + "windows": ["windows-2022", "windows-2019", "windows-2016"] +} diff --git a/.buildkite/scripts/dra/build_docker.sh b/.buildkite/scripts/dra/build_docker.sh new file mode 100755 index 000000000..fee8cce0e --- /dev/null +++ b/.buildkite/scripts/dra/build_docker.sh @@ -0,0 +1,90 @@ +#!/bin/bash -ie +#Note - ensure that the -e flag is set to properly set the $? status if any command fails +echo "####################################################################" +echo "##################### Starting $0" +echo "####################################################################" + +source ./$(dirname "$0")/common.sh + +# WORKFLOW_TYPE is a CI externally configured environment variable that could assume "snapshot" or "staging" values +case "$WORKFLOW_TYPE" in + snapshot) + info "Building artifacts for the $WORKFLOW_TYPE workflow..." + if [ -z "$VERSION_QUALIFIER_OPT" ]; then + rake artifact:docker || error "artifact:docker build failed." + rake artifact:docker_oss || error "artifact:docker_oss build failed." + rake artifact:dockerfiles || error "artifact:dockerfiles build failed." + if [ "$ARCH" != "aarch64" ]; then + rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed." + fi + else + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker || error "artifact:docker build failed." + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker_oss || error "artifact:docker_oss build failed." + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:dockerfiles || error "artifact:dockerfiles build failed." + if [ "$ARCH" != "aarch64" ]; then + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed." + fi + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + fi + STACK_VERSION=${STACK_VERSION}-SNAPSHOT + info "Build complete, setting STACK_VERSION to $STACK_VERSION." + ;; + staging) + info "Building artifacts for the $WORKFLOW_TYPE workflow..." + if [ -z "$VERSION_QUALIFIER_OPT" ]; then + RELEASE=1 rake artifact:docker || error "artifact:docker build failed." + RELEASE=1 rake artifact:docker_oss || error "artifact:docker_oss build failed." + RELEASE=1 rake artifact:dockerfiles || error "artifact:dockerfiles build failed." + if [ "$ARCH" != "aarch64" ]; then + RELEASE=1 rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed." + fi + else + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker || error "artifact:docker build failed." + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker_oss || error "artifact:docker_oss build failed." + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:dockerfiles || error "artifact:dockerfiles build failed." + if [ "$ARCH" != "aarch64" ]; then + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed." + fi + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + fi + info "Build complete, setting STACK_VERSION to $STACK_VERSION." + ;; + *) + error "Workflow (WORKFLOW_TYPE variable) is not set, exiting..." + ;; +esac + +info "Saving tar.gz for docker images" +save_docker_tarballs "${ARCH}" "${STACK_VERSION}" + +info "Generated Artifacts" +for file in build/logstash-*; do shasum $file;done + +info "Uploading DRA artifacts in buildkite's artifact store ..." +# Note the deb, rpm tar.gz AARCH64 files generated has already been loaded by the build_packages.sh +images="logstash logstash-oss" +if [ "$ARCH" != "aarch64" ]; then + # No logstash-ubi8 for AARCH64 + images="logstash logstash-oss logstash-ubi8" +fi +for image in ${images}; do + buildkite-agent artifact upload "build/$image-${STACK_VERSION}-docker-image-${ARCH}.tar.gz" +done + +# Upload 'docker-build-context.tar.gz' files only when build x86_64, otherwise they will be +# overwritten when building aarch64 (or viceversa). +if [ "$ARCH" != "aarch64" ]; then + for image in logstash logstash-oss logstash-ubi8 logstash-ironbank; do + buildkite-agent artifact upload "build/${image}-${STACK_VERSION}-docker-build-context.tar.gz" + done +fi + +echo "####################################################################" +echo "##################### Finishing $0" +echo "####################################################################" diff --git a/.buildkite/scripts/dra/build_packages.sh b/.buildkite/scripts/dra/build_packages.sh new file mode 100755 index 000000000..2bd4ed175 --- /dev/null +++ b/.buildkite/scripts/dra/build_packages.sh @@ -0,0 +1,58 @@ +#!/bin/bash -ie +#Note - ensure that the -e flag is set to properly set the $? status if any command fails +echo "####################################################################" +echo "##################### Starting $0" +echo "####################################################################" + +source ./$(dirname "$0")/common.sh + +# WORKFLOW_TYPE is a CI externally configured environment variable that could assume "snapshot" or "staging" values +case "$WORKFLOW_TYPE" in + snapshot) + info "Building artifacts for the $WORKFLOW_TYPE workflow..." + if [ -z "$VERSION_QUALIFIER_OPT" ]; then + SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed." + else + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed." + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + fi + STACK_VERSION=${STACK_VERSION}-SNAPSHOT + info "Build complete, setting STACK_VERSION to $STACK_VERSION." + ;; + staging) + info "Building artifacts for the $WORKFLOW_TYPE workflow..." + if [ -z "$VERSION_QUALIFIER_OPT" ]; then + RELEASE=1 SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed." + else + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed." + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + fi + info "Build complete, setting STACK_VERSION to $STACK_VERSION." + ;; + *) + error "Workflow (WORKFLOW_TYPE variable) is not set, exiting..." + ;; +esac + +info "Generated Artifacts" +for file in build/logstash-*; do shasum $file;done + +info "Creating dependencies report for ${STACK_VERSION}" +mkdir -p build/distributions/dependencies-reports/ +bin/dependencies-report --csv=build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv + +info "Generated dependencies report" +shasum build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv + +info "Uploading DRA artifacts in buildkite's artifact store ..." +buildkite-agent artifact upload "build/logstash*;build/distributions/dependencies-reports/logstash*" + +echo "####################################################################" +echo "##################### Finishing $0" +echo "####################################################################" diff --git a/.buildkite/scripts/dra/common.sh b/.buildkite/scripts/dra/common.sh new file mode 100755 index 000000000..cdb6300a2 --- /dev/null +++ b/.buildkite/scripts/dra/common.sh @@ -0,0 +1,46 @@ +function info { + echo "--- INFO: $1" +} + +function error { + echo "--- ERROR: $1" + exit 1 +} + +function save_docker_tarballs { + local arch="${1:?architecture required}" + local version="${2:?stack-version required}" + local images="logstash logstash-oss" + if [ "${arch}" != "aarch64" ]; then + # No logstash-ubi8 for AARCH64 + images="logstash logstash-oss logstash-ubi8" + fi + + for image in ${images}; do + tar_file="${image}-${version}-docker-image-${arch}.tar" + docker save -o "build/${tar_file}" \ + "docker.elastic.co/logstash/${image}:${version}" || \ + error "Unable to save tar file ${tar_file} for ${image} image." + # NOTE: if docker save exited with non-zero the error log already exited the script + gzip "build/${tar_file}" + done +} + +# Since we are using the system jruby, we need to make sure our jvm process +# uses at least 1g of memory, If we don't do this we can get OOM issues when +# installing gems. See https://github.com/elastic/logstash/issues/5179 +export JRUBY_OPTS="-J-Xmx1g" + +# Extract the version number from the version.yml file +# e.g.: 8.6.0 +# The suffix part like alpha1 etc is managed by the optional VERSION_QUALIFIER_OPT environment variable +STACK_VERSION=`cat versions.yml | sed -n 's/^logstash\:[[:space:]]\([[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\)$/\1/p'` + +info "Agent is running on architecture [$(uname -i)]" + +export VERSION_QUALIFIER_OPT=${VERSION_QUALIFIER_OPT:-""} +export DRA_DRY_RUN=${DRA_DRY_RUN:-""} + +if [[ ! -z $DRA_DRY_RUN && $BUILDKITE_STEP_KEY == "logstash_publish_dra" ]]; then + info "Release manager will run in dry-run mode [$DRA_DRY_RUN]" +fi diff --git a/.buildkite/scripts/dra/docker-env-setup.sh b/.buildkite/scripts/dra/docker-env-setup.sh new file mode 100755 index 000000000..6787a4e9d --- /dev/null +++ b/.buildkite/scripts/dra/docker-env-setup.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -euo pipefail + +DOCKER_REGISTRY="docker.elastic.co" +DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" +CI_DRA_ROLE_PATH="kv/ci-shared/release/dra-role" + + +function docker_login { + DOCKER_USERNAME_SECRET=$(retry -t 5 -- vault kv get -field user "${DOCKER_REGISTRY_SECRET_PATH}") + DOCKER_PASSWORD_SECRET=$(retry -t 5 -- vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}") + docker login -u "${DOCKER_USERNAME_SECRET}" -p "${DOCKER_PASSWORD_SECRET}" "${DOCKER_REGISTRY}" 2>/dev/null + unset DOCKER_USERNAME_SECRET DOCKER_PASSWORD_SECRET +} + +function release_manager_login { + DRA_CREDS_SECRET=$(retry -t 5 -- vault kv get -field=data -format=json ${CI_DRA_ROLE_PATH}) + VAULT_ADDR_SECRET=$(echo ${DRA_CREDS_SECRET} | jq -r '.vault_addr') + VAULT_ROLE_ID=$(echo ${DRA_CREDS_SECRET} | jq -r '.role_id') + VAULT_SECRET_ID=$(echo ${DRA_CREDS_SECRET} | jq -r '.secret_id') + export VAULT_ADDR_SECRET VAULT_ROLE_ID VAULT_SECRET_ID +} diff --git a/.buildkite/scripts/dra/docker-env-teardown.sh b/.buildkite/scripts/dra/docker-env-teardown.sh new file mode 100755 index 000000000..8e7fe0a9a --- /dev/null +++ b/.buildkite/scripts/dra/docker-env-teardown.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +set -euo pipefail + +# Unset all variables ending with _SECRET or _TOKEN +for var in $(printenv | sed 's;=.*;;' | sort); do + if [[ $var != "VAULT_ADDR" && ("$var" == *_SECRET || "$var" == *_TOKEN || "$var" == *VAULT* ) ]]; then + unset "$var" + fi +done + +if command -v docker &>/dev/null; then + DOCKER_REGISTRY="docker.elastic.co" + docker logout $DOCKER_REGISTRY +fi diff --git a/.buildkite/scripts/dra/generatesteps.py b/.buildkite/scripts/dra/generatesteps.py new file mode 100644 index 000000000..7ede76554 --- /dev/null +++ b/.buildkite/scripts/dra/generatesteps.py @@ -0,0 +1,131 @@ +import os +import sys + +import yaml + +def to_bk_key_friendly_string(key): + """ + Convert and return key to an acceptable format for Buildkite's key: field + Only alphanumerics, dashes and underscores are allowed. + """ + + mapping_table = str.maketrans({'.': '_'}) + + return key.translate(mapping_table) + +def package_x86_step(branch, workflow_type): + step = f''' +- label: ":package: Build packages / {branch}-{workflow_type.upper()} DRA artifacts" + key: "logstash_build_packages_dra" + agents: + provider: gcp + imageProject: elastic-images-prod + image: family/platform-ingest-logstash-ubuntu-2004 + machineType: "n2-standard-16" + diskSizeGb: 200 + command: | + export WORKFLOW_TYPE="{workflow_type}" + export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH" + eval "$(rbenv init -)" + .buildkite/scripts/dra/build_packages.sh +''' + + return step + +def package_x86_docker_step(branch, workflow_type): + step = f''' +- label: ":package: Build x86_64 Docker / {branch}-{workflow_type.upper()} DRA artifacts" + key: "logstash_build_x86_64_docker_dra" + agents: + provider: gcp + imageProject: elastic-images-prod + image: family/platform-ingest-logstash-ubuntu-2004 + machineType: "n2-standard-16" + diskSizeGb: 200 + command: | + export WORKFLOW_TYPE="{workflow_type}" + export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH" + export ARCH="x86_64" + eval "$(rbenv init -)" + .buildkite/scripts/dra/build_docker.sh +''' + + return step + +def package_aarch64_docker_step(branch, workflow_type): + step = f''' +- label: ":package: Build aarch64 Docker / {branch}-{workflow_type.upper()} DRA artifacts" + key: "logstash_build_aarch64_docker_dra" + agents: + provider: aws + imagePrefix: platform-ingest-logstash-ubuntu-2004-aarch64 + instanceType: "m6g.4xlarge" + diskSizeGb: 200 + command: | + export WORKFLOW_TYPE="{workflow_type}" + export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH" + export ARCH="aarch64" + eval "$(rbenv init -)" + .buildkite/scripts/dra/build_docker.sh +''' + + return step + +def publish_dra_step(branch, workflow_type, depends_on): + step = f''' +- label: ":elastic-stack: Publish / {branch}-{workflow_type.upper()} DRA artifacts" + key: "logstash_publish_dra" + depends_on: "{depends_on}" + agents: + provider: gcp + imageProject: elastic-images-prod + image: family/platform-ingest-logstash-ubuntu-2004 + machineType: "n2-standard-16" + diskSizeGb: 200 + command: | + echo "+++ Restoring Artifacts" + buildkite-agent artifact download "build/logstash*" . + buildkite-agent artifact download "build/distributions/**/*" . + echo "+++ Changing permissions for the release manager" + sudo chown -R :1000 build + echo "+++ Running DRA publish step" + export WORKFLOW_TYPE="{workflow_type}" + .buildkite/scripts/dra/publish.sh + ''' + + return step + +def build_steps_to_yaml(branch, workflow_type): + steps = [] + steps.extend(yaml.safe_load(package_x86_step(branch, workflow_type))) + steps.extend(yaml.safe_load(package_x86_docker_step(branch, workflow_type))) + steps.extend(yaml.safe_load(package_aarch64_docker_step(branch, workflow_type))) + + return steps + +if __name__ == "__main__": + try: + workflow_type = os.environ["WORKFLOW_TYPE"] + except ImportError: + print(f"Missing env variable WORKFLOW_TYPE. Use export WORKFLOW_TYPE=\n.Exiting.") + exit(1) + + branch = os.environ["BUILDKITE_BRANCH"] + + structure = {"steps": []} + + # Group defining parallel steps that build and save artifacts + group_key = to_bk_key_friendly_string(f"logstash_dra_{workflow_type}") + + structure["steps"].append({ + "group": f":Build Artifacts - {workflow_type.upper()}", + "key": group_key, + "steps": build_steps_to_yaml(branch, workflow_type), + }) + + # Final step: pull artifacts built above and publish them via the release-manager + structure["steps"].extend( + yaml.safe_load(publish_dra_step(branch, workflow_type, depends_on=group_key)), + ) + + print('# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json\n' + yaml.dump(structure, Dumper=yaml.Dumper, sort_keys=False)) diff --git a/.buildkite/scripts/dra/publish.sh b/.buildkite/scripts/dra/publish.sh new file mode 100755 index 000000000..598da84bb --- /dev/null +++ b/.buildkite/scripts/dra/publish.sh @@ -0,0 +1,109 @@ +#!/bin/bash -i +set -euo pipefail + +echo "####################################################################" +echo "##################### Starting $0" +echo "####################################################################" + +source ./$(dirname "$0")/common.sh + +PLAIN_STACK_VERSION=$STACK_VERSION + +# This is the branch selector that needs to be passed to the release-manager +# It has to be the name of the branch which originates the artifacts. +RELEASE_VER=`cat versions.yml | sed -n 's/^logstash\:[[:space:]]\([[:digit:]]*\.[[:digit:]]*\)\.[[:digit:]]*$/\1/p'` +if [ -n "$(git ls-remote --heads origin $RELEASE_VER)" ] ; then + RELEASE_BRANCH=$RELEASE_VER +else + RELEASE_BRANCH=main +fi + +if [ -n "$VERSION_QUALIFIER_OPT" ]; then + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + PLAIN_STACK_VERSION="${PLAIN_STACK_VERSION}-${VERSION_QUALIFIER_OPT}" +fi + +case "$WORKFLOW_TYPE" in + snapshot) + STACK_VERSION=${STACK_VERSION}-SNAPSHOT + ;; + staging) + ;; + *) + error "Worklflow (WORKFLOW_TYPE variable) is not set, exiting..." + ;; +esac + +info "Uploading artifacts for ${WORKFLOW_TYPE} workflow on branch: ${RELEASE_BRANCH}" + +if [ "$RELEASE_VER" != "7.17" ]; then + # Version 7.17.x doesn't generates ARM artifacts for Darwin + # TODO see if we need to do anything here + : +fi + +# Deleting ubi8 for aarch64 for the time being. This image itself is not being built, and it is not expected +# by the release manager. +# See https://github.com/elastic/infra/blob/master/cd/release/release-manager/project-configs/8.5/logstash.gradle +# for more details. +# TODO filter it out when uploading artifacts instead +rm -f build/logstash-ubi8-${STACK_VERSION}-docker-image-aarch64.tar.gz + +info "Downloaded ARTIFACTS sha report" +for file in build/logstash-*; do shasum $file;done + +mv build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv build/distributions/dependencies-${STACK_VERSION}.csv + +# set required permissions on artifacts and directory +chmod -R a+r build/* +chmod -R a+w build + +chmod -R a+r $PWD/* +chmod -R a+w $PWD + +info "Setup docker credentials" +# TODO disable tracing +# set +o xtrace +source ./$(dirname "$0")/docker-env-setup.sh +release_manager_login + +# ensure the latest image has been pulled +docker pull docker.elastic.co/infra/release-manager:latest + +info "Running the release manager ..." + +# collect the artifacts for use with the unified build +docker run --rm \ + --name release-manager \ + -e VAULT_ADDR="${VAULT_ADDR_SECRET}" \ + -e VAULT_ROLE_ID \ + -e VAULT_SECRET_ID \ + --mount type=bind,readonly=false,src="$PWD",target=/artifacts \ + docker.elastic.co/infra/release-manager:latest \ + cli collect \ + --project logstash \ + --branch ${RELEASE_BRANCH} \ + --commit "$(git rev-parse HEAD)" \ + --workflow "${WORKFLOW_TYPE}" \ + --version "${PLAIN_STACK_VERSION}" \ + --artifact-set main \ + ${DRA_DRY_RUN} | tee rm-output.txt + +# extract the summary URL from a release manager output line like: +# Report summary-8.22.0.html can be found at https://artifacts-staging.elastic.co/logstash/8.22.0-ABCDEFGH/summary-8.22.0.html + +SUMMARY_URL=$(grep -E '^Report summary-.* can be found at ' rm-output.txt | grep -oP 'https://\S+' | awk '{print $1}') +rm rm-output.txt + +# and make it easily clickable as a Builkite annotation +printf "**Summary link:** [${SUMMARY_URL}](${SUMMARY_URL})\n" | buildkite-agent annotate --style=success + +info "Teardown logins" +$(dirname "$0")/docker-env-teardown.sh + +echo "####################################################################" +echo "##################### Finishing $0" +echo "####################################################################" diff --git a/.buildkite/scripts/exhaustive-tests/generate-steps.py b/.buildkite/scripts/exhaustive-tests/generate-steps.py new file mode 100644 index 000000000..772b2d4d6 --- /dev/null +++ b/.buildkite/scripts/exhaustive-tests/generate-steps.py @@ -0,0 +1,225 @@ +import json +import os +import random +import sys +import typing + +from ruamel.yaml import YAML +from ruamel.yaml.scalarstring import LiteralScalarString + +VM_IMAGES_FILE = ".buildkite/scripts/common/vm-images.json" +VM_IMAGE_PREFIX = "platform-ingest-logstash-multi-jdk-" + +ACCEPTANCE_LINUX_OSES = ["ubuntu-2204", "ubuntu-2004", "debian-11", "debian-10", "rhel-8", "oraclelinux-7", "rocky-linux-8", "opensuse-leap-15", "amazonlinux-2023"] + +CUR_PATH = os.path.dirname(os.path.abspath(__file__)) + +def slugify_bk_key(key: str) -> str: + """ + Convert and return key to an acceptable format for Buildkite's key: field + Only alphanumerics, dashes and underscores are allowed. + """ + + mapping_table = str.maketrans({'.': '_', ' ': '_', '/': '_'}) + + return key.translate(mapping_table) + +def testing_phase_steps() -> typing.Dict[str, typing.List[typing.Any]]: + with open(os.path.join(CUR_PATH, "..", "..", "pull_request_pipeline.yml")) as fp: + return YAML().load(fp) + +def compat_linux_step(imagesuffix: str) -> dict[str, typing.Any]: + linux_command = LiteralScalarString("""#!/usr/bin/env bash +set -eo pipefail +source .buildkite/scripts/common/vm-agent.sh +ci/unit_tests.sh""") + + return compat_step(imagesuffix, command=linux_command) + + +def compat_windows_step(imagesuffix: str) -> dict[str, typing.Any]: + windows_command = LiteralScalarString(r'''.\\ci\\unit_tests.ps1''') + + return compat_step(imagesuffix, command=windows_command) + +def compat_step(imagesuffix: str, command: LiteralScalarString) -> dict[str, typing.Any]: + step = { + "label": imagesuffix, + "key": slugify_bk_key(f"compat-linux-{imagesuffix}"), + "command": command, + "agents": {}, + "retry": {"automatic": [{"limit": 3}]}, + } + + if "amazon" in imagesuffix.lower(): + step["agents"] = { + "provider": "aws", + "imagePrefix": f"{VM_IMAGE_PREFIX}{imagesuffix}", + "instanceType": "m5.2xlarge", + "diskSizeGb": 200, + } + else: + step["agents"] = { + "provider": "gcp", + "imageProject": "elastic-images-prod", + "image": f"family/{VM_IMAGE_PREFIX}{imagesuffix}", + "machineType": "n2-standard-4", + "diskSizeGb": 200, + "diskType": "pd-ssd", + } + + return step + +def randomized_linux_oses() -> typing.List[str]: + with open(VM_IMAGES_FILE, "r") as fp: + all_oses = json.load(fp) + + randomized_oses = [] + for _, family_oses in all_oses["linux"].items(): + randomized_oses.append(random.choice(family_oses)) + return randomized_oses + +def randomized_windows_os() -> str: + with open(VM_IMAGES_FILE, "r") as fp: + all_oses = json.load(fp) + + return random.choice(all_oses["windows"]) + +def aws_agent(vm_name: str, instance_type: str, image_prefix: str = "platform-ingest-logstash-multi-jdk", disk_size_gb: int = 200) -> dict[str, typing.Any]: + return { + "provider": "aws", + "imagePrefix": f"{image_prefix}-{vm_name}", + "instanceType": instance_type, + "diskSizeGb": disk_size_gb, + } + +def gcp_agent(vm_name: str, instance_type: str = "n2-standard-4", image_prefix: str = "family/platform-ingest-logstash-multi-jdk", disk_size_gb: int = 200) -> dict[str, typing.Any]: + return { + "provider": "gcp", + "imageProject": "elastic-images-prod", + "image": f"{image_prefix}-{vm_name}", + "machineType": instance_type, + "diskSizeGb": disk_size_gb, + "diskType": "pd-ssd", + } + +def acceptance_linux_vms() -> typing.List[str]: + acceptance_linux_vms = os.getenv("ACCEPTANCE_LINUX_OSES") + if acceptance_linux_vms: + acceptance_linux_vms = acceptance_linux_vms.split(",") + else: + acceptance_linux_vms = ACCEPTANCE_LINUX_OSES + + return acceptance_linux_vms + +def acceptance_linux_steps() -> list[typing.Any]: + steps = [] + + build_artifacts_step = { + "label": "Build artifacts", + "key": "acceptance-build-artifacts", + # use the same agent as the one we use for building DRA artifacts + # NOTE! specifically on 7.17 we must use ubuntu 20.04 or less due to https://github.com/jruby/jruby/pull/7611#issuecomment-1750387837 + "agents": gcp_agent("ubuntu-2004", instance_type="n2-standard-16", image_prefix="family/platform-ingest-logstash"), + "command": LiteralScalarString("""#!/usr/bin/env bash +set -eo pipefail +source .buildkite/scripts/common/vm-agent.sh +echo "--- Building all artifacts" +./gradlew clean bootstrap +rake artifact:deb artifact:rpm +"""), + "artifact_paths": [ + "build/*rpm", + "build/*deb", + "build/*tar.gz", + ], + } + + steps.append(build_artifacts_step) + + for vm in acceptance_linux_vms(): + step = { + "label": vm, + "key": slugify_bk_key(vm), + "agents": aws_agent(vm,instance_type="m5.4xlarge") if "amazonlinux" in vm else gcp_agent(vm), + "depends_on": "acceptance-build-artifacts", + "retry": {"automatic": [{"limit": 3}]}, + "command": LiteralScalarString("""#!/usr/bin/env bash +set -eo pipefail +source .buildkite/scripts/common/vm-agent-multi-jdk.sh +source /etc/os-release +if [[ "$$(echo $$ID_LIKE | tr '[:upper:]' '[:lower:]')" =~ (rhel|fedora) && "$${VERSION_ID%.*}" -le 7 ]]; then + # jruby-9.3.10.0 unavailable on centos-7 / oel-7, see https://github.com/jruby/jruby/issues/7579#issuecomment-1425885324 / https://github.com/jruby/jruby/issues/7695 + # we only need a working jruby to run the acceptance test framework -- the packages have been prebuilt in a previous stage + rbenv local jruby-9.4.5.0 +fi +ci/acceptance_tests.sh"""), + } + steps.append(step) + + return steps + +def acceptance_docker_steps()-> list[typing.Any]: + steps = [] + for flavor in ["full", "oss", "ubi8"]: + steps.append({ + "label": f":docker: {flavor} flavor acceptance", + "agents": gcp_agent(vm_name="ubuntu-2204", image_prefix="family/platform-ingest-logstash"), + "command": LiteralScalarString(f"""#!/usr/bin/env bash +set -euo pipefail +source .buildkite/scripts/common/vm-agent.sh +ci/docker_acceptance_tests.sh {flavor}"""), + "retry": {"automatic": [{"limit": 3}]}, + }) + + return steps + +if __name__ == "__main__": + LINUX_OS_ENV_VAR_OVERRIDE = os.getenv("LINUX_OS") + WINDOWS_OS_ENV_VAR_OVERRIDE = os.getenv("WINDOWS_OS") + + compat_linux_steps = [] + linux_test_oses = [LINUX_OS_ENV_VAR_OVERRIDE] if LINUX_OS_ENV_VAR_OVERRIDE else randomized_linux_oses() + for linux_os in linux_test_oses: + compat_linux_steps.append(compat_linux_step(linux_os)) + + windows_test_os = WINDOWS_OS_ENV_VAR_OVERRIDE or randomized_windows_os() + + structure = {"steps": []} + + structure["steps"].append({ + "group": "Testing Phase", + "key": "testing-phase", + **testing_phase_steps(), + }) + + structure["steps"].append({ + "group": "Compatibility / Linux", + "key": "compatibility-linux", + "depends_on": "testing-phase", + "steps": compat_linux_steps, + }) + + structure["steps"].append({ + "group": "Compatibility / Windows", + "key": "compatibility-windows", + "depends_on": "testing-phase", + "steps": [compat_windows_step(imagesuffix=windows_test_os)], + }) + + structure["steps"].append({ + "group": "Acceptance / Packaging", + "key": "acceptance-packaging", + "depends_on": ["testing-phase"], + "steps": acceptance_linux_steps(), + }) + + structure["steps"].append({ + "group": "Acceptance / Docker", + "key": "acceptance-docker", + "depends_on": ["testing-phase"], + "steps": acceptance_docker_steps(), + }) + + print('# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json') + YAML().dump(structure, sys.stdout) diff --git a/.buildkite/scripts/jdk-matrix-tests/generate-steps.py b/.buildkite/scripts/jdk-matrix-tests/generate-steps.py new file mode 100644 index 000000000..681272b85 --- /dev/null +++ b/.buildkite/scripts/jdk-matrix-tests/generate-steps.py @@ -0,0 +1,405 @@ +import abc +import copy +from dataclasses import dataclass, field +import os +import sys +import typing + +from ruamel.yaml import YAML +from ruamel.yaml.scalarstring import LiteralScalarString + +ENABLED_RETRIES = {"automatic": [{"limit": 3}]} + +@dataclass +class JobRetValues: + step_label: str + command: str + step_key: str + depends: str + agent: typing.Dict[typing.Any, typing.Any] + retry: typing.Optional[typing.Dict[typing.Any, typing.Any]] = None + artifact_paths: list = field(default_factory=list) + + +class GCPAgent: + def __init__(self, image: str, machineType: str, diskSizeGb: int = 200, diskType: str = "pd-ssd") -> None: + self.provider = "gcp" + self.imageProject = "elastic-images-prod" + self.image = image + self.machineType = machineType + self.diskSizeGb = diskSizeGb + self.diskType = diskType + + def to_dict(self): + return { + "provider": self.provider, + "imageProject": self.imageProject, + "image": self.image, + "machineType": self.machineType, + "diskSizeGb": self.diskSizeGb, + "diskType": self.diskType, + } + + +class AWSAgent: + def __init__(self, imagePrefix: str, instanceType: str, diskSizeGb: int): + self.provider = "aws" + self.imagePrefix = imagePrefix + self.instanceType = instanceType + self.diskSizeGb = diskSizeGb + + def to_dict(self): + return { + "provider": self.provider, + "imagePrefix": self.imagePrefix, + "instanceType": self.instanceType, + "diskSizeGb": self.diskSizeGb, + } + +class DefaultAgent: + """ + Represents an empty agent definition which makes Buildkite use the default agent i.e. a container + """ + + def __init__(self) -> None: + pass + + def to_json(self) -> typing.Dict: + return {} + + +@dataclass +class BuildkiteEmojis: + running: str = ":bk-status-running:" + success: str = ":bk-status-passed:" + failed: str = ":bk-status-failed:" + +def slugify_bk_key(key: str) -> str: + """ + Convert and return key to an acceptable format for Buildkite's key: field + Only alphanumerics, dashes and underscores are allowed. + """ + + mapping_table = str.maketrans({'.': '_', ' ': '_', '/': '_'}) + + return key.translate(mapping_table) + +def get_bk_metadata(key: str) -> typing.List[str]: + try: + return os.environ[key].split() + except KeyError: + print(f"Missing environment variable [{key}]. This should be set before calling this script using buildkite-agent meta-data get. Exiting.") + exit(1) + +def bk_annotate(body: str, context: str, mode = "") -> str: + cmd = f"""buildkite-agent annotate --style=info --context={context} """ + if mode: + cmd += f"--{mode} " + + cmd += f"\"{body}\n\"" + return cmd + + +class Jobs(abc.ABC): + def __init__(self, os: str, jdk: str, group_key: str, agent: typing.Union[GCPAgent, AWSAgent]): + self.os = os + self.jdk = jdk + self.group_key = group_key + self.init_annotation_key = f"{os}-{jdk}-initialize-annotation" + self.agent = agent + + def init_annotation(self) -> JobRetValues: + """ + Command for creating the header of a new annotation for a group step + """ + + body = f"### Group: {self.os} / {self.jdk}\n| **Status** | **Test** |\n| --- | ----|" + + return JobRetValues( + step_label="Initialize annotation", + command=LiteralScalarString(bk_annotate(body=body, context=self.group_key)), + step_key=self.init_annotation_key, + depends="", + agent=DefaultAgent().to_json(), + ) + + @abc.abstractmethod + def all_jobs(self) -> list[typing.Callable[[], typing.Tuple[str, str]]]: + pass + + +class WindowsJobs(Jobs): + def __init__(self, os: str, jdk: str, group_key: str, agent: typing.Union[GCPAgent, AWSAgent]): + super().__init__(os=os, jdk=jdk, group_key=group_key, agent=agent) + + def all_jobs(self) -> list[typing.Callable[[], JobRetValues]]: + return [ + self.init_annotation, + self.java_unit_test, + self.ruby_unit_test, + ] + + def java_unit_test(self) -> JobRetValues: + step_name_human = "Java Unit Test" + step_key = f"{self.group_key}-java-unit-test" + test_command = rf'''.\\.buildkite\\scripts\\jdk-matrix-tests\\launch-command.ps1 -JDK "{self.jdk}" -StepNameHuman "{step_name_human}" -AnnotateContext "{self.group_key}" -CIScript ".\\ci\\unit_tests.ps1 java" -Annotate + ''' + + return JobRetValues( + step_label=step_name_human, + command=LiteralScalarString(test_command), + step_key=step_key, + depends=self.init_annotation_key, + artifact_paths=["build_reports.zip"], + agent=self.agent.to_dict(), + retry=copy.deepcopy(ENABLED_RETRIES), + ) + + def ruby_unit_test(self) -> JobRetValues: + step_name_human = "Ruby Unit Test" + step_key = f"{self.group_key}-ruby-unit-test" + test_command = rf'''.\\.buildkite\\scripts\\jdk-matrix-tests\\launch-command.ps1 -JDK "{self.jdk}" -StepNameHuman "{step_name_human}" -AnnotateContext "{self.group_key}" -CIScript ".\\ci\\unit_tests.ps1 ruby" -Annotate + ''' + + return JobRetValues( + step_label=step_name_human, + command=LiteralScalarString(test_command), + step_key=step_key, + depends=self.init_annotation_key, + artifact_paths=["build_reports.zip"], + agent=self.agent.to_dict(), + retry=copy.deepcopy(ENABLED_RETRIES), + ) + + +class LinuxJobs(Jobs): + def __init__(self, os: str, jdk: str, group_key: str, agent: typing.Union[GCPAgent, AWSAgent]): + super().__init__(os=os, jdk=jdk, group_key=group_key, agent=agent) + + def all_jobs(self) -> list[typing.Callable[[], JobRetValues]]: + return [ + self.init_annotation, + self.java_unit_test, + self.ruby_unit_test, + self.integration_tests_part_1, + self.integration_tests_part_2, + self.pq_integration_tests_part_1, + self.pq_integration_tests_part_2, + self.x_pack_unit_tests, + self.x_pack_integration, + ] + + def prepare_shell(self) -> str: + jdk_dir = f"/opt/buildkite-agent/.java/{self.jdk}" + return f"""#!/usr/bin/env bash +set -euo pipefail + +# unset generic JAVA_HOME +unset JAVA_HOME + +# LS env vars for JDK matrix tests +export BUILD_JAVA_HOME={jdk_dir} +export RUNTIME_JAVA_HOME={jdk_dir} +export LS_JAVA_HOME={jdk_dir} + +export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$PATH" +eval "$(rbenv init -)" +""" + + def failed_step_annotation(self, step_name_human) -> str: + return bk_annotate(body=f"| {BuildkiteEmojis.failed} | {step_name_human} |", context=self.group_key, mode="append") + + def succeeded_step_annotation(self, step_name_human) -> str: + return bk_annotate(body=f"| {BuildkiteEmojis.success} | {step_name_human} |", context=self.group_key, mode="append") + + def emit_command(self, step_name_human, test_command: str) -> str: + return LiteralScalarString(f""" +{self.prepare_shell()} +# temporarily disable immediate failure on errors, so that we can update the BK annotation +set +eo pipefail +{test_command} +if [[ $$? -ne 0 ]]; then + {self.failed_step_annotation(step_name_human)} + exit 1 +else + {self.succeeded_step_annotation(step_name_human)} +fi + """) + + def java_unit_test(self) -> JobRetValues: + step_name_human = "Java Unit Test" + step_key = f"{self.group_key}-java-unit-test" + test_command = ''' +export ENABLE_SONARQUBE="false" +ci/unit_tests.sh java + ''' + + return JobRetValues( + step_label=step_name_human, + command=self.emit_command(step_name_human, test_command), + step_key=step_key, + depends=self.init_annotation_key, + agent=self.agent.to_dict(), + retry=copy.deepcopy(ENABLED_RETRIES), + ) + + def ruby_unit_test(self) -> JobRetValues: + step_name_human = "Ruby Unit Test" + step_key = f"{self.group_key}-ruby-unit-test" + test_command = """ +ci/unit_tests.sh ruby + """ + + return JobRetValues( + step_label=step_name_human, + command=self.emit_command(step_name_human, test_command), + step_key=step_key, + depends=self.init_annotation_key, + agent=self.agent.to_dict(), + retry=copy.deepcopy(ENABLED_RETRIES), + ) + + def integration_tests_part_1(self) -> JobRetValues: + return self.integration_tests(part=1) + + def integration_tests_part_2(self) -> JobRetValues: + return self.integration_tests(part=2) + + def integration_tests(self, part: int) -> JobRetValues: + step_name_human = f"Integration Tests - {part}" + step_key = f"{self.group_key}-integration-tests-{part}" + test_command = f""" +ci/integration_tests.sh split {part-1} + """ + + return JobRetValues( + step_label=step_name_human, + command=self.emit_command(step_name_human, test_command), + step_key=step_key, + depends=self.init_annotation_key, + agent=self.agent.to_dict(), + retry=copy.deepcopy(ENABLED_RETRIES), + ) + + def pq_integration_tests_part_1(self) -> JobRetValues: + return self.pq_integration_tests(part=1) + + def pq_integration_tests_part_2(self) -> JobRetValues: + return self.pq_integration_tests(part=2) + + def pq_integration_tests(self, part: int) -> JobRetValues: + step_name_human = f"IT Persistent Queues - {part}" + step_key = f"{self.group_key}-it-persistent-queues-{part}" + test_command = f""" +export FEATURE_FLAG=persistent_queues +ci/integration_tests.sh split {part-1} + """ + + return JobRetValues( + step_label=step_name_human, + command=self.emit_command(step_name_human, test_command), + step_key=step_key, + depends=self.init_annotation_key, + agent=self.agent.to_dict(), + retry=copy.deepcopy(ENABLED_RETRIES), + ) + + def x_pack_unit_tests(self) -> JobRetValues: + step_name_human = "x-pack unit tests" + step_key = f"{self.group_key}-x-pack-unit-test" + test_command = """ +x-pack/ci/unit_tests.sh + """ + + return JobRetValues( + step_label=step_name_human, + command=self.emit_command(step_name_human, test_command), + step_key=step_key, + depends=self.init_annotation_key, + agent=self.agent.to_dict(), + retry=copy.deepcopy(ENABLED_RETRIES), + ) + + def x_pack_integration(self) -> JobRetValues: + step_name_human = "x-pack integration" + step_key = f"{self.group_key}-x-pack-integration" + test_command = """ +x-pack/ci/integration_tests.sh + """ + + return JobRetValues( + step_label=step_name_human, + command=self.emit_command(step_name_human, test_command), + step_key=step_key, + depends=self.init_annotation_key, + agent=self.agent.to_dict(), + retry=copy.deepcopy(ENABLED_RETRIES), + ) + + +if __name__ == "__main__": + matrix_oses = get_bk_metadata(key="MATRIX_OSES") + matrix_jdkes = get_bk_metadata(key="MATRIX_JDKS") + + pipeline_name = os.environ.get("BUILDKITE_PIPELINE_NAME", "").lower() + + structure = {"steps": []} + + for matrix_os in matrix_oses: + gcpAgent = GCPAgent( + image=f"family/platform-ingest-logstash-multi-jdk-{matrix_os}", + machineType="n2-standard-4", + diskSizeGb=200, + diskType="pd-ssd", + ) + + awsAgent = AWSAgent( + imagePrefix=f"platform-ingest-logstash-multi-jdk-{matrix_os}", + instanceType="m5.2xlarge", + diskSizeGb=200, + ) + + for matrix_jdk in matrix_jdkes: + group_name = f"{matrix_os}/{matrix_jdk}" + group_key = slugify_bk_key(group_name) + + agent = awsAgent if "amazon" in matrix_os else gcpAgent + + if "windows" in pipeline_name: + jobs = WindowsJobs(os=matrix_os, jdk=matrix_jdk, group_key=group_key, agent=agent) + else: + jobs = LinuxJobs(os=matrix_os, jdk=matrix_jdk, group_key=group_key, agent=agent) + + group_steps = [] + for job in jobs.all_jobs(): + job_values = job() + + step = { + "label": f"{job_values.step_label}", + "key": job_values.step_key, + } + + if job_values.depends: + step["depends_on"] = job_values.depends + + if job_values.agent: + step["agents"] = job_values.agent + + if job_values.artifact_paths: + step["artifact_paths"] = job_values.artifact_paths + + if job_values.retry: + step["retry"] = job_values.retry + + step["command"] = job_values.command + + group_steps.append(step) + + + structure["steps"].append({ + "group": group_name, + "key": slugify_bk_key(group_name), + "steps": group_steps}) + + print('# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json') + YAML().dump(structure, sys.stdout) diff --git a/.buildkite/scripts/jdk-matrix-tests/launch-command.ps1 b/.buildkite/scripts/jdk-matrix-tests/launch-command.ps1 new file mode 100644 index 000000000..4645881f5 --- /dev/null +++ b/.buildkite/scripts/jdk-matrix-tests/launch-command.ps1 @@ -0,0 +1,51 @@ +# ******************************************************** +# This file contains prerequisite bootstrap invocations +# required for Logstash CI JDK matrix tests +# ******************************************************** + +param ( + [string]$JDK, + [string]$CIScript, + [string]$StepNameHuman, + [string]$AnnotateContext, + [switch]$Annotate +) + +# expand previous buildkite folded section (command invocation) +Write-Host "^^^ +++" + +# unset generic JAVA_HOME +if (Test-Path env:JAVA_HOME) { + Remove-Item -Path env:JAVA_HOME + Write-Host "--- Environment variable 'JAVA_HOME' has been unset." +} else { + Write-Host "--- Environment variable 'JAVA_HOME' doesn't exist. Continuing." +} + +# LS env vars for JDK matrix tests +$JAVA_CUSTOM_DIR = "C:\Users\buildkite\.java\$JDK" +$env:BUILD_JAVA_HOME = $JAVA_CUSTOM_DIR +$env:RUNTIME_JAVA_HOME = $JAVA_CUSTOM_DIR +$env:LS_JAVA_HOME = $JAVA_CUSTOM_DIR + +Write-Host "--- Running test: $CIScript" +try { + Invoke-Expression $CIScript + + if ($LASTEXITCODE -ne 0) { + throw "Test script $CIScript failed with a non-zero code: $LASTEXITCODE" + } + + if ($Annotate) { + C:\buildkite-agent\bin\buildkite-agent.exe annotate --context="$AnnotateContext" --append "| :bk-status-passed: | $StepNameHuman |`n" + } +} catch { + # tests failed + Write-Host "^^^ +++" + if ($Annotate) { + C:\buildkite-agent\bin\buildkite-agent.exe annotate --context="$AnnotateContext" --append "| :bk-status-failed: | $StepNameHuman |`n" + Write-Host "--- Archiving test reports" + & "7z.exe" a -r .\build_reports.zip .\logstash-core\build\reports\tests + } + exit 1 +} diff --git a/.buildkite/scripts/pull-requests/sonar-env.sh b/.buildkite/scripts/pull-requests/sonar-env.sh new file mode 100644 index 000000000..b4dcb7acd --- /dev/null +++ b/.buildkite/scripts/pull-requests/sonar-env.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +SONAR_TOKEN_PATH="kv/ci-shared/platform-ingest/elastic/logstash/sonar-creds" +export SONAR_TOKEN=$(retry -t 5 -- vault kv get -field=token ${SONAR_TOKEN_PATH}) + +export SOURCE_BRANCH=$GITHUB_PR_BRANCH +export TARGET_BRANCH=$GITHUB_PR_TARGET_BRANCH +export PULL_ID=$GITHUB_PR_NUMBER +export COMMIT_SHA=$BUILDKITE_COMMIT diff --git a/.buildkite/windows_jdk_matrix_pipeline.yml b/.buildkite/windows_jdk_matrix_pipeline.yml new file mode 100644 index 000000000..a06e7a0d8 --- /dev/null +++ b/.buildkite/windows_jdk_matrix_pipeline.yml @@ -0,0 +1,71 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json + +env: + DEFAULT_MATRIX_OS: "windows-2022" + DEFAULT_MATRIX_JDK: "adoptiumjdk_17" + +steps: + - input: "Test Parameters" + if: build.source != "schedule" && build.source != "trigger_job" + fields: + - select: "Operating System" + key: "matrix-os" + hint: "The operating system variant(s) to run on:" + required: true + multiple: true + default: "${DEFAULT_MATRIX_OS}" + options: + - label: "Windows 2022" + value: "windows-2022" + - label: "Windows 2019" + value: "windows-2019" + - label: "Windows 2016" + value: "windows-2016" + + - select: "Java" + key: "matrix-jdk" + hint: "The JDK to test with:" + required: true + multiple: true + default: "${DEFAULT_MATRIX_JDK}" + options: + - label: "Adoptium JDK 17 (Eclipse Temurin)" + value: "adoptiumjdk_17" + - label: "Adoptium JDK 11 (Eclipse Temurin)" + value: "adoptiumjdk_11" + - label: "OpenJDK 17" + value: "openjdk_17" + - label: "OpenJDK 11" + value: "openjdk_11" + - label: "Zulu 17" + value: "zulu_17" + - label: "Zulu 11" + value: "zulu_11" + + - wait: ~ + if: build.source != "schedule" && build.source != "trigger_job" + + - command: | + set -euo pipefail + + echo "--- Downloading prerequisites" + python3 -m pip install ruamel.yaml + + echo "--- Printing generated dynamic steps" + export MATRIX_OSES="$(buildkite-agent meta-data get matrix-os --default=${DEFAULT_MATRIX_OS})" + export MATRIX_JDKS="$(buildkite-agent meta-data get matrix-jdk --default=${DEFAULT_MATRIX_JDK})" + set +eo pipefail + python3 .buildkite/scripts/jdk-matrix-tests/generate-steps.py >pipeline_steps.yml + if [[ $$? -ne 0 ]]; then + echo "^^^ +++" + echo "There was a problem rendering the pipeline steps." + cat pipeline_steps.yml + echo "Exiting now." + exit 1 + else + set -eo pipefail + cat pipeline_steps.yml + fi + + echo "--- Uploading steps to buildkite" + cat pipeline_steps.yml | buildkite-agent pipeline upload diff --git a/.ci/java-versions.properties b/.ci/java-versions.properties new file mode 100644 index 000000000..0b4302be0 --- /dev/null +++ b/.ci/java-versions.properties @@ -0,0 +1,2 @@ +LS_BUILD_JAVA=adoptopenjdk_11 +LS_RUNTIME_JAVA=adoptopenjdk_11 diff --git a/.ci/matrix-runtime-javas.yml b/.ci/matrix-runtime-javas.yml new file mode 100644 index 000000000..248c87b26 --- /dev/null +++ b/.ci/matrix-runtime-javas.yml @@ -0,0 +1,14 @@ +# This file is used as part of a matrix build in Jenkins where the +# values below are included as an axis of the matrix. + +# This axis of the build matrix represents the versions of Java on +# which Logstash can be tested against. + +LS_RUNTIME_JAVA: + - java8 + - openjdk11 + - openjdk17 + - adoptopenjdk11 + - adoptiumjdk17 + - zulu11 + - zulu17 diff --git a/.ci/matrix-unix-compatibility-linux-distros.yml b/.ci/matrix-unix-compatibility-linux-distros.yml new file mode 100644 index 000000000..e69de29bb diff --git a/.fossa.yml b/.fossa.yml new file mode 100755 index 000000000..55e69801b --- /dev/null +++ b/.fossa.yml @@ -0,0 +1,59 @@ +# Generated by FOSSA CLI (https://github.com/fossas/fossa-cli) +# Visit https://fossa.com to learn more + +version: 2 +cli: + server: https://app.fossa.com + fetcher: custom + project: git@github.com:elastic/logstash.git +analyze: + modules: + - name: Logstash gems + type: bundler + strategy: lockfile + target: . + path: . + - name: benchmark-cli + type: gradle + target: 'benchmark-cli:' + path: . + - name: dependencies-report + type: gradle + target: 'dependencies-report:' + path: . + - name: ingest-converter + type: gradle + target: 'ingest-converter:' + path: . + - name: logstash-core + type: gradle + target: 'logstash-core:' + path: . + - name: logstash-core-benchmarks + type: gradle + target: 'logstash-core-benchmarks:' + path: . + - name: logstash-integration-tests + type: gradle + target: 'logstash-integration-tests:' + path: . + - name: logstash-xpack + type: gradle + target: 'logstash-xpack:' + # path: . + # - name: docker + # type: pip + # target: docker + # path: docker + # - name: Gemfile + # type: gem + # target: qa + # path: qa + # - name: Gemfile + # type: gem + # target: qa/integration + # path: qa/integration + # - name: Gemfile + # type: gem + # target: tools/paquet + # path: tools/paquet diff --git a/.gitignore b/.gitignore index 691ac83c2..1b0d8f000 100644 --- a/.gitignore +++ b/.gitignore @@ -16,8 +16,9 @@ out local test/setup/elasticsearch/elasticsearch-* vendor +!docker/ironbank/go/src/env2yaml/vendor .sass-cache -data +/data .buildpath .project .DS_Store @@ -57,3 +58,8 @@ logstash-core/versions-gem-copy.yml logstash-core-plugin-api/versions-gem-copy.yml config/logstash.keystore html_docs +lib/pluginmanager/plugin_aliases.yml +logstash-core/src/main/resources/org/logstash/plugins/plugin_aliases.yml +spec/unit/plugin_manager/plugin_aliases.yml +logstash-core/src/test/resources/org/logstash/plugins/plugin_aliases.yml +qa/integration/fixtures/logs_rollover/log4j2.properties \ No newline at end of file diff --git a/.ruby-version b/.ruby-version index 87d3afa18..5c04a4e76 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -jruby-9.1.12.0 +jruby-9.2.20.1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ad09e1824..3295219d8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,6 +3,8 @@ All contributions are welcome: ideas, patches, documentation, bug reports, complaints, etc! +If you want to be rewarded for your contributions, sign up for the [Elastic Contributor Program](https://www.elastic.co/community/contributor). Each time you make a valid contribution, you’ll earn points that increase your chances of winning prizes and being recognized as a top contributor. + Programming is not a required skill, and there are many ways to help out! It is more important to us that you are able to contribute. @@ -12,7 +14,7 @@ That said, some basic guidelines, which you are free to ignore :) Want to lurk about and see what others are doing with Logstash? -* The irc channel (#logstash on irc.freenode.org) is a good place for this +* The #logstash channel on Elastic Stack Community slack (https://elasticstack.slack.com/channels/logstash) is a good place to start. * The [forum](https://discuss.elastic.co/c/logstash) is also great for learning from others. @@ -21,12 +23,11 @@ Want to lurk about and see what others are doing with Logstash? Have a problem you want Logstash to solve for you? * You can ask a question in the [forum](https://discuss.elastic.co/c/logstash) -* Alternately, you are welcome to join the IRC channel #logstash on -irc.freenode.org and ask for help there! +* You are welcome to join Elastic Stack Community slack (https://elasticstack.slack.com) and ask for help on the #logstash channel. ## Have an Idea or Feature Request? -* File a ticket on [GitHub](https://github.com/elastic/logstash/issues). Please remember that GitHub is used only for issues and feature requests. If you have a general question, the [forum](https://discuss.elastic.co/c/logstash) or IRC would be the best place to ask. +* File a ticket on [GitHub](https://github.com/elastic/logstash/issues). Please remember that GitHub is used only for issues and feature requests. If you have a general question, the [forum](https://discuss.elastic.co/c/logstash) or Elastic Stack Community slack (https://elasticstack.slack.com) is the best place to ask. ## Something Not Working? Found a Bug? @@ -49,17 +50,22 @@ get in touch with our security team [here](https://www.elastic.co/community/secu If you have a bugfix or new feature that you would like to contribute to Logstash, and you think it will take more than a few minutes to produce the fix (ie; write code), it is worth discussing the change with the Logstash -users and developers first. You can reach us via [GitHub](https://github.com/elastic/logstash/issues), the [forum](https://discuss.elastic.co/c/logstash), or via IRC (#logstash on freenode irc) +users and developers first. You can reach us via [GitHub](https://github.com/elastic/logstash/issues), the [forum](https://discuss.elastic.co/c/logstash), or Elastic Stack Community slack (https://elasticstack.slack.com). Please note that Pull Requests without tests and documentation may not be merged. If you would like to contribute but do not have -experience with writing tests, please ping us on IRC/forum or create a PR and ask our help. +experience with writing tests, please ping us on the forum or create a PR and ask for our help. -If you would like to contribute to Logstash, but don't know where to start, you can use the GitHub labels "adoptme" -and "low hanging fruit". Issues marked with these labels are relatively easy, and provides a good starting -point to contribute to Logstash. +If you would like to contribute to Logstash, but don't know where to start, you +can use the GitHub labels "adoptme", "low hanging fruit" and "good first issue". +Issues marked with these labels are relatively easy, and provide a good +starting point to contribute to Logstash. -See: https://github.com/elastic/logstash/labels/adoptme -https://github.com/elastic/logstash/labels/low%20hanging%20fruit +See the following links: + * https://github.com/elastic/logstash/labels/adoptme + * https://github.com/elastic/logstash/labels/low%20hanging%20fruit + * https://github.com/elastic/logstash/labels/good%20first%20issue + +Or go directly here for an exhaustive list: https://github.com/elastic/logstash/contribute Using IntelliJ? See a detailed getting started guide [here](https://docs.google.com/document/d/1kqunARvYMrlfTEOgMpYHig0U-ZqCcMJfhvTtGt09iZg/pub). @@ -71,7 +77,7 @@ Check our [documentation](https://www.elastic.co/guide/en/logstash/current/contr This document provides guidelines on editing a logstash plugin's CHANGELOG file. -#### What's a CHANGELOG file? +### What's a CHANGELOG file? According to [keepachangelog.com](https://keepachangelog.com/en/1.0.0/): @@ -107,14 +113,24 @@ then you should still create an entry in the changelog, using the word `Unreleas Most code in logstash-plugins comes from self-contained changes in the form of pull requests, so each entry should: -1. be a summary of the Pull Request and contain a markdown link to it. -2. start with [BREAKING], when it denotes a breaking change. - * Note: Breaking changes should warrant a major version bump. -3. after [BREAKING], start with one of the following keywords: - `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`. -4. keep multiple entries with the same keyword in the same changelog revision together. +1. Be a summary of the Pull Request and contain a markdown link to the PR. +2. Begin your entry with an introductory label if appropriate. Labels include: + `[DOC]`, `[BREAKING]`, `[SECURITY]`. + NOTE: Your PR may not need a label. +3. After the label, start with one of the following keywords: + `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`. +4. Keep multiple entries with the same keyword in the same changelog revision together. -The meaning of the keywords is as follows (copied from [keepachangelog.com](https://keepachangelog.com/en/1.0.0/#how): +Labels (optional): + +- **`[BREAKING]`** for a breaking change. + Note that breaking changes should warrant a major version bump. +- **`[DOC]`** for a change that affects only documentation, and not code. +- **`[SECURITY]`** for a security fix. If you're working on a security issue, +please make sure to follow the process outlined by our security team. +If you haven't done so already, please [get in touch with them](https://www.elastic.co/community/security) first. + +Keywords (copied from [keepachangelog.com](https://keepachangelog.com/en/1.0.0/#how)): - **`Added`** for new features. - **`Changed`** for changes in existing functionality. @@ -135,6 +151,9 @@ Example: - Changed default value of `execution_bugs` from 30 to 0 [#104](http://example.org) - [BREAKING] Removed obsolete option `enable_telnet` option [#100](http://example.org) +## 3.3.3 +- [DOC] Fixed incorrect formatting of code sample [#85](http://example.org) + ## 3.3.2 - Fixed incorrect serialization of input data when encoding was `Emacs-Mule` [#84](http://example.org) @@ -196,4 +215,3 @@ Keep these in mind as both authors and reviewers of PRs: * If no, ask for clarifications on the PR. This will usually lead to changes in the code such as renaming of variables/functions or extracting of functions or simply adding "why" inline comments. But first ask the author for clarifications before assuming any intent on their part. * I must not focus on personal preferences or nitpicks. If I understand the code in the PR but simply would've implemented the same solution a different way that's great but its not feedback that belongs in the PR. Such feedback only serves to slow down progress for little to no gain. - diff --git a/Dockerfile b/Dockerfile index 56dc10b8f..9491ee8c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM ubuntu:xenial +FROM ubuntu:bionic RUN apt-get update && \ apt-get install -y zlib1g-dev build-essential vim rake git curl libssl-dev libreadline-dev libyaml-dev \ - libxml2-dev libxslt-dev openjdk-8-jdk-headless curl iputils-ping netcat && \ + libxml2-dev libxslt-dev openjdk-11-jdk-headless curl iputils-ping netcat && \ apt-get clean WORKDIR /root @@ -20,25 +20,32 @@ WORKDIR /home/logstash # used by the purge policy LABEL retention="keep" -ADD gradlew /opt/logstash/gradlew -ADD gradle/wrapper /opt/logstash/gradle/wrapper -ADD buildSrc /opt/logstash/buildSrc -RUN /opt/logstash/gradlew wrapper +# Setup gradle wrapper. When running any `gradle` command, a `settings.gradle` is expected (and will soon be required). +# This section adds the gradle wrapper, `settings.gradle` and sets the permissions (setting the user to root for `chown` +# and working directory to allow this and then reverts back to the previous working directory and user. +COPY --chown=logstash:logstash gradlew /opt/logstash/gradlew +COPY --chown=logstash:logstash gradle/wrapper /opt/logstash/gradle/wrapper +COPY --chown=logstash:logstash settings.gradle /opt/logstash/settings.gradle +WORKDIR /opt/logstash +RUN for iter in `seq 1 10`; do ./gradlew wrapper --warning-mode all && exit_code=0 && break || exit_code=$? && echo "gradlew error: retry $iter in 10s" && sleep 10; done; exit $exit_code +WORKDIR /home/logstash ADD versions.yml /opt/logstash/versions.yml ADD LICENSE.txt /opt/logstash/LICENSE.txt ADD NOTICE.TXT /opt/logstash/NOTICE.TXT ADD licenses /opt/logstash/licenses ADD CONTRIBUTORS /opt/logstash/CONTRIBUTORS -ADD Gemfile.template /opt/logstash/Gemfile.template +ADD Gemfile.template Gemfile.jruby-2.5.lock.* /opt/logstash/ ADD Rakefile /opt/logstash/Rakefile ADD build.gradle /opt/logstash/build.gradle +ADD rubyUtils.gradle /opt/logstash/rubyUtils.gradle ADD rakelib /opt/logstash/rakelib ADD config /opt/logstash/config ADD spec /opt/logstash/spec ADD qa /opt/logstash/qa ADD lib /opt/logstash/lib ADD pkg /opt/logstash/pkg +ADD buildSrc /opt/logstash/buildSrc ADD tools /opt/logstash/tools ADD logstash-core /opt/logstash/logstash-core ADD logstash-core-plugin-api /opt/logstash/logstash-core-plugin-api @@ -46,7 +53,6 @@ ADD bin /opt/logstash/bin ADD modules /opt/logstash/modules ADD x-pack /opt/logstash/x-pack ADD ci /opt/logstash/ci -ADD settings.gradle /opt/logstash/settings.gradle USER root RUN rm -rf build && \ @@ -55,5 +61,4 @@ RUN rm -rf build && \ USER logstash WORKDIR /opt/logstash -LABEL retention="prune" - +LABEL retention="prune" \ No newline at end of file diff --git a/Dockerfile.base b/Dockerfile.base index a33c1bfd2..a9c189500 100644 --- a/Dockerfile.base +++ b/Dockerfile.base @@ -1,9 +1,9 @@ #logstash-base image, use ci/docker_update_base_image.sh to push updates -FROM ubuntu:xenial +FROM ubuntu:bionic RUN apt-get update && \ apt-get install -y zlib1g-dev build-essential vim rake git curl libssl-dev libreadline-dev libyaml-dev \ - libxml2-dev libxslt-dev openjdk-8-jdk-headless curl iputils-ping netcat && \ + libxml2-dev libxslt-dev openjdk-11-jdk-headless curl iputils-ping netcat && \ apt-get clean WORKDIR /root diff --git a/Gemfile.jruby-2.5.lock.release b/Gemfile.jruby-2.5.lock.release new file mode 100644 index 000000000..8b9620a8c --- /dev/null +++ b/Gemfile.jruby-2.5.lock.release @@ -0,0 +1,914 @@ +PATH + remote: logstash-core-plugin-api + specs: + logstash-core-plugin-api (2.1.16-java) + logstash-core (= 7.17.21) + +PATH + remote: logstash-core + specs: + logstash-core (7.17.21-java) + chronic_duration (~> 0.10) + clamp (~> 1) + concurrent-ruby (~> 1, < 1.1.10) + down (~> 5.2.0) + elasticsearch (~> 7) + filesize (~> 0.2) + gems (~> 1) + i18n (~> 1) + jrjackson (= 0.4.14) + jruby-openssl (~> 0.11) + manticore (~> 0.6) + minitar (~> 0.8) + mustermann (~> 1.0.3) + pry (~> 0.12) + puma (~> 5, >= 5.6.8) + racc (~> 1.5.2) + rack (~> 2) + rubyzip (~> 1) + rufus-scheduler + sinatra (~> 2) + stud (~> 0.0.19) + thread_safe (~> 0.3.6) + treetop (~> 1) + tzinfo-data + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + amazing_print (1.4.0) + arr-pm (0.0.12) + atomic (1.1.101-java) + avl_tree (1.2.1) + atomic (~> 1.1) + avro (1.10.2) + multi_json (~> 1) + aws-eventstream (1.2.0) + aws-sdk (2.11.632) + aws-sdk-resources (= 2.11.632) + aws-sdk-core (2.11.632) + aws-sigv4 (~> 1.0) + jmespath (~> 1.0) + aws-sdk-resources (2.11.632) + aws-sdk-core (= 2.11.632) + aws-sigv4 (1.4.0) + aws-eventstream (~> 1, >= 1.0.2) + back_pressure (1.0.0) + backports (3.23.0) + belzebuth (0.2.3) + childprocess + benchmark-ips (2.10.0) + bigdecimal (3.1.7-java) + bindata (2.4.15) + buftok (0.2.0) + builder (3.2.4) + cabin (0.9.0) + childprocess (4.1.0) + chronic_duration (0.10.6) + numerizer (~> 0.1.1) + ci_reporter (2.0.0) + builder (>= 2.1.2) + ci_reporter_rspec (1.0.0) + ci_reporter (~> 2.0) + rspec (>= 2.14, < 4) + clamp (1.0.1) + coderay (1.1.3) + concurrent-ruby (1.1.9) + crack (0.4.6) + bigdecimal + rexml + dalli (2.7.11) + diff-lcs (1.5.1) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.6) + down (5.2.4) + addressable (~> 2.8) + edn (1.1.1) + elastic-app-search (7.8.0) + jwt (>= 1.5, < 3.0) + elastic-workplace-search (0.4.1) + elasticsearch (7.17.10) + elasticsearch-api (= 7.17.10) + elasticsearch-transport (= 7.17.10) + elasticsearch-api (7.17.10) + multi_json + elasticsearch-transport (7.17.10) + faraday (>= 1, < 3) + multi_json + equalizer (0.0.11) + faraday (1.10.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + ffi (1.15.5-java) + filesize (0.2.0) + fivemat (1.3.7) + flores (0.0.8) + fpm (1.14.2) + arr-pm (~> 0.0.11) + backports (>= 2.6.2) + cabin (>= 0.6.0) + clamp (~> 1.0.0) + git (>= 1.3.0, < 2.0) + json (>= 1.7.7, < 3.0) + pleaserun (~> 0.0.29) + rexml + stud + gelfd2 (0.4.1) + gem_publisher (1.5.0) + gems (1.2.0) + gene_pool (1.5.0) + concurrent-ruby (>= 1.0) + git (1.10.2) + rchardet (~> 1.8) + hashdiff (1.0.1) + hitimes (1.3.1-java) + http (3.3.0) + addressable (~> 2.3) + http-cookie (~> 1.0) + http-form_data (~> 2.0) + http_parser.rb (~> 0.6.0) + http-cookie (1.0.5) + domain_name (~> 0.5) + http-form_data (2.3.0) + http_parser.rb (0.6.0-java) + i18n (1.10.0) + concurrent-ruby (~> 1.0) + insist (1.0.0) + jar-dependencies (0.4.1) + jls-grok (0.11.5) + cabin (>= 0.6.0) + jls-lumberjack (0.0.26) + concurrent-ruby + jmespath (1.6.2) + jrjackson (0.4.14-java) + jruby-jms (1.3.0-java) + gene_pool + semantic_logger + jruby-openssl (0.11.0-java) + jruby-stdin-channel (0.2.0-java) + json (2.6.3-java) + json-schema (2.8.1) + addressable (>= 2.4) + jwt (2.3.0) + kramdown (1.14.0) + logstash-codec-avro (3.3.1-java) + avro (~> 1.10.2) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + logstash-codec-cef (6.2.7-java) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-codec-collectd (3.1.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + logstash-codec-dots (3.0.6) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-codec-edn (3.1.0) + edn + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + logstash-codec-edn_lines (3.1.0) + edn + logstash-codec-line + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + logstash-codec-es_bulk (3.1.0) + logstash-codec-line + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + logstash-codec-fluent (3.4.2-java) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + msgpack (~> 1.1) + logstash-codec-graphite (3.0.6) + logstash-codec-line + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-event_support (~> 1.0) + logstash-codec-json (3.1.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0, >= 1.0.1) + logstash-mixin-validator_support (~> 1.0) + logstash-codec-json_lines (3.1.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0, >= 1.0.1) + logstash-mixin-validator_support (~> 1.0) + logstash-codec-line (3.1.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-codec-msgpack (3.1.0-java) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + msgpack (~> 1.1) + logstash-codec-multiline (3.1.2) + concurrent-ruby + jls-grok (~> 0.11.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-patterns-core + logstash-codec-netflow (4.2.2) + bindata (>= 1.5.0) + logstash-core-plugin-api (~> 2.0) + logstash-mixin-event_support (~> 1.0) + logstash-codec-plain (3.1.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-codec-rubydebug (3.1.0) + amazing_print (~> 1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-devutils (1.3.6-java) + fivemat + gem_publisher + insist (= 1.0.0) + kramdown (= 1.14.0) + logstash-core-plugin-api (>= 2.0, <= 2.99) + minitar + rake + rspec (~> 3.0) + rspec-wait + stud (>= 0.0.20) + logstash-filter-aggregate (2.10.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-anonymize (3.0.7) + logstash-core-plugin-api (>= 1.60, <= 2.99) + murmurhash3 (= 0.1.6) + logstash-filter-cidr (3.1.3-java) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-clone (4.2.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.1) + logstash-filter-csv (3.1.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-validator_support (~> 1.0) + logstash-filter-date (3.1.15) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-de_dot (1.0.4) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-dissect (1.2.5) + jar-dependencies + logstash-core-plugin-api (>= 2.1.1, <= 2.99) + logstash-filter-dns (3.1.5) + logstash-core-plugin-api (>= 1.60, <= 2.99) + lru_redux (~> 1.1.0) + logstash-filter-drop (3.0.5) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-elasticsearch (3.11.1) + elasticsearch (>= 7.14.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + manticore (>= 0.7.1) + logstash-filter-fingerprint (3.3.2) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.2) + murmurhash3 + logstash-filter-geoip (7.2.13-java) + logstash-core (>= 7.14.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.2) + logstash-filter-grok (4.4.3) + jls-grok (~> 0.11.3) + logstash-core (>= 5.6.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.0) + logstash-patterns-core (>= 4.3.0, < 5) + stud (~> 0.0.22) + logstash-filter-http (1.2.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.2) + logstash-mixin-http_client (>= 5.0.0, < 9.0.0) + logstash-mixin-validator_support (~> 1.0) + logstash-filter-json (3.2.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-validator_support (~> 1.0) + logstash-filter-kv (4.5.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-validator_support (~> 1.0) + logstash-filter-memcached (1.1.0) + dalli (~> 2.7) + logstash-core-plugin-api (~> 2.0) + logstash-filter-metrics (4.0.7) + logstash-core-plugin-api (>= 1.60, <= 2.99) + metriks + thread_safe + logstash-filter-mutate (3.5.8) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-prune (3.0.4) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-ruby (3.1.8) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-sleep (3.0.7) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-split (3.1.8) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-syslog_pri (3.1.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-filter-throttle (4.0.4) + atomic + logstash-core-plugin-api (>= 1.60, <= 2.99) + thread_safe + logstash-filter-translate (3.3.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-deprecation_logger_support (~> 1.0) + logstash-mixin-ecs_compatibility_support (~> 1.2) + logstash-mixin-validator_support (~> 1.0) + rufus-scheduler + logstash-filter-truncate (1.0.6) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-urldecode (3.0.6) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-useragent (3.3.5-java) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-filter-uuid (3.0.5) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-xml (4.1.3) + logstash-core-plugin-api (>= 1.60, <= 2.99) + nokogiri + xml-simple + logstash-input-azure_event_hubs (1.4.5) + logstash-codec-json + logstash-codec-plain + logstash-core-plugin-api (~> 2.0) + stud (>= 0.0.22) + logstash-input-beats (6.2.6-java) + concurrent-ruby (~> 1.0) + jar-dependencies (~> 0.3, >= 0.3.4) + logstash-codec-multiline (>= 2.0.5) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + thread_safe (~> 0.3.5) + logstash-input-couchdb_changes (3.1.6) + json + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + stud (>= 0.0.22) + logstash-input-dead_letter_queue (1.1.12) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-input-elasticsearch (4.12.3) + elasticsearch (>= 7.17.1) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + manticore (>= 0.7.1) + rufus-scheduler + tzinfo + tzinfo-data + logstash-input-exec (3.4.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + rufus-scheduler + stud (~> 0.0.22) + logstash-input-file (4.4.6) + addressable + concurrent-ruby (~> 1.0) + logstash-codec-multiline (~> 3.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-input-ganglia (3.1.4) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + stud (~> 0.0.22) + logstash-input-gelf (3.3.2) + gelfd2 (= 0.4.1) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + stud (>= 0.0.22, < 0.1.0) + logstash-input-generator (3.1.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-input-graphite (3.0.6) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-input-tcp + logstash-input-heartbeat (3.1.1) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-deprecation_logger_support (~> 1.0) + logstash-mixin-ecs_compatibility_support (~> 1.2) + logstash-mixin-event_support (~> 1.0) + stud + logstash-input-http (3.4.5-java) + jar-dependencies (~> 0.3, >= 0.3.4) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.2) + logstash-input-http_poller (5.1.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0, >= 1.0.1) + logstash-mixin-http_client (~> 7) + logstash-mixin-validator_support (~> 1.0) + rufus-scheduler (~> 3.0.9) + stud (~> 0.0.22) + logstash-input-imap (3.2.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-validator_support (~> 1.0) + mail (~> 2.6.3) + mime-types (= 2.6.2) + stud (~> 0.0.22) + logstash-input-jms (3.2.2-java) + jruby-jms (>= 1.2.0) + logstash-codec-json (~> 3.0) + logstash-codec-plain (~> 3.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + semantic_logger (< 4.0.0) + logstash-input-pipe (3.1.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + stud (~> 0.0.22) + logstash-input-redis (3.7.0) + logstash-codec-json + logstash-core-plugin-api (>= 1.60, <= 2.99) + redis (>= 4.0.1, < 5) + logstash-input-s3 (3.8.4) + logstash-core-plugin-api (>= 2.1.12, <= 2.99) + logstash-mixin-aws (>= 5.1.0) + logstash-mixin-ecs_compatibility_support (~> 1.2) + stud (~> 0.0.18) + logstash-input-snmp (1.3.3) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + stud (>= 0.0.22, < 0.1.0) + logstash-input-snmptrap (3.1.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + snmp + logstash-input-sqs (3.1.3) + logstash-codec-json + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-aws (>= 4.3.0) + logstash-input-stdin (3.4.0) + jruby-stdin-channel + logstash-codec-line + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.2) + logstash-input-syslog (3.6.0) + concurrent-ruby + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-filter-date + logstash-filter-grok (>= 4.4.1) + logstash-mixin-ecs_compatibility_support (~> 1.2) + stud (>= 0.0.22, < 0.1.0) + logstash-input-tcp (6.2.7-java) + jruby-openssl (>= 0.10.2) + logstash-codec-json + logstash-codec-json_lines + logstash-codec-line + logstash-codec-multiline + logstash-codec-plain + logstash-core (>= 6.7.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.2) + logstash-input-twitter (4.1.0) + http-form_data (~> 2) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + public_suffix (~> 3) + stud (>= 0.0.22, < 0.1) + twitter (= 6.2.0) + logstash-input-udp (3.5.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.2) + stud (~> 0.0.22) + logstash-input-unix (3.1.2) + logstash-codec-line + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-integration-elastic_enterprise_search (2.1.2) + elastic-app-search (~> 7.8.0) + elastic-workplace-search (~> 0.4.1) + logstash-codec-plain + logstash-core-plugin-api (~> 2.0) + logstash-integration-jdbc (5.2.6) + logstash-codec-plain + logstash-core (>= 6.5.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-ecs_compatibility_support (~> 1.3) + logstash-mixin-event_support (~> 1.0) + logstash-mixin-validator_support (~> 1.0) + lru_redux + rufus-scheduler + sequel + tzinfo + tzinfo-data + logstash-integration-kafka (10.9.0-java) + logstash-codec-json + logstash-codec-plain + logstash-core (>= 6.5.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-deprecation_logger_support (~> 1.0) + manticore (>= 0.5.4, < 1.0.0) + stud (>= 0.0.22, < 0.1.0) + logstash-integration-rabbitmq (7.3.3-java) + back_pressure (~> 1.0) + logstash-codec-json + logstash-core (>= 6.5.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + march_hare (~> 4.0) + stud (~> 0.0.22) + logstash-mixin-aws (5.1.0) + aws-sdk (~> 2) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-deprecation_logger_support (1.0.0-java) + logstash-core (>= 5.0.0) + logstash-mixin-ecs_compatibility_support (1.3.0-java) + logstash-core (>= 6.0.0) + logstash-mixin-event_support (1.0.1-java) + logstash-core (>= 6.8) + logstash-mixin-http_client (7.0.0) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + manticore (>= 0.5.2, < 1.0.0) + logstash-mixin-validator_support (1.0.2-java) + logstash-core (>= 6.8) + logstash-output-cloudwatch (3.0.10) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-aws (>= 1.0.0) + rufus-scheduler (>= 3.0.9) + logstash-output-csv (3.0.10) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-output-file + logstash-output-elasticsearch (11.4.2-java) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-deprecation_logger_support (~> 1.0) + logstash-mixin-ecs_compatibility_support (~> 1.0) + manticore (>= 0.8.0, < 1.0.0) + stud (~> 0.0, >= 0.0.17) + logstash-output-email (4.1.2) + logstash-core-plugin-api (>= 1.60, <= 2.99) + mail (~> 2.6.3) + mime-types (< 3) + mustache (>= 0.99.8) + logstash-output-file (4.3.0) + logstash-codec-json_lines + logstash-codec-line + logstash-core-plugin-api (>= 2.0.0, < 2.99) + logstash-output-graphite (3.1.6) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-output-http (5.2.5) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-http_client (>= 6.0.0, < 8.0.0) + logstash-output-lumberjack (3.1.9) + jls-lumberjack (>= 0.0.26) + logstash-core-plugin-api (>= 1.60, <= 2.99) + stud + logstash-output-nagios (3.0.6) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-output-null (3.0.5) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-output-pipe (3.0.6) + logstash-codec-plain + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-output-redis (5.0.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + redis (~> 4) + stud + logstash-output-s3 (4.3.7) + concurrent-ruby + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-aws (>= 4.3.0) + stud (~> 0.0.22) + logstash-output-sns (4.0.8) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-aws (>= 1.0.0) + logstash-output-sqs (6.0.0) + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-mixin-aws (>= 4.3.0) + logstash-output-stdout (3.1.4) + logstash-codec-rubydebug + logstash-core-plugin-api (>= 1.60.1, < 2.99) + logstash-output-tcp (6.0.3) + logstash-codec-json + logstash-core-plugin-api (>= 1.60, <= 2.99) + stud + logstash-output-udp (3.2.0) + logstash-codec-json + logstash-core-plugin-api (>= 1.60, <= 2.99) + logstash-output-webhdfs (3.0.6) + logstash-core-plugin-api (>= 1.60, <= 2.99) + snappy (= 0.0.12) + webhdfs + logstash-patterns-core (4.3.4) + logstash-core-plugin-api (>= 1.60, <= 2.99) + lru_redux (1.1.0) + mail (2.6.6) + mime-types (>= 1.16, < 4) + manticore (0.8.0-java) + openssl_pkcs8_pure + march_hare (4.4.0-java) + memoizable (0.4.2) + thread_safe (~> 0.3, >= 0.3.1) + method_source (1.0.0) + metriks (0.9.9.8) + atomic (~> 1.0) + avl_tree (~> 1.2.0) + hitimes (~> 1.1) + mime-types (2.6.2) + minitar (0.9) + msgpack (1.4.5-java) + multi_json (1.15.0) + multipart-post (2.1.1) + murmurhash3 (0.1.6-java) + mustache (0.99.8) + mustermann (1.0.3) + naught (1.1.0) + nio4r (2.5.9-java) + nokogiri (1.12.5-java) + racc (~> 1.4) + numerizer (0.1.1) + octokit (4.22.0) + faraday (>= 0.9) + sawyer (~> 0.8.0, >= 0.5.3) + openssl_pkcs8_pure (0.0.0.2) + paquet (0.2.1) + pleaserun (0.0.32) + cabin (> 0) + clamp + dotenv + insist + mustache (= 0.99.8) + stud + polyglot (0.3.5) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + public_suffix (3.1.1) + puma (5.6.8-java) + nio4r (~> 2.0) + racc (1.5.2-java) + rack (2.2.9) + rack-protection (2.2.1) + rack + rack-test (1.1.0) + rack (>= 1.0, < 3) + rake (12.3.3) + rchardet (1.8.0) + redis (4.6.0) + rexml (3.2.6) + rspec (3.11.0) + rspec-core (~> 3.11.0) + rspec-expectations (~> 3.11.0) + rspec-mocks (~> 3.11.0) + rspec-core (3.11.0) + rspec-support (~> 3.11.0) + rspec-expectations (3.11.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.11.0) + rspec-mocks (3.11.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.11.0) + rspec-support (3.11.1) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + ruby-progressbar (1.11.0) + ruby2_keywords (0.0.5) + rubyzip (1.3.0) + rufus-scheduler (3.0.9) + tzinfo + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) + semantic_logger (3.4.1) + concurrent-ruby (~> 1.0) + sequel (5.53.0) + simple_oauth (0.3.1) + sinatra (2.2.1) + mustermann (~> 1.0) + rack (~> 2.2) + rack-protection (= 2.2.1) + tilt (~> 2.0) + snappy (0.0.12-java) + snappy-jars (~> 1.1.0) + snappy-jars (1.1.0.1.2-java) + snmp (1.3.2) + spoon (0.0.6) + ffi + stud (0.0.23) + thread_safe (0.3.6-java) + tilt (2.0.11) + treetop (1.6.12) + polyglot (~> 0.3) + twitter (6.2.0) + addressable (~> 2.3) + buftok (~> 0.2.0) + equalizer (~> 0.0.11) + http (~> 3.0) + http-form_data (~> 2.0) + http_parser.rb (~> 0.6.0) + memoizable (~> 0.4.0) + multipart-post (~> 2.0) + naught (~> 1.0) + simple_oauth (~> 0.3.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + tzinfo-data (1.2021.5) + tzinfo (>= 1.0.0) + unf (0.1.4-java) + webhdfs (0.10.2) + addressable + webmock (3.14.0) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + xml-simple (1.1.9) + rexml + +PLATFORMS + java + universal-java-11 + +DEPENDENCIES + atomic (~> 1) + belzebuth + benchmark-ips + builder (~> 3) + childprocess (~> 4) + ci_reporter_rspec (~> 1) + flores (~> 0.0.8) + fpm (~> 1, >= 1.14.1) + gems (~> 1) + json-schema (~> 2) + logstash-codec-avro + logstash-codec-cef + logstash-codec-collectd + logstash-codec-dots + logstash-codec-edn + logstash-codec-edn_lines + logstash-codec-es_bulk + logstash-codec-fluent + logstash-codec-graphite + logstash-codec-json + logstash-codec-json_lines + logstash-codec-line + logstash-codec-msgpack + logstash-codec-multiline + logstash-codec-netflow + logstash-codec-plain + logstash-codec-rubydebug + logstash-core! + logstash-core-plugin-api! + logstash-devutils (~> 1) + logstash-filter-aggregate + logstash-filter-anonymize + logstash-filter-cidr + logstash-filter-clone + logstash-filter-csv + logstash-filter-date + logstash-filter-de_dot + logstash-filter-dissect + logstash-filter-dns + logstash-filter-drop + logstash-filter-elasticsearch + logstash-filter-fingerprint + logstash-filter-geoip + logstash-filter-grok + logstash-filter-http + logstash-filter-json + logstash-filter-kv + logstash-filter-memcached + logstash-filter-metrics + logstash-filter-mutate + logstash-filter-prune + logstash-filter-ruby + logstash-filter-sleep + logstash-filter-split + logstash-filter-syslog_pri + logstash-filter-throttle + logstash-filter-translate + logstash-filter-truncate + logstash-filter-urldecode + logstash-filter-useragent + logstash-filter-uuid + logstash-filter-xml + logstash-input-azure_event_hubs + logstash-input-beats + logstash-input-couchdb_changes + logstash-input-dead_letter_queue + logstash-input-elasticsearch + logstash-input-exec + logstash-input-file + logstash-input-ganglia + logstash-input-gelf + logstash-input-generator + logstash-input-graphite + logstash-input-heartbeat + logstash-input-http + logstash-input-http_poller + logstash-input-imap + logstash-input-jms + logstash-input-pipe + logstash-input-redis + logstash-input-s3 + logstash-input-snmp + logstash-input-snmptrap + logstash-input-sqs + logstash-input-stdin + logstash-input-syslog + logstash-input-tcp + logstash-input-twitter + logstash-input-udp + logstash-input-unix + logstash-integration-elastic_enterprise_search + logstash-integration-jdbc + logstash-integration-kafka + logstash-integration-rabbitmq + logstash-output-cloudwatch + logstash-output-csv + logstash-output-elasticsearch (>= 10.4.2) + logstash-output-email + logstash-output-file + logstash-output-graphite + logstash-output-http + logstash-output-lumberjack + logstash-output-nagios + logstash-output-null + logstash-output-pipe + logstash-output-redis + logstash-output-s3 + logstash-output-sns + logstash-output-sqs + logstash-output-stdout + logstash-output-tcp + logstash-output-udp + logstash-output-webhdfs + murmurhash3 (= 0.1.6) + octokit (~> 4) + paquet (~> 0.2) + pleaserun (~> 0.0.28) + rack-test + rake (~> 12) + rspec (~> 3.5) + ruby-progressbar (~> 1) + rubyzip (~> 1) + stud (~> 0.0.22) + webmock (~> 3) + +BUNDLED WITH + 2.3.18 diff --git a/Gemfile.template b/Gemfile.template index 8795c6816..17db7aae5 100644 --- a/Gemfile.template +++ b/Gemfile.template @@ -4,122 +4,26 @@ source "https://rubygems.org" gem "logstash-core", :path => "./logstash-core" gem "logstash-core-plugin-api", :path => "./logstash-core-plugin-api" -gem "paquet", "~> 0.2" -gem "ruby-progressbar", "~> 1" -gem "builder", "~> 3" -gem "ci_reporter_rspec", "~> 1", :group => :development -gem "rspec", "~> 3.5", :group => :development -gem "logstash-devutils", "~> 1", :group => :development -gem "benchmark-ips", :group => :development -gem "octokit", "~> 4", :group => :build -gem "stud", "~> 0.0.22", :group => :build -gem "rack-test", :require => "rack/test", :group => :development -gem "fpm", "~> 1.3.3", :group => :build -gem "rubyzip", "~> 1", :group => :build -gem "gems", "~> 1", :group => :build -gem "flores", "~> 0.0.6", :group => :development gem "atomic", "~> 1" -gem "belzebuth", :group => :development -gem "json-schema", "~> 2", :group => :development +gem "builder", "~> 3" +gem "paquet", "~> 0.2" gem "pleaserun", "~>0.0.28" gem "rake", "~> 12" +gem "ruby-progressbar", "~> 1" +gem "logstash-output-elasticsearch", ">= 10.4.2" +gem "childprocess", "~> 4", :group => :build +gem "fpm", "~> 1", ">= 1.14.1", :group => :build # compound due to bugfix https://github.com/jordansissel/fpm/pull/1856 +gem "gems", "~> 1", :group => :build +gem "octokit", "~> 4", :group => :build +gem "rubyzip", "~> 1", :group => :build +gem "stud", "~> 0.0.22", :group => :build +gem "belzebuth", :group => :development +gem "benchmark-ips", :group => :development +gem "ci_reporter_rspec", "~> 1", :group => :development +gem "flores", "~> 0.0.8", :group => :development +gem "json-schema", "~> 2", :group => :development +gem "logstash-devutils", "~> 1", :group => :development +gem "rack-test", :require => "rack/test", :group => :development +gem "rspec", "~> 3.5", :group => :development gem "webmock", "~> 3", :group => :development -gem "logstash-codec-cef" -gem "logstash-codec-collectd" -gem "logstash-codec-dots" -gem "logstash-codec-edn" -gem "logstash-codec-edn_lines" -gem "logstash-codec-es_bulk" -gem "logstash-codec-fluent" -gem "logstash-codec-graphite" -gem "logstash-codec-json" -gem "logstash-codec-json_lines" -gem "logstash-codec-line" -gem "logstash-codec-msgpack" -gem "logstash-codec-multiline" -gem "logstash-codec-netflow" -gem "logstash-codec-plain" -gem "logstash-codec-rubydebug" -gem "logstash-filter-aggregate" -gem "logstash-filter-anonymize" -gem "logstash-filter-cidr" -gem "logstash-filter-clone" -gem "logstash-filter-csv" -gem "logstash-filter-date" -gem "logstash-filter-de_dot" -gem "logstash-filter-dissect" -gem "logstash-filter-dns" -gem "logstash-filter-drop" -gem "logstash-filter-elasticsearch" -gem "logstash-filter-fingerprint" -gem "logstash-filter-geoip" -gem "logstash-filter-grok" -gem "logstash-filter-http" -gem "logstash-filter-jdbc_static" -gem "logstash-filter-jdbc_streaming" -gem "logstash-filter-json" -gem "logstash-filter-kv" -gem "logstash-filter-memcached" -gem "logstash-filter-metrics" -gem "logstash-filter-mutate" -gem "logstash-filter-ruby" -gem "logstash-filter-sleep" -gem "logstash-filter-split" -gem "logstash-filter-syslog_pri" -gem "logstash-filter-throttle" -gem "logstash-filter-translate" -gem "logstash-filter-truncate" -gem "logstash-filter-urldecode" -gem "logstash-filter-useragent" -gem "logstash-filter-xml" -gem "logstash-input-beats" -gem "logstash-input-azure_event_hubs" -gem "logstash-input-dead_letter_queue" -gem "logstash-input-elasticsearch" -gem "logstash-input-exec" -gem "logstash-input-file" -gem "logstash-input-ganglia" -gem "logstash-input-gelf" -gem "logstash-input-generator" -gem "logstash-input-graphite" -gem "logstash-input-heartbeat" -gem "logstash-input-http" -gem "logstash-input-http_poller" -gem "logstash-input-imap" -gem "logstash-input-jdbc" -gem "logstash-input-kafka" -gem "logstash-input-pipe" -gem "logstash-input-rabbitmq" -gem "logstash-input-redis" -gem "logstash-input-s3" -gem "logstash-input-snmp" -gem "logstash-input-snmptrap" -gem "logstash-input-sqs" -gem "logstash-input-stdin" -gem "logstash-input-syslog" -gem "logstash-input-tcp" -gem "logstash-input-twitter" -gem "logstash-input-udp" -gem "logstash-input-unix" -gem "logstash-output-elastic_app_search" -gem "logstash-output-cloudwatch" -gem "logstash-output-csv" -gem "logstash-output-elasticsearch" -gem "logstash-output-email" -gem "logstash-output-file" -gem "logstash-output-graphite" -gem "logstash-output-http" -gem "logstash-output-kafka" -gem "logstash-output-lumberjack" -gem "logstash-output-nagios" -gem "logstash-output-null" -gem "logstash-output-pipe" -gem "logstash-output-rabbitmq" -gem "logstash-output-redis" -gem "logstash-output-s3" -gem "logstash-output-sns" -gem "logstash-output-sqs" -gem "logstash-output-stdout" -gem "logstash-output-tcp" -gem "logstash-output-udp" -gem "logstash-output-webhdfs" +gem "murmurhash3", "= 0.1.6" # Pins until version 0.1.7-java is released diff --git a/NOTICE.TXT b/NOTICE.TXT index f72c1c4ff..2900d52b4 100644 --- a/NOTICE.TXT +++ b/NOTICE.TXT @@ -1,15 +1,97 @@ -Logstash -Copyright 2012-2018 Elasticsearch -This product includes software developed by The Apache Software Foundation (http://www.apache.org/). +========== +Notice for: Red Hat Universal Base Image minimal-8 +---------- -========================================================================== -Third party libraries bundled by the Logstash project: +source: https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf --------------------------------------------------- -Library: addressable v2.3.8 -Url: https://github.com/sporkmonger/addressable -License: Apache-2.0 +END USER LICENSE AGREEMENT +RED HAT UNIVERSAL BASE IMAGE + +PLEASE READ THIS END USER LICENSE AGREEMENT CAREFULLY BEFORE USING SOFTWARE FROM RED HAT. BY USING RED HAT +SOFTWARE, YOU SIGNIFY YOUR ASSENT TO AND ACCEPTANCE OF THIS END USER LICENSE AGREEMENT AND ACKNOWLEDGE YOU +HAVE READ AND UNDERSTAND THE TERMS. AN INDIVIDUAL ACTING ON BEHALF OF AN ENTITY REPRESENTS THAT HE OR SHE HAS THE +AUTHORITY TO ENTER INTO THIS END USER LICENSE AGREEMENT ON BEHALF OF THAT ENTITY. IF YOU DO NOT ACCEPT THE TERMS +OF THIS AGREEMENT, THEN YOU MUST NOT USE THE RED HAT SOFTWARE. THIS END USER LICENSE AGREEMENT DOES NOT PROVIDE +ANY RIGHTS TO RED HAT SERVICES SUCH AS SOFTWARE MAINTENANCE, UPGRADES OR SUPPORT. PLEASE REVIEW YOUR SERVICE +OR SUBSCRIPTION AGREEMENT(S) THAT YOU MAY HAVE WITH RED HAT OR OTHER AUTHORIZED RED HAT SERVICE PROVIDERS +REGARDING SERVICES AND ASSOCIATED PAYMENTS. + +This end user license agreement (“EULA”) governs the use of Red Hat Universal Base Image and associated software supporting such container(s) +and any related updates, source code, including the appearance, structure and organization (the “Programs”), regardless of the delivery mechanism. +If a Red Hat Universal Base Image is included in another Red Hat product, the EULA terms of such other Red Hat product will apply and supersede +this EULA. If a Red Hat Universal Base Image is included in a third party work, the terms of this EULA will continue to govern the Red Hat Universal +Base Image. + +1. License Grant. Subject to the terms of this EULA, Red Hat, Inc. (“Red Hat”) grants to you a perpetual, worldwide license to the Programs (each +of which may include multiple software components). With the exception of the Red Hat trademark identified in Section 2 below, each software +component is governed by a license that permits you to run, copy, modify, and redistribute (subject to certain obligations in some cases) the +software components. This EULA pertains solely to the Programs and does not limit your rights under, or grant you rights that supersede, the +license terms applicable to any particular component. The license terms applicable to each software component are provided in the source code +of that component. + +2. Intellectual Property Rights. The Programs and each of their components are owned by Red Hat and other licensors and are protected under +copyright law and other laws as applicable. Title to the Programs and any component shall remain with Red Hat and other licensors, subject to +the applicable license, excluding any independently developed and licensed work. The “Red Hat” trademark is a registered trademark of Red +Hat and its affiliates in the U.S. and other countries. Subject to Red Hat’s trademark usage guidelines (set forth at +http://www.redhat.com/about/corporate/trademark/), this EULA permits you to distribute the Programs that include the Red Hat trademark, +provided you do not make any statements on behalf of Red Hat, including but not limited to, stating or in any way suggesting (in any public, +private and/or confidential statement (whether written or verbal)) that Red Hat supports or endorses software built and delivered with a Red Hat +Universal Base Image(s) (such derivative works referred to as a “Red Hat Based Container Images”); provided if a Red Hat Based Container +Image is Red Hat Certified and deployed on a Red Hat supported configuration as set forth at https://access.redhat.com/articles/2726611 then +you may state that the Red Hat Universal Base Image is supported by Red Hat. You agree to include this unmodified EULA in all distributions of +container images sourced, built or otherwise derived from the Programs. If you modify the Red Hat Universal Base Image(s), you must remove +any Red Hat trademark(s) prior to any subsequent distribution. Any breach of this Section 2 is a material breach of the EULA and you may no +longer use and/or distribute the Red Hat trademark(s). Modifications to the software may corrupt the Programs. + +3. Limited Warranty. Except as specifically stated in this Section 3, a separate agreement with Red Hat, or a license for a particular component, +to the maximum extent permitted under applicable law, the Programs and the components are provided and licensed “as is” without +warranty of any kind, expressed or implied, including the implied warranties of merchantability, non-infringement or fitness for a +particular purpose. Neither Red Hat nor its affiliates warrant that the functions contained in the Programs will meet your requirements or that +the operation of the Programs will be entirely error free, appear or perform precisely as described in the accompanying documentation, or comply +with regulatory requirements. Red Hat warrants that the media on which the Programs and the components are provided will be free from defects +in materials and manufacture under normal use for a period of 30 days from the date of delivery to you. This warranty extends only to the party +that purchases subscription services for the supported configurations from Red Hat and/or its affiliates or a Red Hat authorized +distributor. + +4. Limitation of Remedies and Liability. To the maximum extent permitted by applicable law, your exclusive remedy under this EULA is to return +any defective media within 30 days of delivery along with a copy of your payment receipt and Red Hat, at its option, will replace it or refund the +money you paid for the media. To the maximum extent permitted under applicable law, under no circumstances will Red Hat, its affiliates, +any Red Hat authorized distributor, or the licensor of any component provided to you under this EULA be liable to you for any incidental +or consequential damages, including lost profits or lost savings arising out of the use or inability to use the Programs or any +component, even if Red Hat, its affiliates, an authorized distributor, and/or licensor has been advised of the possibility of such +damages. In no event shall Red Hat's or its affiliates’ liability, an authorized distributor’s liability or the liability of the licensor of a +component provided to you under this EULA exceed the amount that you paid to Red Hat for the media under this EULA. + +5. Export Control. As required by the laws of the United States and other countries, you represent and warrant that you: (a) understand that the +Programs and their components may be subject to export controls under the U.S. Commerce Department’s Export Administration Regulations +(“EAR”); (b) are not located in a prohibited destination country under the EAR or U.S. sanctions regulations (currently Cuba, Iran, North Korea, +Sudan, Syria, and the Crimea Region of Ukraine, subject to change as posted by the United States government); (c) will not export, re-export, or +transfer the Programs to any prohibited destination, persons or entities on the U.S. Bureau of Industry and Security Denied Parties List or Entity +List, or the U.S. Office of Foreign Assets Control list of Specially Designated Nationals and Blocked Persons, or any similar lists maintained by +other countries, without the necessary export license(s) or authorizations(s); (d) will not use or transfer the Programs for use in connection with +any nuclear, chemical or biological weapons, missile technology, or military end-uses where prohibited by an applicable arms embargo, unless +authorized by the relevant government agency by regulation or specific license; (e) understand and agree that if you are in the United States and +export or transfer the Programs to eligible end users, you will, to the extent required by EAR Section 740.17(e), submit semi-annual reports to +the Commerce Department’s Bureau of Industry and Security, which include the name and address (including country) of each transferee; and +(f) understand that countries including the United States may restrict the import, use, or export of encryption products (which may include the +Programs and the components) and agree that you shall be solely responsible for compliance with any such import, use, or export restrictions. + +6. Third Party Software. The Program may be provided with third party software programs subject to their own license terms. The license terms +either accompany the third party software programs or, in some instances, may be viewed at registry.access.redhat.com. If you do not agree to +abide by the applicable license terms for the third party software programs, then you may not install, distribute or use them. + +7. General. If any provision of this EULA is held to be unenforceable, the enforceability of the remaining provisions shall not be affected. Any claim, +controversy or dispute arising under or relating to this EULA shall be governed by the laws of the State of New York and of the United States, +without regard to any conflict of laws provisions. The rights and obligations of the parties to this EULA shall not be governed by the United +Nations Convention on the International Sale of Goods. + +Copyright © 2019 Red Hat, Inc. All rights reserved. “Red Hat,” is a registered trademark of Red Hat, Inc. +All other trademarks are the property of their respective owners. + +========== +Notice for: addressable-2.7.0 +---------- Copyright © Bob Aman @@ -215,43 +297,36 @@ 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. --------------------------------------------------- -Library: asm v6.0 -Url: http://asm.objectweb.org -License: BSD-3-Clause +========== +Notice for: amazing_print-1.2.2 +---------- -ASM: a very small and fast Java bytecode manipulation framework -Copyright (c) 2000-2011 INRIA, France Telecom -All rights reserved. +MIT License -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 holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. +Copyright (c) 2010-2019 Michael Dvorkin +Copyright (c) 2020 AmazingPrint -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 OWNER 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. +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: --------------------------------------------------- -Library: atomic v1.1.99 -Url: http://github.com/ruby-concurrency/atomic -License: Apache-2.0 +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. + +========== +Notice for: atomic-1.1.101 +---------- Apache License @@ -398,10 +473,9 @@ additional liability. END OF TERMS AND CONDITIONS --------------------------------------------------- -Library: avl_tree v1.2.1 -Url: https://github.com/nahi/avl_tree -License: BSD-2-Clause-FreeBSD +========== +Notice for: avl_tree-1.2.1 +---------- Copyright (c) 2012, Hiroshi Nakamura All rights reserved. @@ -429,38 +503,27 @@ 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. --------------------------------------------------- -Library: awesome_print v1.8.0 -Url: https://github.com/awesome-print/awesome_print -License: MIT +========== +Notice for: avro-1.10.1 +---------- -Copyright (c) 2010-2013 Michael Dvorkin -http://www.dvorkin.net -%w(mike dvorkin.net) * "@" || "twitter.com/mid" +Apache Avro +Copyright 2010-2015 The Apache Software Foundation -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: +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). -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. +========== +Notice for: aws-eventstream-1.1.0 +---------- --------------------------------------------------- -Library: aws-sdk-core v2.11.37 -Url: http://github.com/aws/aws-sdk-ruby -License: Apache-2.0 +AWS SDK for Ruby +Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +========== +Notice for: aws-sdk-2.11.632 +---------- copyright 2013. amazon web services, inc. all rights reserved. @@ -666,10 +729,9 @@ copyright 2013. amazon web services, inc. all rights reserved. See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------- -Library: aws-sdk-resources v2.11.37 -Url: http://github.com/aws/aws-sdk-ruby -License: Apache-2.0 +========== +Notice for: aws-sdk-core-2.11.632 +---------- copyright 2013. amazon web services, inc. all rights reserved. @@ -875,10 +937,217 @@ copyright 2013. amazon web services, inc. all rights reserved. See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------- -Library: aws-sdk-v1 v1.67.0 -Url: http://aws.amazon.com/sdkforruby -License: Apache-2.0 +========== +Notice for: aws-sdk-resources-2.11.632 +---------- + +copyright 2013. amazon web services, inc. all rights reserved. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + +========== +Notice for: aws-sdk-v1-1.67.0 +---------- Copyright 2011-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. @@ -892,11 +1161,9 @@ or in the "license" file accompanying this file. This file 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. - --------------------------------------------------- -Library: aws-sdk v2.11.37 -Url: http://github.com/aws/aws-sdk-ruby -License: Apache-2.0 +========== +Notice for: aws-sigv4-1.2.2 +---------- copyright 2013. amazon web services, inc. all rights reserved. @@ -1102,245 +1369,27 @@ copyright 2013. amazon web services, inc. all rights reserved. See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------- -Library: aws-sigv4 v1.0.2 -Url: http://github.com/aws/aws-sdk-ruby -License: Apache-2.0 +========== +Notice for: back_pressure-1.0.0 +---------- -copyright 2013. amazon web services, inc. all rights reserved. +Copyright [yyyy] [name of copyright owner] - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +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 - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + http://www.apache.org/licenses/LICENSE-2.0 - 1. Definitions. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - --------------------------------------------------- -Library: backports v3.11.3 -Url: http://github.com/marcandre/backports -License: MIT - -Copyright (c) 2009 Marc-Andre Lafortune - -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. - --------------------------------------------------- -Library: bindata v2.4.3 -Url: http://github.com/dmendel/bindata -License: BSD-2-Clause +========== +Notice for: bindata-2.4.8 +---------- Copyright (C) 2007-2012 Dion Mendel. All rights reserved. @@ -1365,23 +1414,9 @@ 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. --------------------------------------------------- -Library: bouncycastle v -Url: https://www.bouncycastle.org -License: MIT - -Copyright (c) 2000 - 2018 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. - --------------------------------------------------- -Library: buftok v0.2.0 -Url: https://github.com/sferik/buftok -License: MIT OR Ruby|BSD-2-Clause +========== +Notice for: buftok-0.2.0 +---------- Copyright (c) 2006-2013 Tony Arcieri, Martin Emde, Erik Michaels-Ober. Distributed under the [Ruby license][license]. [license]: http://www.ruby-lang.org/en/LICENSE.txt @@ -1442,10 +1477,9 @@ You can redistribute it and/or modify it under either the terms of the WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. --------------------------------------------------- -Library: builder v3.2.3 -Url: http://onestepback.org -License: MIT +========== +Notice for: builder-3.2.4 +---------- Copyright (c) 2003-2012 Jim Weirich (jim.weirich@gmail.com) @@ -1467,11 +1501,9 @@ 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. - --------------------------------------------------- -Library: bundler v1.9.10 -Url: https://bundler.io/ -License: MIT +========== +Notice for: bundler-1.17.3 +---------- Portions copyright (c) 2010 Andre Arko Portions copyright (c) 2009 Engine Yard @@ -1496,2504 +1528,9 @@ 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. - --------------------------------------------------- -Library: bytelist v -Url: http://github.com/jruby/bytelist -License: EPL-1.0 - -JRuby is Copyright (c) 2007-2013 The JRuby project, and is released -under a tri EPL/GPL/LGPL license. You can use it, redistribute it -and/or modify it under the terms of the: - - Eclipse Public License version 1.0 - GNU General Public License version 2 - GNU Lesser General Public License version 2.1 - -The complete text of the Eclipse Public License is as follows: - - Eclipse Public License - v 1.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial code and - documentation distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - - i) changes to the Program, and - - ii) additions to the Program; - where such changes and/or additions to the Program - originate from and are distributed by that particular - Contributor. A Contribution 'originates' from a - Contributor if it was added to the Program by such - Contributor itself or anyone acting on such - Contributor's behalf. Contributions do not include - additions to the Program which: (i) are separate modules - of software distributed in conjunction with the Program - under their own license agreement, and (ii) are not - derivative works of the Program. - - "Contributor" means any person or entity that distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor - which are necessarily infringed by the use or sale of its - Contribution alone or when combined with the Program. - - "Program" means the Contributions distributed in accordance with - this Agreement. - - "Recipient" means anyone who receives the Program under this - Agreement, including all Contributors. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor - hereby grants Recipient a non-exclusive, worldwide, - royalty-free copyright license to reproduce, prepare - derivative works of, publicly display, publicly perform, - distribute and sublicense the Contribution of such - Contributor, if any, and such derivative works, in source - code and object code form. - - b) Subject to the terms of this Agreement, each Contributor - hereby grants Recipient a non-exclusive, worldwide, - royalty-free patent license under Licensed Patents to make, - use, sell, offer to sell, import and otherwise transfer the - Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the - combination of the Contribution and the Program if, at the - time the Contribution is added by the Contributor, such - addition of the Contribution causes such combination to be - covered by the Licensed Patents. The patent license shall not - apply to any other combinations which include the - Contribution. No hardware per se is licensed hereunder. - - c) Recipient understands that although each Contributor grants - the licenses to its Contributions set forth herein, no - assurances are provided by any Contributor that the Program - does not infringe the patent or other intellectual property - rights of any other entity. Each Contributor disclaims any - liability to Recipient for claims brought by any other entity - based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and - licenses granted hereunder, each Recipient hereby assumes - sole responsibility to secure any other intellectual property - rights needed, if any. For example, if a third party patent - license is required to allow Recipient to distribute the - Program, it is Recipient's responsibility to acquire that - license before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to - grant the copyright license set forth in this Agreement. - - 3. REQUIREMENTS - - A Contributor may choose to distribute the Program in object code - form under its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - - b) its license agreement: - - i) effectively disclaims on behalf of all Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, - and implied warranties or conditions of merchantability - and fitness for a particular purpose; - - ii) effectively excludes on behalf of all Contributors all - liability for damages, including direct, indirect, - special, incidental and consequential damages, such as - lost profits; - - iii) states that any provisions which differ from this - Agreement are offered by that Contributor alone and not - by any other party; and - - iv) states that source code for the Program is available - from such Contributor, and informs licensees how to - obtain it in a reasonable manner on or through a medium - customarily used for software exchange. - - When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - - b) a copy of this Agreement must be included with each copy of - the Program. - - Contributors may not remove or alter any copyright notices contained - within the Program. - - Each Contributor must identify itself as the originator of its - Contribution, if any, in a manner that reasonably allows subsequent - Recipients to identify the originator of the Contribution. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain - responsibilities with respect to end users, business partners and - the like. While this license is intended to facilitate the - commercial use of the Program, the Contributor who includes the - Program in a commercial product offering should do so in a manner - which does not create potential liability for other Contributors. - Therefore, if a Contributor includes the Program in a commercial - product offering, such Contributor ("Commercial Contributor") hereby - agrees to defend and indemnify every other Contributor ("Indemnified - Contributor") against any losses, damages and costs (collectively - "Losses") arising from claims, lawsuits and other legal actions - brought by a third party against the Indemnified Contributor to the - extent caused by the acts or omissions of such Commercial - Contributor in connection with its distribution of the Program in a - commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an - Indemnified Contributor must: a) promptly notify the Commercial - Contributor in writing of such claim, and b) allow the Commercial - Contributor to control, and cooperate with the Commercial - Contributor in, the defense and any related settlement negotiations. - The Indemnified Contributor may participate in any such claim at its - own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's - responsibility alone. Under this section, the Commercial Contributor - would have to defend claims against the other Contributors related - to those performance claims and warranties, and if a court requires - any other Contributor to pay any damages as a result, the Commercial - Contributor must pay those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS - PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, - ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient - is solely responsible for determining the appropriateness of using - and distributing the Program and assumes all risks associated with - its exercise of rights under this Agreement , including but not - limited to the risks and costs of program errors, compliance with - applicable laws, damage to or loss of data, programs or equipment, - and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT - NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS - GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability - of the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that - the Program itself (excluding combinations of the Program with other - software or hardware) infringes such Recipient's patent(s), then - such Recipient's rights granted under Section 2(b) shall terminate - as of the date such litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any - licenses granted by Recipient relating to the Program shall continue - and survive. - - Everyone is permitted to copy and distribute copies of this - Agreement, but in order to avoid inconsistency the Agreement is - copyrighted and may only be modified in the following manner. The - Agreement Steward reserves the right to publish new versions - (including revisions) of this Agreement from time to time. No one - other than the Agreement Steward has the right to modify this - Agreement. The Eclipse Foundation is the initial Agreement Steward. - The Eclipse Foundation may assign the responsibility to serve as the - Agreement Steward to a suitable separate entity. Each new version of - the Agreement will be given a distinguishing version number. The - Program (including Contributions) may always be distributed subject - to the version of the Agreement under which it was received. In - addition, after a new version of the Agreement is published, - Contributor may elect to distribute the Program (including its - Contributions) under the new version. Except as expressly stated in - Sections 2(a) and 2(b) above, Recipient receives no rights or - licenses to the intellectual property of any Contributor under this - Agreement, whether expressly, by implication, estoppel or otherwise. - All rights in the Program not expressly granted under this Agreement - are reserved. - - This Agreement is governed by the laws of the State of New York and - the intellectual property laws of the United States of America. No - party to this Agreement will bring a legal action under this - Agreement more than one year after the cause of action arose. Each - party waives its rights to a jury trial in any resulting litigation. - -The complete text of the Common Public License is as follows: - - Common Public License - v 1.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF - THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial code and - documentation distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - - i) changes to the Program, and - - ii) additions to the Program; - - where such changes and/or additions to the Program originate - from and are distributed by that particular Contributor. A - Contribution 'originates' from a Contributor if it was added to the - Program by such Contributor itself or anyone acting on such - Contributor's behalf. Contributions do not include additions to the - Program which: (i) are separate modules of software distributed in - conjunction with the Program under their own license agreement, - and (ii) are not derivative works of the Program. - - "Contributor" means any person or entity that distributes the Program. - - "Licensed Patents " mean patent claims licensable by a Contributor - which are necessarily infringed by the use or sale of its Contribution - alone or when combined with the Program. - - "Program" means the Contributions distributed in accordance with this Agreement. - - "Recipient" means anyone who receives the Program under this - Agreement, including all Contributors. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor - hereby grants Recipient a non-exclusive, worldwide, royalty-free - copyright license to reproduce, prepare derivative works of, publicly - display, publicly perform, distribute and sublicense the Contribution - of such Contributor, if any, and such derivative works, in source code - and object code form. - - b) Subject to the terms of this Agreement, each Contributor - hereby grants Recipient a non-exclusive, worldwide, royalty-free - patent license under Licensed Patents to make, use, sell, offer to - sell, import and otherwise transfer the Contribution of such - Contributor, if any, in source code and object code form. This patent - license shall apply to the combination of the Contribution and the - Program if, at the time the Contribution is added by the Contributor, - such addition of the Contribution causes such combination to be - covered by the Licensed Patents. The patent license shall not apply to - any other combinations which include the Contribution. No hardware per - se is licensed hereunder. - - c) Recipient understands that although each Contributor grants - the licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. Each - Contributor disclaims any liability to Recipient for claims brought by - any other entity based on infringement of intellectual property rights - or otherwise. As a condition to exercising the rights and licenses - granted hereunder, each Recipient hereby assumes sole responsibility - to secure any other intellectual property rights needed, if any. For - example, if a third party patent license is required to allow - Recipient to distribute the Program, it is Recipient's responsibility - to acquire that license before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant the - copyright license set forth in this Agreement. - - 3. REQUIREMENTS - - A Contributor may choose to distribute the Program in object code form - under its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; - and - - b) its license agreement: - - i) effectively disclaims on behalf of all Contributors all - warranties and conditions, express and implied, including warranties - or conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - - ii) effectively excludes on behalf of all Contributors all - liability for damages, including direct, indirect, special, incidental - and consequential damages, such as lost profits; - - iii) states that any provisions which differ from this Agreement - are offered by that Contributor alone and not by any other party; and - - iv) states that source code for the Program is available from - such Contributor, and informs licensees how to obtain it in a - reasonable manner on or through a medium customarily used for software - exchange. - - When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - - b) a copy of this Agreement must be included with each copy of - the Program. - - Contributors may not remove or alter any copyright notices contained - within the Program. - - Each Contributor must identify itself as the originator of its - Contribution, if any, in a manner that reasonably allows subsequent - Recipients to identify the originator of the Contribution. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain - responsibilities with respect to end users, business partners and the - like. While this license is intended to facilitate the commercial use - of the Program, the Contributor who includes the Program in a - commercial product offering should do so in a manner which does not - create potential liability for other Contributors. Therefore, if a - Contributor includes the Program in a commercial product offering, - such Contributor ("Commercial Contributor") hereby agrees to defend - and indemnify every other Contributor ("Indemnified Contributor") - against any losses, damages and costs (collectively "Losses") arising - from claims, lawsuits and other legal actions brought by a third party - against the Indemnified Contributor to the extent caused by the acts - or omissions of such Commercial Contributor in connection with its - distribution of the Program in a commercial product offering. The - obligations in this section do not apply to any claims or Losses - relating to any actual or alleged intellectual property - infringement. In order to qualify, an Indemnified Contributor must: a) - promptly notify the Commercial Contributor in writing of such claim, - and b) allow the Commercial Contributor to control, and cooperate with - the Commercial Contributor in, the defense and any related settlement - negotiations. The Indemnified Contributor may participate in any such - claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those - performance claims and warranties, and if a court requires any other - Contributor to pay any damages as a result, the Commercial Contributor - must pay those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS - PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY - OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely - responsible for determining the appropriateness of using and - distributing the Program and assumes all risks associated with its - exercise of rights under this Agreement, including but not limited to - the risks and costs of program errors, compliance with applicable - laws, damage to or loss of data, programs or equipment, and - unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR - ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING - WITHOUT LIMITATION LOST PROFITS), 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 OR - DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED - HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against a Contributor with - respect to a patent applicable to software (including a cross-claim or - counterclaim in a lawsuit), then any patent licenses granted by that - Contributor to such Recipient under this Agreement shall terminate as - of the date such litigation is filed. In addition, if Recipient - institutes patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Program - itself (excluding combinations of the Program with other software or - hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably - practicable. However, Recipient's obligations under this Agreement and - any licenses granted by Recipient relating to the Program shall - continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. IBM is the initial - Agreement Steward. IBM may assign the responsibility to serve as the - Agreement Steward to a suitable separate entity. Each new version of - the Agreement will be given a distinguishing version number. The - Program (including Contributions) may always be distributed subject to - the version of the Agreement under which it was received. In addition, - after a new version of the Agreement is published, Contributor may - elect to distribute the Program (including its Contributions) under - the new version. Except as expressly stated in Sections 2(a) and 2(b) - above, Recipient receives no rights or licenses to the intellectual - property of any Contributor under this Agreement, whether expressly, - by implication, estoppel or otherwise. All rights in the Program not - expressly granted under this Agreement are reserved. - - This Agreement is governed by the laws of the State of New York and - the intellectual property laws of the United States of America. No - party to this Agreement will bring a legal action under this Agreement - more than one year after the cause of action arose. Each party waives - its rights to a jury trial in any resulting litigation. - -The complete text of the GNU General Public License v2 is as follows: - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your - freedom to share and change it. By contrast, the GNU General Public - License is intended to guarantee your freedom to share and change free - software--to make sure the software is free for all its users. This - General Public License applies to most of the Free Software - Foundation's software and to any other program whose authors commit to - using it. (Some other Free Software Foundation software is covered by - the GNU Library General Public License instead.) You can apply it to - your programs, too. - - When we speak of free software, we are referring to freedom, not - price. Our General Public Licenses are designed to make sure that you - have the freedom to distribute copies of free software (and charge for - this service if you wish), that you receive source code or can get it - if you want it, that you can change the software or use pieces of it - in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid - anyone to deny you these rights or to ask you to surrender the rights. - These restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether - gratis or for a fee, you must give the recipients all the rights that - you have. You must make sure that they, too, receive or can get the - source code. And you must show them these terms so they know their - rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software - patents. We wish to avoid the danger that redistributors of a free - program will individually obtain patent licenses, in effect making the - program proprietary. To prevent this, we have made it clear that any - patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains - a notice placed by the copyright holder saying it may be distributed - under the terms of this General Public License. The "Program", below, - refers to any such program or work, and a "work based on the Program" - means either the Program or any derivative work under copyright law: - that is to say, a work containing the Program or a portion of it, - either verbatim or with modifications and/or translated into another - language. (Hereinafter, translation is included without limitation in - the term "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of - running the Program is not restricted, and the output from the Program - is covered only if its contents constitute a work based on the - Program (independent of having been made by running the Program). - Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's - source code as you receive it, in any medium, provided that you - conspicuously and appropriately publish on each copy an appropriate - copyright notice and disclaimer of warranty; keep intact all the - notices that refer to this License and to the absence of any warranty; - and give any other recipients of the Program a copy of this License - along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion - of it, thus forming a work based on the Program, and copy and - distribute such modifications or work under the terms of Section 1 - above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, - and can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based - on the Program, the distribution of the whole must be on the terms of - this License, whose permissions for other licensees extend to the - entire whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of - a storage or distribution medium does not bring the other work under - the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source - code means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to - control compilation and installation of the executable. However, as a - special exception, the source code distributed need not include - anything that is normally distributed (in either source or binary - form) with the major components (compiler, kernel, and so on) of the - operating system on which the executable runs, unless that component - itself accompanies the executable. - - If distribution of executable or object code is made by offering - access to copy from a designated place, then offering equivalent - access to copy the source code from the same place counts as - distribution of the source code, even though third parties are not - compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt - otherwise to copy, modify, sublicense or distribute the Program is - void, and will automatically terminate your rights under this License. - However, parties who have received copies, or rights, from you under - this License will not have their licenses terminated so long as such - parties remain in full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and - all its terms and conditions for copying, distributing or modifying - the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further - restrictions on the recipients' exercise of the rights granted herein. - You are not responsible for enforcing compliance by third parties to - this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot - distribute so as to satisfy simultaneously your obligations under this - License and any other pertinent obligations, then as a consequence you - may not distribute the Program at all. For example, if a patent - license would not permit royalty-free redistribution of the Program by - all those who receive copies directly or indirectly through you, then - the only way you could satisfy both it and this License would be to - refrain entirely from distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is - implemented by public license practices. Many people have made - generous contributions to the wide range of software distributed - through that system in reliance on consistent application of that - system; it is up to the author/donor to decide if he or she is willing - to distribute software through any other system and a licensee cannot - impose that choice. - - This section is intended to make thoroughly clear what is believed to - be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License - may add an explicit geographical distribution limitation excluding - those countries, so that distribution is permitted only in or among - countries not thus excluded. In such case, this License incorporates - the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions - of the General Public License from time to time. Such new versions will - be similar in spirit to the present version, but may differ in detail to - address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and conditions - either of that version or of any later version published by the Free - Software Foundation. If the Program does not specify a version number of - this License, you may choose any version ever published by the Free Software - Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the author - to ask for permission. For software which is copyrighted by the Free - Software Foundation, write to the Free Software Foundation; we sometimes - make exceptions for this. Our decision will be guided by the two goals - of preserving the free status of all derivatives of our free software and - of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY - FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN - OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES - PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED - OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS - TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE - PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, - REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING - WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR - REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, - INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING - OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED - TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY - YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER - PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -The complete text of the GNU Lesser General Public License 2.1 is as follows: - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - [This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your - freedom to share and change it. By contrast, the GNU General Public - Licenses are intended to guarantee your freedom to share and change - free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some - specially designated software packages--typically libraries--of the - Free Software Foundation and other authors who decide to use it. You - can use it too, but we suggest you first think carefully about whether - this license or the ordinary General Public License is the better - strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, - not price. Our General Public Licenses are designed to make sure that - you have the freedom to distribute copies of free software (and charge - for this service if you wish); that you receive source code or can get - it if you want it; that you can change the software and use pieces of - it in new free programs; and that you are informed that you can do - these things. - - To protect your rights, we need to make restrictions that forbid - distributors to deny you these rights or to ask you to surrender these - rights. These restrictions translate to certain responsibilities for - you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis - or for a fee, you must give the recipients all the rights that we gave - you. You must make sure that they, too, receive or can get the source - code. If you link other code with the library, you must provide - complete object files to the recipients, so that they can relink them - with the library after making changes to the library and recompiling - it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the - library, and (2) we offer you this license, which gives you legal - permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that - there is no warranty for the free library. Also, if the library is - modified by someone else and passed on, the recipients should know - that what they have is not the original version, so that the original - author's reputation will not be affected by problems that might be - introduced by others. - - Finally, software patents pose a constant threat to the existence of - any free program. We wish to make sure that a company cannot - effectively restrict the users of a free program by obtaining a - restrictive license from a patent holder. Therefore, we insist that - any patent license obtained for a version of the library must be - consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the - ordinary GNU General Public License. This license, the GNU Lesser - General Public License, applies to certain designated libraries, and - is quite different from the ordinary General Public License. We use - this license for certain libraries in order to permit linking those - libraries into non-free programs. - - When a program is linked with a library, whether statically or using - a shared library, the combination of the two is legally speaking a - combined work, a derivative of the original library. The ordinary - General Public License therefore permits such linking only if the - entire combination fits its criteria of freedom. The Lesser General - Public License permits more lax criteria for linking other code with - the library. - - We call this license the "Lesser" General Public License because it - does Less to protect the user's freedom than the ordinary General - Public License. It also provides other free software developers Less - of an advantage over competing non-free programs. These disadvantages - are the reason we use the ordinary General Public License for many - libraries. However, the Lesser license provides advantages in certain - special circumstances. - - For example, on rare occasions, there may be a special need to - encourage the widest possible use of a certain library, so that it becomes - a de-facto standard. To achieve this, non-free programs must be - allowed to use the library. A more frequent case is that a free - library does the same job as widely used non-free libraries. In this - case, there is little to gain by limiting the free library to free - software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free - programs enables a greater number of people to use a large body of - free software. For example, permission to use the GNU C Library in - non-free programs enables many more people to use the whole GNU - operating system, as well as its variant, the GNU/Linux operating - system. - - Although the Lesser General Public License is Less protective of the - users' freedom, it does ensure that the user of a program that is - linked with the Library has the freedom and the wherewithal to run - that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and - modification follow. Pay close attention to the difference between a - "work based on the library" and a "work that uses the library". The - former contains code derived from the library, whereas the latter must - be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other - program which contains a notice placed by the copyright holder or - other authorized party saying it may be distributed under the terms of - this Lesser General Public License (also called "this License"). - Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data - prepared so as to be conveniently linked with application programs - (which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work - which has been distributed under these terms. A "work based on the - Library" means either the Library or any derivative work under - copyright law: that is to say, a work containing the Library or a - portion of it, either verbatim or with modifications and/or translated - straightforwardly into another language. (Hereinafter, translation is - included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for - making modifications to it. For a library, complete source code means - all the source code for all modules it contains, plus any associated - interface definition files, plus the scripts used to control compilation - and installation of the library. - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of - running a program using the Library is not restricted, and output from - such a program is covered only if its contents constitute a work based - on the Library (independent of the use of the Library in a tool for - writing it). Whether that is true depends on what the Library does - and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's - complete source code as you receive it, in any medium, provided that - you conspicuously and appropriately publish on each copy an - appropriate copyright notice and disclaimer of warranty; keep intact - all the notices that refer to this License and to the absence of any - warranty; and distribute a copy of this License along with the - Library. - - You may charge a fee for the physical act of transferring a copy, - and you may at your option offer warranty protection in exchange for a - fee. - - 2. You may modify your copy or copies of the Library or any portion - of it, thus forming a work based on the Library, and copy and - distribute such modifications or work under the terms of Section 1 - above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Library, - and can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based - on the Library, the distribution of the whole must be on the terms of - this License, whose permissions for other licensees extend to the - entire whole, and thus to each and every part regardless of who wrote - it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Library. - - In addition, mere aggregation of another work not based on the Library - with the Library (or with a work based on the Library) on a volume of - a storage or distribution medium does not bring the other work under - the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public - License instead of this License to a given copy of the Library. To do - this, you must alter all the notices that refer to this License, so - that they refer to the ordinary GNU General Public License, version 2, - instead of to this License. (If a newer version than version 2 of the - ordinary GNU General Public License has appeared, then you can specify - that version instead if you wish.) Do not make any other change in - these notices. - - Once this change is made in a given copy, it is irreversible for - that copy, so the ordinary GNU General Public License applies to all - subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of - the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or - derivative of it, under Section 2) in object code or executable form - under the terms of Sections 1 and 2 above provided that you accompany - it with the complete corresponding machine-readable source code, which - must be distributed under the terms of Sections 1 and 2 above on a - medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy - from a designated place, then offering equivalent access to copy the - source code from the same place satisfies the requirement to - distribute the source code, even though third parties are not - compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the - Library, but is designed to work with the Library by being compiled or - linked with it, is called a "work that uses the Library". Such a - work, in isolation, is not a derivative work of the Library, and - therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library - creates an executable that is a derivative of the Library (because it - contains portions of the Library), rather than a "work that uses the - library". The executable is therefore covered by this License. - Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file - that is part of the Library, the object code for the work may be a - derivative work of the Library even though the source code is not. - Whether this is true is especially significant if the work can be - linked without the Library, or if the work is itself a library. The - threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data - structure layouts and accessors, and small macros and small inline - functions (ten lines or less in length), then the use of the object - file is unrestricted, regardless of whether it is legally a derivative - work. (Executables containing this object code plus portions of the - Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may - distribute the object code for the work under the terms of Section 6. - Any executables containing that work also fall under Section 6, - whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or - link a "work that uses the Library" with the Library to produce a - work containing portions of the Library, and distribute that work - under terms of your choice, provided that the terms permit - modification of the work for the customer's own use and reverse - engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the - Library is used in it and that the Library and its use are covered by - this License. You must supply a copy of this License. If the work - during execution displays copyright notices, you must include the - copyright notice for the Library among them, as well as a reference - directing the user to the copy of this License. Also, you must do one - of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the - Library" must include any data and utility programs needed for - reproducing the executable from it. However, as a special exception, - the materials to be distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies - the executable. - - It may happen that this requirement contradicts the license - restrictions of other proprietary libraries that do not normally - accompany the operating system. Such a contradiction means you cannot - use both them and the Library together in an executable that you - distribute. - - 7. You may place library facilities that are a work based on the - Library side-by-side in a single library together with other library - facilities not covered by this License, and distribute such a combined - library, provided that the separate distribution of the work based on - the Library and of the other library facilities is otherwise - permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute - the Library except as expressly provided under this License. Any - attempt otherwise to copy, modify, sublicense, link with, or - distribute the Library is void, and will automatically terminate your - rights under this License. However, parties who have received copies, - or rights, from you under this License will not have their licenses - terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Library or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Library (or any work based on the - Library), you indicate your acceptance of this License to do so, and - all its terms and conditions for copying, distributing or modifying - the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the - Library), the recipient automatically receives a license from the - original licensor to copy, distribute, link with or modify the Library - subject to these terms and conditions. You may not impose any further - restrictions on the recipients' exercise of the rights granted herein. - You are not responsible for enforcing compliance by third parties with - this License. - - 11. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot - distribute so as to satisfy simultaneously your obligations under this - License and any other pertinent obligations, then as a consequence you - may not distribute the Library at all. For example, if a patent - license would not permit royalty-free redistribution of the Library by - all those who receive copies directly or indirectly through you, then - the only way you could satisfy both it and this License would be to - refrain entirely from distribution of the Library. - - If any portion of this section is held invalid or unenforceable under any - particular circumstance, the balance of the section is intended to apply, - and the section as a whole is intended to apply in other circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system which is - implemented by public license practices. Many people have made - generous contributions to the wide range of software distributed - through that system in reliance on consistent application of that - system; it is up to the author/donor to decide if he or she is willing - to distribute software through any other system and a licensee cannot - impose that choice. - - This section is intended to make thoroughly clear what is believed to - be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Library under this License may add - an explicit geographical distribution limitation excluding those countries, - so that distribution is permitted only in or among countries not thus - excluded. In such case, this License incorporates the limitation as if - written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new - versions of the Lesser General Public License from time to time. - Such new versions will be similar in spirit to the present version, - but may differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the Library - specifies a version number of this License which applies to it and - "any later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Library does not specify a - license version number, you may choose any version ever published by - the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free - programs whose distribution conditions are incompatible with these, - write to the author to ask for permission. For software which is - copyrighted by the Free Software Foundation, write to the Free - Software Foundation; we sometimes make exceptions for this. Our - decision will be guided by the two goals of preserving the free status - of all derivatives of our free software and of promoting the sharing - and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY - KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE - LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME - THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU - FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR - CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE - LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING - RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A - FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF - SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest - possible use to the public, we recommend making it free software that - everyone can redistribute and change. You can do so by permitting - redistribution under these terms (or, alternatively, under the terms of the - ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is - safest to attach them to the start of each source file to most effectively - convey the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Also add information on how to contact you by electronic and paper mail. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the library, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - - That's all there is to it! - -The following licenses cover code other than JRuby which is included with JRuby. - -Licenses listed below include: - -* GNU General Public License version 3 -* Apache 2.0 License -* BSD License -* Apache Software License Version 1.1 -* MIT License - -The complete text of the GNU General Public License version 3 is as follows: - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for - software and other kinds of works. - - The licenses for most software and other practical works are designed - to take away your freedom to share and change the works. By contrast, - the GNU General Public License is intended to guarantee your freedom to - share and change all versions of a program--to make sure it remains free - software for all its users. We, the Free Software Foundation, use the - GNU General Public License for most of our software; it applies also to - any other work released this way by its authors. You can apply it to - your programs, too. - - When we speak of free software, we are referring to freedom, not - price. Our General Public Licenses are designed to make sure that you - have the freedom to distribute copies of free software (and charge for - them if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you - these rights or asking you to surrender the rights. Therefore, you have - certain responsibilities if you distribute copies of the software, or if - you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether - gratis or for a fee, you must pass on to the recipients the same - freedoms that you received. You must make sure that they, too, receive - or can get the source code. And you must show them these terms so they - know their rights. - - Developers that use the GNU GPL protect your rights with two steps: - (1) assert copyright on the software, and (2) offer you this License - giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains - that there is no warranty for this free software. For both users' and - authors' sake, the GPL requires that modified versions be marked as - changed, so that their problems will not be attributed erroneously to - authors of previous versions. - - Some devices are designed to deny users access to install or run - modified versions of the software inside them, although the manufacturer - can do so. This is fundamentally incompatible with the aim of - protecting users' freedom to change the software. The systematic - pattern of such abuse occurs in the area of products for individuals to - use, which is precisely where it is most unacceptable. Therefore, we - have designed this version of the GPL to prohibit the practice for those - products. If such problems arise substantially in other domains, we - stand ready to extend this provision to those domains in future versions - of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. - States should not allow patents to restrict development and use of - software on general-purpose computers, but in those that do, we wish to - avoid the special danger that patents applied to a free program could - make it effectively proprietary. To prevent this, the GPL assures that - patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and - modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of - works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this - License. Each licensee is addressed as "you". "Licensees" and - "recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work - in a fashion requiring copyright permission, other than the making of an - exact copy. The resulting work is called a "modified version" of the - earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based - on the Program. - - To "propagate" a work means to do anything with it that, without - permission, would make you directly or secondarily liable for - infringement under applicable copyright law, except executing it on a - computer or modifying a private copy. Propagation includes copying, - distribution (with or without modification), making available to the - public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other - parties to make or receive copies. Mere interaction with a user through - a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" - to the extent that it includes a convenient and prominently visible - feature that (1) displays an appropriate copyright notice, and (2) - tells the user that there is no warranty for the work (except to the - extent that warranties are provided), that licensees may convey the - work under this License, and how to view a copy of this License. If - the interface presents a list of user commands or options, such as a - menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work - for making modifications to it. "Object code" means any non-source - form of a work. - - A "Standard Interface" means an interface that either is an official - standard defined by a recognized standards body, or, in the case of - interfaces specified for a particular programming language, one that - is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other - than the work as a whole, that (a) is included in the normal form of - packaging a Major Component, but which is not part of that Major - Component, and (b) serves only to enable use of the work with that - Major Component, or to implement a Standard Interface for which an - implementation is available to the public in source code form. A - "Major Component", in this context, means a major essential component - (kernel, window system, and so on) of the specific operating system - (if any) on which the executable work runs, or a compiler used to - produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all - the source code needed to generate, install, and (for an executable - work) run the object code and to modify the work, including scripts to - control those activities. However, it does not include the work's - System Libraries, or general-purpose tools or generally available free - programs which are used unmodified in performing those activities but - which are not part of the work. For example, Corresponding Source - includes interface definition files associated with source files for - the work, and the source code for shared libraries and dynamically - linked subprograms that the work is specifically designed to require, - such as by intimate data communication or control flow between those - subprograms and other parts of the work. - - The Corresponding Source need not include anything that users - can regenerate automatically from other parts of the Corresponding - Source. - - The Corresponding Source for a work in source code form is that - same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of - copyright on the Program, and are irrevocable provided the stated - conditions are met. This License explicitly affirms your unlimited - permission to run the unmodified Program. The output from running a - covered work is covered by this License only if the output, given its - content, constitutes a covered work. This License acknowledges your - rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not - convey, without conditions so long as your license otherwise remains - in force. You may convey covered works to others for the sole purpose - of having them make modifications exclusively for you, or provide you - with facilities for running those works, provided that you comply with - the terms of this License in conveying all material for which you do - not control copyright. Those thus making or running the covered works - for you must do so exclusively on your behalf, under your direction - and control, on terms that prohibit them from making any copies of - your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under - the conditions stated below. Sublicensing is not allowed; section 10 - makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological - measure under any applicable law fulfilling obligations under article - 11 of the WIPO copyright treaty adopted on 20 December 1996, or - similar laws prohibiting or restricting circumvention of such - measures. - - When you convey a covered work, you waive any legal power to forbid - circumvention of technological measures to the extent such circumvention - is effected by exercising rights under this License with respect to - the covered work, and you disclaim any intention to limit operation or - modification of the work as a means of enforcing, against the work's - users, your or third parties' legal rights to forbid circumvention of - technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you - receive it, in any medium, provided that you conspicuously and - appropriately publish on each copy an appropriate copyright notice; - keep intact all notices stating that this License and any - non-permissive terms added in accord with section 7 apply to the code; - keep intact all notices of the absence of any warranty; and give all - recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, - and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to - produce it from the Program, in the form of source code under the - terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent - works, which are not by their nature extensions of the covered work, - and which are not combined with it such as to form a larger program, - in or on a volume of a storage or distribution medium, is called an - "aggregate" if the compilation and its resulting copyright are not - used to limit the access or legal rights of the compilation's users - beyond what the individual works permit. Inclusion of a covered work - in an aggregate does not cause this License to apply to the other - parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms - of sections 4 and 5, provided that you also convey the - machine-readable Corresponding Source under the terms of this License, - in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded - from the Corresponding Source as a System Library, need not be - included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any - tangible personal property which is normally used for personal, family, - or household purposes, or (2) anything designed or sold for incorporation - into a dwelling. In determining whether a product is a consumer product, - doubtful cases shall be resolved in favor of coverage. For a particular - product received by a particular user, "normally used" refers to a - typical or common use of that class of product, regardless of the status - of the particular user or of the way in which the particular user - actually uses, or expects or is expected to use, the product. A product - is a consumer product regardless of whether the product has substantial - commercial, industrial or non-consumer uses, unless such uses represent - the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, - procedures, authorization keys, or other information required to install - and execute modified versions of a covered work in that User Product from - a modified version of its Corresponding Source. The information must - suffice to ensure that the continued functioning of the modified object - code is in no case prevented or interfered with solely because - modification has been made. - - If you convey an object code work under this section in, or with, or - specifically for use in, a User Product, and the conveying occurs as - part of a transaction in which the right of possession and use of the - User Product is transferred to the recipient in perpetuity or for a - fixed term (regardless of how the transaction is characterized), the - Corresponding Source conveyed under this section must be accompanied - by the Installation Information. But this requirement does not apply - if neither you nor any third party retains the ability to install - modified object code on the User Product (for example, the work has - been installed in ROM). - - The requirement to provide Installation Information does not include a - requirement to continue to provide support service, warranty, or updates - for a work that has been modified or installed by the recipient, or for - the User Product in which it has been modified or installed. Access to a - network may be denied when the modification itself materially and - adversely affects the operation of the network or violates the rules and - protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, - in accord with this section must be in a format that is publicly - documented (and with an implementation available to the public in - source code form), and must require no special password or key for - unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this - License by making exceptions from one or more of its conditions. - Additional permissions that are applicable to the entire Program shall - be treated as though they were included in this License, to the extent - that they are valid under applicable law. If additional permissions - apply only to part of the Program, that part may be used separately - under those permissions, but the entire Program remains governed by - this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option - remove any additional permissions from that copy, or from any part of - it. (Additional permissions may be written to require their own - removal in certain cases when you modify the work.) You may place - additional permissions on material, added by you to a covered work, - for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you - add to a covered work, you may (if authorized by the copyright holders of - that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further - restrictions" within the meaning of section 10. If the Program as you - received it, or any part of it, contains a notice stating that it is - governed by this License along with a term that is a further - restriction, you may remove that term. If a license document contains - a further restriction but permits relicensing or conveying under this - License, you may add to a covered work material governed by the terms - of that license document, provided that the further restriction does - not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you - must place, in the relevant source files, a statement of the - additional terms that apply to those files, or a notice indicating - where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the - form of a separately written license, or stated as exceptions; - the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly - provided under this License. Any attempt otherwise to propagate or - modify it is void, and will automatically terminate your rights under - this License (including any patent licenses granted under the third - paragraph of section 11). - - However, if you cease all violation of this License, then your - license from a particular copyright holder is reinstated (a) - provisionally, unless and until the copyright holder explicitly and - finally terminates your license, and (b) permanently, if the copyright - holder fails to notify you of the violation by some reasonable means - prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is - reinstated permanently if the copyright holder notifies you of the - violation by some reasonable means, this is the first time you have - received notice of violation of this License (for any work) from that - copyright holder, and you cure the violation prior to 30 days after - your receipt of the notice. - - Termination of your rights under this section does not terminate the - licenses of parties who have received copies or rights from you under - this License. If your rights have been terminated and not permanently - reinstated, you do not qualify to receive new licenses for the same - material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or - run a copy of the Program. Ancillary propagation of a covered work - occurring solely as a consequence of using peer-to-peer transmission - to receive a copy likewise does not require acceptance. However, - nothing other than this License grants you permission to propagate or - modify any covered work. These actions infringe copyright if you do - not accept this License. Therefore, by modifying or propagating a - covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically - receives a license from the original licensors, to run, modify and - propagate that work, subject to this License. You are not responsible - for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an - organization, or substantially all assets of one, or subdividing an - organization, or merging organizations. If propagation of a covered - work results from an entity transaction, each party to that - transaction who receives a copy of the work also receives whatever - licenses to the work the party's predecessor in interest had or could - give under the previous paragraph, plus a right to possession of the - Corresponding Source of the work from the predecessor in interest, if - the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the - rights granted or affirmed under this License. For example, you may - not impose a license fee, royalty, or other charge for exercise of - rights granted under this License, and you may not initiate litigation - (including a cross-claim or counterclaim in a lawsuit) alleging that - any patent claim is infringed by making, using, selling, offering for - sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this - License of the Program or a work on which the Program is based. The - work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims - owned or controlled by the contributor, whether already acquired or - hereafter acquired, that would be infringed by some manner, permitted - by this License, of making, using, or selling its contributor version, - but do not include claims that would be infringed only as a - consequence of further modification of the contributor version. For - purposes of this definition, "control" includes the right to grant - patent sublicenses in a manner consistent with the requirements of - this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free - patent license under the contributor's essential patent claims, to - make, use, sell, offer for sale, import and otherwise run, modify and - propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express - agreement or commitment, however denominated, not to enforce a patent - (such as an express permission to practice a patent or covenant not to - sue for patent infringement). To "grant" such a patent license to a - party means to make such an agreement or commitment not to enforce a - patent against the party. - - If you convey a covered work, knowingly relying on a patent license, - and the Corresponding Source of the work is not available for anyone - to copy, free of charge and under the terms of this License, through a - publicly available network server or other readily accessible means, - then you must either (1) cause the Corresponding Source to be so - available, or (2) arrange to deprive yourself of the benefit of the - patent license for this particular work, or (3) arrange, in a manner - consistent with the requirements of this License, to extend the patent - license to downstream recipients. "Knowingly relying" means you have - actual knowledge that, but for the patent license, your conveying the - covered work in a country, or your recipient's use of the covered work - in a country, would infringe one or more identifiable patents in that - country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or - arrangement, you convey, or propagate by procuring conveyance of, a - covered work, and grant a patent license to some of the parties - receiving the covered work authorizing them to use, propagate, modify - or convey a specific copy of the covered work, then the patent license - you grant is automatically extended to all recipients of the covered - work and works based on it. - - A patent license is "discriminatory" if it does not include within - the scope of its coverage, prohibits the exercise of, or is - conditioned on the non-exercise of one or more of the rights that are - specifically granted under this License. You may not convey a covered - work if you are a party to an arrangement with a third party that is - in the business of distributing software, under which you make payment - to the third party based on the extent of your activity of conveying - the work, and under which the third party grants, to any of the - parties who would receive the covered work from you, a discriminatory - patent license (a) in connection with copies of the covered work - conveyed by you (or copies made from those copies), or (b) primarily - for and in connection with specific products or compilations that - contain the covered work, unless you entered into that arrangement, - or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting - any implied license or other defenses to infringement that may - otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot convey a - covered work so as to satisfy simultaneously your obligations under this - License and any other pertinent obligations, then as a consequence you may - not convey it at all. For example, if you agree to terms that obligate you - to collect a royalty for further conveying from those to whom you convey - the Program, the only way you could satisfy both those terms and this - License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have - permission to link or combine any covered work with a work licensed - under version 3 of the GNU Affero General Public License into a single - combined work, and to convey the resulting work. The terms of this - License will continue to apply to the part which is the covered work, - but the special requirements of the GNU Affero General Public License, - section 13, concerning interaction through a network will apply to the - combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of - the GNU General Public License from time to time. Such new versions will - be similar in spirit to the present version, but may differ in detail to - address new problems or concerns. - - Each version is given a distinguishing version number. If the - Program specifies that a certain numbered version of the GNU General - Public License "or any later version" applies to it, you have the - option of following the terms and conditions either of that numbered - version or of any later version published by the Free Software - Foundation. If the Program does not specify a version number of the - GNU General Public License, you may choose any version ever published - by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future - versions of the GNU General Public License can be used, that proxy's - public statement of acceptance of a version permanently authorizes you - to choose that version for the Program. - - Later license versions may give you additional or different - permissions. However, no additional obligations are imposed on any - author or copyright holder as a result of your choosing to follow a - later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY - APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT - HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY - OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, - THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM - IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF - ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING - WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS - THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY - GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE - USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF - DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD - PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), - EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF - SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided - above cannot be given local legal effect according to their terms, - reviewing courts shall apply local law that most closely approximates - an absolute waiver of all civil liability in connection with the - Program, unless a warranty or assumption of liability accompanies a - copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest - to attach them to the start of each source file to most effectively - state the exclusion of warranty; and each file should have at least - the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short - notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the appropriate - parts of the General Public License. Of course, your program's commands - might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, - if any, to sign a "copyright disclaimer" for the program, if necessary. - For more information on this, and how to apply and follow the GNU GPL, see - . - - The GNU General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications with - the library. If this is what you want to do, use the GNU Lesser General - Public License instead of this License. But first, please read - . - -The complete text of the Apache 2.0 License is as follows: - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - -The complete text of the BSD license can be is as follows: - - Copyright (c) The Regents of the University of California. - All rights reserved. - - 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 University 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 REGENTS 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 REGENTS 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. - -The complete text of the Apache Software License Version 1.1 is as follows: - - /* - * ================================================================ - * The Apache Software License, Version 1.1 - * ================================================================ - * - * Copyright (C) 2000-2002 The Apache Software Foundation. All - * rights reserved. - * - * 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. The end-user documentation included with the redistribution, if - * any, must include the following acknowledgment: "This product - * includes software developed by the Apache Software Foundation - * (http://www.apache.org/)." Alternately, this acknowledgment may - * appear in the software itself, if and wherever such third-party - * acknowledgments normally appear. - * - * 4. The names "Ant" and "Apache Software Foundation" must not be - * used to endorse or promote products derived from this software - * without prior written permission. For written permission, please - * contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION - * OR ITS 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. - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - * - */ - -The complete text of the MIT license is as follows: - - 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. - -The complete text of the Eclipse Public License v1.0 is as follows: - - Eclipse Public License - v 1.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC - LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM - CONSTITUTES RECIPIENT’S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and - b) in the case of each subsequent Contributor: - - i) changes to the Program, and - - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' from a - Contributor if it was added to the Program by such Contributor itself or anyone - acting on such Contributor’s behalf. Contributions do not include additions to - the Program which: (i) are separate modules of software distributed in - conjunction with the Program under their own license agreement, and (ii) are not - derivative works of the Program. - - "Contributor" means any person or entity that distributes the Program. - - "Licensed Patents " mean patent claims licensable by a Contributor which are - necessarily infringed by the use or sale of its Contribution alone or when - combined with the Program. - - "Program" means the Contributions distributed in accordance with this Agreement. - - "Recipient" means anyone who receives the Program under this Agreement, - including all Contributors. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly perform, - distribute and sublicense the Contribution of such Contributor, if any, and such - derivative works, in source code and object code form. - - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed - Patents to make, use, sell, offer to sell, import and otherwise transfer the - Contribution of such Contributor, if any, in source code and object code form. - This patent license shall apply to the combination of the Contribution and the - Program if, at the time the Contribution is added by the Contributor, such - addition of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other combinations - which include the Contribution. No hardware per se is licensed hereunder. - - c) Recipient understands that although each Contributor grants the licenses to - its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other intellectual - property rights of any other entity. Each Contributor disclaims any liability to - Recipient for claims brought by any other entity based on infringement of - intellectual property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby assumes sole - responsibility to secure any other intellectual property rights needed, if any. - For example, if a third party patent license is required to allow Recipient to - distribute the Program, it is Recipient’s responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has sufficient copyright - rights in its Contribution, if any, to grant the copyright license set forth in - this Agreement. - - 3. REQUIREMENTS - - A Contributor may choose to distribute the Program in object code form under its - own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - - b) its license agreement: - - i) effectively disclaims on behalf of all Contributors all warranties and - conditions, express and implied, including warranties or conditions of title and - non-infringement, and implied warranties or conditions of merchantability and - fitness for a particular purpose; - - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and consequential - damages, such as lost profits; - - iii) states that any provisions which differ from this Agreement are offered by - that Contributor alone and not by any other party; and - - iv) states that source code for the Program is available from such Contributor, - and informs licensees how to obtain it in a reasonable manner on or through a - medium customarily used for software exchange. - - When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - - Contributors may not remove or alter any copyright notices contained within the - Program. - - Each Contributor must identify itself as the originator of its Contribution, if - any, in a manner that reasonably allows subsequent Recipients to identify the - originator of the Contribution. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities with - respect to end users, business partners and the like. While this license is - intended to facilitate the commercial use of the Program, the Contributor who - includes the Program in a commercial product offering should do so in a manner - which does not create potential liability for other Contributors. Therefore, if - a Contributor includes the Program in a commercial product offering, such - Contributor ("Commercial Contributor") hereby agrees to defend and indemnify - every other Contributor ("Indemnified Contributor") against any losses, damages - and costs (collectively "Losses") arising from claims, lawsuits and other legal - actions brought by a third party against the Indemnified Contributor to the - extent caused by the acts or omissions of such Commercial Contributor in - connection with its distribution of the Program in a commercial product - offering. The obligations in this section do not apply to any claims or Losses - relating to any actual or alleged intellectual property infringement. In order - to qualify, an Indemnified Contributor must: a) promptly notify the Commercial - Contributor in writing of such claim, and b) allow the Commercial Contributor to - control, and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may participate in - any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial product - offering, Product X. That Contributor is then a Commercial Contributor. If that - Commercial Contributor then makes performance claims, or offers warranties - related to Product X, those performance claims and warranties are such - Commercial Contributor’s responsibility alone. Under this section, the - Commercial Contributor would have to defend claims against the other - Contributors related to those performance claims and warranties, and if a court - requires any other Contributor to pay any damages as a result, the Commercial - Contributor must pay those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, - NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each - Recipient is solely responsible for determining the appropriateness of using and - distributing the Program and assumes all risks associated with its exercise of - rights under this Agreement , including but not limited to the risks and costs - of program errors, compliance with applicable laws, damage to or loss of data, - programs or equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY - CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS - GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under applicable - law, it shall not affect the validity or enforceability of the remainder of the - terms of this Agreement, and without further action by the parties hereto, such - provision shall be reformed to the minimum extent necessary to make such - provision valid and enforceable. - - If Recipient institutes patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Program itself - (excluding combinations of the Program with other software or hardware) - infringes such Recipient’s patent(s), then such Recipient’s rights granted under - Section 2(b) shall terminate as of the date such litigation is filed. - - All Recipient’s rights under this Agreement shall terminate if it fails to - comply with any of the material terms or conditions of this Agreement and does - not cure such failure in a reasonable period of time after becoming aware of - such noncompliance. If all Recipient’s rights under this Agreement terminate, - Recipient agrees to cease use and distribution of the Program as soon as - reasonably practicable. However, Recipient’s obligations under this Agreement - and any licenses granted by Recipient relating to the Program shall continue and - survive. - - Everyone is permitted to copy and distribute copies of this Agreement, but in - order to avoid inconsistency the Agreement is copyrighted and may only be - modified in the following manner. The Agreement Steward reserves the right to - publish new versions (including revisions) of this Agreement from time to time. - No one other than the Agreement Steward has the right to modify this Agreement. - The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation - may assign the responsibility to serve as the Agreement Steward to a suitable - separate entity. Each new version of the Agreement will be given a - distinguishing version number. The Program (including Contributions) may always - be distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to distribute the Program (including its Contributions) - under the new version. Except as expressly stated in Sections 2(a) and 2(b) - above, Recipient receives no rights or licenses to the intellectual property of - any Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted under - this Agreement are reserved. - - This Agreement is governed by the laws of the State of New York and the - intellectual property laws of the United States of America. No party to this - Agreement will bring a legal action under this Agreement more than one year - after the cause of action arose. Each party waives its rights to a jury trial in - any resulting litigation. - --------------------------------------------------- -Library: cabin v0.9.0 -Url: https://github.com/jordansissel/ruby-cabin -License: Apache-2.0 +========== +Notice for: cabin-0.9.0 +---------- Copyright 2011 Jordan Sissel @@ -4010,36 +1547,9 @@ See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------- -Library: childprocess v0.9.0 -Url: http://github.com/enkessler/childprocess -License: MIT - -Copyright (c) 2010-2015 Jari Bakken - -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. - --------------------------------------------------- -Library: chronic_duration v0.10.6 -Url: https://github.com/hpoydar/chronic_duration -License: MIT +========== +Notice for: chronic_duration-0.10.6 +---------- Copyright (c) Henry Poydar @@ -4063,11 +1573,9 @@ 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. - --------------------------------------------------- -Library: clamp v0.6.5 -Url: http://github.com/mdub/clamp -License: MIT +========== +Notice for: clamp-0.6.5 +---------- Copyright (c) 2010 Mike Williams @@ -4090,10 +1598,9 @@ 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. --------------------------------------------------- -Library: coderay v1.1.2 -Url: http://coderay.rubychan.de -License: MIT +========== +Notice for: coderay-1.1.3 +---------- Copyright (C) 2005-2012 Kornelius Kalnbach (@murphy_karasu) @@ -4117,11 +1624,9 @@ 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. - --------------------------------------------------- -Library: jackson-annotations v2.9.5 -Url: https://github.com/FasterXML/jackson-annotations -License: Apache-2.0 +========== +Notice for: com.fasterxml.jackson.core:jackson-annotations-2.9.10 +---------- This copy of Jackson JSON processor annotations is licensed under the Apache (Software) License, version 2.0 ("the License"). @@ -4336,10 +1841,9 @@ http://www.apache.org/licenses/LICENSE-2.0 See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------- -Library: jackson-core v2.9.5 -Url: https://github.com/FasterXML/jackson-core -License: Apache-2.0 +========== +Notice for: com.fasterxml.jackson.core:jackson-core-2.9.10 +---------- # Jackson JSON processor @@ -4564,11 +2068,9 @@ from the source code management (SCM) system project uses. 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. - --------------------------------------------------- -Library: jackson-databind v2.9.5 -Url: https://github.com/FasterXML/jackson-databind -License: Apache-2.0 +========== +Notice for: com.fasterxml.jackson.core:jackson-databind-2.9.10.6 +---------- # Jackson JSON processor @@ -4802,11 +2304,9 @@ http://www.apache.org/licenses/LICENSE-2.0 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. - --------------------------------------------------- -Library: jackson-dataformat-cbor v2.9.5 -Url: https://github.com/FasterXML/jackson-dataformats-binary -License: Apache-2.0 +========== +Notice for: com.fasterxml.jackson.module:jackson-module-afterburner-2.9.10 +---------- This copy of Jackson JSON processor databind module is licensed under the Apache (Software) License, version 2.0 ("the License"). @@ -5019,772 +2519,9 @@ http://www.apache.org/licenses/LICENSE-2.0 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. - --------------------------------------------------- -Library: jackson-module-afterburner v2.9.5 -Url: https://github.com/FasterXML/jackson-modules-base -License: Apache-2.0 - -This copy of Jackson JSON processor databind module is licensed under the -Apache (Software) License, version 2.0 ("the License"). -See the License for details about distribution rights, and the -specific rights regarding derivate works. - -You may obtain a copy of the License at: - -http://www.apache.org/licenses/LICENSE-2.0 - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - --------------------------------------------------- -Library: jnr-unixsocket v -Url: "https://github.com/jnr/jnr-unixsocket" -License: Apache-2.0 - -source: https://github.com/jnr/jnr-unixsocket/search?q=copyright - -Files in this project are licensed under the Apache-2.0 License, and are variably copyright as follows: - - Copyright (C) 2009 Wayne Meissner - Copyright (C) 2014 Greg Vanore - Copyright (C) 2016 Fritz Elfert - Copyright (C) 2016 Marcus Linke - -source: https://github.com/jnr/jnr-unixsocket/blob/jnr-unixsocket-0.18/LICENSE - - 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. - --------------------------------------------------- -Library: jnr-x86asm v -Url: "https://github.com/jnr/jnr-x86asm" -License: MIT - -source: https://github.com/jnr/jnr-x86asm/blob/1.0.2/LICENSE - - Copyright (C) 2010 Wayne Meissner - Copyright (c) 2008-2009, Petr Kobalicek - - 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. - --------------------------------------------------- -Library: google-java-format v1.1 -Url: https://github.com/google/google-java-format -License: Apache-2.0 - -Copyright 2015 Google Inc. - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - ------------------------------------------------------------------------------- - -The following NCSA license applies only to google-java-format-diff.py. - -============================================================================== -LLVM Release License -============================================================================== -University of Illinois/NCSA -Open Source License - -Copyright (c) 2007-2015 University of Illinois at Urbana-Champaign. -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.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 with -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: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -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 -CONTRIBUTORS 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 WITH THE -SOFTWARE. - -============================================================================== -The LLVM software contains code written by third parties. Such software will -have its own individual LICENSE.TXT file in the directory in which it appears. -This file will describe the copyrights, license, and restrictions which apply -to that code. - -The disclaimer of warranty in the University of Illinois Open Source License -applies to all code in the LLVM Distribution, and nothing in any of the -other licenses gives permission to use the names of the LLVM Team or the -University of Illinois to endorse or promote products derived from this -Software. - -The following pieces of software have additional or alternate copyrights, -licenses, and/or restrictions: - -Program Directory -------- --------- - - - --------------------------------------------------- -Library: guava v19.0 -Url: https://github.com/google/guava -License: Apache-2.0 - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - --------------------------------------------------- -Library: commons-codec v1.10.0 -Url: http://commons.apache.org/proper/commons-codec/ -License: Apache-2.0 +========== +Notice for: commons-codec:commons-codec-1.10.0 +---------- Apache Commons Codec Copyright 2002-2017 The Apache Software Foundation @@ -6006,11 +2743,9 @@ Copyright (c) 2008 Alexander Beider & Stephen P. Morse. 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. - --------------------------------------------------- -Library: commons-logging v1.2.0 -Url: http://commons.apache.org/proper/commons-logging/ -License: Apache-2.0 +========== +Notice for: commons-logging:commons-logging-1.2.0 +---------- Apache Commons Logging Copyright 2003-2016 The Apache Software Foundation @@ -6220,11 +2955,9 @@ The Apache Software Foundation (http://www.apache.org/). 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. - --------------------------------------------------- -Library: concurrent-ruby v1.0.5 -Url: http://www.concurrent-ruby.com -License: MIT +========== +Notice for: concurrent-ruby-1.1.7 +---------- Copyright (c) Jerry D'Antonio -- released under the MIT license. @@ -6248,19 +2981,11 @@ 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. --------------------------------------------------- -Library: controls.js v -Url: https://github.com/controlsjs/controls.js -License: GPL-3.0-only +========== +Notice for: dalli-2.7.11 +---------- -404: Not Found - --------------------------------------------------- -Library: crack v0.4.3 -Url: http://github.com/jnunemaker/crack -License: MIT - -Copyright (c) 2009 John Nunemaker +Copyright (c) Peter M. Goldstein, Mike Perham Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -6281,35 +3006,9 @@ 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. --------------------------------------------------- -Library: diff-lcs v1.3 -Url: https://github.com/halostatue/diff-lcs -License: MIT - -Copyright 2004–2013 Austin Ziegler. - -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. - --------------------------------------------------- -Library: domain_name v0.5.20180417 -Url: https://github.com/knu/ruby-domain_name -License: BSD-2-Clause +========== +Notice for: domain_name-0.5.20190701 +---------- Copyright (c) 2011-2017 Akinori MUSHA @@ -6390,10 +3089,9 @@ This file is generated from the Public Suffix List https://mozilla.org/MPL/2.0/ --------------------------------------------------- -Library: dotenv v2.4.0 -Url: https://github.com/bkeepers/dotenv -License: MIT +========== +Notice for: dotenv-2.7.6 +---------- Copyright (c) 2012 Brandon Keepers @@ -6418,10 +3116,9 @@ 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. --------------------------------------------------- -Library: edn v1.1.1 -Url: https://github.com/relevance/edn-ruby -License: MIT +========== +Notice for: edn-1.1.1 +---------- Copyright (c) 2012 Relevance Inc & Clinton N. Dreisbach @@ -6446,52 +3143,18 @@ 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. --------------------------------------------------- -Library: elasticsearch-api v5.0.4 -Url: https://github.com/elastic/elasticsearch-ruby -License: Apache-2.0 +========== +Notice for: elastic-app-search-7.8.0 +---------- -source: https://github.com/elastic/elasticsearch-ruby/blob/v5.0.4/elasticsearch-transport/LICENSE.txt +source: https://github.com/elastic/app-search-ruby/blob/v7.8.0/NOTICE.txt -Copyright (c) 2013 Elasticsearch +Elastic App Search Ruby client. -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. - --------------------------------------------------- -Library: elasticsearch-transport v5.0.4 -Url: https://github.com/elastic/elasticsearch-ruby -License: Apache-2.0 - -source: https://github.com/elastic/elasticsearch-ruby/blob/v5.0.4/elasticsearch/LICENSE.txt - -Copyright (c) 2013 Elasticsearch - -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. - --------------------------------------------------- -Library: elasticsearch v5.0.4 -Url: https://github.com/elastic/elasticsearch-ruby -License: Apache-2.0 +Copyright 2012-2019 Elasticsearch B.V. +========== +Notice for: elasticsearch-5.0.5 +---------- source: https://github.com/elastic/elasticsearch-ruby/blob/v5.0.4/elasticsearch-api/LICENSE.txt @@ -6509,10 +3172,49 @@ 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. --------------------------------------------------- -Library: equalizer v0.0.10 -Url: https://github.com/dkubb/equalizer -License: MIT +========== +Notice for: elasticsearch-api-5.0.5 +---------- + +source: https://github.com/elastic/elasticsearch-ruby/blob/v5.0.4/elasticsearch-transport/LICENSE.txt + +Copyright (c) 2013 Elasticsearch + +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. + +========== +Notice for: elasticsearch-transport-5.0.5 +---------- + +source: https://github.com/elastic/elasticsearch-ruby/blob/v5.0.4/elasticsearch/LICENSE.txt + +Copyright (c) 2013 Elasticsearch + +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. + +========== +Notice for: equalizer-0.0.11 +---------- source: https://github.com/dkubb/equalizer/blob/v0.0.10/LICENSE @@ -6538,10 +3240,9 @@ 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. --------------------------------------------------- -Library: faraday v0.9.2 -Url: https://github.com/lostisland/faraday -License: MIT +========== +Notice for: faraday-0.15.4 +---------- source: https://github.com/lostisland/faraday/blob/v0.9.2/LICENSE.md @@ -6553,10 +3254,9 @@ The above copyright notice and this permission notice shall be included in all c 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. --------------------------------------------------- -Library: ffi v1.9.23 -Url: https://github.com/ffi/ffi -License: BSD-3-CLAUSE +========== +Notice for: ffi-1.14.2 +---------- source: https://github.com/ffi/ffi/blob/1.9.23/LICENSE @@ -6585,10 +3285,9 @@ 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. --------------------------------------------------- -Library: filesize v0.0.4 -Url: https://github.com/dominikh -License: MIT +========== +Notice for: filesize-0.2.0 +---------- https://github.com/dominikh/filesize/blob/v0.0.4/LICENSE @@ -6612,32 +3311,43 @@ 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. --------------------------------------------------- -Library: filewatch v0.9.0 -Url: https://github.com/jordansissel/ruby-filewatch -License: MIT +========== +Notice for: gelfd2-0.4.1 +---------- -https://github.com/jordansissel/ruby-filewatch/blob/master/LICENSE +Copyright 2011-2013 John E. Vincent and contributors. -License is MIT (very permissive). +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 --------------------------------------------------- -Library: ftw v0.0.48 -Url: https://github.com/jordansissel/ruby-ftw -License: Apache-2.0 +http://www.apache.org/licenses/LICENSE-2.0 -source: https://github.com/jordansissel/ruby-ftw/blob/master/ftw.gemspec#L19 +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. -Apache License (2.0) +========== +Notice for: gems-1.2.0 +---------- --------------------------------------------------- -Library: gelf v3.0.0 -Url: https://github.com/graylog-labs/gelf-rb -License: MIT +source: https://github.com/rubygems/gems/blob/v0.8.3/LICENSE.md -source: https://github.com/graylog-labs/gelf-rb/blob/v3.0.0/LICENSE +Copyright (c) 2011-2013 Erik Michaels-Ober -Copyright (c) 2010-2016 Lennart Koopmann, Alexey Palazhchenko +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. + +========== +Notice for: gene_pool-1.5.0 +---------- + +Copyright (c) 2010-2011 Brad Pardee Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -6658,329 +3368,9 @@ 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. --------------------------------------------------- -Library: gelfd v0.2.0 -Url: https://github.com/lusis/gelfd -License: Apache-2.0 - -source: https://github.com/lusis/gelfd/blob/master/LICENSE - -Copyright 2011-2013 John E. Vincent and contributors. - -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. - - --------------------------------------------------- -Library: gems v0.8.3 -Url: https://github.com/rubygems/gems -License: MIT - -source: https://github.com/rubygems/gems/blob/v0.8.3/LICENSE.md - -Copyright (c) 2011-2013 Erik Michaels-Ober - -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. - --------------------------------------------------- -Library: gmetric v0.1.3 -Url: https://github.com/igrigorik/gmetric -License: MIT - -source: https://github.com/igrigorik/gmetric/blob/master/README.md - -The MIT License, Copyright (c) 2009 Ilya Grigorik - --------------------------------------------------- -Library: gradle-license-report v0.7.1 -Url: https://github.com/jk1/Gradle-License-Report -License: Apache-2.0 - -source: https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - 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. - --------------------------------------------------- -Library: gserver v0.0.1 -Url: https://github.com/ruby/gserver/blob -License: Ruby - -Source: https://github.com/ruby/gserver/blob/v0.0.1/LICENSE.txt - -Ruby is copyrighted free software by Yukihiro Matsumoto . -You can redistribute it and/or modify it under either the terms of the -2-clause BSDL (see the file BSDL), or the conditions below: - - 1. You may make and give away verbatim copies of the source form of the - software without restriction, provided that you duplicate all of the - original copyright notices and associated disclaimers. - - 2. You may modify your copy of the software in any way, provided that - you do at least ONE of the following: - - a) place your modifications in the Public Domain or otherwise - make them Freely Available, such as by posting said - modifications to Usenet or an equivalent medium, or by allowing - the author to include your modifications in the software. - - b) use the modified software only within your corporation or - organization. - - c) give non-standard binaries non-standard names, with - instructions on where to get the original software distribution. - - d) make other distribution arrangements with the author. - - 3. You may distribute the software in object code or binary form, - provided that you do at least ONE of the following: - - a) distribute the binaries and library files of the software, - together with instructions (in the manual page or equivalent) - on where to get the original distribution. - - b) accompany the distribution with the machine-readable source of - the software. - - c) give non-standard binaries non-standard names, with - instructions on where to get the original software distribution. - - d) make other distribution arrangements with the author. - - 4. You may modify and include the part of the software into any other - software (possibly commercial). But some files in the distribution - are not written by the author, so that they are not under these terms. - - For the list of those files and their copying conditions, see the - file LEGAL. - - 5. The scripts and library files supplied as input to or produced as - output from the software do not automatically fall under the - copyright of the software, but belong to whomever generated them, - and may be sold commercially, and may be aggregated with this - software. - - 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. - --------------------------------------------------- -Library: hitimes v1.2.6 -Url: https://github.com/copiousfreetime/hitimes -License: ISC +========== +Notice for: hitimes-1.3.1 +---------- source: https://github.com/copiousfreetime/hitimes/blob/v1.2.6/LICENSE @@ -7000,10 +3390,37 @@ 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. --------------------------------------------------- -Library: http-cookie v1.0.3 -Url: https://github.com/sparklemotion/http-cookie -License: MIT +========== +Notice for: http-3.3.0 +---------- + +source: https://github.com/httprb/http/blob/v0.9.9/LICENSE.txt + +Copyright (c) 2011-2015 Tony Arcieri, Erik Michaels-Ober, Alexey V. Zapparov, Zachary Anker + +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. + + +========== +Notice for: http-cookie-1.0.3 +---------- source: https://github.com/sparklemotion/http-cookie/blob/v1.0.3/LICENSE.txt @@ -7032,10 +3449,9 @@ 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. --------------------------------------------------- -Library: http-form_data v1.0.1 -Url: https://github.com/httprb/form_data -License: MIT +========== +Notice for: http-form_data-2.3.0 +---------- source: https://github.com/httprb/form_data/blob/v1.0.1/LICENSE.txt @@ -7063,39 +3479,9 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------- -Library: http v0.9.9 -Url: https://github.com/httprb/http -License: MIT - -source: https://github.com/httprb/http/blob/v0.9.9/LICENSE.txt - -Copyright (c) 2011-2015 Tony Arcieri, Erik Michaels-Ober, Alexey V. Zapparov, Zachary Anker - -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. - - --------------------------------------------------- -Library: http-parser.rb v0.6.0 -Url: https://github.com/tmm1/http_parser.rb -License: MIT +========== +Notice for: http_parser.rb-0.6.0 +---------- source: https://github.com/tmm1/http_parser.rb/blob/v0.6.0/LICENSE-MIT @@ -7120,10 +3506,9 @@ 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. --------------------------------------------------- -Library: i18n v0.6.9 -Url: https://github.com/svenfuchs/i18n -License: MIT +========== +Notice for: i18n-1.8.7 +---------- source: https://github.com/svenfuchs/i18n/blob/v0.6.9/MIT-LICENSE @@ -7148,10 +3533,9 @@ 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. --------------------------------------------------- -Library: insist v1.0.0 -Url: https://github.com/jordansissel/ruby-insist -License: Apache-2.0 +========== +Notice for: insist-1.0.0 +---------- source: https://github.com/jordansissel/ruby-insist/blob/master/LICENSE @@ -7169,31 +3553,9 @@ 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. --------------------------------------------------- -Library: invokebinder v1.7 -Url: https://github.com/headius/invokebinder -License: Apache-2.0 - -source: https://github.com/headius/invokebinder/search?q=copyright - -Copyright 2012-2014 headius. - -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. - --------------------------------------------------- -Library: jar-dependencies v0.3.12 -Url: https://github.com/mkristian/jar-dependencies -License: MIT +========== +Notice for: jar-dependencies-0.4.1 +---------- source: https://github.com/mkristian/jar-dependencies/blob/0.3.12/MIT-LICENSE @@ -7219,530 +3581,9 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------- -Library: jay-yydebug v -Url: https://github.com/jruby/jay-yydebug -License: EPL-2.0|GPL-2.0|LGPL-2.1 - -source: https://github.com/jruby/jruby/blob/master/COPYING - -JRuby is Copyright (c) 2007-2018 The JRuby project, and is released -under a tri EPL/GPL/LGPL license. You can use it, redistribute it -and/or modify it under the terms of the: - - Eclipse Public License version 2.0 - OR - GNU General Public License version 2 - OR - GNU Lesser General Public License version 2.1 - -bytelist (http://github.com/jruby/bytelist), -jnr-posix (https://github.com/jnr/jnr-posix), -jruby-openssl (https://github.com/jruby/jruby-openssl), -jruby-readline (https://github.com/jruby/jruby-readline), -psych (https://github.com/ruby/psych), -yydebug (https://github.com/jruby/jay-yydebug/) -are released under the same copyright/license. - - --------------------------------------------------- -Library: jcodings v1.0.18 -Url: https://github.com/jruby/jcodings -License: MIT - -source: https://github.com/jruby/jcodings/blob/master/LICENSE.txt - -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. - --------------------------------------------------- -Library: jdbc-derby v10.12.1.1 -Url: https://github.com/jruby/activerecord-jdbc-adapter -License: Apache-2.0 - -source: https://github.com/jruby/activerecord-jdbc-adapter/blob/master/jdbc-derby/LICENSE.txt - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - --------------------------------------------------- -Library: jffi v1.2.16 -Url: https://github.com/jnr/jffi -License: Apache-2.0|LGPL-3.0 - -source: https://github.com/jnr/jffi/blob/master/LICENSE - -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. - - - Alternatively, you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This code is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - version 3 for more details. - - You should have received a copy of the GNU Lesser General Public License - version 3 along with this work. If not, see . - --------------------------------------------------- -Library: jitescript v0.4.1 -Url: https://github.com/qmx/jitescript -License: Apache-2.0 - - source: https://github.com/qmx/jitescript/blob/master/LICENSE - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - --------------------------------------------------- -Library: jline2 v2.1.1 -Url: https://github.com/jline/jline2 -License: BSD-2-Clause - -source: https://github.com/jline/jline2/blob/master/LICENSE.txt - -Copyright (c) 2002-2016, the original author or authors. -All rights reserved. - -http://www.opensource.org/licenses/bsd-license.php - -Redistribution and use in source and binary forms, with or -without modification, are permitted provided that the following -conditions are met: - -Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -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. - -Neither the name of JLine 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 OWNER 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. - --------------------------------------------------- -Library: jls-grok v0.11.4 -Url: https://github.com/jordansissel/ruby-grok -License: Apache-2.0 +========== +Notice for: jls-grok-0.11.5 +---------- source: https://github.com/jordansissel/ruby-grok/blob/master/LICENSE @@ -7948,10 +3789,9 @@ source: https://github.com/jordansissel/ruby-grok/blob/master/LICENSE See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------- -Library: jls-lumberjack v0.0.26 -Url: https://github.com/elastic/ruby-lumberjack -License: Apache-2.0 +========== +Notice for: jls-lumberjack-0.0.26 +---------- source: https://github.com/elastic/ruby-lumberjack/blob/master/LICENSE @@ -7970,10 +3810,9 @@ 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. --------------------------------------------------- -Library: jmespath v1.4.0 -Url: https://github.com/jmespath/jmespath.rb -License: Apache-2.0 +========== +Notice for: jmespath-1.4.0 +---------- source: https://github.com/jmespath/jmespath.rb/blob/v1.4.0/LICENSE.txt @@ -8152,2647 +3991,9 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. --------------------------------------------------- -Library: jnr-constants v0.9.9 -Url: https://github.com/jnr/jnr-constants -License: Apache-2.0|LGPL-3.0 - -source: https://github.com/jnr/jnr-constants/blob/jnr-constants-0.9.9/LICENSE - -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. - - - Alternatively, you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This code is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - version 3 for more details. - - You should have received a copy of the GNU Lesser General Public License - version 3 along with this work. If not, see . - --------------------------------------------------- -Library: jnr-enxio v0.16 -Url: https://github.com/jnr/jnr-enxio -License: Apache-2.0|LGPL-3.0 - -source: https://github.com/jnr/jnr-enxio/blob/jnr-enxio-0.16/LICENSE - -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. - --------------------------------------------------- -Library: jnr-ffi v2.1.7 -Url: https://github.com/jnr/jnr-ffi -License: Apache-2.0|LGPL-3.0 - -source: https://github.com/jnr/jnr-ffi/blob/master/LICENSE - -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. - - - Alternatively, you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This code is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - version 3 for more details. - - You should have received a copy of the GNU Lesser General Public License - version 3 along with this work. If not, see . - --------------------------------------------------- -Library: jnr-netdb v1.1.6 -Url: https://github.com/jnr/jnr-netdb -License: Apache-2.0 - -source: https://github.com/jnr/jnr-netdb/blob/master/LICENSE - -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. - --------------------------------------------------- -Library: jnr-posix v3.0.41 -Url: https://github.com/jnr/jnr-posix -License: EPL-2.0|GPL-2.0|LGPL-2.1dependency - -source: https://github.com/jnr/jnr-posix/blob/master/LICENSE.txt - -jnr-posix is released under a tri EPL/GPL/LGPL license. You can use it, -redistribute it and/or modify it under the terms of the: - - Eclipse Public License version 1.0 - GNU General Public License version 2 - GNU Lesser General Public License version 2.1 - -The complete text of the Eclipse Public License is as follows: - - Eclipse Public License - v 1.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial code and - documentation distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - - i) changes to the Program, and - - ii) additions to the Program; - where such changes and/or additions to the Program - originate from and are distributed by that particular - Contributor. A Contribution 'originates' from a - Contributor if it was added to the Program by such - Contributor itself or anyone acting on such - Contributor's behalf. Contributions do not include - additions to the Program which: (i) are separate modules - of software distributed in conjunction with the Program - under their own license agreement, and (ii) are not - derivative works of the Program. - - "Contributor" means any person or entity that distributes the Program. - - "Licensed Patents" mean patent claims licensable by a Contributor - which are necessarily infringed by the use or sale of its - Contribution alone or when combined with the Program. - - "Program" means the Contributions distributed in accordance with - this Agreement. - - "Recipient" means anyone who receives the Program under this - Agreement, including all Contributors. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor - hereby grants Recipient a non-exclusive, worldwide, - royalty-free copyright license to reproduce, prepare - derivative works of, publicly display, publicly perform, - distribute and sublicense the Contribution of such - Contributor, if any, and such derivative works, in source - code and object code form. - - b) Subject to the terms of this Agreement, each Contributor - hereby grants Recipient a non-exclusive, worldwide, - royalty-free patent license under Licensed Patents to make, - use, sell, offer to sell, import and otherwise transfer the - Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the - combination of the Contribution and the Program if, at the - time the Contribution is added by the Contributor, such - addition of the Contribution causes such combination to be - covered by the Licensed Patents. The patent license shall not - apply to any other combinations which include the - Contribution. No hardware per se is licensed hereunder. - - c) Recipient understands that although each Contributor grants - the licenses to its Contributions set forth herein, no - assurances are provided by any Contributor that the Program - does not infringe the patent or other intellectual property - rights of any other entity. Each Contributor disclaims any - liability to Recipient for claims brought by any other entity - based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and - licenses granted hereunder, each Recipient hereby assumes - sole responsibility to secure any other intellectual property - rights needed, if any. For example, if a third party patent - license is required to allow Recipient to distribute the - Program, it is Recipient's responsibility to acquire that - license before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to - grant the copyright license set forth in this Agreement. - - 3. REQUIREMENTS - - A Contributor may choose to distribute the Program in object code - form under its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - - b) its license agreement: - - i) effectively disclaims on behalf of all Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, - and implied warranties or conditions of merchantability - and fitness for a particular purpose; - - ii) effectively excludes on behalf of all Contributors all - liability for damages, including direct, indirect, - special, incidental and consequential damages, such as - lost profits; - - iii) states that any provisions which differ from this - Agreement are offered by that Contributor alone and not - by any other party; and - - iv) states that source code for the Program is available - from such Contributor, and informs licensees how to - obtain it in a reasonable manner on or through a medium - customarily used for software exchange. - - When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - - b) a copy of this Agreement must be included with each copy of - the Program. - - Contributors may not remove or alter any copyright notices contained - within the Program. - - Each Contributor must identify itself as the originator of its - Contribution, if any, in a manner that reasonably allows subsequent - Recipients to identify the originator of the Contribution. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain - responsibilities with respect to end users, business partners and - the like. While this license is intended to facilitate the - commercial use of the Program, the Contributor who includes the - Program in a commercial product offering should do so in a manner - which does not create potential liability for other Contributors. - Therefore, if a Contributor includes the Program in a commercial - product offering, such Contributor ("Commercial Contributor") hereby - agrees to defend and indemnify every other Contributor ("Indemnified - Contributor") against any losses, damages and costs (collectively - "Losses") arising from claims, lawsuits and other legal actions - brought by a third party against the Indemnified Contributor to the - extent caused by the acts or omissions of such Commercial - Contributor in connection with its distribution of the Program in a - commercial product offering. The obligations in this section do not - apply to any claims or Losses relating to any actual or alleged - intellectual property infringement. In order to qualify, an - Indemnified Contributor must: a) promptly notify the Commercial - Contributor in writing of such claim, and b) allow the Commercial - Contributor to control, and cooperate with the Commercial - Contributor in, the defense and any related settlement negotiations. - The Indemnified Contributor may participate in any such claim at its - own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's - responsibility alone. Under this section, the Commercial Contributor - would have to defend claims against the other Contributors related - to those performance claims and warranties, and if a court requires - any other Contributor to pay any damages as a result, the Commercial - Contributor must pay those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS - PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, - ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient - is solely responsible for determining the appropriateness of using - and distributing the Program and assumes all risks associated with - its exercise of rights under this Agreement , including but not - limited to the risks and costs of program errors, compliance with - applicable laws, damage to or loss of data, programs or equipment, - and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT - NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS - GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability - of the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - - If Recipient institutes patent litigation against any entity - (including a cross-claim or counterclaim in a lawsuit) alleging that - the Program itself (excluding combinations of the Program with other - software or hardware) infringes such Recipient's patent(s), then - such Recipient's rights granted under Section 2(b) shall terminate - as of the date such litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably practicable. - However, Recipient's obligations under this Agreement and any - licenses granted by Recipient relating to the Program shall continue - and survive. - - Everyone is permitted to copy and distribute copies of this - Agreement, but in order to avoid inconsistency the Agreement is - copyrighted and may only be modified in the following manner. The - Agreement Steward reserves the right to publish new versions - (including revisions) of this Agreement from time to time. No one - other than the Agreement Steward has the right to modify this - Agreement. The Eclipse Foundation is the initial Agreement Steward. - The Eclipse Foundation may assign the responsibility to serve as the - Agreement Steward to a suitable separate entity. Each new version of - the Agreement will be given a distinguishing version number. The - Program (including Contributions) may always be distributed subject - to the version of the Agreement under which it was received. In - addition, after a new version of the Agreement is published, - Contributor may elect to distribute the Program (including its - Contributions) under the new version. Except as expressly stated in - Sections 2(a) and 2(b) above, Recipient receives no rights or - licenses to the intellectual property of any Contributor under this - Agreement, whether expressly, by implication, estoppel or otherwise. - All rights in the Program not expressly granted under this Agreement - are reserved. - - This Agreement is governed by the laws of the State of New York and - the intellectual property laws of the United States of America. No - party to this Agreement will bring a legal action under this - Agreement more than one year after the cause of action arose. Each - party waives its rights to a jury trial in any resulting litigation. - -The complete text of the Common Public License is as follows: - - Common Public License - v 1.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF - THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial code and - documentation distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - - i) changes to the Program, and - - ii) additions to the Program; - - where such changes and/or additions to the Program originate - from and are distributed by that particular Contributor. A - Contribution 'originates' from a Contributor if it was added to the - Program by such Contributor itself or anyone acting on such - Contributor's behalf. Contributions do not include additions to the - Program which: (i) are separate modules of software distributed in - conjunction with the Program under their own license agreement, - and (ii) are not derivative works of the Program. - - "Contributor" means any person or entity that distributes the Program. - - "Licensed Patents " mean patent claims licensable by a Contributor - which are necessarily infringed by the use or sale of its Contribution - alone or when combined with the Program. - - "Program" means the Contributions distributed in accordance with this Agreement. - - "Recipient" means anyone who receives the Program under this - Agreement, including all Contributors. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor - hereby grants Recipient a non-exclusive, worldwide, royalty-free - copyright license to reproduce, prepare derivative works of, publicly - display, publicly perform, distribute and sublicense the Contribution - of such Contributor, if any, and such derivative works, in source code - and object code form. - - b) Subject to the terms of this Agreement, each Contributor - hereby grants Recipient a non-exclusive, worldwide, royalty-free - patent license under Licensed Patents to make, use, sell, offer to - sell, import and otherwise transfer the Contribution of such - Contributor, if any, in source code and object code form. This patent - license shall apply to the combination of the Contribution and the - Program if, at the time the Contribution is added by the Contributor, - such addition of the Contribution causes such combination to be - covered by the Licensed Patents. The patent license shall not apply to - any other combinations which include the Contribution. No hardware per - se is licensed hereunder. - - c) Recipient understands that although each Contributor grants - the licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. Each - Contributor disclaims any liability to Recipient for claims brought by - any other entity based on infringement of intellectual property rights - or otherwise. As a condition to exercising the rights and licenses - granted hereunder, each Recipient hereby assumes sole responsibility - to secure any other intellectual property rights needed, if any. For - example, if a third party patent license is required to allow - Recipient to distribute the Program, it is Recipient's responsibility - to acquire that license before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant the - copyright license set forth in this Agreement. - - 3. REQUIREMENTS - - A Contributor may choose to distribute the Program in object code form - under its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; - and - - b) its license agreement: - - i) effectively disclaims on behalf of all Contributors all - warranties and conditions, express and implied, including warranties - or conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - - ii) effectively excludes on behalf of all Contributors all - liability for damages, including direct, indirect, special, incidental - and consequential damages, such as lost profits; - - iii) states that any provisions which differ from this Agreement - are offered by that Contributor alone and not by any other party; and - - iv) states that source code for the Program is available from - such Contributor, and informs licensees how to obtain it in a - reasonable manner on or through a medium customarily used for software - exchange. - - When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - - b) a copy of this Agreement must be included with each copy of - the Program. - - Contributors may not remove or alter any copyright notices contained - within the Program. - - Each Contributor must identify itself as the originator of its - Contribution, if any, in a manner that reasonably allows subsequent - Recipients to identify the originator of the Contribution. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain - responsibilities with respect to end users, business partners and the - like. While this license is intended to facilitate the commercial use - of the Program, the Contributor who includes the Program in a - commercial product offering should do so in a manner which does not - create potential liability for other Contributors. Therefore, if a - Contributor includes the Program in a commercial product offering, - such Contributor ("Commercial Contributor") hereby agrees to defend - and indemnify every other Contributor ("Indemnified Contributor") - against any losses, damages and costs (collectively "Losses") arising - from claims, lawsuits and other legal actions brought by a third party - against the Indemnified Contributor to the extent caused by the acts - or omissions of such Commercial Contributor in connection with its - distribution of the Program in a commercial product offering. The - obligations in this section do not apply to any claims or Losses - relating to any actual or alleged intellectual property - infringement. In order to qualify, an Indemnified Contributor must: a) - promptly notify the Commercial Contributor in writing of such claim, - and b) allow the Commercial Contributor to control, and cooperate with - the Commercial Contributor in, the defense and any related settlement - negotiations. The Indemnified Contributor may participate in any such - claim at its own expense. - - For example, a Contributor might include the Program in a commercial - product offering, Product X. That Contributor is then a Commercial - Contributor. If that Commercial Contributor then makes performance - claims, or offers warranties related to Product X, those performance - claims and warranties are such Commercial Contributor's responsibility - alone. Under this section, the Commercial Contributor would have to - defend claims against the other Contributors related to those - performance claims and warranties, and if a court requires any other - Contributor to pay any damages as a result, the Commercial Contributor - must pay those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS - PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY - WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY - OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely - responsible for determining the appropriateness of using and - distributing the Program and assumes all risks associated with its - exercise of rights under this Agreement, including but not limited to - the risks and costs of program errors, compliance with applicable - laws, damage to or loss of data, programs or equipment, and - unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR - ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING - WITHOUT LIMITATION LOST PROFITS), 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 OR - DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED - HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this Agreement, and without further - action by the parties hereto, such provision shall be reformed to the - minimum extent necessary to make such provision valid and enforceable. - - If Recipient institutes patent litigation against a Contributor with - respect to a patent applicable to software (including a cross-claim or - counterclaim in a lawsuit), then any patent licenses granted by that - Contributor to such Recipient under this Agreement shall terminate as - of the date such litigation is filed. In addition, if Recipient - institutes patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Program - itself (excluding combinations of the Program with other software or - hardware) infringes such Recipient's patent(s), then such Recipient's - rights granted under Section 2(b) shall terminate as of the date such - litigation is filed. - - All Recipient's rights under this Agreement shall terminate if it - fails to comply with any of the material terms or conditions of this - Agreement and does not cure such failure in a reasonable period of - time after becoming aware of such noncompliance. If all Recipient's - rights under this Agreement terminate, Recipient agrees to cease use - and distribution of the Program as soon as reasonably - practicable. However, Recipient's obligations under this Agreement and - any licenses granted by Recipient relating to the Program shall - continue and survive. - - Everyone is permitted to copy and distribute copies of this Agreement, - but in order to avoid inconsistency the Agreement is copyrighted and - may only be modified in the following manner. The Agreement Steward - reserves the right to publish new versions (including revisions) of - this Agreement from time to time. No one other than the Agreement - Steward has the right to modify this Agreement. IBM is the initial - Agreement Steward. IBM may assign the responsibility to serve as the - Agreement Steward to a suitable separate entity. Each new version of - the Agreement will be given a distinguishing version number. The - Program (including Contributions) may always be distributed subject to - the version of the Agreement under which it was received. In addition, - after a new version of the Agreement is published, Contributor may - elect to distribute the Program (including its Contributions) under - the new version. Except as expressly stated in Sections 2(a) and 2(b) - above, Recipient receives no rights or licenses to the intellectual - property of any Contributor under this Agreement, whether expressly, - by implication, estoppel or otherwise. All rights in the Program not - expressly granted under this Agreement are reserved. - - This Agreement is governed by the laws of the State of New York and - the intellectual property laws of the United States of America. No - party to this Agreement will bring a legal action under this Agreement - more than one year after the cause of action arose. Each party waives - its rights to a jury trial in any resulting litigation. - -The complete text of the GNU General Public License v2 is as follows: - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your - freedom to share and change it. By contrast, the GNU General Public - License is intended to guarantee your freedom to share and change free - software--to make sure the software is free for all its users. This - General Public License applies to most of the Free Software - Foundation's software and to any other program whose authors commit to - using it. (Some other Free Software Foundation software is covered by - the GNU Library General Public License instead.) You can apply it to - your programs, too. - - When we speak of free software, we are referring to freedom, not - price. Our General Public Licenses are designed to make sure that you - have the freedom to distribute copies of free software (and charge for - this service if you wish), that you receive source code or can get it - if you want it, that you can change the software or use pieces of it - in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid - anyone to deny you these rights or to ask you to surrender the rights. - These restrictions translate to certain responsibilities for you if you - distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether - gratis or for a fee, you must give the recipients all the rights that - you have. You must make sure that they, too, receive or can get the - source code. And you must show them these terms so they know their - rights. - - We protect your rights with two steps: (1) copyright the software, and - (2) offer you this license which gives you legal permission to copy, - distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain - that everyone understands that there is no warranty for this free - software. If the software is modified by someone else and passed on, we - want its recipients to know that what they have is not the original, so - that any problems introduced by others will not reflect on the original - authors' reputations. - - Finally, any free program is threatened constantly by software - patents. We wish to avoid the danger that redistributors of a free - program will individually obtain patent licenses, in effect making the - program proprietary. To prevent this, we have made it clear that any - patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and - modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains - a notice placed by the copyright holder saying it may be distributed - under the terms of this General Public License. The "Program", below, - refers to any such program or work, and a "work based on the Program" - means either the Program or any derivative work under copyright law: - that is to say, a work containing the Program or a portion of it, - either verbatim or with modifications and/or translated into another - language. (Hereinafter, translation is included without limitation in - the term "modification".) Each licensee is addressed as "you". - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of - running the Program is not restricted, and the output from the Program - is covered only if its contents constitute a work based on the - Program (independent of having been made by running the Program). - Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's - source code as you receive it, in any medium, provided that you - conspicuously and appropriately publish on each copy an appropriate - copyright notice and disclaimer of warranty; keep intact all the - notices that refer to this License and to the absence of any warranty; - and give any other recipients of the Program a copy of this License - along with the Program. - - You may charge a fee for the physical act of transferring a copy, and - you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion - of it, thus forming a work based on the Program, and copy and - distribute such modifications or work under the terms of Section 1 - above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Program, - and can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based - on the Program, the distribution of the whole must be on the terms of - this License, whose permissions for other licensees extend to the - entire whole, and thus to each and every part regardless of who wrote it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Program. - - In addition, mere aggregation of another work not based on the Program - with the Program (or with a work based on the Program) on a volume of - a storage or distribution medium does not bring the other work under - the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, - under Section 2) in object code or executable form under the terms of - Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - - The source code for a work means the preferred form of the work for - making modifications to it. For an executable work, complete source - code means all the source code for all modules it contains, plus any - associated interface definition files, plus the scripts used to - control compilation and installation of the executable. However, as a - special exception, the source code distributed need not include - anything that is normally distributed (in either source or binary - form) with the major components (compiler, kernel, and so on) of the - operating system on which the executable runs, unless that component - itself accompanies the executable. - - If distribution of executable or object code is made by offering - access to copy from a designated place, then offering equivalent - access to copy the source code from the same place counts as - distribution of the source code, even though third parties are not - compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program - except as expressly provided under this License. Any attempt - otherwise to copy, modify, sublicense or distribute the Program is - void, and will automatically terminate your rights under this License. - However, parties who have received copies, or rights, from you under - this License will not have their licenses terminated so long as such - parties remain in full compliance. - - 5. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Program or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Program (or any work based on the - Program), you indicate your acceptance of this License to do so, and - all its terms and conditions for copying, distributing or modifying - the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program subject to - these terms and conditions. You may not impose any further - restrictions on the recipients' exercise of the rights granted herein. - You are not responsible for enforcing compliance by third parties to - this License. - - 7. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot - distribute so as to satisfy simultaneously your obligations under this - License and any other pertinent obligations, then as a consequence you - may not distribute the Program at all. For example, if a patent - license would not permit royalty-free redistribution of the Program by - all those who receive copies directly or indirectly through you, then - the only way you could satisfy both it and this License would be to - refrain entirely from distribution of the Program. - - If any portion of this section is held invalid or unenforceable under - any particular circumstance, the balance of the section is intended to - apply and the section as a whole is intended to apply in other - circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system, which is - implemented by public license practices. Many people have made - generous contributions to the wide range of software distributed - through that system in reliance on consistent application of that - system; it is up to the author/donor to decide if he or she is willing - to distribute software through any other system and a licensee cannot - impose that choice. - - This section is intended to make thoroughly clear what is believed to - be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Program under this License - may add an explicit geographical distribution limitation excluding - those countries, so that distribution is permitted only in or among - countries not thus excluded. In such case, this License incorporates - the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions - of the General Public License from time to time. Such new versions will - be similar in spirit to the present version, but may differ in detail to - address new problems or concerns. - - Each version is given a distinguishing version number. If the Program - specifies a version number of this License which applies to it and "any - later version", you have the option of following the terms and conditions - either of that version or of any later version published by the Free - Software Foundation. If the Program does not specify a version number of - this License, you may choose any version ever published by the Free Software - Foundation. - - 10. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the author - to ask for permission. For software which is copyrighted by the Free - Software Foundation, write to the Free Software Foundation; we sometimes - make exceptions for this. Our decision will be guided by the two goals - of preserving the free status of all derivatives of our free software and - of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY - FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN - OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES - PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED - OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS - TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE - PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, - REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING - WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR - REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, - INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING - OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED - TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY - YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER - PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -The complete text of the GNU Lesser General Public License 2.1 is as follows: - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - [This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your - freedom to share and change it. By contrast, the GNU General Public - Licenses are intended to guarantee your freedom to share and change - free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some - specially designated software packages--typically libraries--of the - Free Software Foundation and other authors who decide to use it. You - can use it too, but we suggest you first think carefully about whether - this license or the ordinary General Public License is the better - strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, - not price. Our General Public Licenses are designed to make sure that - you have the freedom to distribute copies of free software (and charge - for this service if you wish); that you receive source code or can get - it if you want it; that you can change the software and use pieces of - it in new free programs; and that you are informed that you can do - these things. - - To protect your rights, we need to make restrictions that forbid - distributors to deny you these rights or to ask you to surrender these - rights. These restrictions translate to certain responsibilities for - you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis - or for a fee, you must give the recipients all the rights that we gave - you. You must make sure that they, too, receive or can get the source - code. If you link other code with the library, you must provide - complete object files to the recipients, so that they can relink them - with the library after making changes to the library and recompiling - it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the - library, and (2) we offer you this license, which gives you legal - permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that - there is no warranty for the free library. Also, if the library is - modified by someone else and passed on, the recipients should know - that what they have is not the original version, so that the original - author's reputation will not be affected by problems that might be - introduced by others. - - Finally, software patents pose a constant threat to the existence of - any free program. We wish to make sure that a company cannot - effectively restrict the users of a free program by obtaining a - restrictive license from a patent holder. Therefore, we insist that - any patent license obtained for a version of the library must be - consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the - ordinary GNU General Public License. This license, the GNU Lesser - General Public License, applies to certain designated libraries, and - is quite different from the ordinary General Public License. We use - this license for certain libraries in order to permit linking those - libraries into non-free programs. - - When a program is linked with a library, whether statically or using - a shared library, the combination of the two is legally speaking a - combined work, a derivative of the original library. The ordinary - General Public License therefore permits such linking only if the - entire combination fits its criteria of freedom. The Lesser General - Public License permits more lax criteria for linking other code with - the library. - - We call this license the "Lesser" General Public License because it - does Less to protect the user's freedom than the ordinary General - Public License. It also provides other free software developers Less - of an advantage over competing non-free programs. These disadvantages - are the reason we use the ordinary General Public License for many - libraries. However, the Lesser license provides advantages in certain - special circumstances. - - For example, on rare occasions, there may be a special need to - encourage the widest possible use of a certain library, so that it becomes - a de-facto standard. To achieve this, non-free programs must be - allowed to use the library. A more frequent case is that a free - library does the same job as widely used non-free libraries. In this - case, there is little to gain by limiting the free library to free - software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free - programs enables a greater number of people to use a large body of - free software. For example, permission to use the GNU C Library in - non-free programs enables many more people to use the whole GNU - operating system, as well as its variant, the GNU/Linux operating - system. - - Although the Lesser General Public License is Less protective of the - users' freedom, it does ensure that the user of a program that is - linked with the Library has the freedom and the wherewithal to run - that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and - modification follow. Pay close attention to the difference between a - "work based on the library" and a "work that uses the library". The - former contains code derived from the library, whereas the latter must - be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other - program which contains a notice placed by the copyright holder or - other authorized party saying it may be distributed under the terms of - this Lesser General Public License (also called "this License"). - Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data - prepared so as to be conveniently linked with application programs - (which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work - which has been distributed under these terms. A "work based on the - Library" means either the Library or any derivative work under - copyright law: that is to say, a work containing the Library or a - portion of it, either verbatim or with modifications and/or translated - straightforwardly into another language. (Hereinafter, translation is - included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for - making modifications to it. For a library, complete source code means - all the source code for all modules it contains, plus any associated - interface definition files, plus the scripts used to control compilation - and installation of the library. - - Activities other than copying, distribution and modification are not - covered by this License; they are outside its scope. The act of - running a program using the Library is not restricted, and output from - such a program is covered only if its contents constitute a work based - on the Library (independent of the use of the Library in a tool for - writing it). Whether that is true depends on what the Library does - and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's - complete source code as you receive it, in any medium, provided that - you conspicuously and appropriately publish on each copy an - appropriate copyright notice and disclaimer of warranty; keep intact - all the notices that refer to this License and to the absence of any - warranty; and distribute a copy of this License along with the - Library. - - You may charge a fee for the physical act of transferring a copy, - and you may at your option offer warranty protection in exchange for a - fee. - - 2. You may modify your copy or copies of the Library or any portion - of it, thus forming a work based on the Library, and copy and - distribute such modifications or work under the terms of Section 1 - above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - - These requirements apply to the modified work as a whole. If - identifiable sections of that work are not derived from the Library, - and can be reasonably considered independent and separate works in - themselves, then this License, and its terms, do not apply to those - sections when you distribute them as separate works. But when you - distribute the same sections as part of a whole which is a work based - on the Library, the distribution of the whole must be on the terms of - this License, whose permissions for other licensees extend to the - entire whole, and thus to each and every part regardless of who wrote - it. - - Thus, it is not the intent of this section to claim rights or contest - your rights to work written entirely by you; rather, the intent is to - exercise the right to control the distribution of derivative or - collective works based on the Library. - - In addition, mere aggregation of another work not based on the Library - with the Library (or with a work based on the Library) on a volume of - a storage or distribution medium does not bring the other work under - the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public - License instead of this License to a given copy of the Library. To do - this, you must alter all the notices that refer to this License, so - that they refer to the ordinary GNU General Public License, version 2, - instead of to this License. (If a newer version than version 2 of the - ordinary GNU General Public License has appeared, then you can specify - that version instead if you wish.) Do not make any other change in - these notices. - - Once this change is made in a given copy, it is irreversible for - that copy, so the ordinary GNU General Public License applies to all - subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of - the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or - derivative of it, under Section 2) in object code or executable form - under the terms of Sections 1 and 2 above provided that you accompany - it with the complete corresponding machine-readable source code, which - must be distributed under the terms of Sections 1 and 2 above on a - medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy - from a designated place, then offering equivalent access to copy the - source code from the same place satisfies the requirement to - distribute the source code, even though third parties are not - compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the - Library, but is designed to work with the Library by being compiled or - linked with it, is called a "work that uses the Library". Such a - work, in isolation, is not a derivative work of the Library, and - therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library - creates an executable that is a derivative of the Library (because it - contains portions of the Library), rather than a "work that uses the - library". The executable is therefore covered by this License. - Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file - that is part of the Library, the object code for the work may be a - derivative work of the Library even though the source code is not. - Whether this is true is especially significant if the work can be - linked without the Library, or if the work is itself a library. The - threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data - structure layouts and accessors, and small macros and small inline - functions (ten lines or less in length), then the use of the object - file is unrestricted, regardless of whether it is legally a derivative - work. (Executables containing this object code plus portions of the - Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may - distribute the object code for the work under the terms of Section 6. - Any executables containing that work also fall under Section 6, - whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or - link a "work that uses the Library" with the Library to produce a - work containing portions of the Library, and distribute that work - under terms of your choice, provided that the terms permit - modification of the work for the customer's own use and reverse - engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the - Library is used in it and that the Library and its use are covered by - this License. You must supply a copy of this License. If the work - during execution displays copyright notices, you must include the - copyright notice for the Library among them, as well as a reference - directing the user to the copy of this License. Also, you must do one - of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the - Library" must include any data and utility programs needed for - reproducing the executable from it. However, as a special exception, - the materials to be distributed need not include anything that is - normally distributed (in either source or binary form) with the major - components (compiler, kernel, and so on) of the operating system on - which the executable runs, unless that component itself accompanies - the executable. - - It may happen that this requirement contradicts the license - restrictions of other proprietary libraries that do not normally - accompany the operating system. Such a contradiction means you cannot - use both them and the Library together in an executable that you - distribute. - - 7. You may place library facilities that are a work based on the - Library side-by-side in a single library together with other library - facilities not covered by this License, and distribute such a combined - library, provided that the separate distribution of the work based on - the Library and of the other library facilities is otherwise - permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute - the Library except as expressly provided under this License. Any - attempt otherwise to copy, modify, sublicense, link with, or - distribute the Library is void, and will automatically terminate your - rights under this License. However, parties who have received copies, - or rights, from you under this License will not have their licenses - terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not - signed it. However, nothing else grants you permission to modify or - distribute the Library or its derivative works. These actions are - prohibited by law if you do not accept this License. Therefore, by - modifying or distributing the Library (or any work based on the - Library), you indicate your acceptance of this License to do so, and - all its terms and conditions for copying, distributing or modifying - the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the - Library), the recipient automatically receives a license from the - original licensor to copy, distribute, link with or modify the Library - subject to these terms and conditions. You may not impose any further - restrictions on the recipients' exercise of the rights granted herein. - You are not responsible for enforcing compliance by third parties with - this License. - - 11. If, as a consequence of a court judgment or allegation of patent - infringement or for any other reason (not limited to patent issues), - conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot - distribute so as to satisfy simultaneously your obligations under this - License and any other pertinent obligations, then as a consequence you - may not distribute the Library at all. For example, if a patent - license would not permit royalty-free redistribution of the Library by - all those who receive copies directly or indirectly through you, then - the only way you could satisfy both it and this License would be to - refrain entirely from distribution of the Library. - - If any portion of this section is held invalid or unenforceable under any - particular circumstance, the balance of the section is intended to apply, - and the section as a whole is intended to apply in other circumstances. - - It is not the purpose of this section to induce you to infringe any - patents or other property right claims or to contest validity of any - such claims; this section has the sole purpose of protecting the - integrity of the free software distribution system which is - implemented by public license practices. Many people have made - generous contributions to the wide range of software distributed - through that system in reliance on consistent application of that - system; it is up to the author/donor to decide if he or she is willing - to distribute software through any other system and a licensee cannot - impose that choice. - - This section is intended to make thoroughly clear what is believed to - be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in - certain countries either by patents or by copyrighted interfaces, the - original copyright holder who places the Library under this License may add - an explicit geographical distribution limitation excluding those countries, - so that distribution is permitted only in or among countries not thus - excluded. In such case, this License incorporates the limitation as if - written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new - versions of the Lesser General Public License from time to time. - Such new versions will be similar in spirit to the present version, - but may differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the Library - specifies a version number of this License which applies to it and - "any later version", you have the option of following the terms and - conditions either of that version or of any later version published by - the Free Software Foundation. If the Library does not specify a - license version number, you may choose any version ever published by - the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free - programs whose distribution conditions are incompatible with these, - write to the author to ask for permission. For software which is - copyrighted by the Free Software Foundation, write to the Free - Software Foundation; we sometimes make exceptions for this. Our - decision will be guided by the two goals of preserving the free status - of all derivatives of our free software and of promoting the sharing - and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. - EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY - KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE - LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME - THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY - AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU - FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR - CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE - LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING - RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A - FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF - SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest - possible use to the public, we recommend making it free software that - everyone can redistribute and change. You can do so by permitting - redistribution under these terms (or, alternatively, under the terms of the - ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is - safest to attach them to the start of each source file to most effectively - convey the exclusion of warranty; and each file should have at least the - "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Also add information on how to contact you by electronic and paper mail. - - You should also get your employer (if you work as a programmer) or your - school, if any, to sign a "copyright disclaimer" for the library, if - necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - - That's all there is to it! - -The following licenses cover code other than JRuby which is included with JRuby. - -Licenses listed below include: - -* GNU General Public License version 3 -* Apache 2.0 License -* BSD License -* Apache Software License Version 1.1 -* MIT License - -The complete text of the GNU General Public License version 3 is as follows: - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for - software and other kinds of works. - - The licenses for most software and other practical works are designed - to take away your freedom to share and change the works. By contrast, - the GNU General Public License is intended to guarantee your freedom to - share and change all versions of a program--to make sure it remains free - software for all its users. We, the Free Software Foundation, use the - GNU General Public License for most of our software; it applies also to - any other work released this way by its authors. You can apply it to - your programs, too. - - When we speak of free software, we are referring to freedom, not - price. Our General Public Licenses are designed to make sure that you - have the freedom to distribute copies of free software (and charge for - them if you wish), that you receive source code or can get it if you - want it, that you can change the software or use pieces of it in new - free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you - these rights or asking you to surrender the rights. Therefore, you have - certain responsibilities if you distribute copies of the software, or if - you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether - gratis or for a fee, you must pass on to the recipients the same - freedoms that you received. You must make sure that they, too, receive - or can get the source code. And you must show them these terms so they - know their rights. - - Developers that use the GNU GPL protect your rights with two steps: - (1) assert copyright on the software, and (2) offer you this License - giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains - that there is no warranty for this free software. For both users' and - authors' sake, the GPL requires that modified versions be marked as - changed, so that their problems will not be attributed erroneously to - authors of previous versions. - - Some devices are designed to deny users access to install or run - modified versions of the software inside them, although the manufacturer - can do so. This is fundamentally incompatible with the aim of - protecting users' freedom to change the software. The systematic - pattern of such abuse occurs in the area of products for individuals to - use, which is precisely where it is most unacceptable. Therefore, we - have designed this version of the GPL to prohibit the practice for those - products. If such problems arise substantially in other domains, we - stand ready to extend this provision to those domains in future versions - of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. - States should not allow patents to restrict development and use of - software on general-purpose computers, but in those that do, we wish to - avoid the special danger that patents applied to a free program could - make it effectively proprietary. To prevent this, the GPL assures that - patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and - modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of - works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this - License. Each licensee is addressed as "you". "Licensees" and - "recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work - in a fashion requiring copyright permission, other than the making of an - exact copy. The resulting work is called a "modified version" of the - earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based - on the Program. - - To "propagate" a work means to do anything with it that, without - permission, would make you directly or secondarily liable for - infringement under applicable copyright law, except executing it on a - computer or modifying a private copy. Propagation includes copying, - distribution (with or without modification), making available to the - public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other - parties to make or receive copies. Mere interaction with a user through - a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" - to the extent that it includes a convenient and prominently visible - feature that (1) displays an appropriate copyright notice, and (2) - tells the user that there is no warranty for the work (except to the - extent that warranties are provided), that licensees may convey the - work under this License, and how to view a copy of this License. If - the interface presents a list of user commands or options, such as a - menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work - for making modifications to it. "Object code" means any non-source - form of a work. - - A "Standard Interface" means an interface that either is an official - standard defined by a recognized standards body, or, in the case of - interfaces specified for a particular programming language, one that - is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other - than the work as a whole, that (a) is included in the normal form of - packaging a Major Component, but which is not part of that Major - Component, and (b) serves only to enable use of the work with that - Major Component, or to implement a Standard Interface for which an - implementation is available to the public in source code form. A - "Major Component", in this context, means a major essential component - (kernel, window system, and so on) of the specific operating system - (if any) on which the executable work runs, or a compiler used to - produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all - the source code needed to generate, install, and (for an executable - work) run the object code and to modify the work, including scripts to - control those activities. However, it does not include the work's - System Libraries, or general-purpose tools or generally available free - programs which are used unmodified in performing those activities but - which are not part of the work. For example, Corresponding Source - includes interface definition files associated with source files for - the work, and the source code for shared libraries and dynamically - linked subprograms that the work is specifically designed to require, - such as by intimate data communication or control flow between those - subprograms and other parts of the work. - - The Corresponding Source need not include anything that users - can regenerate automatically from other parts of the Corresponding - Source. - - The Corresponding Source for a work in source code form is that - same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of - copyright on the Program, and are irrevocable provided the stated - conditions are met. This License explicitly affirms your unlimited - permission to run the unmodified Program. The output from running a - covered work is covered by this License only if the output, given its - content, constitutes a covered work. This License acknowledges your - rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not - convey, without conditions so long as your license otherwise remains - in force. You may convey covered works to others for the sole purpose - of having them make modifications exclusively for you, or provide you - with facilities for running those works, provided that you comply with - the terms of this License in conveying all material for which you do - not control copyright. Those thus making or running the covered works - for you must do so exclusively on your behalf, under your direction - and control, on terms that prohibit them from making any copies of - your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under - the conditions stated below. Sublicensing is not allowed; section 10 - makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological - measure under any applicable law fulfilling obligations under article - 11 of the WIPO copyright treaty adopted on 20 December 1996, or - similar laws prohibiting or restricting circumvention of such - measures. - - When you convey a covered work, you waive any legal power to forbid - circumvention of technological measures to the extent such circumvention - is effected by exercising rights under this License with respect to - the covered work, and you disclaim any intention to limit operation or - modification of the work as a means of enforcing, against the work's - users, your or third parties' legal rights to forbid circumvention of - technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you - receive it, in any medium, provided that you conspicuously and - appropriately publish on each copy an appropriate copyright notice; - keep intact all notices stating that this License and any - non-permissive terms added in accord with section 7 apply to the code; - keep intact all notices of the absence of any warranty; and give all - recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, - and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to - produce it from the Program, in the form of source code under the - terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent - works, which are not by their nature extensions of the covered work, - and which are not combined with it such as to form a larger program, - in or on a volume of a storage or distribution medium, is called an - "aggregate" if the compilation and its resulting copyright are not - used to limit the access or legal rights of the compilation's users - beyond what the individual works permit. Inclusion of a covered work - in an aggregate does not cause this License to apply to the other - parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms - of sections 4 and 5, provided that you also convey the - machine-readable Corresponding Source under the terms of this License, - in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded - from the Corresponding Source as a System Library, need not be - included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any - tangible personal property which is normally used for personal, family, - or household purposes, or (2) anything designed or sold for incorporation - into a dwelling. In determining whether a product is a consumer product, - doubtful cases shall be resolved in favor of coverage. For a particular - product received by a particular user, "normally used" refers to a - typical or common use of that class of product, regardless of the status - of the particular user or of the way in which the particular user - actually uses, or expects or is expected to use, the product. A product - is a consumer product regardless of whether the product has substantial - commercial, industrial or non-consumer uses, unless such uses represent - the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, - procedures, authorization keys, or other information required to install - and execute modified versions of a covered work in that User Product from - a modified version of its Corresponding Source. The information must - suffice to ensure that the continued functioning of the modified object - code is in no case prevented or interfered with solely because - modification has been made. - - If you convey an object code work under this section in, or with, or - specifically for use in, a User Product, and the conveying occurs as - part of a transaction in which the right of possession and use of the - User Product is transferred to the recipient in perpetuity or for a - fixed term (regardless of how the transaction is characterized), the - Corresponding Source conveyed under this section must be accompanied - by the Installation Information. But this requirement does not apply - if neither you nor any third party retains the ability to install - modified object code on the User Product (for example, the work has - been installed in ROM). - - The requirement to provide Installation Information does not include a - requirement to continue to provide support service, warranty, or updates - for a work that has been modified or installed by the recipient, or for - the User Product in which it has been modified or installed. Access to a - network may be denied when the modification itself materially and - adversely affects the operation of the network or violates the rules and - protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, - in accord with this section must be in a format that is publicly - documented (and with an implementation available to the public in - source code form), and must require no special password or key for - unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this - License by making exceptions from one or more of its conditions. - Additional permissions that are applicable to the entire Program shall - be treated as though they were included in this License, to the extent - that they are valid under applicable law. If additional permissions - apply only to part of the Program, that part may be used separately - under those permissions, but the entire Program remains governed by - this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option - remove any additional permissions from that copy, or from any part of - it. (Additional permissions may be written to require their own - removal in certain cases when you modify the work.) You may place - additional permissions on material, added by you to a covered work, - for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you - add to a covered work, you may (if authorized by the copyright holders of - that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further - restrictions" within the meaning of section 10. If the Program as you - received it, or any part of it, contains a notice stating that it is - governed by this License along with a term that is a further - restriction, you may remove that term. If a license document contains - a further restriction but permits relicensing or conveying under this - License, you may add to a covered work material governed by the terms - of that license document, provided that the further restriction does - not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you - must place, in the relevant source files, a statement of the - additional terms that apply to those files, or a notice indicating - where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the - form of a separately written license, or stated as exceptions; - the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly - provided under this License. Any attempt otherwise to propagate or - modify it is void, and will automatically terminate your rights under - this License (including any patent licenses granted under the third - paragraph of section 11). - - However, if you cease all violation of this License, then your - license from a particular copyright holder is reinstated (a) - provisionally, unless and until the copyright holder explicitly and - finally terminates your license, and (b) permanently, if the copyright - holder fails to notify you of the violation by some reasonable means - prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is - reinstated permanently if the copyright holder notifies you of the - violation by some reasonable means, this is the first time you have - received notice of violation of this License (for any work) from that - copyright holder, and you cure the violation prior to 30 days after - your receipt of the notice. - - Termination of your rights under this section does not terminate the - licenses of parties who have received copies or rights from you under - this License. If your rights have been terminated and not permanently - reinstated, you do not qualify to receive new licenses for the same - material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or - run a copy of the Program. Ancillary propagation of a covered work - occurring solely as a consequence of using peer-to-peer transmission - to receive a copy likewise does not require acceptance. However, - nothing other than this License grants you permission to propagate or - modify any covered work. These actions infringe copyright if you do - not accept this License. Therefore, by modifying or propagating a - covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically - receives a license from the original licensors, to run, modify and - propagate that work, subject to this License. You are not responsible - for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an - organization, or substantially all assets of one, or subdividing an - organization, or merging organizations. If propagation of a covered - work results from an entity transaction, each party to that - transaction who receives a copy of the work also receives whatever - licenses to the work the party's predecessor in interest had or could - give under the previous paragraph, plus a right to possession of the - Corresponding Source of the work from the predecessor in interest, if - the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the - rights granted or affirmed under this License. For example, you may - not impose a license fee, royalty, or other charge for exercise of - rights granted under this License, and you may not initiate litigation - (including a cross-claim or counterclaim in a lawsuit) alleging that - any patent claim is infringed by making, using, selling, offering for - sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this - License of the Program or a work on which the Program is based. The - work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims - owned or controlled by the contributor, whether already acquired or - hereafter acquired, that would be infringed by some manner, permitted - by this License, of making, using, or selling its contributor version, - but do not include claims that would be infringed only as a - consequence of further modification of the contributor version. For - purposes of this definition, "control" includes the right to grant - patent sublicenses in a manner consistent with the requirements of - this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free - patent license under the contributor's essential patent claims, to - make, use, sell, offer for sale, import and otherwise run, modify and - propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express - agreement or commitment, however denominated, not to enforce a patent - (such as an express permission to practice a patent or covenant not to - sue for patent infringement). To "grant" such a patent license to a - party means to make such an agreement or commitment not to enforce a - patent against the party. - - If you convey a covered work, knowingly relying on a patent license, - and the Corresponding Source of the work is not available for anyone - to copy, free of charge and under the terms of this License, through a - publicly available network server or other readily accessible means, - then you must either (1) cause the Corresponding Source to be so - available, or (2) arrange to deprive yourself of the benefit of the - patent license for this particular work, or (3) arrange, in a manner - consistent with the requirements of this License, to extend the patent - license to downstream recipients. "Knowingly relying" means you have - actual knowledge that, but for the patent license, your conveying the - covered work in a country, or your recipient's use of the covered work - in a country, would infringe one or more identifiable patents in that - country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or - arrangement, you convey, or propagate by procuring conveyance of, a - covered work, and grant a patent license to some of the parties - receiving the covered work authorizing them to use, propagate, modify - or convey a specific copy of the covered work, then the patent license - you grant is automatically extended to all recipients of the covered - work and works based on it. - - A patent license is "discriminatory" if it does not include within - the scope of its coverage, prohibits the exercise of, or is - conditioned on the non-exercise of one or more of the rights that are - specifically granted under this License. You may not convey a covered - work if you are a party to an arrangement with a third party that is - in the business of distributing software, under which you make payment - to the third party based on the extent of your activity of conveying - the work, and under which the third party grants, to any of the - parties who would receive the covered work from you, a discriminatory - patent license (a) in connection with copies of the covered work - conveyed by you (or copies made from those copies), or (b) primarily - for and in connection with specific products or compilations that - contain the covered work, unless you entered into that arrangement, - or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting - any implied license or other defenses to infringement that may - otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or - otherwise) that contradict the conditions of this License, they do not - excuse you from the conditions of this License. If you cannot convey a - covered work so as to satisfy simultaneously your obligations under this - License and any other pertinent obligations, then as a consequence you may - not convey it at all. For example, if you agree to terms that obligate you - to collect a royalty for further conveying from those to whom you convey - the Program, the only way you could satisfy both those terms and this - License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have - permission to link or combine any covered work with a work licensed - under version 3 of the GNU Affero General Public License into a single - combined work, and to convey the resulting work. The terms of this - License will continue to apply to the part which is the covered work, - but the special requirements of the GNU Affero General Public License, - section 13, concerning interaction through a network will apply to the - combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of - the GNU General Public License from time to time. Such new versions will - be similar in spirit to the present version, but may differ in detail to - address new problems or concerns. - - Each version is given a distinguishing version number. If the - Program specifies that a certain numbered version of the GNU General - Public License "or any later version" applies to it, you have the - option of following the terms and conditions either of that numbered - version or of any later version published by the Free Software - Foundation. If the Program does not specify a version number of the - GNU General Public License, you may choose any version ever published - by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future - versions of the GNU General Public License can be used, that proxy's - public statement of acceptance of a version permanently authorizes you - to choose that version for the Program. - - Later license versions may give you additional or different - permissions. However, no additional obligations are imposed on any - author or copyright holder as a result of your choosing to follow a - later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY - APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT - HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY - OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, - THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM - IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF - ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING - WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS - THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY - GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE - USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF - DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD - PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), - EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF - SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided - above cannot be given local legal effect according to their terms, - reviewing courts shall apply local law that most closely approximates - an absolute waiver of all civil liability in connection with the - Program, unless a warranty or assumption of liability accompanies a - copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest - possible use to the public, the best way to achieve this is to make it - free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest - to attach them to the start of each source file to most effectively - state the exclusion of warranty; and each file should have at least - the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short - notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the appropriate - parts of the General Public License. Of course, your program's commands - might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, - if any, to sign a "copyright disclaimer" for the program, if necessary. - For more information on this, and how to apply and follow the GNU GPL, see - . - - The GNU General Public License does not permit incorporating your program - into proprietary programs. If your program is a subroutine library, you - may consider it more useful to permit linking proprietary applications with - the library. If this is what you want to do, use the GNU Lesser General - Public License instead of this License. But first, please read - . - -The complete text of the Apache 2.0 License is as follows: - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - -The complete text of the BSD license can be is as follows: - - Copyright (c) The Regents of the University of California. - All rights reserved. - - 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 University 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 REGENTS 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 REGENTS 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. - -The complete text of the Apache Software License Version 1.1 is as follows: - - /* - * ================================================================ - * The Apache Software License, Version 1.1 - * ================================================================ - * - * Copyright (C) 2000-2002 The Apache Software Foundation. All - * rights reserved. - * - * 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. The end-user documentation included with the redistribution, if - * any, must include the following acknowledgment: "This product - * includes software developed by the Apache Software Foundation - * (http://www.apache.org/)." Alternately, this acknowledgment may - * appear in the software itself, if and wherever such third-party - * acknowledgments normally appear. - * - * 4. The names "Ant" and "Apache Software Foundation" must not be - * used to endorse or promote products derived from this software - * without prior written permission. For written permission, please - * contact apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", - * nor may "Apache" appear in their name, without prior written - * permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION - * OR ITS 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. - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * . - * - */ - -The complete text of the MIT license is as follows: - - 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. - -The complete text of the Eclipse Public License v1.0 is as follows: - - Eclipse Public License - v 1.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC - LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM - CONSTITUTES RECIPIENT’S ACCEPTANCE OF THIS AGREEMENT. - - 1. DEFINITIONS - - "Contribution" means: - - a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and - b) in the case of each subsequent Contributor: - - i) changes to the Program, and - - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' from a - Contributor if it was added to the Program by such Contributor itself or anyone - acting on such Contributor’s behalf. Contributions do not include additions to - the Program which: (i) are separate modules of software distributed in - conjunction with the Program under their own license agreement, and (ii) are not - derivative works of the Program. - - "Contributor" means any person or entity that distributes the Program. - - "Licensed Patents " mean patent claims licensable by a Contributor which are - necessarily infringed by the use or sale of its Contribution alone or when - combined with the Program. - - "Program" means the Contributions distributed in accordance with this Agreement. - - "Recipient" means anyone who receives the Program under this Agreement, - including all Contributors. - - 2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly perform, - distribute and sublicense the Contribution of such Contributor, if any, and such - derivative works, in source code and object code form. - - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed - Patents to make, use, sell, offer to sell, import and otherwise transfer the - Contribution of such Contributor, if any, in source code and object code form. - This patent license shall apply to the combination of the Contribution and the - Program if, at the time the Contribution is added by the Contributor, such - addition of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other combinations - which include the Contribution. No hardware per se is licensed hereunder. - - c) Recipient understands that although each Contributor grants the licenses to - its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other intellectual - property rights of any other entity. Each Contributor disclaims any liability to - Recipient for claims brought by any other entity based on infringement of - intellectual property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby assumes sole - responsibility to secure any other intellectual property rights needed, if any. - For example, if a third party patent license is required to allow Recipient to - distribute the Program, it is Recipient’s responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has sufficient copyright - rights in its Contribution, if any, to grant the copyright license set forth in - this Agreement. - - 3. REQUIREMENTS - - A Contributor may choose to distribute the Program in object code form under its - own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - - b) its license agreement: - - i) effectively disclaims on behalf of all Contributors all warranties and - conditions, express and implied, including warranties or conditions of title and - non-infringement, and implied warranties or conditions of merchantability and - fitness for a particular purpose; - - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and consequential - damages, such as lost profits; - - iii) states that any provisions which differ from this Agreement are offered by - that Contributor alone and not by any other party; and - - iv) states that source code for the Program is available from such Contributor, - and informs licensees how to obtain it in a reasonable manner on or through a - medium customarily used for software exchange. - - When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - - Contributors may not remove or alter any copyright notices contained within the - Program. - - Each Contributor must identify itself as the originator of its Contribution, if - any, in a manner that reasonably allows subsequent Recipients to identify the - originator of the Contribution. - - 4. COMMERCIAL DISTRIBUTION - - Commercial distributors of software may accept certain responsibilities with - respect to end users, business partners and the like. While this license is - intended to facilitate the commercial use of the Program, the Contributor who - includes the Program in a commercial product offering should do so in a manner - which does not create potential liability for other Contributors. Therefore, if - a Contributor includes the Program in a commercial product offering, such - Contributor ("Commercial Contributor") hereby agrees to defend and indemnify - every other Contributor ("Indemnified Contributor") against any losses, damages - and costs (collectively "Losses") arising from claims, lawsuits and other legal - actions brought by a third party against the Indemnified Contributor to the - extent caused by the acts or omissions of such Commercial Contributor in - connection with its distribution of the Program in a commercial product - offering. The obligations in this section do not apply to any claims or Losses - relating to any actual or alleged intellectual property infringement. In order - to qualify, an Indemnified Contributor must: a) promptly notify the Commercial - Contributor in writing of such claim, and b) allow the Commercial Contributor to - control, and cooperate with the Commercial Contributor in, the defense and any - related settlement negotiations. The Indemnified Contributor may participate in - any such claim at its own expense. - - For example, a Contributor might include the Program in a commercial product - offering, Product X. That Contributor is then a Commercial Contributor. If that - Commercial Contributor then makes performance claims, or offers warranties - related to Product X, those performance claims and warranties are such - Commercial Contributor’s responsibility alone. Under this section, the - Commercial Contributor would have to defend claims against the other - Contributors related to those performance claims and warranties, and if a court - requires any other Contributor to pay any damages as a result, the Commercial - Contributor must pay those damages. - - 5. NO WARRANTY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR - IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, - NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each - Recipient is solely responsible for determining the appropriateness of using and - distributing the Program and assumes all risks associated with its exercise of - rights under this Agreement , including but not limited to the risks and costs - of program errors, compliance with applicable laws, damage to or loss of data, - programs or equipment, and unavailability or interruption of operations. - - 6. DISCLAIMER OF LIABILITY - - EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY - CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST - PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS - GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 7. GENERAL - - If any provision of this Agreement is invalid or unenforceable under applicable - law, it shall not affect the validity or enforceability of the remainder of the - terms of this Agreement, and without further action by the parties hereto, such - provision shall be reformed to the minimum extent necessary to make such - provision valid and enforceable. - - If Recipient institutes patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Program itself - (excluding combinations of the Program with other software or hardware) - infringes such Recipient’s patent(s), then such Recipient’s rights granted under - Section 2(b) shall terminate as of the date such litigation is filed. - - All Recipient’s rights under this Agreement shall terminate if it fails to - comply with any of the material terms or conditions of this Agreement and does - not cure such failure in a reasonable period of time after becoming aware of - such noncompliance. If all Recipient’s rights under this Agreement terminate, - Recipient agrees to cease use and distribution of the Program as soon as - reasonably practicable. However, Recipient’s obligations under this Agreement - and any licenses granted by Recipient relating to the Program shall continue and - survive. - - Everyone is permitted to copy and distribute copies of this Agreement, but in - order to avoid inconsistency the Agreement is copyrighted and may only be - modified in the following manner. The Agreement Steward reserves the right to - publish new versions (including revisions) of this Agreement from time to time. - No one other than the Agreement Steward has the right to modify this Agreement. - The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation - may assign the responsibility to serve as the Agreement Steward to a suitable - separate entity. Each new version of the Agreement will be given a - distinguishing version number. The Program (including Contributions) may always - be distributed subject to the version of the Agreement under which it was - received. In addition, after a new version of the Agreement is published, - Contributor may elect to distribute the Program (including its Contributions) - under the new version. Except as expressly stated in Sections 2(a) and 2(b) - above, Recipient receives no rights or licenses to the intellectual property of - any Contributor under this Agreement, whether expressly, by implication, - estoppel or otherwise. All rights in the Program not expressly granted under - this Agreement are reserved. - - This Agreement is governed by the laws of the State of New York and the - intellectual property laws of the United States of America. No party to this - Agreement will bring a legal action under this Agreement more than one year - after the cause of action arose. Each party waives its rights to a jury trial in - any resulting litigation. - --------------------------------------------------- -Library: joda-time v -Url: "http://www.joda.org/joda-time/" -License: Apache-2.0 - -source: https://github.com/JodaOrg/joda-time/blob/v2.9.9/NOTICE.txt - -This product includes software developed by -Joda.org (http://www.joda.org/). - --------------------------------------------------- -Library: joni v -Url: "https://github.com/jruby/joni/" -License: MIT - -source: https://github.com/jruby/joni/blob/joni-2.1.16/LICENSE - -MIT License - -Copyright (c) 2017 JRuby Team - -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. - --------------------------------------------------- -Library: jrjackson v0.4.6 -Url: "" -License: Apache-2.0 +========== +Notice for: jrjackson-0.4.13 +---------- https://github.com/guyboertje/jrjackson/blob/v0.4.6/README.md @@ -10800,1744 +4001,94 @@ LICENSE applicable to this library: Apache License 2.0 see http://www.apache.org/licenses/LICENSE-2.0 --------------------------------------------------- -Library: jruby-openssl v0.9.21 -Url: "https://github.com/jruby/jruby-openssl/" -License: EPL-1.0 +========== +Notice for: jruby- +---------- -source: https://github.com/jruby/jruby-openssl/blob/v0.9.21/LICENSE.txt +JRuby is Copyright (c) 2007-2018 The JRuby project, and is released +under a tri EPL/GPL/LGPL license. You can use it, redistribute it +and/or modify it under the terms of the: -JRuby-OpenSSL is distributed under the same license as JRuby a tri EPL/GPL/LGPL -license. You can use it, redistribute it and/or modify it under the terms of the: - - Eclipse Public License version 1.0 - GNU General Public License version 2.0 + Eclipse Public License version 2.0 + OR + GNU General Public License version 2 + OR GNU Lesser General Public License version 2.1 -The contents of this file are subject to the Common Public License Version 1.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.eclipse.org/legal/cpl-v10.html +bytelist (http://github.com/jruby/bytelist), +jnr-posix (https://github.com/jnr/jnr-posix), +jruby-openssl (https://github.com/jruby/jruby-openssl), +jruby-readline (https://github.com/jruby/jruby-readline), +psych (https://github.com/ruby/psych), +yydebug (https://github.com/jruby/jay-yydebug/) +are released under the same copyright/license. -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 APARTICULAR 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. +Some additional libraries distributed with JRuby are not covered by +JRuby's licence. Most of these libraries and their licenses are listed +below. Also see LICENSE.RUBY for most files found in lib/ruby/stdlib. - Copyright (C) 2007-2009 Ola Bini - Copyright (C) 2009-2017 The JRuby Team + asm (http://asm.objectweb.org) is distributed under the BSD license and is -Alternatively, the contents of this file may be used under the terms of -either of the GNU General Public License Version 2 or later (the "GPL"), -or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the EPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the EPL, the GPL or the LGPL. + Copyright (c) 2000-2011 INRIA, France Telecom + All rights reserved. + jline2 (https://github.com/jline/jline2) is distributed under the BSD license: -JRuby-OpenSSL includes software by The Legion of the Bouncy Castle Inc. -Please, visit (http://bouncycastle.org/license.html) for licensing details. + Copyright (c) 2002-2012, the original author or authors. + All rights reserved. --------------------------------------------------- -Library: jruby-readline v -Url: "https://github.com/jruby/jruby-readline" -License: EPL-1.0 + jzlib (http://www.jcraft.com/jzlib/) is distributed under the BSD license: -source: https://github.com/jruby/jruby-readline/blob/1.2.2/License.txt + Copyright (c) 2000-2011 ymnk, JCraft,Inc. All rights reserved. -JRuby-OpenSSL is distributed under the same license as JRuby (http://www.jruby.org/). + The "rake" library (https://github.com/ruby/rake) is distributed under + the MIT license, and has the following copyright: + + Copyright (c) 2003, 2004 Jim Weirich -Version: EPL 1.0/GPL 2.0/LGPL 2.1 + jcodings (http://github.com/jruby/jcodings) and + joni (http://github.com/jruby/joni) are distributed + under the MIT license without copyright. -The contents of this file are subject to the Common Public -License Version 1.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.eclipse.org/legal/cpl-v10.html + Bouncycastle is released under the MIT license: -Software distributed under the License is distributed on an "AS -IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -implied. See the License for the specific language governing -rights and limitations under the License. + Copyright (c) 2000 - 2006 The Legion Of The Bouncy Castle. -Copyright (C) 2007 Ola Bini + jnr-x86asm (https://github.com/jnr/jnr-x86asm) is distributed under the MIT + license with the following copyright: -Alternatively, the contents of this file may be used under the terms of -either of the GNU General Public License Version 2 or later (the "GPL"), -or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the EPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the EPL, the GPL or the LGPL. + Copyright (C) 2010 Wayne Meissner + Copyright (c) 2008-2009, Petr Kobalicek -JRuby-OpenSSL includes software by the Legion of the Bouncy Castle -(http://bouncycastle.org/license.html). + The following libraries are redistributed under the Apache Software + License v2.0, available below. + invokebinder (https://github.com/headius/invokebinder) + jffi (https://github.com/jnr/jffi) + jitescript (https://github.com/qmx/jitescript) + jnr-constants (http://github.com/jnr/jnr-constants) + jnr-enxio (https://github.com/jnr/jnr-enxio) + jnr-ffi (https://github.com/jnr/jnr-jffi) + jnr-netdb (http://github.com/jnr/jnr-netdb) + jnr-unixsocket (https://github.com/jnr/jnr-unixsocket) + joda-time (http://joda-time.sourceforge.net) + maven (http://maven.apache.org/) + nailgun (http://martiansoftware.com/nailgun) + options (https://github.com/headius/options) + snakeyaml (https://github.com/asomov/snakeyaml) + unsafe-fences (https://github.com/headius/unsafe-fences) --------------------------------------------------- -Library: jruby-stdin-channel v0.2.0 -Url: "https://github.com/colinsurprenant/jruby-stdin-channel" -License: Apache-2.0 + racc (runtime only, https://github.com/tenderlove/racc) is + distributed under the same license terms as the Ruby standard + library. This includes all files under lib/ruby/stdlib/racc. + See LICENSE.RUBY. -source: https://github.com/colinsurprenant/jruby-stdin-channel/blob/v0.2.0/LICENSE.md + json-generator and json-parser (https://github.com/flori/json) native + extenstions under the same license terms as the Ruby standard library. + See LICENSE.RUBY -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 +The complete text of the Eclipse Public License is as follows: - 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. - --------------------------------------------------- -Library: json-generator v -Url: "https://github.com/tmattia/json-generator/" -License: MIT - -source: https://github.com/tmattia/json-generator/blob/v0.1.0/LICENSE.txt - -Copyright (c) 2013 ThoughtWorks Brasil & Abril Midia - -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. - --------------------------------------------------- -Library: json v1.8.6 -Url: z -License: Ruby - -source: https://github.com/flori/json/blob/v1.8.6/README.md#license - -Ruby License, see https://www.ruby-lang.org/en/about/license.txt. - --------------------------------------------------- -Library: jzlib v -Url: "http://www.jcraft.com/jzlib/" -License: BSD - -source: https://github.com/ymnk/jzlib/blob/1.1.3/LICENSE.txt#L5-L29 - -Copyright (c) 2000-2011 ymnk, JCraft,Inc. All rights reserved. - -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. The names of the authors may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 JCRAFT, -INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE 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. - --------------------------------------------------- -Library: lru_redux v1.1.0 -Url: "https://github.com/SamSaffron/lru_redux/" -License: MIT - -source: https://github.com/SamSaffron/lru_redux/blob/v1.1.0/LICENSE.txt - -Copyright (c) 2013 Sam Saffron - -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. - --------------------------------------------------- -Library: mail v2.6.6 -Url: "https://github.com/mikel/mail/" -License: MIT - -source: https://github.com/mikel/mail/blob/2.6.6/MIT-LICENSE - -Copyright (c) 2009-2017 Mikel Lindsaar - -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. - --------------------------------------------------- -Library: manticore v0.6.1 -Url: "https://github.com/cheald/manticore/" -License: MIT - -source: https://github.com/cheald/manticore/blob/v0.6.1/LICENSE.txt - -Copyright (c) 2015 Chris Heald - -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. - --------------------------------------------------- -Library: march_hare v3.1.1 -Url: "https://github.com/ruby-amqp/march_hare/" -License: MIT - -source: https://github.com/ruby-amqp/march_hare/blob/v3.1.1/LICENSE - -Copyright (c) 2011-2013 Theo Hultberg -Copyright (c) 2013-2017 Michael S. Klishin and 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. - --------------------------------------------------- -Library: memoizable v0.4.2 -Url: "https://github.com/dkubb/memoizable/" -License: MIT - -source: https://github.com/dkubb/memoizable/blob/v0.4.2/LICENSE.md - -Copyright (c) 2013 Dan Kubb, Erik Michaels-Ober - -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. - --------------------------------------------------- -Library: method_source v0.8.2 -Url: "https://github.com/banister/method_source/" -License: MIT - -source: https://github.com/banister/method_source/blob/v0.9.0/README.markdown#license - -Copyright (c) 2011 John Mair (banisterfiend) - -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. - --------------------------------------------------- -Library: metriks v0.9.9.8 -Url: "https://github.com/eric/metriks/" -License: MIT - -source: https://github.com/eric/metriks/blob/v0.9.9.8/LICENSE - -Copyright (c) 2012 Eric Lindvall - -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. - --------------------------------------------------- -Library: mime-types v2.6.2 -Url: -License: MIT - -source: https://github.com/mime-types/ruby-mime-types/blob/v2.6.2/Licence.rdoc - -* Copyright 2003–2015 Austin Ziegler. -* Adapted from MIME::Types (Perl) by Mark Overmeer. - -=== 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. - --------------------------------------------------- -Library: minitar v0.6.1 -Url: -License: RUBY|BSD-2-Clause - -source: https://github.com/halostatue/minitar/blob/v0.6.1/Licence.md - -minitar is free software that may be redistributed and/or modified under the -terms of Ruby’s licence or the Simplified BSD licence. - -* Copyright 2004–2017 Austin Ziegler. -* Portions copyright 2004 Mauricio Julio Fernández Pradier. - --------------------------------------------------- -Library: msgpack v1.2.4 -Url: "https://github.com/msgpack/msgpack-ruby" -License: Apache-2.0 - -source: https://github.com/msgpack/msgpack-ruby/blob/v1.2.4/ext/msgpack/ - - Copyright (C) 2008-2013 Sadayuki Furuhashi - - 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. - --------------------------------------------------- -Library: multi_json v1.13.1 -Url: "https://github.com/intridea/multi_json" -License: MIT - -source: https://github.com/intridea/multi_json/blob/v1.13.1/LICENSE.md - -Copyright (c) 2010-2013 Michael Bleigh, Josh Kalderimis, Erik Michaels-Ober, Pavel Pravosud - -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. - --------------------------------------------------- -Library: multipart-post v2.0.0 -Url: "https://github.com/nicksieger/multipart-post" -License: MIT - -source: https://github.com/nicksieger/multipart-post/blob/v2.0.0/README.md#license - -Copyright (c) 2007-2013 Nick Sieger - -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. - --------------------------------------------------- -Library: murmurhash3 v0.1.6 -Url: "https://github.com/funny-falcon/" -License: MIT - -source: https://github.com/funny-falcon/murmurhash3-ruby/blob/v0.1.5/LICENSE - -Copyright (c) 2012 Sokolov Yura 'funny-falcon' - -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. - --------------------------------------------------- -Library: mustache v0.99.8 -Url: "https://github.com/mustache/mustache" -License: MIT - -source: https://github.com/mustache/mustache/blob/v0.99.8/LICENSE - -Copyright (c) 2009 Chris Wanstrath - -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. - --------------------------------------------------- -Library: nailgun v -Url: "http://martiansoftware.com/nailgun" -License: Apache-2.0 - -source: https://github.com/facebook/nailgun/blob/nailgun-all-0.9.3/LICENSE.txt - -Nailgun Copyright © 2004-2012, Martian Software, Inc. - -Apache License - --------------------------------------------------- -Library: naught v1.1.0 -Url: "https://github.com/avdi/naught/" -License: MIT - -source: https://github.com/avdi/naught/blob/v1.1.0/LICENSE.txt - -Copyright (c) 2013 Avdi Grimm - -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. - --------------------------------------------------- -Library: nokogiri v1.8.2 -Url: "http://nokogiri.org/" -License: MIT - -source: https://github.com/sparklemotion/nokogiri/blob/v1.8.2/LICENSE.md - -Copyright (c) 2008 - 2017: - -* [Aaron Patterson](http://tenderlovemaking.com) -* [Mike Dalessio](http://mike.daless.io) -* [Charles Nutter](http://blog.headius.com) -* [Sergio Arbeo](http://www.serabe.com) -* [Patrick Mahoney](http://polycrystal.org) -* [Yoko Harada](http://yokolet.blogspot.com) -* [Akinori MUSHA](https://akinori.org) -* [John Shahid](https://github.com/jvshahid) - -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. - --------------------------------------------------- -Library: numerizer v0.1.1 -Url: "https://github.com/jduff/numerizer/" -License: MIT - -FAKER - --------------------------------------------------- -Library: options v -Url: https://github.com/headius/options -License: Apache-2.0 - -source: https://github.com/headius/options/blob/options-1.4/src/main/java/com/headius/options/Option.java#L1-L13 - -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. - --------------------------------------------------- -Library: log4j-1.2-api v2.6.2 -Url: "https://logging.apache.org/log4j" -License: Apache-2.0 - -Apache Log4j -Copyright 1999-2017 Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -ResolverUtil.java -Copyright 2005-2006 Tim Fennell - -Dumbster SMTP test server -Copyright 2004 Jason Paul Kitchen - -TypeUtil.java -Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams - -picocli (http://picocli.info) -Copyright 2017 Remko Popma - --------------------------------------------------- -Library: log4j-api v2.6.2 -Url: "https://logging.apache.org/log4j" -License: Apache-2.0 - -Apache Log4j -Copyright 1999-2017 Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -ResolverUtil.java -Copyright 2005-2006 Tim Fennell - -Dumbster SMTP test server -Copyright 2004 Jason Paul Kitchen - -TypeUtil.java -Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams - -picocli (http://picocli.info) -Copyright 2017 Remko Popma - --------------------------------------------------- -Library: log4j-api v2.8.2 -Url: https://logging.apache.org/log4j/2.x/index.html -License: Apache-2.0 - -Apache Log4j -Copyright 1999-2017 Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -ResolverUtil.java -Copyright 2005-2006 Tim Fennell - -Dumbster SMTP test server -Copyright 2004 Jason Paul Kitchen - -TypeUtil.java -Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams - -picocli (http://picocli.info) -Copyright 2017 Remko Popma - --------------------------------------------------- -Library: log4j-api v2.9.1 -Url: https://logging.apache.org/log4j/2.x/index.html -License: Apache-2.0 - -Apache Log4j -Copyright 1999-2017 Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -ResolverUtil.java -Copyright 2005-2006 Tim Fennell - -Dumbster SMTP test server -Copyright 2004 Jason Paul Kitchen - -TypeUtil.java -Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams - -picocli (http://picocli.info) -Copyright 2017 Remko Popma - --------------------------------------------------- -Library: log4j-core v2.8.2 -Url: https://logging.apache.org/log4j/2.x/index.html -License: Apache-2.0 - -Apache Log4j -Copyright 1999-2017 Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -ResolverUtil.java -Copyright 2005-2006 Tim Fennell - -Dumbster SMTP test server -Copyright 2004 Jason Paul Kitchen - -TypeUtil.java -Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams - -picocli (http://picocli.info) -Copyright 2017 Remko Popma - --------------------------------------------------- -Library: log4j-core v2.9.1 -Url: https://logging.apache.org/log4j/2.x/index.html -License: Apache-2.0 - -Apache Log4j -Copyright 1999-2017 Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -ResolverUtil.java -Copyright 2005-2006 Tim Fennell - -Dumbster SMTP test server -Copyright 2004 Jason Paul Kitchen - -TypeUtil.java -Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams - -picocli (http://picocli.info) -Copyright 2017 Remko Popma - --------------------------------------------------- -Library: log4j-slf4j-impl v2.8.2 -Url: https://logging.apache.org/log4j/2.x/index.html -License: Apache-2.0 - -Apache Log4j -Copyright 1999-2017 Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -ResolverUtil.java -Copyright 2005-2006 Tim Fennell - -Dumbster SMTP test server -Copyright 2004 Jason Paul Kitchen - -TypeUtil.java -Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams - -picocli (http://picocli.info) -Copyright 2017 Remko Popma - --------------------------------------------------- -Library: log4j-slf4j-impl v2.9.1 -Url: https://logging.apache.org/log4j/2.x/index.html -License: Apache-2.0 - -Apache Log4j -Copyright 1999-2017 Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -ResolverUtil.java -Copyright 2005-2006 Tim Fennell - -Dumbster SMTP test server -Copyright 2004 Jason Paul Kitchen - -TypeUtil.java -Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams - -picocli (http://picocli.info) -Copyright 2017 Remko Popma - --------------------------------------------------- -Library: commons-compiler v3.0.8 -Url: https://github.com/janino-compiler/janino -License: BSD-3-Clause # Question: tweaked license on bullet point 3 - -Janino - An embedded Java[TM] compiler - -Copyright (c) 2001-2016, Arno Unkrig -Copyright (c) 2015-2016 TIBCO Software Inc. -All rights reserved. - -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 JANINO 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 HOLDERS 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. - --------------------------------------------------- -Library: janino v3.0.8 -Url: https://github.com/janino-compiler/janino -License: BSD-3-Clause # Question: tweaked license on bullet point 3 - -Janino - An embedded Java[TM] compiler - -Copyright (c) 2001-2016, Arno Unkrig -Copyright (c) 2015-2016 TIBCO Software Inc. -All rights reserved. - -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 JANINO 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 HOLDERS 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. - --------------------------------------------------- -Library: org.eclipse.core.commands v3.6.0 -Url: http://www.eclipse.org -License: EPL-1.0 - -Copyright © Eclipse Foundation, Inc. All Rights Reserved. - -Eclipse Public License - v 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - --------------------------------------------------- -Library: org.eclipse.core.contenttype v3.4.100 -Url: http://www.eclipse.org -License: EPL-1.0 - -Copyright © Eclipse Foundation, Inc. All Rights Reserved. - -Eclipse Public License - v 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - --------------------------------------------------- -Library: org.eclipse.core.expressions v3.4.300 -Url: http://www.eclipse.org -License: EPL-1.0 - -Copyright © Eclipse Foundation, Inc. All Rights Reserved. - -Eclipse Public License - v 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - --------------------------------------------------- -Library: org.eclipse.core.filesystem v1.3.100 -Url: http://www.eclipse.org -License: EPL-1.0 - -Copyright © Eclipse Foundation, Inc. All Rights Reserved. - -Eclipse Public License - v 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - --------------------------------------------------- -Library: org.eclipse.core.jobs v3.5.100 -Url: http://www.eclipse.org -License: EPL-1.0 - -Copyright © Eclipse Foundation, Inc. All Rights Reserved. - -Eclipse Public License - v 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - --------------------------------------------------- -Library: org.eclipse.core.resources v3.7.100 -Url: http://www.eclipse.org -License: EPL-1.0 - -Copyright © Eclipse Foundation, Inc. All Rights Reserved. - -Eclipse Public License - v 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - --------------------------------------------------- -Library: org.eclipse.core.runtime v3.7.0 -Url: http://www.eclipse.org -License: EPL-1.0 - -Copyright © Eclipse Foundation, Inc. All Rights Reserved. - -Eclipse Public License - v 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - --------------------------------------------------- -Library: org.eclipse.equinox.app v1.3.100 -Url: http://www.eclipse.org/platform -License: EPL-1.0 - - Copyright (c) 2012 Eclipse Foundation. - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Distribution License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/org/documents/edl-v10.php - --------------------------------------------------- -Library: org.eclipse.equinox.common v3.6.0 -Url: http://www.eclipse.org/platform -License: EPL-1.0 - - Copyright (c) 2012 Eclipse Foundation. - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Distribution License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/org/documents/edl-v10.php - --------------------------------------------------- -Library: org.eclipse.equinox.preferences v3.4.1 -Url: http://www.eclipse.org/platform -License: EPL-1.0 - - Copyright (c) 2012 Eclipse Foundation. - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Distribution License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/org/documents/edl-v10.php - --------------------------------------------------- -Library: org.eclipse.equinox.registry v3.5.101 -Url: http://www.eclipse.org/platform -License: EPL-1.0 - - Copyright (c) 2012 Eclipse Foundation. - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Distribution License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/org/documents/edl-v10.php - --------------------------------------------------- -Library: org.eclipse.jdt.core v3.10.0 -Url: http://www.eclipse.org/jdt -License: EPL-1.0 - - Copyright (c) 2012, 2016 Eclipse Foundation and others. - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Distribution License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/org/documents/edl-v10.php - --------------------------------------------------- -Library: org.eclipse.osgi v3.7.1 -Url: http://www.eclipse.org/jdt -License: EPL-1.0 - - Copyright (c) 2012, 2017 Eclipse Foundation. - All rights reserved. This program and the accompanying materials - are made available under the terms of the Eclipse Distribution License v1.0 - which accompanies this distribution, and is available at - http://www.eclipse.org/org/documents/edl-v10.php - --------------------------------------------------- -Library: org.eclipse.text v3.5.101 -Url: http://www.eclipse.org/jdt -License: EPL-1.0 - -Copyright © Eclipse Foundation, Inc. All Rights Reserved. - -Eclipse Public License - v 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - --------------------------------------------------- -Library: jruby-complete v9.1.13.0 -Url: http://jruby.org/ -License: EPL-2.0 - -JRuby is Copyright (c) 2007-2018 The JRuby project - -Eclipse Public License - v 2.0 + Eclipse Public License - v 2.0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION @@ -12815,39 +4366,2110 @@ Eclipse Public License - v 2.0 You may add additional accurate notices of copyright ownership. --------------------------------------------------- -Library: slf4j-api v1.7.25 -Url: http://www.slf4j.org/ -License: MIT +The complete text of the GNU General Public License v2 is as follows: -Copyright (c) 2004-2007 QOS.ch -All rights reserved. + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 -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: + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. + Preamble -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. + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public + License is intended to guarantee your freedom to share and change free + software--to make sure the software is free for all its users. This + General Public License applies to most of the Free Software + Foundation's software and to any other program whose authors commit to + using it. (Some other Free Software Foundation software is covered by + the GNU Library General Public License instead.) You can apply it to + your programs, too. --------------------------------------------------- -Library: paquet v0.2.1 -Url: https://github.com/elastic/logstash -License: Apache-2.0 + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + this service if you wish), that you receive source code or can get it + if you want it, that you can change the software or use pieces of it + in new free programs; and that you know you can do these things. -Copyright (c) 2012–2016 Elasticsearch + To protect your rights, we need to make restrictions that forbid + anyone to deny you these rights or to ask you to surrender the rights. + These restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must give the recipients all the rights that + you have. You must make sure that they, too, receive or can get the + source code. And you must show them these terms so they know their + rights. + + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. + + Finally, any free program is threatened constantly by software + patents. We wish to avoid the danger that redistributors of a free + program will individually obtain patent licenses, in effect making the + program proprietary. To prevent this, we have made it clear that any + patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains + a notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The "Program", below, + refers to any such program or work, and a "work based on the Program" + means either the Program or any derivative work under copyright law: + that is to say, a work containing the Program or a portion of it, + either verbatim or with modifications and/or translated into another + language. (Hereinafter, translation is included without limitation in + the term "modification".) Each licensee is addressed as "you". + + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of + running the Program is not restricted, and the output from the Program + is covered only if its contents constitute a work based on the + Program (independent of having been made by running the Program). + Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's + source code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any warranty; + and give any other recipients of the Program a copy of this License + along with the Program. + + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion + of it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Program, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of + a storage or distribution medium does not bring the other work under + the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source + code means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to + control compilation and installation of the executable. However, as a + special exception, the source code distributed need not include + anything that is normally distributed (in either source or binary + form) with the major components (compiler, kernel, and so on) of the + operating system on which the executable runs, unless that component + itself accompanies the executable. + + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this License. + However, parties who have received copies, or rights, from you under + this License will not have their licenses terminated so long as such + parties remain in full compliance. + + 5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying + the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted herein. + You are not responsible for enforcing compliance by third parties to + this License. + + 7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Program at all. For example, if a patent + license would not permit royalty-free redistribution of the Program by + all those who receive copies directly or indirectly through you, then + the only way you could satisfy both it and this License would be to + refrain entirely from distribution of the Program. + + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is willing + to distribute software through any other system and a licensee cannot + impose that choice. + + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License + may add an explicit geographical distribution limitation excluding + those countries, so that distribution is permitted only in or among + countries not thus excluded. In such case, this License incorporates + the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions + of the General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and conditions + either of that version or of any later version published by the Free + Software Foundation. If the Program does not specify a version number of + this License, you may choose any version ever published by the Free Software + Foundation. + + 10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the author + to ask for permission. For software which is copyrighted by the Free + Software Foundation, write to the Free Software Foundation; we sometimes + make exceptions for this. Our decision will be guided by the two goals + of preserving the free status of all derivatives of our free software and + of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY + FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN + OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES + PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED + OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS + TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE + PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, + REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR + REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, + INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING + OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED + TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY + YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER + PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + +The complete text of the GNU Lesser General Public License 2.1 is as follows: + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + [This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your + freedom to share and change it. By contrast, the GNU General Public + Licenses are intended to guarantee your freedom to share and change + free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some + specially designated software packages--typically libraries--of the + Free Software Foundation and other authors who decide to use it. You + can use it too, but we suggest you first think carefully about whether + this license or the ordinary General Public License is the better + strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, + not price. Our General Public Licenses are designed to make sure that + you have the freedom to distribute copies of free software (and charge + for this service if you wish); that you receive source code or can get + it if you want it; that you can change the software and use pieces of + it in new free programs; and that you are informed that you can do + these things. + + To protect your rights, we need to make restrictions that forbid + distributors to deny you these rights or to ask you to surrender these + rights. These restrictions translate to certain responsibilities for + you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis + or for a fee, you must give the recipients all the rights that we gave + you. You must make sure that they, too, receive or can get the source + code. If you link other code with the library, you must provide + complete object files to the recipients, so that they can relink them + with the library after making changes to the library and recompiling + it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the + library, and (2) we offer you this license, which gives you legal + permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that + there is no warranty for the free library. Also, if the library is + modified by someone else and passed on, the recipients should know + that what they have is not the original version, so that the original + author's reputation will not be affected by problems that might be + introduced by others. + + Finally, software patents pose a constant threat to the existence of + any free program. We wish to make sure that a company cannot + effectively restrict the users of a free program by obtaining a + restrictive license from a patent holder. Therefore, we insist that + any patent license obtained for a version of the library must be + consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the + ordinary GNU General Public License. This license, the GNU Lesser + General Public License, applies to certain designated libraries, and + is quite different from the ordinary General Public License. We use + this license for certain libraries in order to permit linking those + libraries into non-free programs. + + When a program is linked with a library, whether statically or using + a shared library, the combination of the two is legally speaking a + combined work, a derivative of the original library. The ordinary + General Public License therefore permits such linking only if the + entire combination fits its criteria of freedom. The Lesser General + Public License permits more lax criteria for linking other code with + the library. + + We call this license the "Lesser" General Public License because it + does Less to protect the user's freedom than the ordinary General + Public License. It also provides other free software developers Less + of an advantage over competing non-free programs. These disadvantages + are the reason we use the ordinary General Public License for many + libraries. However, the Lesser license provides advantages in certain + special circumstances. + + For example, on rare occasions, there may be a special need to + encourage the widest possible use of a certain library, so that it becomes + a de-facto standard. To achieve this, non-free programs must be + allowed to use the library. A more frequent case is that a free + library does the same job as widely used non-free libraries. In this + case, there is little to gain by limiting the free library to free + software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free + programs enables a greater number of people to use a large body of + free software. For example, permission to use the GNU C Library in + non-free programs enables many more people to use the whole GNU + operating system, as well as its variant, the GNU/Linux operating + system. + + Although the Lesser General Public License is Less protective of the + users' freedom, it does ensure that the user of a program that is + linked with the Library has the freedom and the wherewithal to run + that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and + modification follow. Pay close attention to the difference between a + "work based on the library" and a "work that uses the library". The + former contains code derived from the library, whereas the latter must + be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other + program which contains a notice placed by the copyright holder or + other authorized party saying it may be distributed under the terms of + this Lesser General Public License (also called "this License"). + Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data + prepared so as to be conveniently linked with application programs + (which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work + which has been distributed under these terms. A "work based on the + Library" means either the Library or any derivative work under + copyright law: that is to say, a work containing the Library or a + portion of it, either verbatim or with modifications and/or translated + straightforwardly into another language. (Hereinafter, translation is + included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for + making modifications to it. For a library, complete source code means + all the source code for all modules it contains, plus any associated + interface definition files, plus the scripts used to control compilation + and installation of the library. + + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of + running a program using the Library is not restricted, and output from + such a program is covered only if its contents constitute a work based + on the Library (independent of the use of the Library in a tool for + writing it). Whether that is true depends on what the Library does + and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's + complete source code as you receive it, in any medium, provided that + you conspicuously and appropriately publish on each copy an + appropriate copyright notice and disclaimer of warranty; keep intact + all the notices that refer to this License and to the absence of any + warranty; and distribute a copy of this License along with the + Library. + + You may charge a fee for the physical act of transferring a copy, + and you may at your option offer warranty protection in exchange for a + fee. + + 2. You may modify your copy or copies of the Library or any portion + of it, thus forming a work based on the Library, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Library, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Library, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote + it. + + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Library. + + In addition, mere aggregation of another work not based on the Library + with the Library (or with a work based on the Library) on a volume of + a storage or distribution medium does not bring the other work under + the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public + License instead of this License to a given copy of the Library. To do + this, you must alter all the notices that refer to this License, so + that they refer to the ordinary GNU General Public License, version 2, + instead of to this License. (If a newer version than version 2 of the + ordinary GNU General Public License has appeared, then you can specify + that version instead if you wish.) Do not make any other change in + these notices. + + Once this change is made in a given copy, it is irreversible for + that copy, so the ordinary GNU General Public License applies to all + subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of + the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or + derivative of it, under Section 2) in object code or executable form + under the terms of Sections 1 and 2 above provided that you accompany + it with the complete corresponding machine-readable source code, which + must be distributed under the terms of Sections 1 and 2 above on a + medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy + from a designated place, then offering equivalent access to copy the + source code from the same place satisfies the requirement to + distribute the source code, even though third parties are not + compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the + Library, but is designed to work with the Library by being compiled or + linked with it, is called a "work that uses the Library". Such a + work, in isolation, is not a derivative work of the Library, and + therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library + creates an executable that is a derivative of the Library (because it + contains portions of the Library), rather than a "work that uses the + library". The executable is therefore covered by this License. + Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file + that is part of the Library, the object code for the work may be a + derivative work of the Library even though the source code is not. + Whether this is true is especially significant if the work can be + linked without the Library, or if the work is itself a library. The + threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data + structure layouts and accessors, and small macros and small inline + functions (ten lines or less in length), then the use of the object + file is unrestricted, regardless of whether it is legally a derivative + work. (Executables containing this object code plus portions of the + Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may + distribute the object code for the work under the terms of Section 6. + Any executables containing that work also fall under Section 6, + whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or + link a "work that uses the Library" with the Library to produce a + work containing portions of the Library, and distribute that work + under terms of your choice, provided that the terms permit + modification of the work for the customer's own use and reverse + engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the + Library is used in it and that the Library and its use are covered by + this License. You must supply a copy of this License. If the work + during execution displays copyright notices, you must include the + copyright notice for the Library among them, as well as a reference + directing the user to the copy of this License. Also, you must do one + of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the + Library" must include any data and utility programs needed for + reproducing the executable from it. However, as a special exception, + the materials to be distributed need not include anything that is + normally distributed (in either source or binary form) with the major + components (compiler, kernel, and so on) of the operating system on + which the executable runs, unless that component itself accompanies + the executable. + + It may happen that this requirement contradicts the license + restrictions of other proprietary libraries that do not normally + accompany the operating system. Such a contradiction means you cannot + use both them and the Library together in an executable that you + distribute. + + 7. You may place library facilities that are a work based on the + Library side-by-side in a single library together with other library + facilities not covered by this License, and distribute such a combined + library, provided that the separate distribution of the work based on + the Library and of the other library facilities is otherwise + permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute + the Library except as expressly provided under this License. Any + attempt otherwise to copy, modify, sublicense, link with, or + distribute the Library is void, and will automatically terminate your + rights under this License. However, parties who have received copies, + or rights, from you under this License will not have their licenses + terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Library or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Library (or any work based on the + Library), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying + the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the + Library), the recipient automatically receives a license from the + original licensor to copy, distribute, link with or modify the Library + subject to these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted herein. + You are not responsible for enforcing compliance by third parties with + this License. + + 11. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Library at all. For example, if a patent + license would not permit royalty-free redistribution of the Library by + all those who receive copies directly or indirectly through you, then + the only way you could satisfy both it and this License would be to + refrain entirely from distribution of the Library. + + If any portion of this section is held invalid or unenforceable under any + particular circumstance, the balance of the section is intended to apply, + and the section as a whole is intended to apply in other circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is willing + to distribute software through any other system and a licensee cannot + impose that choice. + + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Library under this License may add + an explicit geographical distribution limitation excluding those countries, + so that distribution is permitted only in or among countries not thus + excluded. In such case, this License incorporates the limitation as if + written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new + versions of the Lesser General Public License from time to time. + Such new versions will be similar in spirit to the present version, + but may differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the Library + specifies a version number of this License which applies to it and + "any later version", you have the option of following the terms and + conditions either of that version or of any later version published by + the Free Software Foundation. If the Library does not specify a + license version number, you may choose any version ever published by + the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free + programs whose distribution conditions are incompatible with these, + write to the author to ask for permission. For software which is + copyrighted by the Free Software Foundation, write to the Free + Software Foundation; we sometimes make exceptions for this. Our + decision will be guided by the two goals of preserving the free status + of all derivatives of our free software and of promoting the sharing + and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. + EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR + OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE + LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME + THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY + AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU + FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR + CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE + LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING + RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A + FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF + SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest + possible use to the public, we recommend making it free software that + everyone can redistribute and change. You can do so by permitting + redistribution under these terms (or, alternatively, under the terms of the + ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is + safest to attach them to the start of each source file to most effectively + convey the exclusion of warranty; and each file should have at least the + "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Also add information on how to contact you by electronic and paper mail. + + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a "copyright disclaimer" for the library, if + necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + + That's all there is to it! + +The following licenses cover code other than JRuby which is included with JRuby. + +Licenses listed below include: + +* GNU General Public License version 3 +* Apache 2.0 License +* BSD License +* MIT License + +The complete text of the GNU General Public License version 3 is as follows: + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for + software and other kinds of works. + + The licenses for most software and other practical works are designed + to take away your freedom to share and change the works. By contrast, + the GNU General Public License is intended to guarantee your freedom to + share and change all versions of a program--to make sure it remains free + software for all its users. We, the Free Software Foundation, use the + GNU General Public License for most of our software; it applies also to + any other work released this way by its authors. You can apply it to + your programs, too. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + them if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you + these rights or asking you to surrender the rights. Therefore, you have + certain responsibilities if you distribute copies of the software, or if + you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether + gratis or for a fee, you must pass on to the recipients the same + freedoms that you received. You must make sure that they, too, receive + or can get the source code. And you must show them these terms so they + know their rights. + + Developers that use the GNU GPL protect your rights with two steps: + (1) assert copyright on the software, and (2) offer you this License + giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains + that there is no warranty for this free software. For both users' and + authors' sake, the GPL requires that modified versions be marked as + changed, so that their problems will not be attributed erroneously to + authors of previous versions. + + Some devices are designed to deny users access to install or run + modified versions of the software inside them, although the manufacturer + can do so. This is fundamentally incompatible with the aim of + protecting users' freedom to change the software. The systematic + pattern of such abuse occurs in the area of products for individuals to + use, which is precisely where it is most unacceptable. Therefore, we + have designed this version of the GPL to prohibit the practice for those + products. If such problems arise substantially in other domains, we + stand ready to extend this provision to those domains in future versions + of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. + States should not allow patents to restrict development and use of + software on general-purpose computers, but in those that do, we wish to + avoid the special danger that patents applied to a free program could + make it effectively proprietary. To prevent this, the GPL assures that + patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and + modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of + works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work + in a fashion requiring copyright permission, other than the making of an + exact copy. The resulting work is called a "modified version" of the + earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based + on the Program. + + To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on a + computer or modifying a private copy. Propagation includes copying, + distribution (with or without modification), making available to the + public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user through + a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work + for making modifications to it. "Object code" means any non-source + form of a work. + + A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other + than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major + Component, and (b) serves only to enable use of the work with that + Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A + "Major Component", in this context, means a major essential component + (kernel, window system, and so on) of the specific operating system + (if any) on which the executable work runs, or a compiler used to + produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all + the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts to + control those activities. However, it does not include the work's + System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but + which are not part of the work. For example, Corresponding Source + includes interface definition files associated with source files for + the work, and the source code for shared libraries and dynamically + linked subprograms that the work is specifically designed to require, + such as by intimate data communication or control flow between those + subprograms and other parts of the work. + + The Corresponding Source need not include anything that users + can regenerate automatically from other parts of the Corresponding + Source. + + The Corresponding Source for a work in source code form is that + same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of + copyright on the Program, and are irrevocable provided the stated + conditions are met. This License explicitly affirms your unlimited + permission to run the unmodified Program. The output from running a + covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your + rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not + convey, without conditions so long as your license otherwise remains + in force. You may convey covered works to others for the sole purpose + of having them make modifications exclusively for you, or provide you + with facilities for running those works, provided that you comply with + the terms of this License in conveying all material for which you do + not control copyright. Those thus making or running the covered works + for you must do so exclusively on your behalf, under your direction + and control, on terms that prohibit them from making any copies of + your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under + the conditions stated below. Sublicensing is not allowed; section 10 + makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological + measure under any applicable law fulfilling obligations under article + 11 of the WIPO copyright treaty adopted on 20 December 1996, or + similar laws prohibiting or restricting circumvention of such + measures. + + When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such circumvention + is effected by exercising rights under this License with respect to + the covered work, and you disclaim any intention to limit operation or + modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of + technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you + receive it, in any medium, provided that you conspicuously and + appropriately publish on each copy an appropriate copyright notice; + keep intact all notices stating that this License and any + non-permissive terms added in accord with section 7 apply to the code; + keep intact all notices of the absence of any warranty; and give all + recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, + and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to + produce it from the Program, in the form of source code under the + terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent + works, which are not by their nature extensions of the covered work, + and which are not combined with it such as to form a larger program, + in or on a volume of a storage or distribution medium, is called an + "aggregate" if the compilation and its resulting copyright are not + used to limit the access or legal rights of the compilation's users + beyond what the individual works permit. Inclusion of a covered work + in an aggregate does not cause this License to apply to the other + parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms + of sections 4 and 5, provided that you also convey the + machine-readable Corresponding Source under the terms of this License, + in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded + from the Corresponding Source as a System Library, need not be + included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any + tangible personal property which is normally used for personal, family, + or household purposes, or (2) anything designed or sold for incorporation + into a dwelling. In determining whether a product is a consumer product, + doubtful cases shall be resolved in favor of coverage. For a particular + product received by a particular user, "normally used" refers to a + typical or common use of that class of product, regardless of the status + of the particular user or of the way in which the particular user + actually uses, or expects or is expected to use, the product. A product + is a consumer product regardless of whether the product has substantial + commercial, industrial or non-consumer uses, unless such uses represent + the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, + procedures, authorization keys, or other information required to install + and execute modified versions of a covered work in that User Product from + a modified version of its Corresponding Source. The information must + suffice to ensure that the continued functioning of the modified object + code is in no case prevented or interfered with solely because + modification has been made. + + If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as + part of a transaction in which the right of possession and use of the + User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the + Corresponding Source conveyed under this section must be accompanied + by the Installation Information. But this requirement does not apply + if neither you nor any third party retains the ability to install + modified object code on the User Product (for example, the work has + been installed in ROM). + + The requirement to provide Installation Information does not include a + requirement to continue to provide support service, warranty, or updates + for a work that has been modified or installed by the recipient, or for + the User Product in which it has been modified or installed. Access to a + network may be denied when the modification itself materially and + adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, + in accord with this section must be in a format that is publicly + documented (and with an implementation available to the public in + source code form), and must require no special password or key for + unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this + License by making exceptions from one or more of its conditions. + Additional permissions that are applicable to the entire Program shall + be treated as though they were included in this License, to the extent + that they are valid under applicable law. If additional permissions + apply only to part of the Program, that part may be used separately + under those permissions, but the entire Program remains governed by + this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option + remove any additional permissions from that copy, or from any part of + it. (Additional permissions may be written to require their own + removal in certain cases when you modify the work.) You may place + additional permissions on material, added by you to a covered work, + for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you + add to a covered work, you may (if authorized by the copyright holders of + that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further + restrictions" within the meaning of section 10. If the Program as you + received it, or any part of it, contains a notice stating that it is + governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains + a further restriction but permits relicensing or conveying under this + License, you may add to a covered work material governed by the terms + of that license document, provided that the further restriction does + not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you + must place, in the relevant source files, a statement of the + additional terms that apply to those files, or a notice indicating + where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the + form of a separately written license, or stated as exceptions; + the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly + provided under this License. Any attempt otherwise to propagate or + modify it is void, and will automatically terminate your rights under + this License (including any patent licenses granted under the third + paragraph of section 11). + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the copyright + holder fails to notify you of the violation by some reasonable means + prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after + your receipt of the notice. + + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under + this License. If your rights have been terminated and not permanently + reinstated, you do not qualify to receive new licenses for the same + material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or + run a copy of the Program. Ancillary propagation of a covered work + occurring solely as a consequence of using peer-to-peer transmission + to receive a copy likewise does not require acceptance. However, + nothing other than this License grants you permission to propagate or + modify any covered work. These actions infringe copyright if you do + not accept this License. Therefore, by modifying or propagating a + covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically + receives a license from the original licensors, to run, modify and + propagate that work, subject to this License. You are not responsible + for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an + organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered + work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever + licenses to the work the party's predecessor in interest had or could + give under the previous paragraph, plus a right to possession of the + Corresponding Source of the work from the predecessor in interest, if + the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the + rights granted or affirmed under this License. For example, you may + not impose a license fee, royalty, or other charge for exercise of + rights granted under this License, and you may not initiate litigation + (including a cross-claim or counterclaim in a lawsuit) alleging that + any patent claim is infringed by making, using, selling, offering for + sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this + License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims + owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, permitted + by this License, of making, using, or selling its contributor version, + but do not include claims that would be infringed only as a + consequence of further modification of the contributor version. For + purposes of this definition, "control" includes the right to grant + patent sublicenses in a manner consistent with the requirements of + this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free + patent license under the contributor's essential patent claims, to + make, use, sell, offer for sale, import and otherwise run, modify and + propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express + agreement or commitment, however denominated, not to enforce a patent + (such as an express permission to practice a patent or covenant not to + sue for patent infringement). To "grant" such a patent license to a + party means to make such an agreement or commitment not to enforce a + patent against the party. + + If you convey a covered work, knowingly relying on a patent license, + and the Corresponding Source of the work is not available for anyone + to copy, free of charge and under the terms of this License, through a + publicly available network server or other readily accessible means, + then you must either (1) cause the Corresponding Source to be so + available, or (2) arrange to deprive yourself of the benefit of the + patent license for this particular work, or (3) arrange, in a manner + consistent with the requirements of this License, to extend the patent + license to downstream recipients. "Knowingly relying" means you have + actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work + in a country, would infringe one or more identifiable patents in that + country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or + arrangement, you convey, or propagate by procuring conveyance of, a + covered work, and grant a patent license to some of the parties + receiving the covered work authorizing them to use, propagate, modify + or convey a specific copy of the covered work, then the patent license + you grant is automatically extended to all recipients of the covered + work and works based on it. + + A patent license is "discriminatory" if it does not include within + the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that are + specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is + in the business of distributing software, under which you make payment + to the third party based on the extent of your activity of conveying + the work, and under which the third party grants, to any of the + parties who would receive the covered work from you, a discriminatory + patent license (a) in connection with copies of the covered work + conveyed by you (or copies made from those copies), or (b) primarily + for and in connection with specific products or compilations that + contain the covered work, unless you entered into that arrangement, + or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting + any implied license or other defenses to infringement that may + otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot convey a + covered work so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you may + not convey it at all. For example, if you agree to terms that obligate you + to collect a royalty for further conveying from those to whom you convey + the Program, the only way you could satisfy both those terms and this + License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have + permission to link or combine any covered work with a work licensed + under version 3 of the GNU Affero General Public License into a single + combined work, and to convey the resulting work. The terms of this + License will continue to apply to the part which is the covered work, + but the special requirements of the GNU Affero General Public License, + section 13, concerning interaction through a network will apply to the + combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of + the GNU General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies that a certain numbered version of the GNU General + Public License "or any later version" applies to it, you have the + option of following the terms and conditions either of that numbered + version or of any later version published by the Free Software + Foundation. If the Program does not specify a version number of the + GNU General Public License, you may choose any version ever published + by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future + versions of the GNU General Public License can be used, that proxy's + public statement of acceptance of a version permanently authorizes you + to choose that version for the Program. + + Later license versions may give you additional or different + permissions. However, no additional obligations are imposed on any + author or copyright holder as a result of your choosing to follow a + later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF + ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS + THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE + USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided + above cannot be given local legal effect according to their terms, + reviewing courts shall apply local law that most closely approximates + an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a + copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + state the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short + notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + + The hypothetical commands `show w' and `show c' should show the appropriate + parts of the General Public License. Of course, your program's commands + might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, + if any, to sign a "copyright disclaimer" for the program, if necessary. + For more information on this, and how to apply and follow the GNU GPL, see + . + + The GNU General Public License does not permit incorporating your program + into proprietary programs. If your program is a subroutine library, you + may consider it more useful to permit linking proprietary applications with + the library. If this is what you want to do, use the GNU Lesser General + Public License instead of this License. But first, please read + . + +The complete text of the Apache 2.0 License is as follows: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + +The complete text of the BSD license can be is as follows: + + 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 University 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 OWNER 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. + +The complete text of the MIT license is as follows: + + 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. + +The complete text of the GPL v2, and classpath exception: + +The GNU General Public License (GPL) + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software is +covered by the GNU Library General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for this service if you wish), +that you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs; and that you know you +can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny +you these rights or to ask you to surrender the rights. These restrictions +translate to certain responsibilities for you if you distribute copies of the +software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must +make sure that they, too, receive or can get the source code. And you must +show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients to +know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program proprietary. +To prevent this, we have made it clear that any patent must be licensed for +everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms of +this General Public License. The "Program", below, refers to any such program +or work, and a "work based on the Program" means either the Program or any +derivative work under copyright law: that is to say, a work containing the +Program or a portion of it, either verbatim or with modifications and/or +translated into another language. (Hereinafter, translation is included +without limitation in the term "modification".) Each licensee is addressed as +"you". + +Activities other than copying, distribution and modification are not covered by +this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made by +running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as +you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus +forming a work based on the Program, and copy and distribute such modifications +or work under the terms of Section 1 above, provided that you also meet all of +these conditions: + + a) You must cause the modified files to carry prominent notices stating + that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in whole or + in part contains or is derived from the Program or any part thereof, to be + licensed as a whole at no charge to all third parties under the terms of + this License. + + c) If the modified program normally reads commands interactively when run, + you must cause it, when started running for such interactive use in the + most ordinary way, to print or display an announcement including an + appropriate copyright notice and a notice that there is no warranty (or + else, saying that you provide a warranty) and that users may redistribute + the program under these conditions, and telling the user how to view a copy + of this License. (Exception: if the Program itself is interactive but does + not normally print such an announcement, your work based on the Program is + not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, and +its terms, do not apply to those sections when you distribute them as separate +works. But when you distribute the same sections as part of a whole which is a +work based on the Program, the distribution of the whole must be on the terms +of this License, whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Program. + +In addition, mere aggregation of another work not based on the Program with the +Program (or with a work based on the Program) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 and +2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable source + code, which must be distributed under the terms of Sections 1 and 2 above + on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three years, to + give any third party, for a charge no more than your cost of physically + performing source distribution, a complete machine-readable copy of the + corresponding source code, to be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed only + for noncommercial distribution and only if you received the program in + object code or executable form with such an offer, in accord with + Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and installation +of the executable. However, as a special exception, the source code +distributed need not include anything that is normally distributed (in either +source or binary form) with the major components (compiler, kernel, and so on) +of the operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the source +code from the same place counts as distribution of the source code, even though +third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, modify, +sublicense or distribute the Program is void, and will automatically terminate +your rights under this License. However, parties who have received copies, or +rights, from you under this License will not have their licenses terminated so +long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the Program +or its derivative works. These actions are prohibited by law if you do not +accept this License. Therefore, by modifying or distributing the Program (or +any work based on the Program), you indicate your acceptance of this License to +do so, and all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor to +copy, distribute or modify the Program subject to these terms and conditions. +You may not impose any further restrictions on the recipients' exercise of the +rights granted herein. You are not responsible for enforcing compliance by +third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), conditions +are imposed on you (whether by court order, agreement or otherwise) that +contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain +countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In +such case, this License incorporates the limitation as if written in the body +of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the +General Public License from time to time. Such new versions will be similar in +spirit to the present version, but may differ in detail to address new problems +or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software Foundation. +If the Program does not specify a version number of this License, you may +choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For software which is copyrighted by the Free Software Foundation, +write to the Free Software Foundation; we sometimes make exceptions for this. +Our decision will be guided by the two goals of preserving the free status of +all derivatives of our free software and of promoting the sharing and reuse of +software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR +INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA +BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + One line to give the program's name and a brief idea of what it does. + + Copyright (C) + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., 59 + Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it +starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes + with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free + software, and you are welcome to redistribute it under certain conditions; + type 'show c' for details. + +The hypothetical commands 'show w' and 'show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may be +called something other than 'show w' and 'show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, +if any, to sign a "copyright disclaimer" for the program, if necessary. Here +is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + 'Gnomovision' (which makes passes at compilers) written by James Hacker. + + signature of Ty Coon, 1 April 1989 + + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General Public +License instead of this License. + +"CLASSPATH" EXCEPTION TO THE GPL + +Certain source files distributed by Oracle America and/or its affiliates are +subject to the following clarification and special exception to the GPL, but +only where Oracle has expressly included in the particular source file's header +the words "Oracle designates this particular file as subject to the "Classpath" +exception as provided by Oracle in the LICENSE file that accompanied this code." + + Linking this library statically or dynamically with other modules is making + a combined work based on this library. Thus, the terms and conditions of + the GNU General Public License cover the whole combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules, + and to copy and distribute the resulting executable under terms of your + choice, provided that you also meet, for each linked independent module, + the terms and conditions of the license of that module. An independent + module is a module which is not derived from or based on this library. If + you modify this library, you may extend this exception to your version of + the library, but you are not obligated to do so. If you do not wish to do + so, delete this exception statement from your version. + +The full text of the zlib licence: + +Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Jean-loup Gailly Mark Adler +jloup@gzip.org madler@alumni.caltech.edu + +========== +Notice for: jruby-jms-1.3.0 +---------- + +Copyright 2008, 2009, 2010, 2011 J. Reid Morrison, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -12861,31 +6483,169 @@ 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. --------------------------------------------------- -Library: pleaserun v0.0.30 -Url: https://github.com/jordansissel/pleaserun -License: Apache-2.0 +========== +Notice for: jruby-openssl-0.10.5 +---------- -Copyright 2014 Jordan Sissel contributors. +source: https://github.com/jruby/jruby-openssl/blob/v0.9.21/LICENSE.txt + +JRuby-OpenSSL is distributed under the same license as JRuby a tri EPL/GPL/LGPL +license. You can use it, redistribute it and/or modify it under the terms of the: + + Eclipse Public License version 1.0 + GNU General Public License version 2.0 + GNU Lesser General Public License version 2.1 + +The contents of this file are subject to the Common Public License Version 1.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.eclipse.org/legal/cpl-v10.html + +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 APARTICULAR 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. + + Copyright (C) 2007-2009 Ola Bini + Copyright (C) 2009-2017 The JRuby Team + +Alternatively, the contents of this file may be used under the terms of +either of the GNU General Public License Version 2 or later (the "GPL"), +or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the EPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the EPL, the GPL or the LGPL. + + +JRuby-OpenSSL includes software by The Legion of the Bouncy Castle Inc. +Please, visit (http://bouncycastle.org/license.html) for licensing details. +========== +Notice for: jruby-stdin-channel-0.2.0 +---------- + +source: https://github.com/colinsurprenant/jruby-stdin-channel/blob/v0.2.0/LICENSE.md 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 + 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. +========== +Notice for: json-1.8.6 +---------- --------------------------------------------------- -Library: polyglot v0.3.5 -Url: http://github.com/cjheath/polyglot -License: MIT +source: https://github.com/tmattia/json-generator/blob/v0.1.0/LICENSE.txt -Copyright (c) 2007 Clifford Heath +Copyright (c) 2013 ThoughtWorks Brasil & Abril Midia + +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. +========== +Notice for: jwt-2.2.2 +---------- + +source: https://github.com/jwt/ruby-jwt/blob/v2.2.2/LICENSE + +Copyright (c) 2011 Jeff Lindsay + +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. +========== +Notice for: lru_redux-1.1.0 +---------- + +source: https://github.com/SamSaffron/lru_redux/blob/v1.1.0/LICENSE.txt + +Copyright (c) 2013 Sam Saffron + +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. +========== +Notice for: mail-2.6.6 +---------- + +source: https://github.com/mikel/mail/blob/2.6.6/MIT-LICENSE + +Copyright (c) 2009-2017 Mikel Lindsaar + +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. + +========== +Notice for: manticore-0.7.0 +---------- + +source: https://github.com/cheald/manticore/blob/v0.6.1/LICENSE.txt + +Copyright (c) 2015 Chris Heald Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -12906,12 +6666,232 @@ 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. --------------------------------------------------- -Library: poseidon v0.0.5 -Url: https://github.com/bpot/poseidon -License: MIT +========== +Notice for: march_hare-4.3.0 +---------- -Copyright (c) 2013 Bob Potter +source: https://github.com/ruby-amqp/march_hare/blob/v3.1.1/LICENSE + +Copyright (c) 2011-2013 Theo Hultberg +Copyright (c) 2013-2017 Michael S. Klishin and 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. + +========== +Notice for: memoizable-0.4.2 +---------- + +source: https://github.com/dkubb/memoizable/blob/v0.4.2/LICENSE.md + +Copyright (c) 2013 Dan Kubb, Erik Michaels-Ober + +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. +========== +Notice for: method_source-1.0.0 +---------- + +source: https://github.com/banister/method_source/blob/v0.9.0/README.markdown#license + +Copyright (c) 2011 John Mair (banisterfiend) + +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. + +========== +Notice for: metriks-0.9.9.8 +---------- + +source: https://github.com/eric/metriks/blob/v0.9.9.8/LICENSE + +Copyright (c) 2012 Eric Lindvall + +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. +========== +Notice for: mime-types-2.6.2 +---------- + +source: https://github.com/mime-types/ruby-mime-types/blob/v2.6.2/Licence.rdoc + +* Copyright 2003–2015 Austin Ziegler. +* Adapted from MIME::Types (Perl) by Mark Overmeer. + +=== 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. + +========== +Notice for: minitar-0.9 +---------- + +source: https://github.com/halostatue/minitar/blob/v0.6.1/Licence.md + +minitar is free software that may be redistributed and/or modified under the +terms of Ruby’s licence or the Simplified BSD licence. + +* Copyright 2004–2017 Austin Ziegler. +* Portions copyright 2004 Mauricio Julio Fernández Pradier. + +========== +Notice for: msgpack-1.3.3 +---------- + +source: https://github.com/msgpack/msgpack-ruby/blob/v1.2.4/ext/msgpack/ + + Copyright (C) 2008-2013 Sadayuki Furuhashi + + 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. +========== +Notice for: multi_json-1.15.0 +---------- + +source: https://github.com/intridea/multi_json/blob/v1.13.1/LICENSE.md + +Copyright (c) 2010-2013 Michael Bleigh, Josh Kalderimis, Erik Michaels-Ober, Pavel Pravosud + +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. +========== +Notice for: multipart-post-2.1.1 +---------- + +source: https://github.com/nicksieger/multipart-post/blob/v2.0.0/README.md#license + +Copyright (c) 2007-2013 Nick Sieger + +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. + +========== +Notice for: murmurhash3-0.1.6 +---------- + +source: https://github.com/funny-falcon/murmurhash3-ruby/blob/v0.1.5/LICENSE + +Copyright (c) 2012 Sokolov Yura 'funny-falcon' MIT License @@ -12934,17 +6914,236 @@ 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. --------------------------------------------------- -Library: prototype.js v -Url: http://prototypejs.org -License: MIT TODO: Another jruby dependency that is not shipped with it +========== +Notice for: mustache-0.99.8 +---------- -TODO +source: https://github.com/mustache/mustache/blob/v0.99.8/LICENSE --------------------------------------------------- -Library: pry v0.10.4 -Url: http://pryrepl.org -License: MIT +Copyright (c) 2009 Chris Wanstrath + +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. + +========== +Notice for: mustermann-1.0.3 +---------- + +Copyright (c) 2013-2017 Konstantin Haase +Copyright (c) 2016-2017 Zachary Scott + +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. + +========== +Notice for: naught-1.1.0 +---------- + +source: https://github.com/avdi/naught/blob/v1.1.0/LICENSE.txt + +Copyright (c) 2013 Avdi Grimm + +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. + +========== +Notice for: nio4r-2.5.4 +---------- + +Released under the MIT license. + +Copyright, 2019, by Tony Arcieri. +Copyright, 2019, by Samuel G. D. Williams. + +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. + +========== +Notice for: nokogiri-1.11.0 +---------- + +source: https://github.com/sparklemotion/nokogiri/blob/v1.8.2/LICENSE.md + +Copyright (c) 2008 - 2017: + +* [Aaron Patterson](http://tenderlovemaking.com) +* [Mike Dalessio](http://mike.daless.io) +* [Charles Nutter](http://blog.headius.com) +* [Sergio Arbeo](http://www.serabe.com) +* [Patrick Mahoney](http://polycrystal.org) +* [Yoko Harada](http://yokolet.blogspot.com) +* [Akinori MUSHA](https://akinori.org) +* [John Shahid](https://github.com/jvshahid) + +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. + +========== +Notice for: numerizer-0.1.1 +---------- + +FAKER + +========== +Notice for: openssl_pkcs8_pure-0.0.0.2 +---------- + +- Copyright (c) 2017, T. Yamada + +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. + +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 OWNER 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. + + +========== +Notice for: paquet-0.2.1 +---------- + +Copyright (c) 2012–2016 Elasticsearch + +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. +========== +Notice for: pleaserun-0.0.31 +---------- + +Copyright 2014 Jordan Sissel contributors. + +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. + +========== +Notice for: polyglot-0.3.5 +---------- + +Copyright (c) 2007 Clifford Heath + +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. +========== +Notice for: pry-0.13.1 +---------- Copyright (c) 2016 John Mair (banisterfiend) @@ -12967,23 +7166,9 @@ 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. --------------------------------------------------- -Library: psych v2.2.4 -Url: https://github.com/ruby/psych -License: MIT - -Copyright 2009 Aaron Patterson, et al. - -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. - --------------------------------------------------- -Library: public_suffix v1.4.6 -Url: https://simonecarletti.com/code/publicsuffix-ruby -License: MIT +========== +Notice for: public_suffix-3.1.1 +---------- Copyright (c) 2009-2018 Simone Carletti @@ -13008,10 +7193,9 @@ 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. --------------------------------------------------- -Library: puma v2.16.0 -Url: http://puma.io -License: BSD-3-Clause +========== +Notice for: puma-4.3.7 +---------- Some code copyright (c) 2005, Zed Shaw Copyright (c) 2011, Evan Phoenix @@ -13040,24 +7224,62 @@ 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. --------------------------------------------------- -Library: racc v -Url: https://github.com/tenderlove/racc -License: TODO: https://github.com/tenderlove/racc/blob/master/COPYING vs https://github.com/jruby/jruby/blob/master/COPYING#L89 +========== +Notice for: racc-1.5.2 +---------- -TODO +source: https://github.com/ruby/racc/blob/master/COPYING +Copyright (C) 2019 Yukihiro Matsumoto. All rights reserved. +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. -Racc is distributed under the terms of the GNU Lesser General -Public License version 2. Note that you do NOT need to follow -LGPL for your own parser (racc outputs). You can distribute those -files under any licenses you want.Racc is +THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. --------------------------------------------------- -Library: rack-protection v1.5.5 -Url: http://github.com/rkh/rack-protection -License: MIT +========== +Notice for: rack-2.2.3 +---------- + +The MIT License (MIT) + +Copyright (C) 2007-2018 Christian Neukirchen + +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 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. +========== +Notice for: rack-protection-2.1.0 +---------- The MIT License (MIT) @@ -13082,37 +7304,9 @@ 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. - --------------------------------------------------- -Library: rack v1.6.6 -Url: http://rack.github.io/ -License: MIT - -The MIT License (MIT) - -Copyright (C) 2007-2018 Christian Neukirchen - -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 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. - --------------------------------------------------- -Library: rake v10.4.2 -Url: https://github.com/ruby/rake -License: MIT +========== +Notice for: rake-12.3.3 +---------- Copyright (c) Jim Weirich @@ -13136,10 +7330,9 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------- -Library: redis v3.3.5 -Url: https://github.com/redis/redis-rb -License: MIT +========== +Notice for: redis-4.2.5 +---------- Copyright (c) 2009 Ezra Zygmuntowicz @@ -13161,397 +7354,9 @@ 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. - --------------------------------------------------- -Library: rspec-core v3.7.1 -Url: https://github.com/rspec/rspec-core -License: MIT - -The MIT License (MIT) -===================== - -* Copyright © 2012 Chad Humphries, David Chelimsky, Myron Marston -* Copyright © 2009 Chad Humphries, David Chelimsky -* Copyright © 2006 David Chelimsky, The RSpec Development Team -* Copyright © 2005 Steven Baker - -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. - --------------------------------------------------- -Library: rspec-expectations v3.7.0 -Url: https://github.com/rspec/rspec-expectations -License: MIT - -The MIT License (MIT) -===================== - -* Copyright © 2012 David Chelimsky, Myron Marston -* Copyright © 2006 David Chelimsky, The RSpec Development Team -* Copyright © 2005 Steven Baker - -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. - --------------------------------------------------- -Library: rspec-mocks v3.7.0 -Url: https://github.com/rspec/rspec-mocks -License: MIT - -The MIT License (MIT) -===================== - -* Copyright © 2012 David Chelimsky, Myron Marston -* Copyright © 2006 David Chelimsky, The RSpec Development Team -* Copyright © 2005 Steven Baker - -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. - --------------------------------------------------- -Library: rspec-sequencing v0.1.0 -Url: https://github.com/elastic/rspec-sequencing -License: Apache-2.0 - -Copyright (c) 2016 Elasticsearch - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - 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. - - --------------------------------------------------- -Library: rspec-support v3.7.1 -Url: https://github.com/rspec/rspec-support -License: MIT - -* Copyright © 2013 David Chelimsky, Myron Marston, Jon Rowe, Sam Phippen, Xavier Shay, Bradley Schaefer - -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. - --------------------------------------------------- -Library: rspec-wait v0.0.9 -Url: https://github.com/laserlemon/rspec-wait -License: MIT - -Copyright (c) 2014 Steve Richert - -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. - --------------------------------------------------- -Library: rspec v3.7.0 -Url: https://github.com/rspec/rspec -License: MIT - -Copyright © 2009 Chad Humphries, David Chelimsky -Copyright © 2006 David Chelimsky, The RSpec Development Team -Copyright © 2005 Steven Baker - -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. - --------------------------------------------------- -Library: ruby-progressbar v1.8.3 -Url: https://github.com/jfelchner/ruby-progressbar -License: MIT +========== +Notice for: ruby-progressbar-1.11.0 +---------- Copyright (c) 2010-2016 The Kompanee, Ltd @@ -13573,10 +7378,9 @@ 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. --------------------------------------------------- -Library: rubyzip v1.2.1 -Url: https://github.com/rubyzip/rubyzip -License: BSD-2-Clause-FreeBSD +========== +Notice for: rubyzip-1.3.0 +---------- Authors: @@ -13645,12 +7449,37 @@ You can redistribute it and/or modify it under either the terms of the WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. --------------------------------------------------- -Library: rumbster v1.1.0 -Url: https://github.com/aesterline/rumbster -License: Apache-2.0 +========== +Notice for: rufus-scheduler-3.0.9 +---------- -Copyright (c) 2011 Adam Esterline. See LICENSE.txt for further details. + +Copyright (c) 2005-2014, John Mettraux, jmettraux@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. + + +========== +Notice for: semantic_logger-3.4.1 +---------- + +Copyright 2012, 2013, 2014, 2015, 2016 Reid Morrison Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -13664,38 +7493,9 @@ 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. --------------------------------------------------- -Library: safe_yaml v1.0.4 -Url: https://github.com/dtao/safe_yaml -License: MIT - -Copyright (c) 2013 Dan Tao - -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. - --------------------------------------------------- -Library: sequel v5.7.1 -Url: https://github.com/jeremyevans/sequel -License: MIT +========== +Notice for: sequel-5.40.0 +---------- Copyright (c) 2007-2008 Sharon Rosner Copyright (c) 2008-2018 Jeremy Evans @@ -13717,10 +7517,9 @@ THE AUTHORS 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. --------------------------------------------------- -Library: simple_oauth v0.3.1 -Url: https://github.com/laserlemon/simple_oauth -License: MIT +========== +Notice for: simple_oauth-0.3.1 +---------- Copyright (c) 2010-2013 Steve Richert, Erik Michaels-Ober @@ -13743,10 +7542,9 @@ 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. --------------------------------------------------- -Library: sinatra v1.4.8 -Url: https://github.com/sinatra/sinatra -License: MIT +========== +Notice for: sinatra-2.1.0 +---------- Copyright (c) 2007, 2008, 2009 Blake Mizerany Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2016 Konstantin Haase @@ -13772,76 +7570,9 @@ 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. --------------------------------------------------- -Library: slop v3.6.0 -Url: https://github.com/leejarvis/slop -License: MIT - -Copyright (c) 2012 Lee Jarvis - -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. - --------------------------------------------------- -Library: snakeyaml v1.18 -Url: https://bitbucket.org/asomov/snakeyaml/ -License: Apache-2.0 - -Copyright (c) 2008, http://www.snakeyaml.org - -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. - --------------------------------------------------- -Library: snappy-jars v1.1.0.1.2 -Url: https://github.com/doxavore/snappy-jars -License: Apache-2.0 - -Copyright Doug Mayer (https://github.com/doxavore) - -README.md: "Per the real implementation, Apache License v2.0." - -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. - --------------------------------------------------- -Library: snappy v0.0.12 -Url: https://github.com/miyucy/snappy -License: MIT +========== +Notice for: snappy-0.0.12 +---------- Copyright (c) 2011-2013 miyucy @@ -13866,10 +7597,29 @@ 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. --------------------------------------------------- -Library: snmp v1.2.0 -Url: https://github.com/hallidave/ruby-snmp -License: MIT +========== +Notice for: snappy-jars-1.1.0.1.2 +---------- + +Copyright Doug Mayer (https://github.com/doxavore) + +README.md: "Per the real implementation, Apache License v2.0." + +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. + +========== +Notice for: snmp-1.3.2 +---------- Copyright (c) 2004-2014 David R. Halliday @@ -13891,10 +7641,9 @@ 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. --------------------------------------------------- -Library: spoon v0.0.6 -Url: https://github.com/headius/spoon -License: Apache-2.0 +========== +Notice for: spoon-0.0.6 +---------- Apache License @@ -14041,10 +7790,9 @@ additional liability. END OF TERMS AND CONDITIONS --------------------------------------------------- -Library: stud v0.0.23 -Url: https://github.com/jordansissel/ruby-stud -License: Apache-2.0 +========== +Notice for: stud-0.0.23 +---------- Copyright 2012-2013 Jordan Sissel and contributors. @@ -14060,10 +7808,9 @@ 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. --------------------------------------------------- -Library: thread_safe v0.3.6 -Url: https://github.com/ruby-concurrency/thread_safe -License: Apache-2.0 +========== +Notice for: thread_safe-0.3.6 +---------- Apache License @@ -14210,10 +7957,9 @@ additional liability. END OF TERMS AND CONDITIONS --------------------------------------------------- -Library: tilt v2.0.8 -Url: https://github.com/rtomayko/tilt -License: MIT +========== +Notice for: tilt-2.0.10 +---------- Copyright (c) 2010-2016 Ryan Tomayko @@ -14234,38 +7980,9 @@ THE AUTHORS 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. --------------------------------------------------- -Library: timecop v0.9.1 -Url: https://github.com/travisjeffery/timecop -License: MIT - -(The MIT License) - -Copyright (c) 2012 — Travis Jeffery, John Trupiano - -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. - --------------------------------------------------- -Library: treetop v1.4.15 -Url: https://github.com/cjheath/treetop -License: MIT +========== +Notice for: treetop-1.6.11 +---------- Copyright (c) 2007 Nathan Sobo. @@ -14287,10 +8004,9 @@ 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. --------------------------------------------------- -Library: twitter v5.15.0 -Url: https://github.com/sferik/twitter -License: MIT +========== +Notice for: twitter-6.2.0 +---------- Copyright (c) 2006-2015 Erik Michaels-Ober, John Nunemaker, Wynn Netherland, Steve Richert, Steve Agalloco @@ -14313,10 +8029,9 @@ 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. --------------------------------------------------- -Library: tzinfo-data v1.2018.4 -Url: https://github.com/tzinfo/tzinfo-data -License: MIT +========== +Notice for: tzinfo-2.0.4 +---------- Copyright (c) 2005-2018 Philip Ross @@ -14338,10 +8053,9 @@ 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. --------------------------------------------------- -Library: tzinfo v1.2.5 -Url: https://github.com/tzinfo/tzinfo -License: MIT +========== +Notice for: tzinfo-data-1.2020.6 +---------- Copyright (c) 2005-2018 Philip Ross @@ -14363,10 +8077,9 @@ 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. --------------------------------------------------- -Library: unf v0.1.4 -Url: https://github.com/knu/ruby-unf -License: BSD-2-Clause +========== +Notice for: unf-0.1.4 +---------- Copyright (c) 2011, 2012 Akinori MUSHA @@ -14393,218 +8106,9 @@ 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. --------------------------------------------------- -Library: unsafe-fences v1.0 -Url: https://github.com/headius/unsafe-fences -License: Apache-2.0 - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. - --------------------------------------------------- -Library: webhdfs v0.8.0 -Url: https://github.com/kzk/webhdfs -License: Apache-2.0 +========== +Notice for: webhdfs-0.9.0 +---------- Copyright (C) 2012 Fluentd Project @@ -14620,64 +8124,9 @@ Copyright (C) 2012 Fluentd Project See the License for the specific language governing permissions and limitations under the License. --------------------------------------------------- -Library: webmock v1.21.0 -Url: https://github.com/bblimke/webmock -License: MIT - -Copyright (c) 2009-2010 Bartosz Blimke - -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. - --------------------------------------------------- -Library: webrick v1.3.1 -Url: https://github.com/ruby/webrick -License: BSD-2-Clause - -Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved. - -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. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. - --------------------------------------------------- -Library: xml-simple v1.1.5 -Url: https://github.com/maik/xml-simple -License: BSD-2-Clause +========== +Notice for: xml-simple-1.1.8 +---------- Readme.md: diff --git a/README.md b/README.md index ceeccd624..f34fe6f09 100644 --- a/README.md +++ b/README.md @@ -16,27 +16,6 @@ For information about building the documentation, see the README in https://gith You can download officially released Logstash binaries, as well as debian/rpm packages for the supported platforms, from [downloads page](https://www.elastic.co/downloads/logstash). -### Snapshot Builds - -For the daring, snapshot builds are available. -These builds are created nightly and have undergone no formal QA, so they should **never** be run in production. - -| Complete, with X-Pack | Apache 2.0 licensed | -| --------------------- | ---------------------- | -| [tar-complete][] | [tar-oss][] | -| [zip-complete][] | [zip-oss][] | -| [deb-complete][] | [deb-oss][] | -| [rpm-complete][] | [rpm-oss][] | - -[tar-complete]: https://snapshots.elastic.co/downloads/logstash/logstash-7.0.0-SNAPSHOT.tar.gz -[zip-complete]: https://snapshots.elastic.co/downloads/logstash/logstash-7.0.0-SNAPSHOT.zip -[deb-complete]: https://snapshots.elastic.co/downloads/logstash/logstash-7.0.0-SNAPSHOT.deb -[rpm-complete]: https://snapshots.elastic.co/downloads/logstash/logstash-7.0.0-SNAPSHOT.rpm -[tar-oss]: https://snapshots.elastic.co/downloads/logstash/logstash-oss-7.0.0-SNAPSHOT.tar.gz -[zip-oss]: https://snapshots.elastic.co/downloads/logstash/logstash-oss-7.0.0-SNAPSHOT.zip -[deb-oss]: https://snapshots.elastic.co/downloads/logstash/logstash-oss-7.0.0-SNAPSHOT.deb -[rpm-oss]: https://snapshots.elastic.co/downloads/logstash/logstash-oss-7.0.0-SNAPSHOT.rpm - ## Need Help? - [Logstash Forum](https://discuss.elastic.co/c/logstash) @@ -65,8 +44,8 @@ Logstash core will continue to exist under this repository and all related issue ### Prerequisites -* Install JDK version 8. Make sure to set the `JAVA_HOME` environment variable to the path to your JDK installation directory. For example `set JAVA_HOME=` -* Install JRuby 9.1.x It is recommended to use a Ruby version manager such as [RVM](https://rvm.io/) or [rbenv](https://github.com/sstephenson/rbenv). +* Install JDK version 8 or 11. Make sure to set the `JAVA_HOME` environment variable to the path to your JDK installation directory. For example `set JAVA_HOME=` +* Install JRuby 9.2.x It is recommended to use a Ruby version manager such as [RVM](https://rvm.io/) or [rbenv](https://github.com/sstephenson/rbenv). * Install `rake` and `bundler` tool using `gem install rake` and `gem install bundler` respectively. ### RVM install (optional) @@ -159,7 +138,7 @@ Run the doc build script from within the `docs` repo. For example: ## Testing -Most of the unit tests in Logstash are written using [rspec](http://rspec.info/) for the Ruby parts. For the Java parts, we use junit. For testing you can use the *test* `rake` tasks and the `bin/rspec` command, see instructions below: +Most of the unit tests in Logstash are written using [rspec](http://rspec.info/) for the Ruby parts. For the Java parts, we use [junit](https://junit.org). For testing you can use the *test* `rake` tasks and the `bin/rspec` command, see instructions below: ### Core tests @@ -183,6 +162,14 @@ Most of the unit tests in Logstash are written using [rspec](http://rspec.info/) 3- To execute the complete test-suite including the integration tests run: ./gradlew check + +4- To execute a single Ruby test run: + + SPEC_OPTS="-fd -P logstash-core/spec/logstash/api/commands/default_metadata_spec.rb" ./gradlew :logstash-core:rubyTests --tests org.logstash.RSpecTests + +5- To execute single spec for integration test, run: + + ./gradlew integrationTests -PrubyIntegrationSpecs=specs/slowlog_spec.rb Sometimes you might find a change to a piece of Logstash code causes a test to hang. These can be hard to debug. @@ -258,10 +245,10 @@ All contributions are welcome: ideas, patches, documentation, bug reports, complaints, and even something you drew up on a napkin. Programming is not a required skill. Whatever you've seen about open source and -maintainers or community members saying "send patches or die" - you will not +maintainers or community members saying "send patches or die" - you will not see that here. -It is more important to me that you are able to contribute. +It is more important that you are able to contribute. For more information about contributing, see the [CONTRIBUTING](./CONTRIBUTING.md) file. diff --git a/Rakefile b/Rakefile index 71f49fe54..c5001c177 100644 --- a/Rakefile +++ b/Rakefile @@ -1,4 +1,19 @@ -# encoding: utf-8 +# Licensed to Elasticsearch B.V. under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Elasticsearch B.V. 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. $: << File.join(File.dirname(__FILE__), "lib") $: << File.join(File.dirname(__FILE__), "logstash-core/lib") diff --git a/bin/benchmark.bat b/bin/benchmark.bat new file mode 100644 index 000000000..c88246bdf --- /dev/null +++ b/bin/benchmark.bat @@ -0,0 +1,10 @@ +@echo off +setlocal enabledelayedexpansion + +cd /d "%~dp0.." +for /f %%i in ('cd') do set RESULT=%%i + +"%JAVACMD%" -cp "!!RESULT!!\tools\benchmark-cli\build\libs\benchmark-cli.jar;*" ^ + org.logstash.benchmark.cli.Main %* + +endlocal diff --git a/bin/ingest-convert.bat b/bin/ingest-convert.bat new file mode 100644 index 000000000..80f14b7b0 --- /dev/null +++ b/bin/ingest-convert.bat @@ -0,0 +1,10 @@ +@echo off +setlocal enabledelayedexpansion + +cd /d "%~dp0\.." +for /f %%i in ('cd') do set RESULT=%%i + +"%JAVACMD%" -cp "!!RESULT!!\tools\ingest-converter\build\libs\ingest-converter.jar;*" ^ + org.logstash.ingest.Pipeline %* + +endlocal diff --git a/bin/logstash b/bin/logstash index ae23c5163..25998c6ee 100755 --- a/bin/logstash +++ b/bin/logstash @@ -1,7 +1,5 @@ #!/bin/bash -# Run logstash from source -# -# This is most useful when done from a git checkout. +# Run logstash # # Usage: # bin/logstash [arguments] @@ -58,9 +56,6 @@ if [ "$1" = "-V" ] || [ "$1" = "--version" ]; then fi echo "logstash $LOGSTASH_VERSION" else - unset CLASSPATH - for J in $(cd "${LOGSTASH_JARS}"; ls *.jar); do - CLASSPATH=${CLASSPATH}${CLASSPATH:+:}${LOGSTASH_JARS}/${J} - done + CLASSPATH="$(setup_classpath $LOGSTASH_JARS)" exec "${JAVACMD}" ${JAVA_OPTS} -cp "${CLASSPATH}" org.logstash.Logstash "$@" fi diff --git a/bin/logstash-keystore b/bin/logstash-keystore index 8e0fdc020..b1e9ac354 100755 --- a/bin/logstash-keystore +++ b/bin/logstash-keystore @@ -6,6 +6,6 @@ setup # bin/logstash-keystore is a short lived ruby script thus we can use aggressive "faster starting JRuby options" # see https://github.com/jruby/jruby/wiki/Improving-startup-time -export JRUBY_OPTS="$JRUBY_OPTS -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-noverify -X-C -Xcompile.invokedynamic=false" +export JRUBY_OPTS="${JRUBY_OPTS---dev}" ruby_exec "${LOGSTASH_HOME}/lib/secretstore/cli.rb" "$@" diff --git a/bin/logstash-plugin b/bin/logstash-plugin index b357c749a..41921db0c 100755 --- a/bin/logstash-plugin +++ b/bin/logstash-plugin @@ -6,6 +6,6 @@ setup # bin/logstash-plugin is a short lived ruby script thus we can use aggressive "faster starting JRuby options" # see https://github.com/jruby/jruby/wiki/Improving-startup-time -export JRUBY_OPTS="$JRUBY_OPTS -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-noverify -X-C -Xcompile.invokedynamic=false" +export JRUBY_OPTS="${JRUBY_OPTS---dev}" ruby_exec "${LOGSTASH_HOME}/lib/pluginmanager/main.rb" "$@" diff --git a/bin/logstash.bat b/bin/logstash.bat index a04a5de9f..e8bd0ab20 100644 --- a/bin/logstash.bat +++ b/bin/logstash.bat @@ -15,7 +15,7 @@ if "%1" == "--version" goto version rem iterate over the command line args and look for the argument rem after --path.settings to see if the jvm.options file is in -rem that path and set LS_JVM_OPTIONS_CONFIG accordingly +rem that path and set LS_JVM_OPTS accordingly :loop for /F "usebackq tokens=1-2* delims= " %%A in (!params!) do ( set current=%%A @@ -24,7 +24,7 @@ for /F "usebackq tokens=1-2* delims= " %%A in (!params!) do ( if "!current!" == "--path.settings" ( if exist !next!\jvm.options ( - set "LS_JVM_OPTIONS_CONFIG=!next!\jvm.options" + set "LS_JVM_OPTS=!next!\jvm.options" ) ) @@ -33,45 +33,40 @@ for /F "usebackq tokens=1-2* delims= " %%A in (!params!) do ( ) ) -rem if explicit jvm.options is not found use default location -if "%LS_JVM_OPTIONS_CONFIG%" == "" ( - set LS_JVM_OPTIONS_CONFIG="%LS_HOME%\config\jvm.options" -) - -rem extract the options from the JVM options file %LS_JVM_OPTIONS_CONFIG% -rem such options are the lines beginning with '-', thus "findstr /b" -if exist %LS_JVM_OPTIONS_CONFIG% ( - for /F "usebackq delims=" %%a in (`findstr /b \- %LS_JVM_OPTIONS_CONFIG%`) do set options=!options! %%a - set "LS_JAVA_OPTS=!options! %LS_JAVA_OPTS%" -) else ( - echo "warning: no jvm.options file found" -) -set JAVA_OPTS=%LS_JAVA_OPTS% - for %%i in ("%LS_HOME%\logstash-core\lib\jars\*.jar") do ( call :concat "%%i" ) -%JAVA% %JAVA_OPTS% -cp "%CLASSPATH%" org.logstash.Logstash %* +@setlocal +for /F "usebackq delims=" %%a in (`CALL "%JAVACMD%" -cp "!CLASSPATH!" "org.logstash.launchers.JvmOptionsParser" "!LS_HOME!" "!LS_JVM_OPTS!" ^|^| echo jvm_options_parser_failed`) do set LS_JAVA_OPTS=%%a +@endlocal & set "MAYBE_JVM_OPTIONS_PARSER_FAILED=%LS_JAVA_OPTS%" & set LS_JAVA_OPTS=%LS_JAVA_OPTS% + +if "%MAYBE_JVM_OPTIONS_PARSER_FAILED%" == "jvm_options_parser_failed" ( + echo "error: jvm options parser failed; exiting" + exit /b 1 +) +set JAVA_OPTS=%LS_JAVA_OPTS% + +"%JAVACMD%" %JAVA_OPTS% -cp "%CLASSPATH%" org.logstash.Logstash %* goto :end :version -set "LOGSTASH_VERSION_FILE1=%LS_HOME%\logstash-core\versions-gem-copy.yml" -set "LOGSTASH_VERSION_FILE2=%LS_HOME%\versions.yml" +set LOGSTASH_VERSION_FILE1="%LS_HOME%\logstash-core\versions-gem-copy.yml" +set LOGSTASH_VERSION_FILE2="%LS_HOME%\versions.yml" set "LOGSTASH_VERSION=Version not detected" if exist !LOGSTASH_VERSION_FILE1! ( rem this file is present in zip, deb and rpm artifacts and after bundle install rem but might not be for a git checkout type install - for /F "tokens=1,2 delims=: " %%a in (!LOGSTASH_VERSION_FILE1!) do ( + for /F "tokens=1,2 delims=: " %%a in ('type !LOGSTASH_VERSION_FILE1!') do ( if "%%a"=="logstash" set LOGSTASH_VERSION=%%b ) ) else ( if exist !LOGSTASH_VERSION_FILE2! ( rem this file is present for a git checkout type install rem but its not in zip, deb and rpm artifacts (and in integration tests) - for /F "tokens=1,2 delims=: " %%a in (!LOGSTASH_VERSION_FILE2!) do ( + for /F "tokens=1,2 delims=: " %%a in ('type !LOGSTASH_VERSION_FILE2!') do ( if "%%a"=="logstash" set LOGSTASH_VERSION=%%b ) ) @@ -81,11 +76,12 @@ goto :end :concat IF not defined CLASSPATH ( - set CLASSPATH="%~1" + set CLASSPATH=%~1 ) ELSE ( - set CLASSPATH=%CLASSPATH%;"%~1" + set CLASSPATH=%CLASSPATH%;%~1 ) goto :eof :end endlocal +exit /B %ERRORLEVEL% diff --git a/bin/logstash.lib.sh b/bin/logstash.lib.sh index 33c05fbc4..0142a98f2 100755 --- a/bin/logstash.lib.sh +++ b/bin/logstash.lib.sh @@ -14,7 +14,8 @@ # The following env var will be used by this script if set: # LS_GEM_HOME and LS_GEM_PATH to overwrite the path assigned to GEM_HOME and GEM_PATH # LS_JAVA_OPTS to append extra options to the JVM options provided by logstash -# JAVA_HOME to point to the java home +# LS_JAVA_HOME to point to the java home (takes precedence over JAVA_HOME) +# (deprecated) JAVA_HOME to point to the java home unset CDPATH # This unwieldy bit of scripting is to try to catch instances where Logstash @@ -66,26 +67,64 @@ for i in "$@"; do fi done -parse_jvm_options() { - if [ -f "$1" ]; then - echo "$(grep "^-" "$1" | tr '\n' ' ')" +setup_bundled_jdk_part() { + OS_NAME="$(uname -s)" + if [ $OS_NAME = "Darwin" ]; then + BUNDLED_JDK_PART="jdk.app/Contents/Home" + else + BUNDLED_JDK_PART="jdk" fi } +# Accepts 1 parameter which is the path the directory where logstash jar are contained. +setup_classpath() { + local jar_directory="${1?jar directory required}" + local classpath + for J in $(cd "${jar_directory}"; ls *.jar); do + classpath=${classpath}${classpath:+:}${jar_directory}/${J} + done + echo "${classpath}" +} + setup_java() { # set the path to java into JAVACMD which will be picked up by JRuby to launch itself if [ -z "$JAVACMD" ]; then - if [ -x "$JAVA_HOME/bin/java" ]; then - JAVACMD="$JAVA_HOME/bin/java" - else + setup_bundled_jdk_part + JAVACMD_TEST=`command -v java` + if [ -n "$LS_JAVA_HOME" ]; then + echo "Using LS_JAVA_HOME defined java: ${LS_JAVA_HOME}." + if [ -x "$LS_JAVA_HOME/bin/java" ]; then + JAVACMD="$LS_JAVA_HOME/bin/java" + if [ -d "${LOGSTASH_HOME}/${BUNDLED_JDK_PART}" -a -x "${LOGSTASH_HOME}/${BUNDLED_JDK_PART}/bin/java" ]; then + echo "WARNING: Using LS_JAVA_HOME while Logstash distribution comes with a bundled JDK." + fi + else + echo "Invalid LS_JAVA_HOME, doesn't contain bin/java executable." + fi + elif [ -n "$JAVA_HOME" ]; then + echo "Using JAVA_HOME defined java: ${JAVA_HOME}" + if [ -x "$JAVA_HOME/bin/java" ]; then + JAVACMD="$JAVA_HOME/bin/java" + if [ -d "${LOGSTASH_HOME}/${BUNDLED_JDK_PART}" -a -x "${LOGSTASH_HOME}/${BUNDLED_JDK_PART}/bin/java" ]; then + echo "WARNING: Using JAVA_HOME while Logstash distribution comes with a bundled JDK." + fi + else + echo "Invalid JAVA_HOME, doesn't contain bin/java executable." + fi + echo "DEPRECATION: The use of JAVA_HOME is now deprecated and will be removed starting from 8.0. Please configure LS_JAVA_HOME instead." + elif [ -d "${LOGSTASH_HOME}/${BUNDLED_JDK_PART}" -a -x "${LOGSTASH_HOME}/${BUNDLED_JDK_PART}/bin/java" ]; then + echo "Using bundled JDK: ${LOGSTASH_HOME}/${BUNDLED_JDK_PART}" + JAVACMD="${LOGSTASH_HOME}/${BUNDLED_JDK_PART}/bin/java" + elif [ -n "$JAVACMD_TEST" ]; then set +e JAVACMD=`command -v java` set -e + echo "Using system java: $JAVACMD" fi fi if [ ! -x "$JAVACMD" ]; then - echo "could not find java; set JAVA_HOME or ensure java is in PATH" + echo "Could not find java; set LS_JAVA_HOME or ensure java is in PATH." exit 1 fi @@ -107,24 +146,12 @@ setup_java() { LS_GC_LOG_FILE="./logstash-gc.log" fi - # Set the initial JVM options from the jvm.options file. Look in - # /etc/logstash first, and break if that file is found readable there. - if [ -z "$LS_JVM_OPTS" ]; then - for jvm_options in /etc/logstash/jvm.options \ - "$LOGSTASH_HOME"/config/jvm.options; - do - if [ -r "$jvm_options" ]; then - LS_JVM_OPTS=$jvm_options - break - fi - done - fi - # then override with anything provided - LS_JAVA_OPTS="$(parse_jvm_options "$LS_JVM_OPTS") $LS_JAVA_OPTS" - JAVA_OPTS=$LS_JAVA_OPTS - # jruby launcher uses JAVACMD as its java executable and JAVA_OPTS as the JVM options export JAVACMD + + CLASSPATH="$(setup_classpath $LOGSTASH_JARS)" + JAVA_OPTS=`exec "${JAVACMD}" -cp "${CLASSPATH}" org.logstash.launchers.JvmOptionsParser "$LOGSTASH_HOME" "$LS_JVM_OPTS"` + unset CLASSPATH export JAVA_OPTS } diff --git a/bin/pqcheck.bat b/bin/pqcheck.bat new file mode 100644 index 000000000..1ada6ff4b --- /dev/null +++ b/bin/pqcheck.bat @@ -0,0 +1,29 @@ +@echo off +setlocal enabledelayedexpansion + +call "%~dp0setup.bat" || exit /b 1 +if errorlevel 1 ( + if not defined nopauseonerror ( + pause + ) + exit /B %ERRORLEVEL% +) + + +set JAVA_OPTS=%LS_JAVA_OPTS% + +for %%i in ("%LS_HOME%\logstash-core\lib\jars\*.jar") do ( + call :concat "%%i" +) + +"%JAVACMD%" %JAVA_OPTS% -cp "%CLASSPATH%" org.logstash.ackedqueue.PqCheck %* + +:concat +IF not defined CLASSPATH ( + set CLASSPATH="%~1" +) ELSE ( + set CLASSPATH=%CLASSPATH%;"%~1" +) +goto :eof + +endlocal diff --git a/bin/pqrepair.bat b/bin/pqrepair.bat new file mode 100644 index 000000000..fee6f778c --- /dev/null +++ b/bin/pqrepair.bat @@ -0,0 +1,29 @@ +@echo off +setlocal enabledelayedexpansion + +call "%~dp0setup.bat" || exit /b 1 +if errorlevel 1 ( + if not defined nopauseonerror ( + pause + ) + exit /B %ERRORLEVEL% +) + + +set JAVA_OPTS=%LS_JAVA_OPTS% + +for %%i in ("%LS_HOME%\logstash-core\lib\jars\*.jar") do ( + call :concat "%%i" +) + +"%JAVACMD%" %JAVA_OPTS% -cp "%CLASSPATH%" org.logstash.ackedqueue.PqRepair %* + +:concat +IF not defined CLASSPATH ( + set CLASSPATH="%~1" +) ELSE ( + set CLASSPATH=%CLASSPATH%;"%~1" +) +goto :eof + +endlocal diff --git a/bin/rspec b/bin/rspec index b05b117c7..a0f817944 100755 --- a/bin/rspec +++ b/bin/rspec @@ -5,6 +5,6 @@ unset CDPATH setup # use faster starting JRuby options see https://github.com/jruby/jruby/wiki/Improving-startup-time -export JRUBY_OPTS="$JRUBY_OPTS -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1" +export JRUBY_OPTS="${JRUBY_OPTS---dev}" ruby_exec "${LOGSTASH_HOME}/lib/bootstrap/rspec.rb" "$@" diff --git a/bin/ruby b/bin/ruby index 342a1e3f3..666b2ff47 100755 --- a/bin/ruby +++ b/bin/ruby @@ -12,7 +12,7 @@ # DEBUG=1 to output debugging information # use faster starting JRuby options see https://github.com/jruby/jruby/wiki/Improving-startup-time -export JRUBY_OPTS="$JRUBY_OPTS -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1" +export JRUBY_OPTS="${JRUBY_OPTS---dev}" unset CDPATH diff --git a/bin/setup.bat b/bin/setup.bat index b846894a9..623f1b1db 100644 --- a/bin/setup.bat +++ b/bin/setup.bat @@ -20,13 +20,30 @@ for %%I in ("%LS_HOME%..") do set LS_HOME=%%~dpfI rem ### 2: set java -if defined JAVA_HOME ( - set JAVA="%JAVA_HOME%\bin\java.exe" +if defined LS_JAVA_HOME ( + set JAVACMD=%LS_JAVA_HOME%\bin\java.exe + echo Using LS_JAVA_HOME defined java: %LS_JAVA_HOME% + if exist "%LS_HOME%\jdk" ( + echo WARNING: Using LS_JAVA_HOME while Logstash distribution comes with a bundled JDK. + ) +) else if defined JAVA_HOME ( + set JAVACMD="%JAVA_HOME%\bin\java.exe" + echo Using JAVA_HOME defined java: %JAVA_HOME% + if exist "%LS_HOME%\jdk" ( + echo WARNING: Using JAVA_HOME while Logstash distribution comes with a bundled JDK. + ) + echo DEPRECATION: The use of JAVA_HOME is now deprecated and will be removed starting from 8.0. Please configure LS_JAVA_HOME instead. ) else ( - for %%I in (java.exe) do set JAVA="%%~$PATH:I" + if exist "%LS_HOME%\jdk" ( + set JAVACMD=%LS_HOME%\jdk\bin\java.exe + echo "Using bundled JDK: !JAVACMD!" + ) else ( + for %%I in (java.exe) do set JAVACMD="%%~$PATH:I" + echo "Using system java: !JAVACMD!" + ) ) -if not exist %JAVA% ( +if not exist "%JAVACMD%" ( echo could not find java; set JAVA_HOME or ensure java is in PATH 1>&2 exit /b 1 ) @@ -52,4 +69,4 @@ if not exist %JRUBY_BIN% ( exit /b 1 ) -set RUBYLIB=%LS_HOME%\lib +set RUBYLIB=%LS_HOME%\lib \ No newline at end of file diff --git a/bin/system-install b/bin/system-install index 5ac9a2ce2..7a2d37300 100755 --- a/bin/system-install +++ b/bin/system-install @@ -17,8 +17,8 @@ elif [ "$1" == "-h" ] || [ "$1" == "--help" ]; then echo echo "OPTIONSFILE: Full path to a startup.options file" echo "OPTIONSFILE is required if STARTUPTYPE is specified, but otherwise looks first" - echo "in $LOGSTASH_HOME/config/startup.options and then /etc/logstash/startup.options" - echo "Last match wins" + echo "in /etc/logstash/startup.options and then " + echo "in $LOGSTASH_HOME/config/startup.options " echo echo "STARTUPTYPE: e.g. sysv, upstart, systemd, etc." echo "OPTIONSFILE is required to specify a STARTUPTYPE." @@ -61,7 +61,7 @@ done # bin/logstash-plugin is a short lived ruby script thus we can use aggressive "faster starting JRuby options" # see https://github.com/jruby/jruby/wiki/Improving-startup-time -export JRUBY_OPTS="$JRUBY_OPTS -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-noverify -X-C -Xcompile.invokedynamic=false" +export JRUBY_OPTS="$JRUBY_OPTS $OPEN_JAVA_MODULES -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-noverify -X-C -Xcompile.invokedynamic=false" tempfile=$(mktemp) if [ "x${PRESTART}" == "x" ]; then diff --git a/build.gradle b/build.gradle index 5086ea303..4580caa14 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,22 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. 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. + */ + buildscript { repositories { mavenCentral() @@ -6,44 +25,57 @@ buildscript { } } dependencies { - classpath 'org.yaml:snakeyaml:1.23' - classpath "gradle.plugin.com.github.jk1:gradle-license-report:0.7.1" + classpath 'org.yaml:snakeyaml:1.33' } } plugins { - id "de.undercouch.download" version "3.2.0" + id "de.undercouch.download" version "4.0.4" + id "com.dorongold.task-tree" version "2.1.0" } apply plugin: 'de.undercouch.download' +apply from: "rubyUtils.gradle" - -import de.undercouch.gradle.tasks.download.Download -import de.undercouch.gradle.tasks.download.Verify -import groovy.json.JsonSlurper -import org.logstash.gradle.RubyGradleUtils import org.yaml.snakeyaml.Yaml - -import java.nio.file.Files -import java.nio.file.Paths +import de.undercouch.gradle.tasks.download.Download +import groovy.json.JsonSlurper +import org.logstash.gradle.tooling.ListProjectDependencies +import org.logstash.gradle.tooling.SnapshotArtifactURLs allprojects { group = 'org.logstash' apply plugin: 'java' apply plugin: 'idea' + apply plugin: 'java-library' project.sourceCompatibility = JavaVersion.VERSION_1_8 project.targetCompatibility = JavaVersion.VERSION_1_8 - tasks.withType(JavaCompile).all { + tasks.withType(JavaCompile).configureEach { options.compilerArgs.add("-Xlint:all") options.compilerArgs.add("-Xlint:-processing") options.compilerArgs.add("-Werror") + // Ensure compilation/bytecode compatibility with the specified -target Java version (JEP-247) + options.release.set(project.targetCompatibility.getMajorVersion().toInteger()) } - tasks.withType(Javadoc) { - options.addStringOption("Xwerror", "-quiet") + tasks.withType(Javadoc).configureEach { + if (JavaVersion.current().compareTo(JavaVersion.VERSION_14) > 0) { + // with JDK 15 the -Xwerror undocumented feature becomes official with switch -Werror + options.addBooleanOption("Werror", true) + } else { + options.addBooleanOption("Xwerror", true) + } + options.addBooleanOption("Xdoclint:all,-missing", true) + if (JavaVersion.current().compareTo(JavaVersion.VERSION_1_9) > 0) { + options.addBooleanOption("html5", true) + } + } + + tasks.withType(Copy).configureEach { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE } clean { @@ -83,46 +115,179 @@ allprojects { subprojects { repositories { + mavenCentral() maven { url 'https://plugins.gradle.org/m2/' } } - dependencies { - compile "gradle.plugin.com.github.jk1:gradle-license-report:0.7.1" - } - apply plugin: 'com.github.jk1.dependency-license-report' - - licenseReport { - renderer = new com.github.jk1.license.render.CsvReportRenderer() - configurations = ['compile', 'runtime'] + tasks.register("generateLicenseReport", ListProjectDependencies) { + outputs.dir "${buildDir}/reports/dependency-license" } } -// fetch version from Logstash's master versions.yml file -def versionMap = (Map) (new Yaml()).load(new File("${projectDir}/versions.yml").text) version = versionMap['logstash-core'] -def versionQualifier = System.getenv('VERSION_QUALIFIER') -if (versionQualifier) { - version = "$version-$versionQualifier" +String artifactVersionsApi = "https://artifacts-api.elastic.co/v1/versions" + +tasks.register("configureArchitecture") { + String arch = System.properties['os.arch'] + String osName = System.properties['os.name'] + String beatsArch = arch + String esArch = arch + + // For aarch64 architectures, beats and elasticsearch name their artifacts differently + if (arch == "aarch64") { + beatsArch="arm64" + esArch="aarch64" + } else if (arch == "amd64") { + beatsArch="x86_64" + esArch="x86_64" + } + + if (osName ==~ /Mac OS X/) { + osName = "darwin" + } else { + osName = "linux" + } + project.ext.set("beatsArchitecture", "${osName}-${beatsArch}") + project.ext.set("esArchitecture", "${osName}-${esArch}") } -String jRubyURL -String jRubyVersion -String jRubySha1 -Boolean doChecksum +tasks.register("configureArtifactInfo") { + dependsOn configureArchitecture + description "Set the url to download stack artifacts for select stack version" -if (versionMap["jruby-runtime-override"]) { - jRubyVersion = versionMap["jruby-runtime-override"]["version"] - jRubyURL = versionMap["jruby-runtime-override"]["url"] - doChecksum = false -} else { - jRubyVersion = versionMap["jruby"]["version"] - jRubySha1 = versionMap["jruby"]["sha1"] - jRubyURL = "https://repo1.maven.org/maven2/org/jruby/jruby-dist/${jRubyVersion}/jruby-dist-${jRubyVersion}-bin.tar.gz" - doChecksum = true + doLast { + def versionQualifier = System.getenv('VERSION_QUALIFIER') + if (versionQualifier) { + version = "$version-$versionQualifier" + } + + boolean isReleaseBuild = System.getenv('RELEASE') == "1" || versionQualifier + String apiResponse = artifactVersionsApi.toURL().text + + def dlVersions = new JsonSlurper().parseText(apiResponse) + String qualifiedVersion = dlVersions['versions'].grep(isReleaseBuild ? ~/^${version}$/ : ~/^${version}-SNAPSHOT/)[0] + if (qualifiedVersion == null) { + if (!isReleaseBuild) { + project.ext.set("useProjectSpecificArtifactSnapshotUrl", true) + project.ext.set("stackArtifactSuffix", "${version}-SNAPSHOT") + return + } + throw new GradleException("could not find the current artifact from the artifact-api ${artifactVersionsApi} for ${version}") + } + // find latest reference to last build + String buildsListApi = "${artifactVersionsApi}/${qualifiedVersion}/builds/" + apiResponse = buildsListApi.toURL().text + def dlBuilds = new JsonSlurper().parseText(apiResponse) + def stackBuildVersion = dlBuilds["builds"][0] + + project.ext.set("artifactApiVersionedBuildUrl", "${artifactVersionsApi}/${qualifiedVersion}/builds/${stackBuildVersion}") + project.ext.set("stackArtifactSuffix", qualifiedVersion) + project.ext.set("useProjectSpecificArtifactSnapshotUrl", false) + } } +abstract class SignAliasDefinitionsTask extends DefaultTask { + + /** + * Relative path to the AliasRegistry.yml file to use, relative to project's root + * */ + @Input + String registryPath + + /** + * Full file path to the file containing the marked AliasRegistry file + * */ + @OutputFile + File hashedFile + + @TaskAction + def sign() { + String aliases_defs = new File("${project.projectDir}/${registryPath}").text + String hash = aliases_defs.digest('SHA-256') + hashedFile.withWriter('utf-8') { writer -> + writer.writeLine "#CHECKSUM: ${hash}" + writer.writeLine "# DON'T EDIT THIS FILE, PLEASE REFER TO ${registryPath}" + writer.write aliases_defs + } + } +} + +tasks.register("markAliasDefinitions", SignAliasDefinitionsTask) { + description "Create an hashes aliases file from original aliases yml definition" + registryPath = 'logstash-core/src/main/resources/org/logstash/plugins/AliasRegistry.yml' + hashedFile = project.file("${project.buildDir}/plugin_aliases_hashed.yml") +} + +tasks.register("markTestAliasDefinitions", SignAliasDefinitionsTask) { + description "Create an hashes aliases file for testing aliases yml definition" + registryPath = 'logstash-core/src/test/resources/org/logstash/plugins/AliasRegistry.yml' + hashedFile = project.file("${project.buildDir}/plugin_aliases_hashed_test.yml") +} + +tasks.register("copyPluginAlias", Copy) { + description "Copy the marked plugin_aliases.yml file to destination folders" + dependsOn = [copyPluginAlias_ruby, copyPluginAlias_java] +} + +tasks.register("copyPluginAlias_ruby", Copy) { + description "Copy the marked plugin_aliases.yml file to destination folders" + dependsOn "markAliasDefinitions" + + inputs.file("${buildDir}/plugin_aliases_hashed.yml") + + from(markAliasDefinitions.hashedFile) { + rename "plugin_aliases_hashed.yml", "plugin_aliases.yml" + } + into "lib/pluginmanager/" +} + +tasks.register("copyPluginAlias_java", Copy) { + description "Copy the marked plugin_aliases.yml file to destination folders" + dependsOn "markAliasDefinitions" + + inputs.file("${buildDir}/plugin_aliases_hashed.yml") + + from(markAliasDefinitions.hashedFile) { + rename "plugin_aliases_hashed.yml", "plugin_aliases.yml" + } + into "logstash-core/src/main/resources/org/logstash/plugins/" +} + +tasks.register("copyPluginTestAlias") { + description "Copy the marked test plugin_aliases.yml file to destination folders" + dependsOn = [copyPluginTestAlias_ruby, copyPluginTestAlias_java] +} + +tasks.register("copyPluginTestAlias_ruby", Copy) { + description "Copy the marked test plugin_aliases.yml file into Ruby's plugin_manager specs" + dependsOn "markTestAliasDefinitions" + + inputs.file(markTestAliasDefinitions.hashedFile) + + from(markTestAliasDefinitions.hashedFile) { + rename "plugin_aliases_hashed_test.yml", "plugin_aliases.yml" + } + into "spec/unit/plugin_manager/" +} + +tasks.register("copyPluginTestAlias_java", Copy) { + description "Copy the marked test plugin_aliases.yml file into logstash-core's test resources" + dependsOn "markTestAliasDefinitions" + + inputs.file("${buildDir}/plugin_aliases_hashed_test.yml") + + from(markTestAliasDefinitions.hashedFile) { + rename "plugin_aliases_hashed_test.yml", "plugin_aliases.yml" + } + into "logstash-core/src/test/resources/org/logstash/plugins/" +} + +tasks.findByPath(':logstash-core:processResources').dependsOn(copyPluginAlias) +tasks.findByPath(':logstash-core:processTestResources').dependsOn(copyPluginTestAlias) + + // Tasks clean { @@ -134,130 +299,68 @@ clean { delete "${projectDir}/qa/integration/.bundle" delete "${projectDir}/build/licenseReportFolders.txt" delete "${projectDir}/build/rubyDependencies.csv" -} -task bootstrap {} - -RubyGradleUtils rubyGradleUtils = new RubyGradleUtils(buildDir, projectDir) - -project(":logstash-core") { - ["rubyTests", "test"].each { tsk -> - tasks.getByPath(":logstash-core:" + tsk).configure { - dependsOn bootstrap - } - } -} - -def jrubyTarPath = "${projectDir}/vendor/_/jruby-dist-${jRubyVersion}-bin.tar.gz" - -def customJRubyDir = project.hasProperty("custom.jruby.path") ? project.property("custom.jruby.path") : "" -def customJRubyVersion = customJRubyDir == "" ? "" : Files.readAllLines(Paths.get(customJRubyDir, "VERSION")).get(0).trim() -def customJRubyTar = customJRubyDir == "" ? "" : (customJRubyDir + "/maven/jruby-dist/target/jruby-dist-${customJRubyVersion}-bin.tar.gz") - -task downloadJRuby(type: Download) { - description "Download JRuby artifact from this specific URL: ${jRubyURL}" - src jRubyURL - onlyIfNewer true - inputs.file("${projectDir}/versions.yml") - outputs.file(jrubyTarPath) - dest new File("${projectDir}/vendor/_", "jruby-dist-${jRubyVersion}-bin.tar.gz") -} - -downloadJRuby.onlyIf { customJRubyDir == "" } - -task verifyFile(dependsOn: downloadJRuby, type: Verify) { - description "Verify the SHA1 of the download JRuby artifact" - inputs.file(jrubyTarPath) - outputs.file(jrubyTarPath) - src new File(jrubyTarPath) - algorithm 'SHA-1' - checksum jRubySha1 -} - -verifyFile.onlyIf { customJRubyDir == "" } - -task buildCustomJRuby(type: Exec) { - description "Build tar.gz and .jar artifacts from JRuby source directory" - workingDir (customJRubyDir == "" ? "./" : customJRubyDir) - commandLine './mvnw', 'clean', 'install', '-Pdist', '-Pcomplete' - standardOutput = new ByteArrayOutputStream() - errorOutput = new ByteArrayOutputStream() - ext.output = { - standardOutput.toString() + errorOutput.toString() - } -} - -buildCustomJRuby.onlyIf { customJRubyDir != "" } - -task installCustomJRuby(dependsOn: buildCustomJRuby, type: Copy) { - description "Install custom built JRuby in the vendor directory" - inputs.file(customJRubyTar) - outputs.dir("${projectDir}/vendor/jruby") - from tarTree(customJRubyTar == "" ? jrubyTarPath : customJRubyTar) - eachFile { f -> - f.path = f.path.replaceFirst("^jruby-${customJRubyVersion}", '') - } - exclude "**/stdlib/rdoc/**" - includeEmptyDirs = false - into "${projectDir}/vendor/jruby" -} - -installCustomJRuby.onlyIf { customJRubyDir != "" } - -task downloadAndInstallJRuby(dependsOn: [verifyFile, installCustomJRuby], type: Copy) { - description "Install JRuby in the vendor directory" - inputs.file(jrubyTarPath) - outputs.dir("${projectDir}/vendor/jruby") - from tarTree(downloadJRuby.dest) - eachFile { f -> - f.path = f.path.replaceFirst("^jruby-${jRubyVersion}", '') - } - exclude "**/stdlib/rdoc/**" - includeEmptyDirs = false - into "${projectDir}/vendor/jruby" - doLast { - rubyGradleUtils.gem("rake", "12.3.1", "${projectDir}/vendor/bundle/jruby/2.5.0") - rubyGradleUtils.gem("json", "1.8.6", "${projectDir}/vendor/bundle/jruby/2.5.0") - } -} - -downloadAndInstallJRuby.onlyIf { customJRubyDir == "" } - -task installDefaultGems(dependsOn: downloadAndInstallJRuby) { - inputs.files file("${projectDir}/Gemfile.template") - inputs.files fileTree("${projectDir}/rakelib") - inputs.files file("${projectDir}/versions.yml") - outputs.file("${projectDir}/Gemfile") - outputs.file("${projectDir}/Gemfile.lock") - outputs.dir("${projectDir}/logstash-core/lib/jars") - outputs.dir("${projectDir}/vendor/bundle/jruby/2.5.0") - doLast { - rubyGradleUtils.gem("rake", "12.3.1", "${projectDir}/vendor/bundle/jruby/2.5.0") - rubyGradleUtils.gem("json", "1.8.6", "${projectDir}/vendor/bundle/jruby/2.5.0") - rubyGradleUtils.rake('plugin:install-default') - } + delete "${projectDir}/lib/pluginmanager/plugin_aliases.yml" + delete "${projectDir}/spec/unit/plugin_manager/plugin_aliases.yml" + delete "${projectDir}/logstash-core/build/resources/test/org/logstash/plugins/plugin_aliases.yml" + delete "${projectDir}/logstash-core/build/resources/main/org/logstash/plugins/plugin_aliases.yml" + delete "${projectDir}/logstash-core/src/test/resources/org/logstash/plugins/plugin_aliases.yml" + delete "${projectDir}/logstash-core/src/main/resources/org/logstash/plugins/plugin_aliases.yml" } def assemblyDeps = [downloadAndInstallJRuby, assemble] + subprojects.collect { it.tasks.findByName("assemble") } -task installTestGems(dependsOn: assemblyDeps) { - inputs.files file("${projectDir}/Gemfile.template") - inputs.files fileTree("${projectDir}/rakelib") - inputs.files file("${projectDir}/versions.yml") - outputs.file("${projectDir}/Gemfile") - outputs.file("${projectDir}/Gemfile.lock") - outputs.dir("${projectDir}/logstash-core/lib/jars") - outputs.dir("${projectDir}/vendor/bundle/jruby/2.5.0") - doLast { - rubyGradleUtils.gem("rake", "12.3.1", "${projectDir}/vendor/bundle/jruby/2.5.0") - rubyGradleUtils.gem("json", "1.8.6", "${projectDir}/vendor/bundle/jruby/2.5.0") - rubyGradleUtils.rake('test:install-core') +def bundlerVersion = "2.3.18" + +tasks.register("installBundler") { + dependsOn assemblyDeps + outputs.files file("${projectDir}/vendor/bundle/jruby/2.5.0/bin/bundle") + doLast { + gem(projectDir, buildDir, "bundler", bundlerVersion, "${projectDir}/vendor/bundle/jruby/2.5.0") + } +} + +tasks.register("bootstrap"){ + dependsOn installBundler + doLast { + setupJruby(projectDir, buildDir) } } -task assembleTarDistribution(dependsOn: assemblyDeps) { + +tasks.register("installDefaultGems") { + dependsOn bootstrap + doLast { + rake(projectDir, buildDir, 'plugin:install-default') + + // overwrites Xerces bundled with nokogiri 1.12.5 + String xercesDownloadUrl = "https://repo1.maven.org/maven2/xerces/xercesImpl/2.12.2/xercesImpl-2.12.2.jar" + download { + description "Download Xerces from ${xercesDownloadUrl}" + src xercesDownloadUrl + dest new File("${projectDir}/vendor/bundle/jruby/2.5.0/gems/nokogiri-1.12.5-java/lib/", "xercesImpl.jar") + } + } +} + +tasks.register("installTestGems") { + dependsOn bootstrap + doLast { + rake(projectDir, buildDir, 'plugin:install-development-dependencies') + } +} + +tasks.register("compileGrammar") { + dependsOn bootstrap + doLast { + rake(projectDir, buildDir, 'compile:grammar') + } +} + +tasks.register("assembleTarDistribution") { + dependsOn bootstrap inputs.files fileTree("${projectDir}/rakelib") inputs.files fileTree("${projectDir}/bin") inputs.files fileTree("${projectDir}/config") @@ -269,12 +372,12 @@ task assembleTarDistribution(dependsOn: assemblyDeps) { inputs.files fileTree("${projectDir}/x-pack") outputs.files file("${buildDir}/logstash-${project.version}-SNAPSHOT.tar.gz") doLast { - rubyGradleUtils.gem("rake", "12.3.1", "${projectDir}/vendor/bundle/jruby/2.5.0") - rubyGradleUtils.rake('artifact:tar') + rake(projectDir, buildDir, 'artifact:no_bundle_jdk_tar') } } -task assembleOssTarDistribution(dependsOn: assemblyDeps) { +tasks.register("assembleOssTarDistribution") { + dependsOn bootstrap inputs.files fileTree("${projectDir}/rakelib") inputs.files fileTree("${projectDir}/bin") inputs.files fileTree("${projectDir}/config") @@ -284,11 +387,12 @@ task assembleOssTarDistribution(dependsOn: assemblyDeps) { inputs.files fileTree("${projectDir}/logstash-core/lib") inputs.files fileTree("${projectDir}/logstash-core/src") doLast { - rubyGradleUtils.rake('artifact:tar_oss') + rake(projectDir, buildDir, 'artifact:archives_oss') } } -task assembleZipDistribution(dependsOn: assemblyDeps) { +tasks.register("assembleZipDistribution") { + dependsOn bootstrap inputs.files fileTree("${projectDir}/rakelib") inputs.files fileTree("${projectDir}/bin") inputs.files fileTree("${projectDir}/config") @@ -300,11 +404,12 @@ task assembleZipDistribution(dependsOn: assemblyDeps) { inputs.files fileTree("${projectDir}/x-pack") outputs.files file("${buildDir}/logstash-${project.version}.zip") doLast { - rubyGradleUtils.rake('artifact:zip') + rake(projectDir, buildDir, 'artifact:archives') } } -task assembleOssZipDistribution(dependsOn: assemblyDeps) { +tasks.register("assembleOssZipDistribution") { + dependsOn bootstrap inputs.files fileTree("${projectDir}/rakelib") inputs.files fileTree("${projectDir}/bin") inputs.files fileTree("${projectDir}/config") @@ -315,13 +420,24 @@ task assembleOssZipDistribution(dependsOn: assemblyDeps) { inputs.files fileTree("${projectDir}/logstash-core/src") outputs.files file("${buildDir}/logstash-${project.version}.zip") doLast { - rubyGradleUtils.rake('artifact:zip_oss') + rake(projectDir, buildDir, 'artifact:archives_oss') + + } +} + +project(":logstash-core") { + ["rubyTests", "test"].each { tsk -> + tasks.getByPath(":logstash-core:" + tsk).configure { + dependsOn copyPluginTestAlias + dependsOn installTestGems + } } } def logstashBuildDir = "${buildDir}/logstash-${project.version}-SNAPSHOT" -task unpackTarDistribution(dependsOn: assembleTarDistribution, type: Copy) { +tasks.register("unpackTarDistribution", Copy) { + dependsOn assembleTarDistribution def tar = file("${buildDir}/logstash-${project.version}-SNAPSHOT.tar.gz") inputs.files tar outputs.files fileTree(logstashBuildDir) @@ -329,18 +445,21 @@ task unpackTarDistribution(dependsOn: assembleTarDistribution, type: Copy) { into {buildDir} } -def qaVendorPath = "${buildDir}/qa/integration/vendor" -def qaBundledGemPath = "${qaVendorPath}/jruby/2.5.0" +def qaBuildPath = "${buildDir}/qa/integration" +def qaVendorPath = "${qaBuildPath}/vendor" +def qaBundledGemPath = "${qaVendorPath}/jruby/2.5.0".toString() def qaBundleBin = "${qaBundledGemPath}/bin/bundle" -task installIntegrationTestBundler(dependsOn: unpackTarDistribution) { - outputs.files fileTree("${qaBundledGemPath}/gems/bundler-1.17.1") - doLast { - rubyGradleUtils.gem("bundler", "1.17.1", qaBundledGemPath) - } +tasks.register("installIntegrationTestBundler"){ + dependsOn unpackTarDistribution + outputs.files file("${qaBundleBin}") + doLast { + gem(projectDir, buildDir, "bundler", bundlerVersion, qaBundledGemPath) + } } -task installIntegrationTestGems(dependsOn: installIntegrationTestBundler) { +tasks.register("installIntegrationTestGems") { + dependsOn installIntegrationTestBundler inputs.files file("${projectDir}/qa/integration/Gemfile") inputs.files file("${projectDir}/qa/integration/integration_tests.gemspec") inputs.files file("${logstashBuildDir}/Gemfile") @@ -349,30 +468,195 @@ task installIntegrationTestGems(dependsOn: installIntegrationTestBundler) { outputs.files fileTree("${qaVendorPath}") outputs.files file("${projectDir}/qa/integration/Gemfile.lock") doLast { - rubyGradleUtils.bundle( - "${projectDir}/qa/integration", qaBundleBin, ['install', '--path', qaVendorPath], - [LS_GEM_PATH: qaBundledGemPath, LS_GEM_HOME: qaBundledGemPath] - ) + bundleWithEnv( + projectDir, buildDir, + qaBuildPath, qaBundleBin, ['install', '--path', qaVendorPath], + [ GEM_PATH: qaBundledGemPath, GEM_HOME: qaBundledGemPath ] + ) } } +tasks.register("downloadFilebeat") { + dependsOn configureArtifactInfo + description "Download Filebeat Snapshot for current branch version: ${version}" + + project.ext.set("versionFound", true) + inputs.file("${projectDir}/versions.yml") + + doLast { + download { + String beatVersion = project.ext.get("stackArtifactSuffix") + String downloadedFilebeatName = "filebeat-${beatVersion}-${project.ext.get("beatsArchitecture")}" + project.ext.set("unpackedFilebeatName", downloadedFilebeatName) + + if (project.ext.get("useProjectSpecificArtifactSnapshotUrl")) { + def res = SnapshotArtifactURLs.packageUrls("beats", beatVersion, downloadedFilebeatName) + project.ext.set("filebeatSnapshotUrl", System.getenv("FILEBEAT_SNAPSHOT_URL") ?: res.packageUrl) + project.ext.set("filebeatDownloadLocation", "${projectDir}/build/${downloadedFilebeatName}.tar.gz") + } else { + // find url of build artifact + String artifactApiUrl = "${project.ext.get("artifactApiVersionedBuildUrl")}/projects/beats/packages/${downloadedFilebeatName}.tar.gz" + String apiResponse = artifactApiUrl.toURL().text + def buildUrls = new JsonSlurper().parseText(apiResponse) + + project.ext.set("filebeatSnapshotUrl", System.getenv("FILEBEAT_SNAPSHOT_URL") ?: buildUrls["package"]["url"]) + project.ext.set("filebeatDownloadLocation", "${projectDir}/build/${downloadedFilebeatName}.tar.gz") + } + + src project.ext.filebeatSnapshotUrl + onlyIfNewer true + + dest new File(project.ext.filebeatDownloadLocation) + retries 3 + } + System.out.println "Downloaded to ${project.ext.filebeatDownloadLocation}" + } +} + +tasks.register("deleteLocalFilebeat", Delete) { + delete ('./build/filebeat') +} + +tasks.register("copyFilebeat") { + dependsOn = [downloadFilebeat, deleteLocalFilebeat] + doLast { + copy { + from tarTree(resources.gzip(project.ext.filebeatDownloadLocation)) + into "./build/" + } + file("./build/${project.ext.unpackedFilebeatName}").renameTo('./build/filebeat') + System.out.println "Unzipped ${project.ext.filebeatDownloadLocation} to ./build/filebeat" + System.out.println "Deleting ${project.ext.filebeatDownloadLocation}" + delete(project.ext.filebeatDownloadLocation) + } +} + +tasks.register("checkEsSHA") { + dependsOn configureArtifactInfo + + description "Download ES version remote's fingerprint file" + + doLast { + String esVersion = project.ext.get("stackArtifactSuffix") + String downloadedElasticsearchName = "elasticsearch-${esVersion}-${project.ext.get("esArchitecture")}" + String remoteSHA + + if (project.ext.get("useProjectSpecificArtifactSnapshotUrl")) { + def res = SnapshotArtifactURLs.packageUrls("elasticsearch", esVersion, downloadedElasticsearchName) + remoteSHA = res.packageShaUrl + } else { + // find url of build artifact + String artifactApiUrl = "${project.ext.get("artifactApiVersionedBuildUrl")}/projects/elasticsearch/packages/${downloadedElasticsearchName}.tar.gz" + String apiResponse = artifactApiUrl.toURL().text + def buildUrls = new JsonSlurper().parseText(apiResponse) + remoteSHA = buildUrls.package.sha_url.toURL().text + } + + def localESArchive = new File("${projectDir}/build/${downloadedElasticsearchName}.tar.gz") + if (localESArchive.exists()) { + // this create a file named localESArchive with ".SHA-512" postfix + ant.checksum(file: localESArchive, algorithm: "SHA-512", forceoverwrite: true) + + File localESCalculatedSHAFile = new File("${projectDir}/build/${downloadedElasticsearchName}.tar.gz.SHA-512") + String localESCalculatedSHA = localESCalculatedSHAFile.text.trim() + def splitted = remoteSHA.split(' ') + String remoteSHACode = splitted[0] + if (localESCalculatedSHA != remoteSHACode) { + println "ES package calculated fingerprint is different from remote, deleting local archive" + delete(localESArchive) + } + }/* else { + mkdir project.buildDir + // touch the SHA file else downloadEs task doesn't start, this file his input for the other task + new File("${projectDir}/build/${downloadedElasticsearchName}.tar.gz.SHA-512").withWriter { w -> + w << "${downloadedElasticsearchName} not yet downloaded" + w.close() + } + }*/ + } +} + +tasks.register("downloadEs") { + dependsOn = [configureArtifactInfo, checkEsSHA] + description "Download ES Snapshot for current branch version: ${version}" + + inputs.file("${projectDir}/versions.yml") + + doLast { + download { + String esVersion = project.ext.get("stackArtifactSuffix") + String downloadedElasticsearchName = "elasticsearch-${esVersion}-${project.ext.get("esArchitecture")}" + + project.ext.set("unpackedElasticsearchName", "elasticsearch-${esVersion}") + + if (project.ext.get("useProjectSpecificArtifactSnapshotUrl")) { + def res = SnapshotArtifactURLs.packageUrls("elasticsearch", esVersion, downloadedElasticsearchName) + project.ext.set("elasticsearchSnapshotURL", System.getenv("ELASTICSEARCH_SNAPSHOT_URL") ?: res.packageUrl) + project.ext.set("elasticsearchDownloadLocation", "${projectDir}/build/${downloadedElasticsearchName}.tar.gz") + } else { + // find url of build artifact + String artifactApiUrl = "${project.ext.get("artifactApiVersionedBuildUrl")}/projects/elasticsearch/packages/${downloadedElasticsearchName}.tar.gz" + String apiResponse = artifactApiUrl.toURL().text + def buildUrls = new JsonSlurper().parseText(apiResponse) + + project.ext.set("elasticsearchSnapshotURL", System.getenv("ELASTICSEARCH_SNAPSHOT_URL") ?: buildUrls["package"]["url"]) + project.ext.set("elasticsearchDownloadLocation", "${projectDir}/build/${downloadedElasticsearchName}.tar.gz") + } + + src project.ext.elasticsearchSnapshotURL + onlyIfNewer true + retries 3 + dest new File(project.ext.elasticsearchDownloadLocation) + } + + System.out.println "Downloaded to ${project.ext.elasticsearchDownloadLocation}" + } +} + + +tasks.register("deleteLocalEs", Delete) { + delete ('./build/elasticsearch') +} + +tasks.register("copyEs") { + dependsOn = [downloadEs, deleteLocalEs] + doLast { + println "copyEs executing.." + copy { + from tarTree(resources.gzip(project.ext.elasticsearchDownloadLocation)) + into "./build/" + } + + file("./build/${project.ext.unpackedElasticsearchName}").renameTo('./build/elasticsearch') + println "Unzipped ${project.ext.elasticsearchDownloadLocation} to ./build/elasticsearch" + println "Deleting ${project.ext.elasticsearchDownloadLocation}" + } +} + def rubyIntegrationSpecs = project.hasProperty("rubyIntegrationSpecs") ? ((String) project.property("rubyIntegrationSpecs")).split(/\s+/).join(",") : "specs/**/*_spec.rb" def integrationTestPwd = "${projectDir}/qa/integration" project(":logstash-integration-tests") { tasks.getByPath(":logstash-integration-tests:integrationTests").configure { - systemProperty 'org.logstash.integration.specs', rubyIntegrationSpecs - environment "FEATURE_FLAG", System.getenv('FEATURE_FLAG') - workingDir integrationTestPwd - dependsOn installIntegrationTestGems - } + systemProperty 'org.logstash.integration.specs', rubyIntegrationSpecs + environment "FEATURE_FLAG", System.getenv('FEATURE_FLAG') + workingDir integrationTestPwd + dependsOn = [installIntegrationTestGems, copyProductionLog4jConfiguration] + } } -task runIntegrationTests(dependsOn: [tasks.getByPath(":logstash-integration-tests:integrationTests")]) {} +tasks.register("runIntegrationTests") { + dependsOn tasks.getByPath(":logstash-integration-tests:integrationTests") + dependsOn copyEs + dependsOn copyFilebeat + shouldRunAfter ":logstash-core:test" +} -task generateLicenseReport(type: JavaExec) { - dependsOn("generateLicenseReportInputs") - dependsOn(":dependencies-report:assemble") + + +tasks.register("generateLicenseReport", JavaExec) { + dependsOn generateLicenseReportInputs + dependsOn ":dependencies-report:assemble" def jarFile = project('dependencies-report').getBuildDir().toString() + "/libs/dependencies-report.jar" @@ -387,97 +671,250 @@ task generateLicenseReport(type: JavaExec) { licenseReportOutputCSV, noticePath } -task generateLicenseReportInputs() { +tasks.register("generateLicenseReportInputs") { dependsOn subprojects.generateLicenseReport - // write location of all license reports for subprojects containing artifacts that are distributed to single file - StringBuilder licenseReportFolders = new StringBuilder() - subprojects.findAll { s1 -> !s1.hasProperty("isDistributedArtifact") || s1.property("isDistributedArtifact") == 'true'}.each { s -> - s.tasks.findAll { t2 -> t2.getName() == "generateLicenseReport" }.each { t3 -> - licenseReportFolders.append(t3.outputs.files.asPath + "\n") + doLast { + // write location of all license reports for subprojects containing artifacts that are distributed to single file + StringBuilder licenseReportFolders = new StringBuilder() + subprojects.findAll { s1 -> !s1.hasProperty("isDistributedArtifact") || s1.property("isDistributedArtifact") == 'true' }.each { s -> + s.tasks.findAll { t2 -> t2.getName() == "generateLicenseReport" }.each { t3 -> + licenseReportFolders.append(t3.reportDir.toString() + "\n") + } } - } - if (gradle.startParameter.taskNames.contains("generateLicenseReport")) { - def licenseReportPath = project.getBuildDir().toString() + "/licenseReportFolders.txt" - def licenseReportFolder = new File(licenseReportPath) - licenseReportFolder.delete() - licenseReportFolder = new File(licenseReportPath) - licenseReportFolder.createNewFile() - if (licenseReportFolder.canWrite()) { - licenseReportFolder.text = licenseReportFolders.toString() + if (gradle.startParameter.taskNames.contains("generateLicenseReport")) { + if (!project.getBuildDir().exists()) { + project.getBuildDir().mkdirs() + } + def licenseReportPath = project.getBuildDir().toString() + "/licenseReportFolders.txt" + def licenseReportFolder = new File(licenseReportPath) + licenseReportFolder.delete() + licenseReportFolder = new File(licenseReportPath) + licenseReportFolder.createNewFile() + if (licenseReportFolder.canWrite()) { + licenseReportFolder.text = licenseReportFolders.toString() + } } } } -task generatePluginsVersion(dependsOn: bootstrap) { +tasks.register("generatePluginsVersion") { + dependsOn installDefaultGems doLast { - rubyGradleUtils.rake('generate_plugins_version') + rake(projectDir, buildDir, 'generate_plugins_version') } } -// If you are running a JRuby snapshot we will skip the integrity check. -verifyFile.onlyIf { doChecksum } -bootstrap.dependsOn installTestGems +bootstrap.dependsOn assemblyDeps +// FIXME: adding the integration tests task to check will mean +// that any registered task will be evaluated. This creates an issue +// where the downloadES task may throw an error on versions where +// Elasticsearch doesn't yet have a build we can fetch +// So for now we'll remove this to unblock builds, but finding a way +// to compartimentalize failures is needed going forward +//check.dependsOn runIntegrationTest -runIntegrationTests.shouldRunAfter tasks.getByPath(":logstash-core:test") -check.dependsOn runIntegrationTests -String artifactsVersionApi = "https://artifacts-api.elastic.co/v1/versions/" -String apiResponse = artifactsVersionApi.toURL().text -def dlVersions = new JsonSlurper().parseText(apiResponse) -// the version string can be either '7.0.0' or '7.0.0-alpha1', i.e. with the qualifier. -// in the normal PR type builds it is plain '7.0.0' -// in the build invoked by the release manager it is '7.0.0-alpha1' etc. -// the artifacts-api will return JSON like this: `{"versions":["5.6.13-SNAPSHOT","6.4.3-SNAPSHOT","6.5.0-SNAPSHOT","6.6.0-SNAPSHOT","7.0.0-alpha1-SNAPSHOT"]}` -String qualifiedVersion = dlVersions['versions'].grep(~/^${version}.*/)[0] -String downloadedElasticsearchName = "elasticsearch-${qualifiedVersion}" -String elasticsearchSnapshotURL = System.getenv("ELASTICSEARCH_SNAPSHOT_URL") ?: "https://snapshots.elastic.co/downloads/elasticsearch/${downloadedElasticsearchName}.tar.gz" -String elasticsearchDownloadLocation = "${projectDir}/build/${downloadedElasticsearchName}.tar.gz" +def selectOsType() { + if (project.ext.has("jdk_bundle_os")) { + return project.ext.jdk_bundle_os + } + String osName = System.properties['os.name'] + switch (osName.toLowerCase()) { + case ~/mac os x/: + return "darwin" + case ~/windows.*/: + return "windows" + case ~/linux/: + return "linux" + default: + throw new IllegalArgumentException("Can't determine OS type from name: $osName") + } +} -task downloadEs(type: Download) { - description "Download ES Snapshot for current branch version: ${version}" - doFirst { - if (qualifiedVersion == "null") { - throw new GradleException("could not find the current artifact from the artifact-api for version: ${version}, api response was: ${apiResponse}") +def selectArch() { + if (project.ext.has("jdk_arch")) { + return project.ext.jdk_arch + } + String cpu_arch = System.properties["os.arch"] + switch (cpu_arch) { + case "amd64": + case "x86_64": + return "x86_64" + case "aarch64": + case "arm64": + return "arm64" + default: + throw new IllegalArgumentException("Can't handle os.arch of type $cpu_arch") + } +} + +class JDKDetails { + final String revision + final String build + final String vendor + final int major + private final String osName + private final String extension + final String localPackageName + final String unpackedJdkName + private String arch + + JDKDetails(versionYml, osName, jdkArch) { + revision = versionYml.bundled_jdk.revision + build = versionYml.bundled_jdk.build + vendor = versionYml.bundled_jdk.vendor + major = revision.split('\\.').first() as int + this.osName = osName + + switch (osName) { + case "windows": + extension = "zip" + break + default: + extension = "tar.gz" + } + arch = parseJdkArchitecture(jdkArch) + unpackedJdkName = "jdk-${revision}-${osName}" + localPackageName = "${unpackedJdkName}-${arch}.${extension}" + } + + String createDownloadUrl() { + String releaseName = major > 8 ? + "jdk-${revision}+${build}": + "jdk${revision}u${build}" + String vendorOsName = vendorOsName(osName) + switch (vendor) { + case "adoptium": + return "https://api.adoptium.net/v3/binary/version/${releaseName}/${vendorOsName}/${arch}/jdk/hotspot/normal/adoptium" + default: + throw RuntimeException("Can't handle vendor: ${vendor}") } } - src elasticsearchSnapshotURL + + private String vendorOsName(String osName) { + if (osName == "darwin") + return "mac" + return osName + } + + private String parseJdkArchitecture(String jdkArch) { + switch (jdkArch) { + case "x86_64": + return "x64" + break + case "arm64": + return "aarch64" + break + default: + throw RuntimeException("Can't handle CPU architechture: ${jdkArch}") + } + } +} + +tasks.register("downloadJdk", Download) { + // CLI project properties: -Pjdk_bundle_os=[windows|linux|darwin] -Pjdk_arch=[arm64|x86_64] + + project.ext.set("versionFound", true) + String osName = selectOsType() + + def versionYml = new Yaml().load(new File("$projectDir/versions.yml").text) + String jdkArch = selectArch() + def jdkDetails = new JDKDetails(versionYml, osName, jdkArch) + + description "Download JDK ${jdkDetails.major}, OS: ${osName}" + + // find url of build artifact + String artifactApiUrl = jdkDetails.createDownloadUrl() + + project.ext.set("jdkURL", System.getenv("JDK_URL") ?: artifactApiUrl) + project.ext.set("jdkDownloadLocation", "${projectDir}/build/${jdkDetails.localPackageName}") + project.ext.set("jdkDirectory", "${projectDir}/build/${jdkDetails.unpackedJdkName}") + + String jdkFolderName = osName == "darwin" ? "jdk.app" : "jdk" + project.ext.set("jdkBundlingDirectory", "${projectDir}/${jdkFolderName}") + + src project.ext.jdkURL onlyIfNewer true + overwrite false inputs.file("${projectDir}/versions.yml") - outputs.file(elasticsearchDownloadLocation) - dest new File(elasticsearchDownloadLocation) + outputs.file(project.ext.jdkDownloadLocation) + dest new File(project.ext.jdkDownloadLocation) + doLast { - System.out.println "Downloaded to ${elasticsearchDownloadLocation}" + mkdir project.ext.jdkBundlingDirectory + println "Downloaded to ${project.ext.jdkDownloadLocation}" } } -task deleteLocalEs(type: Delete) { - delete ('./build/elasticsearch') +tasks.register("deleteLocalJdk", Delete) { + // CLI project properties: -Pjdk_bundle_os=[windows|linux|darwin] + String osName = selectOsType() + String jdkFolderName = osName == "darwin" ? "jdk.app" : "jdk" + String jdkBundlingDirectory = "${projectDir}/${jdkFolderName}" + delete jdkBundlingDirectory } -task copyEs(type: Copy, dependsOn: [downloadEs, deleteLocalEs]) { - from tarTree(resources.gzip(elasticsearchDownloadLocation)) - into "./build/" +// Cannot use tarTree as it does not handle symlinks +tasks.register("untarJdk", Exec) { + dependsOn downloadJdk + description = "unpack the downloaded JDK's tar.gz" + commandLine 'tar', 'xf', project.ext.jdkDownloadLocation, '-C', project.ext.jdkBundlingDirectory, '--strip-components', '1' + inputs.file(project.ext.jdkDownloadLocation) + outputs.dir(project.ext.jdkBundlingDirectory) +} + +tasks.register("unzipJdk", Copy) { + dependsOn downloadJdk + description = "unpack the downloaded JDK's zip" + String rootName = null + from(zipTree("$project.ext.jdkDownloadLocation")) { + eachFile { fcd -> + rootName = rootName ?: fcd.relativePath.segments[0] + fcd.relativePath = new RelativePath(true, fcd.relativePath.segments.drop(1)) + } + } + into project.ext.jdkBundlingDirectory doLast { - file("./build/${downloadedElasticsearchName}").renameTo('./build/elasticsearch') + delete "${project.ext.jdkBundlingDirectory}/$rootName" } } -Boolean oss = System.getenv('OSS').equals('true') +tasks.register("decompressJdk") { + description = "unpack the downloaded JDK's (wrapper task for unzipJdk, untarJdk)" + String osName = selectOsType() + switch (osName) { + case "windows": + dependsOn ":unzipJdk" + break + default: + dependsOn ":untarJdk" + } +} -if (!oss) { +tasks.register("copyJdk", Copy) { + dependsOn = [decompressJdk, bootstrap] + description = "Download, unpack and copy the JDK" + // CLI project properties: -Pjdk_bundle_os=[windows|linux|darwin] -Pjdk_arch=[arm64|x86_64] + doLast { + System.out.println "Download location is ${project.ext.jdkDownloadLocation}, Decompressing ${project.ext.jdkDirectory} to \"${project.ext.jdkBundlingDirectory}\"" + } +} + +if (System.getenv('OSS') != 'true') { project(":logstash-xpack") { ["rubyTests", "rubyIntegrationTests", "test"].each { tsk -> tasks.getByPath(":logstash-xpack:" + tsk).configure { - dependsOn bootstrap + dependsOn installTestGems } } - tasks.getByPath(":logstash-xpack:rubyIntegrationTests").configure { - dependsOn copyEs - } } - - task runXPackUnitTests(dependsOn: [tasks.getByPath(":logstash-xpack:rubyTests")]) {} - task runXPackIntegrationTests(dependsOn: [tasks.getByPath(":logstash-xpack:rubyIntegrationTests")]) {} } + + tasks.register("runXPackUnitTests"){ + dependsOn ":logstash-xpack:rubyTests" + } + tasks.register("runXPackIntegrationTests"){ + dependsOn ":logstash-xpack:rubyIntegrationTests" + } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 29e903be3..6c10ead1d 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -1,12 +1,17 @@ -apply plugin: 'java' -apply plugin: 'groovy' - -group = 'org.logstash.gradle' +plugins { + id 'groovy' + id 'java' +} repositories { - mavenCentral() + mavenCentral() } dependencies { - compile group: 'org.jruby', name: 'jruby-complete', version: '9.2.5.0' + testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.7.2") } + +test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/buildSrc/src/main/groovy/org/logstash/gradle/RubyGradleUtils.groovy b/buildSrc/src/main/groovy/org/logstash/gradle/RubyGradleUtils.groovy deleted file mode 100644 index 53d26e45b..000000000 --- a/buildSrc/src/main/groovy/org/logstash/gradle/RubyGradleUtils.groovy +++ /dev/null @@ -1,103 +0,0 @@ -package org.logstash.gradle - -import org.jruby.Ruby -import org.jruby.embed.PathType -import org.jruby.embed.ScriptingContainer - -final class RubyGradleUtils { - - private final File buildDir - - private final File projectDir - - RubyGradleUtils(File buildDir, File projectDir) { - this.buildDir = buildDir - this.projectDir = projectDir - } - - /** - * Executes a bundler bin script with given parameters. - * @param pwd Current worker directory to execute in - * @param bundleBin Bundler Bin Script - * @param args CLI Args to Use with Bundler - */ - void bundle(String pwd, String bundleBin, Iterable args) { - bundle(pwd, bundleBin, args, Collections.emptyMap()) - } - - /** - * Executes a bundler bin script with given parameters. - * @param pwd Current worker directory to execute in - * @param bundleBin Bundler Bin Script - * @param args CLI Args to Use with Bundler - * @param env Environment Variables to Set - */ - void bundle(String pwd, String bundleBin, Iterable args, Map env) { - executeJruby { ScriptingContainer jruby -> - jruby.environment.putAll(env) - jruby.currentDirectory = pwd - jruby.argv = args.toList().toArray() - jruby.runScriptlet(PathType.ABSOLUTE, bundleBin) - } - } - - /** - * Installs a Gem with the given version to the given path. - * @param gem Gem Name - * @param version Version to Install - * @param path Path to Install to - */ - void gem(String gem, String version, String path) { - executeJruby { ScriptingContainer jruby -> - jruby.currentDirectory = projectDir - jruby.runScriptlet( - "require 'rubygems/commands/install_command'\n" + - "cmd = Gem::Commands::InstallCommand.new\n" + - "cmd.handle_options [\"--no-ri\", \"--no-rdoc\", '${gem}', '-v', '${version}', '-i', '${path}']\n" + - "begin \n" + - " cmd.execute\n" + - "rescue Gem::SystemExitException => e\n" + - " raise e unless e.exit_code == 0\n" + - "end" - ) - } - } - - /** - * Executes RSpec for a given plugin. - * @param plugin Plugin to run specs for - * @param args CLI arguments to pass to rspec - */ - void rake(String task) { - executeJruby { ScriptingContainer jruby -> - jruby.currentDirectory = projectDir - jruby.runScriptlet("require 'rake'") - jruby.runScriptlet( - "rake = Rake.application\n" + - "rake.init\n" + - "rake.load_rakefile\n" + - "rake['${task}'].invoke" - ) - } - } - - /** - * Executes Closure using a fresh JRuby environment, safely tearing it down afterwards. - * @param block Closure to run - */ - Object executeJruby(Closure block) { - def jruby = new ScriptingContainer() - def env = jruby.environment - def gemDir = "${projectDir}/vendor/bundle/jruby/2.5.0".toString() - env.put "USE_RUBY", "1" - env.put "GEM_HOME", gemDir - env.put "GEM_SPEC_CACHE", "${buildDir}/cache".toString() - env.put "GEM_PATH", gemDir - try { - return block(jruby) - } finally { - jruby.terminate() - Ruby.clearGlobalRuntime() - } - } -} diff --git a/buildSrc/src/main/groovy/org/logstash/gradle/tooling/ListProjectDependencies.groovy b/buildSrc/src/main/groovy/org/logstash/gradle/tooling/ListProjectDependencies.groovy new file mode 100644 index 000000000..d00ac9c76 --- /dev/null +++ b/buildSrc/src/main/groovy/org/logstash/gradle/tooling/ListProjectDependencies.groovy @@ -0,0 +1,50 @@ +package org.logstash.gradle.tooling + +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.OutputFile +import org.gradle.api.tasks.OutputDirectory +import org.gradle.api.tasks.Input +import org.gradle.api.artifacts.Dependency + +import java.nio.file.Files + +class ListProjectDependencies extends DefaultTask { + + @Input + String report = 'licenses.csv' + + @OutputFile + File reportFile = project.file("${project.buildDir}/reports/dependency-license/" + report) + + @OutputDirectory + File reportDir = reportFile.toPath().parent.toFile() + + ListProjectDependencies() { + description = "Lists the projects dependencies in a CSV file" + group = "org.logstash.tooling" + } + + @TaskAction + def list() { + // collect all project's dependencies + Set moduleDeps = new HashSet<>() + moduleDeps.addAll(project.configurations.implementation.getAllDependencies()) + moduleDeps.addAll(project.configurations.runtimeClasspath.getAllDependencies()) + moduleDeps.addAll(project.configurations.runtimeOnly.getAllDependencies()) + + def depsInGAV = moduleDeps.collect {dep -> + "${dep.group}:${dep.name}:${dep.version}" + } + + // output in a CSV to be read by dependencies-report tool + Files.createDirectories(reportFile.toPath().parent) + reportFile.withWriter('utf-8') { writer -> + writer.writeLine '"artifact","moduleUrl","moduleLicense","moduleLicenseUrl",' + depsInGAV.each { s -> + writer.writeLine "\"$s\",,,," + } + } + } + +} diff --git a/buildSrc/src/main/groovy/org/logstash/gradle/tooling/SnapshotArtifactURLs.groovy b/buildSrc/src/main/groovy/org/logstash/gradle/tooling/SnapshotArtifactURLs.groovy new file mode 100644 index 000000000..349a8736f --- /dev/null +++ b/buildSrc/src/main/groovy/org/logstash/gradle/tooling/SnapshotArtifactURLs.groovy @@ -0,0 +1,28 @@ +package org.logstash.gradle.tooling + +import groovy.json.JsonSlurper + +/** + * Helper class to obtain project specific (e.g. Elasticsearch or beats/filebeat) snapshot-DRA artifacts. + * We use it in all cases apart from release builds. + * */ +class SnapshotArtifactURLs { + /** + * Returns a list of the package and package SHA(512) URLs for a given project / version / downloadedPackageName + * */ + static def packageUrls(String project, String projectVersion, String downloadedPackageName) { + String artifactSnapshotVersionsApiPrefix = "https://artifacts-snapshot.elastic.co" + + // e.g. https://artifacts-snapshot.elastic.co/elasticsearch/latest/8.11.5-SNAPSHOT.json + String apiResponse = "${artifactSnapshotVersionsApiPrefix}/${project}/latest/${projectVersion}.json".toURL().text + def artifactUrls = new JsonSlurper().parseText(apiResponse) + String manifestUrl = artifactUrls["manifest_url"] + // e.g. https://artifacts-snapshot.elastic.co/elasticsearch/8.11.5-12345678/manifest-8.11.5-SNAPSHOT.json + apiResponse = manifestUrl.toURL().text + def packageArtifactUrls = new JsonSlurper().parseText(apiResponse) + String packageUrl = packageArtifactUrls["projects"]["${project}"]["packages"]["${downloadedPackageName}.tar.gz"]["url"] + String packageShaUrl = packageArtifactUrls["projects"]["${project}"]["packages"]["${downloadedPackageName}.tar.gz"]["sha_url"] + + return ["packageUrl": packageUrl, "packageShaUrl": packageShaUrl] + } +} diff --git a/buildSrc/src/main/java/org/logstash/gradle/ExecLogOutputStream.java b/buildSrc/src/main/java/org/logstash/gradle/ExecLogOutputStream.java deleted file mode 100644 index 2f39436bb..000000000 --- a/buildSrc/src/main/java/org/logstash/gradle/ExecLogOutputStream.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.logstash.gradle; - -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; - -/** - * Stream that can be used to forward Gradle Exec task output to an arbitrary {@link PrintStream}. - */ -public final class ExecLogOutputStream extends ByteArrayOutputStream { - - /** - * Underlying {@link PrintStream} to flush output to. - */ - private final PrintStream stream; - - /** - * Ctor. - * @param stream PrintStream to flush to - */ - public ExecLogOutputStream(final PrintStream stream) { - this.stream = stream; - } - - @Override - public synchronized void flush() { - stream.print(toString()); - reset(); - } -} diff --git a/buildSrc/src/test/groovy/org/logstash/gradle/tooling/ListProjectDependenciesTest.groovy b/buildSrc/src/test/groovy/org/logstash/gradle/tooling/ListProjectDependenciesTest.groovy new file mode 100644 index 000000000..d0495332c --- /dev/null +++ b/buildSrc/src/test/groovy/org/logstash/gradle/tooling/ListProjectDependenciesTest.groovy @@ -0,0 +1,43 @@ +package org.logstash.gradle.tooling + +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.gradle.api.* +import org.gradle.testfixtures.ProjectBuilder + +class ListProjectDependenciesTest { + + static final TASK_NAME = 'generateLicenseReport' + Project project + + @BeforeEach + void setUp() { + project = ProjectBuilder.builder().build() + project.getConfigurations().create("implementation") + project.getConfigurations().create("runtimeClasspath") + project.getConfigurations().create("runtimeOnly") + } + + @Test + void "list dependencies"() { + // configure the project to have Jetty client as a dependency + project.getDependencies().add('implementation', + [group: "org.eclipse.jetty", name: "jetty-client", version: "9.4.43.v20210629", configuration: "implementation"]) + + // configure and execute the task + project.task(TASK_NAME, type: ListProjectDependencies) { + report = "test.csv" + reportFile = project.buildDir.toPath().resolve("test.csv").toFile() + } + def task = project.tasks.findByName(TASK_NAME) + task != null + task.list() + + // Verify the CSV generated + List fileContents = new File("${project.buildDir}/test.csv").readLines() + assert fileContents.size() == 2 + assert fileContents[0] == '"artifact","moduleUrl","moduleLicense","moduleLicenseUrl",' + assert fileContents[1] == '"org.eclipse.jetty:jetty-client:9.4.43.v20210629",,,,' + } + +} diff --git a/ci/acceptance_tests.sh b/ci/acceptance_tests.sh index 67bd1af28..185654221 100755 --- a/ci/acceptance_tests.sh +++ b/ci/acceptance_tests.sh @@ -1,81 +1,54 @@ #!/usr/bin/env bash -set -e -set -x +set -eo pipefail + +function get_package_type { + # determines OS packaging system; at the moment either rpm or deb + source /etc/os-release + + if [[ $ID == "ubuntu" || $ID == "debian" || $ID_LIKE == "debian" ]]; then + PACKAGE_TYPE="deb" + elif [[ $ID_LIKE == *"rhel"* || $ID_LIKE == *"fedora"* || $ID_LIKE == *"suse"* ]]; then + PACKAGE_TYPE="rpm" + else + echo "^^^ +++ Unsupported Linux distribution [$ID]. Acceptance packaging tests only support deb or rpm based distributions. Exiting." + exit 1 + fi +} # Since we are using the system jruby, we need to make sure our jvm process # uses at least 1g of memory, If we don't do this we can get OOM issues when # installing gems. See https://github.com/elastic/logstash/issues/5179 export JRUBY_OPTS="-J-Xmx1g" -export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" +export GRADLE_OPTS="-Xmx4g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" export OSS=true -SELECTED_TEST_SUITE=$1 - -# The acceptance test in our CI infrastructure doesn't clear the workspace between run -# this mean the lock of the Gemfile can be sticky from a previous run, before generating any package -# we will clear them out to make sure we use the latest version of theses files -# If we don't do this we will run into gem Conflict error. -[ -f Gemfile ] && rm Gemfile -[ -f Gemfile.lock ] && rm Gemfile.lock - -# When running these tests in a Jenkins matrix, in parallel, once one Vagrant job is done, the Jenkins ProcessTreeKiller will kill any other Vagrant processes with the same -# BUILD_ID unless you set this magic flag: https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller -export BUILD_ID=dontKillMe - LS_HOME="$PWD" QA_DIR="$PWD/qa" -# Always run the halt, even if the test times out or an exit is sent -cleanup() { - cd $QA_DIR - bundle check || bundle install - bundle exec rake qa:vm:halt -} -trap cleanup EXIT +cd $LS_HOME -# Cleanup any stale VMs from old jobs first -cleanup +get_package_type -if [[ $SELECTED_TEST_SUITE == $"redhat" ]]; then - echo "Generating the RPM, make sure you start with a clean environment before generating other packages." - cd $LS_HOME - rake artifact:rpm - echo "Acceptance: Installing dependencies" - cd $QA_DIR - bundle install - - echo "Acceptance: Running the tests" - bundle exec rake qa:vm:setup["redhat"] - bundle exec rake qa:vm:ssh_config - bundle exec rake qa:acceptance:redhat - bundle exec rake qa:vm:halt["redhat"] -elif [[ $SELECTED_TEST_SUITE == $"debian" ]]; then - echo "Generating the DEB, make sure you start with a clean environment before generating other packages." - cd $LS_HOME - rake artifact:deb - echo "Acceptance: Installing dependencies" - cd $QA_DIR - bundle install - - echo "Acceptance: Running the tests" - bundle exec rake qa:vm:setup["debian"] - bundle exec rake qa:vm:ssh_config - bundle exec rake qa:acceptance:debian - bundle exec rake qa:vm:halt["debian"] -elif [[ $SELECTED_TEST_SUITE == $"all" ]]; then - echo "Building Logstash artifacts" - cd $LS_HOME - rake artifact:all - - echo "Acceptance: Installing dependencies" - cd $QA_DIR - bundle install - - echo "Acceptance: Running the tests" - bundle exec rake qa:vm:setup - bundle exec rake qa:vm:ssh_config - bundle exec rake qa:acceptance:all - bundle exec rake qa:vm:halt +# in CI (Buildkite), packaging artifacts are pre-built from a previous step +if [[ $BUILDKITE == true ]]; then + export LS_ARTIFACTS_PATH="$HOME/build" + echo "--- Downloading artifacts from \"build/*${PACKAGE_TYPE}\" to $LS_ARTIFACTS_PATH" + set -x + # also creates build/ under $HOME + buildkite-agent artifact download "build/*${PACKAGE_TYPE}" $HOME + set +x + echo "--- Running gradle" + ./gradlew clean bootstrap +else + echo "--- Detected a distribution that supports \033[33m[$PACKAGE_TYPE]\033[0m packages. Running gradle." + ./gradlew clean bootstrap + echo "--- Building Logstash artifacts" + rake artifact:$PACKAGE_TYPE fi +echo "--- Acceptance: Installing dependencies" +cd $QA_DIR +bundle install +echo "--- Acceptance: Running the tests" +rake qa:acceptance:all diff --git a/ci/bootstrap_dependencies.sh b/ci/bootstrap_dependencies.sh new file mode 100644 index 000000000..9b4e972e0 --- /dev/null +++ b/ci/bootstrap_dependencies.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +./gradlew installDefaultGems diff --git a/ci/docker_acceptance_tests.sh b/ci/docker_acceptance_tests.sh new file mode 100755 index 000000000..4f0b65127 --- /dev/null +++ b/ci/docker_acceptance_tests.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +set -e +set -x + +# Since we are using the system jruby, we need to make sure our jvm process +# uses at least 1g of memory, If we don't do this we can get OOM issues when +# installing gems. See https://github.com/elastic/logstash/issues/5179 +export JRUBY_OPTS="-J-Xmx1g" +export GRADLE_OPTS="-Xmx4g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" + +# Can run either a specific flavor, or all flavors - +# eg `ci/acceptance_tests.sh oss` will run tests for open source container +# `ci/acceptance_tests.sh full` will run tests for the default container +# `ci/acceptance_tests.sh ubi8` will run tests for the ubi8 based container +# `ci/acceptance_tests.sh` will run tests for all containers +SELECTED_TEST_SUITE=$1 + +# The acceptance test in our CI infrastructure doesn't clear the workspace between run +# this mean the lock of the Gemfile can be sticky from a previous run, before generating any package +# we will clear them out to make sure we use the latest version of theses files +# If we don't do this we will run into gem Conflict error. +[ -f Gemfile ] && rm Gemfile +[ -f Gemfile.lock ] && rm Gemfile.lock + +LS_HOME="$PWD" +QA_DIR="$PWD/qa" + +cd $QA_DIR +bundle check || bundle install + +echo "Building Logstash artifacts" +cd $LS_HOME + +if [[ $SELECTED_TEST_SUITE == "oss" ]]; then + echo "--- Building $SELECTED_TEST_SUITE docker images" + cd $LS_HOME + rake artifact:docker_oss + echo "--- Acceptance: Installing dependencies" + cd $QA_DIR + bundle install + + echo "--- Acceptance: Running the tests" + bundle exec rspec docker/spec/oss/*_spec.rb +elif [[ $SELECTED_TEST_SUITE == "full" ]]; then + echo "--- Building $SELECTED_TEST_SUITE docker images" + cd $LS_HOME + rake artifact:docker + echo "--- Acceptance: Installing dependencies" + cd $QA_DIR + bundle install + + echo "--- Acceptance: Running the tests" + bundle exec rspec docker/spec/full/*_spec.rb +elif [[ $SELECTED_TEST_SUITE == "ubi8" ]]; then + echo "--- Building $SELECTED_TEST_SUITE docker images" + cd $LS_HOME + rake artifact:docker_ubi8 + echo "--- Acceptance: Installing dependencies" + cd $QA_DIR + bundle install + + echo "--- Acceptance: Running the tests" + bundle exec rspec docker/spec/ubi8/*_spec.rb +else + echo "--- Building all docker images" + cd $LS_HOME + rake artifact:docker_only + + echo "--- Acceptance: Installing dependencies" + cd $QA_DIR + bundle install + + echo "--- Acceptance: Running the tests" + bundle exec rspec docker/spec/**/*_spec.rb +fi diff --git a/ci/docker_integration_tests.sh b/ci/docker_integration_tests.sh index 0eb78569a..6264f94d5 100755 --- a/ci/docker_integration_tests.sh +++ b/ci/docker_integration_tests.sh @@ -1,2 +1,4 @@ #!/bin/bash +# we may pass "persistent_queues" to FEATURE_FLAG to enable PQ in the integration tests +export DOCKER_ENV_OPTS="${DOCKER_ENV_OPTS} -e FEATURE_FLAG" ci/docker_run.sh logstash-integration-tests ci/integration_tests.sh $@ diff --git a/ci/docker_run.sh b/ci/docker_run.sh index 4963cc05a..f3c088c1c 100755 --- a/ci/docker_run.sh +++ b/ci/docker_run.sh @@ -6,6 +6,7 @@ set -x # We want verbosity here, this mostly runs on CI and we want to easily de #Note - ensure that the -e flag is NOT set, and explicitly check the $? status to allow for clean up REMOVE_IMAGE=false +DOCKER_EXTERNAL_JDK="" if [ -z "$branch_specifier" ]; then # manual REMOVE_IMAGE=true @@ -33,8 +34,13 @@ cleanup() { } trap cleanup EXIT +if [ -n "$JDK" ]; then + echo "JDK to use $JDK" + DOCKER_EXTERNAL_JDK="--mount type=bind,source=$JDK,target=$JDK,readonly --env BUILD_JAVA_HOME=$JDK" +fi + # Run the command, skip the first argument, which is the image name -docker run $DOCKER_ENV_OPTS --cidfile=docker_cid --sig-proxy=true --rm $IMAGE_NAME ${@:2} +docker run $DOCKER_ENV_OPTS --cidfile=docker_cid --sig-proxy=true $DOCKER_EXTERNAL_JDK --rm $IMAGE_NAME ${@:2} exit_code=$? # Remove the container cid since we ran cleanly, no need to force rm it if we got to this point diff --git a/ci/dra_common.sh b/ci/dra_common.sh new file mode 100755 index 000000000..f437a3129 --- /dev/null +++ b/ci/dra_common.sh @@ -0,0 +1,49 @@ +function info { + echo "INFO: $1" +} + +function error { + echo "ERROR: $1" + exit 1 +} + +function save_docker_tarballs { + local arch="${1:?architecture required}" + local version="${2:?stack-version required}" + local images="logstash logstash-oss" + if [ "${arch}" != "aarch64" ]; then + # No logstash-ubi8 for AARCH64 + images="logstash logstash-oss logstash-ubi8" + fi + + for image in ${images}; do + tar_file="${image}-${version}-docker-image-${arch}.tar" + docker save -o "build/${tar_file}" \ + "docker.elastic.co/logstash/${image}:${version}" || \ + error "Unable to save tar file ${tar_file} for ${image} image." + # NOTE: if docker save exited with non-zero the error log already exited the script + gzip "build/${tar_file}" + done +} + +function upload_to_bucket { + local file="${1:?file required}" + local version="${2:?stack-version required}" + info "Uploading ${file}..." + gsutil cp "${file}" "gs://logstash-ci-artifacts/dra/${version}/" +} + +# Since we are using the system jruby, we need to make sure our jvm process +# uses at least 1g of memory, If we don't do this we can get OOM issues when +# installing gems. See https://github.com/elastic/logstash/issues/5179 +export JRUBY_OPTS="-J-Xmx1g" + +# Extract the version number from the version.yml file +# e.g.: 8.6.0 +# The suffix part like alpha1 etc is managed by the optional VERSION_QUALIFIER_OPT environment variable +STACK_VERSION=`cat versions.yml | sed -n 's/^logstash\:[[:space:]]\([[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\)$/\1/p'` + +# ARCH is a Environment variable set in Jenkins +if [ -z "$ARCH" ]; then + ARCH=aarch64 +fi diff --git a/ci/dra_docker.sh b/ci/dra_docker.sh new file mode 100755 index 000000000..eb2f8f0c7 --- /dev/null +++ b/ci/dra_docker.sh @@ -0,0 +1,90 @@ +#!/bin/bash -ie +#Note - ensure that the -e flag is set to properly set the $? status if any command fails +echo "####################################################################" +echo "##################### Starting $0" +echo "####################################################################" + +source ./$(dirname "$0")/dra_common.sh + +# WORKFLOW_TYPE is a CI externally configured environment variable that could assume "snapshot" or "staging" values +case "$WORKFLOW_TYPE" in + snapshot) + info "Building artifacts for the $WORKFLOW_TYPE workflow..." + if [ -z "$VERSION_QUALIFIER_OPT" ]; then + rake artifact:docker || error "artifact:docker build failed." + rake artifact:docker_oss || error "artifact:docker_oss build failed." + rake artifact:dockerfiles || error "artifact:dockerfiles build failed." + if [ "$ARCH" != "aarch64" ]; then + rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed." + fi + else + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker || error "artifact:docker build failed." + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker_oss || error "artifact:docker_oss build failed." + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:dockerfiles || error "artifact:dockerfiles build failed." + if [ "$ARCH" != "aarch64" ]; then + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed." + fi + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + fi + STACK_VERSION=${STACK_VERSION}-SNAPSHOT + info "Build complete, setting STACK_VERSION to $STACK_VERSION." + ;; + staging) + info "Building artifacts for the $WORKFLOW_TYPE workflow..." + if [ -z "$VERSION_QUALIFIER_OPT" ]; then + RELEASE=1 rake artifact:docker || error "artifact:docker build failed." + RELEASE=1 rake artifact:docker_oss || error "artifact:docker_oss build failed." + RELEASE=1 rake artifact:dockerfiles || error "artifact:dockerfiles build failed." + if [ "$ARCH" != "aarch64" ]; then + RELEASE=1 rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed." + fi + else + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker || error "artifact:docker build failed." + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker_oss || error "artifact:docker_oss build failed." + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:dockerfiles || error "artifact:dockerfiles build failed." + if [ "$ARCH" != "aarch64" ]; then + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 rake artifact:docker_ubi8 || error "artifact:docker_ubi8 build failed." + fi + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + fi + info "Build complete, setting STACK_VERSION to $STACK_VERSION." + ;; + *) + error "Workflow (WORKFLOW_TYPE variable) is not set, exiting..." + ;; +esac + +info "Saving tar.gz for docker images" +save_docker_tarballs "${ARCH}" "${STACK_VERSION}" + +info "GENERATED ARTIFACTS" +for file in build/logstash-*; do shasum $file;done + +info "UPLOADING TO INTERMEDIATE BUCKET" +# Note the deb, rpm tar.gz AARCH64 files generated has already been loaded by the dra_x86_64.sh +images="logstash logstash-oss" +if [ "$ARCH" != "aarch64" ]; then + # No logstash-ubi8 for AARCH64 + images="logstash logstash-oss logstash-ubi8" +fi +for image in ${images}; do + upload_to_bucket "build/$image-${STACK_VERSION}-docker-image-${ARCH}.tar.gz" ${STACK_VERSION} +done + +# Upload 'docker-build-context.tar.gz' files only when build x86_64, otherwise they will be +# overwritten when building aarch64 (or viceversa). +if [ "$ARCH" != "aarch64" ]; then + for image in logstash logstash-oss logstash-ubi8 logstash-ironbank; do + upload_to_bucket "build/${image}-${STACK_VERSION}-docker-build-context.tar.gz" ${STACK_VERSION} + done +fi + +echo "####################################################################" +echo "##################### Finishing $0" +echo "####################################################################" diff --git a/ci/dra_upload.sh b/ci/dra_upload.sh new file mode 100755 index 000000000..bf8dba0a7 --- /dev/null +++ b/ci/dra_upload.sh @@ -0,0 +1,139 @@ +#!/bin/bash -iex +#Note - ensure that the -e flag is set to properly set the $? status if any command fails +echo "####################################################################" +echo "##################### Starting $0" +echo "####################################################################" + +source ./$(dirname "$0")/dra_common.sh +PLAIN_STACK_VERSION=$STACK_VERSION + +# This is the branch selector that needs to be passed to the release-manager +# It has to be the name of the branch which originates the artifacts. +RELEASE_VER=`cat versions.yml | sed -n 's/^logstash\:[[:space:]]\([[:digit:]]*\.[[:digit:]]*\)\.[[:digit:]]*$/\1/p'` +if [ -n "$(git ls-remote --heads origin $RELEASE_VER)" ] ; then + RELEASE_BRANCH=$RELEASE_VER +else + RELEASE_BRANCH=main +fi + +if [ -n "$VERSION_QUALIFIER_OPT" ]; then + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + PLAIN_STACK_VERSION="${PLAIN_STACK_VERSION}-${VERSION_QUALIFIER_OPT}" +fi + +case "$WORKFLOW_TYPE" in + snapshot) + STACK_VERSION=${STACK_VERSION}-SNAPSHOT + ;; + staging) + ;; + *) + error "Worklflow (WORKFLOW_TYPE variable) is not set, exiting..." + ;; +esac + +info "Uploading artifacts for ${WORKFLOW_TYPE} workflow on branch: ${RELEASE_BRANCH}" + +info "Download all the artifacts for version ${STACK_VERSION}" +mkdir build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-no-jdk.deb build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}.csv build/ + +# no arch +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-no-jdk.deb build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-no-jdk.rpm build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-no-jdk.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-no-jdk.zip build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-no-jdk.deb build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-no-jdk.rpm build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-no-jdk.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-no-jdk.zip build/ + +# windows +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-windows-x86_64.zip build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-windows-x86_64.zip build/ + +# unix x86 +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-amd64.deb build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-x86_64.rpm build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-linux-x86_64.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-darwin-x86_64.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-amd64.deb build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-x86_64.rpm build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-linux-x86_64.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-darwin-x86_64.tar.gz build/ + +# unix ARM +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-arm64.deb build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-aarch64.rpm build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-linux-aarch64.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-arm64.deb build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-aarch64.rpm build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-linux-aarch64.tar.gz build/ + +if [ "$RELEASE_VER" != "7.17" ]; then + # Version 7.17.x doesn't generates ARM artifacts for Darwin + gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-darwin-aarch64.tar.gz build/ + gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-darwin-aarch64.tar.gz build/ +fi + +# docker +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-docker-build-context.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-ironbank-${STACK_VERSION}-docker-build-context.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-docker-build-context.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-ubi8-${STACK_VERSION}-docker-build-context.tar.gz build/ + +# docker x86 +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-docker-image-x86_64.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-docker-image-x86_64.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-ubi8-${STACK_VERSION}-docker-image-x86_64.tar.gz build/ + +# docker ARM +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}-docker-image-aarch64.tar.gz build/ +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-oss-${STACK_VERSION}-docker-image-aarch64.tar.gz build/ +# Commenting out ubi8 for aarch64 for the time being. This image itself is not being built, and it is not expected +# by the release manager. +# See https://github.com/elastic/infra/blob/master/cd/release/release-manager/project-configs/8.5/logstash.gradle +# for more details. +#gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-ubi8-${STACK_VERSION}-docker-image-aarch64.tar.gz build/ + +gsutil cp gs://logstash-ci-artifacts/dra/${STACK_VERSION}/logstash-${STACK_VERSION}.csv build/ + +info "Downloaded ARTIFACTS" +for file in build/logstash-*; do shasum $file;done + +mkdir -p build/distributions/dependencies-reports/ +mv build/logstash-${STACK_VERSION}.csv build/distributions/dependencies-${STACK_VERSION}.csv + +# set required permissions on artifacts and directory +chmod -R a+r build/* +chmod -R a+w build + +chmod -R a+r $PWD/* +chmod -R a+w $PWD + +# ensure the latest image has been pulled +docker pull docker.elastic.co/infra/release-manager:latest + +# collect the artifacts for use with the unified build +docker run --rm \ + --name release-manager \ + -e VAULT_ADDR \ + -e VAULT_ROLE_ID \ + -e VAULT_SECRET_ID \ + --mount type=bind,readonly=false,src="$PWD",target=/artifacts \ + docker.elastic.co/infra/release-manager:latest \ + cli collect \ + --project logstash \ + --branch ${RELEASE_BRANCH} \ + --commit "$(git rev-parse HEAD)" \ + --workflow "${WORKFLOW_TYPE}" \ + --version "${PLAIN_STACK_VERSION}" \ + --artifact-set main + +echo "####################################################################" +echo "##################### Finishing $0" +echo "####################################################################" diff --git a/ci/dra_x86_64.sh b/ci/dra_x86_64.sh new file mode 100755 index 000000000..987ff2674 --- /dev/null +++ b/ci/dra_x86_64.sh @@ -0,0 +1,63 @@ +#!/bin/bash -ie +#Note - ensure that the -e flag is set to properly set the $? status if any command fails +echo "####################################################################" +echo "##################### Starting $0" +echo "####################################################################" + +source ./$(dirname "$0")/dra_common.sh + +# WORKFLOW_TYPE is a CI externally configured environment variable that could assume "snapshot" or "staging" values +case "$WORKFLOW_TYPE" in + snapshot) + info "Building artifacts for the $WORKFLOW_TYPE workflow..." + if [ -z "$VERSION_QUALIFIER_OPT" ]; then + SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed." + else + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed." + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + fi + STACK_VERSION=${STACK_VERSION}-SNAPSHOT + info "Build complete, setting STACK_VERSION to $STACK_VERSION." + ;; + staging) + info "Building artifacts for the $WORKFLOW_TYPE workflow..." + if [ -z "$VERSION_QUALIFIER_OPT" ]; then + RELEASE=1 SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed." + else + # Qualifier is passed from CI as optional field and specify the version postfix + # in case of alpha or beta releases: + # e.g: 8.0.0-alpha1 + VERSION_QUALIFIER="$VERSION_QUALIFIER_OPT" RELEASE=1 SKIP_DOCKER=1 rake artifact:all || error "rake artifact:all build failed." + STACK_VERSION="${STACK_VERSION}-${VERSION_QUALIFIER_OPT}" + fi + info "Build complete, setting STACK_VERSION to $STACK_VERSION." + ;; + *) + error "Workflow (WORKFLOW_TYPE variable) is not set, exiting..." + ;; +esac + +info "GENERATED ARTIFACTS" +for file in build/logstash-*; do shasum $file;done + +info "Creating dependencies report for ${STACK_VERSION}" +mkdir -p build/distributions/dependencies-reports/ +bin/dependencies-report --csv=build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv + +info "GENERATED DEPENDENCIES REPORT" +shasum build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv + +info "UPLOADING TO INTERMEDIATE BUCKET" +for file in build/logstash-*; do + upload_to_bucket $file ${STACK_VERSION} +done + +# Upload Dependencies Report +upload_to_bucket "build/distributions/dependencies-reports/logstash-${STACK_VERSION}.csv" ${STACK_VERSION} + +echo "####################################################################" +echo "##################### Finishing $0" +echo "####################################################################" diff --git a/ci/integration_tests.sh b/ci/integration_tests.sh index 4954d4420..5d6576022 100755 --- a/ci/integration_tests.sh +++ b/ci/integration_tests.sh @@ -5,12 +5,16 @@ # uses at least 1g of memory, If we don't do this we can get OOM issues when # installing gems. See https://github.com/elastic/logstash/issues/5179 export JRUBY_OPTS="-J-Xmx1g" -export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" +export GRADLE_OPTS="-Xmx4g -Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" export SPEC_OPTS="--order rand --format documentation" export CI=true export OSS=true +if [ -n "$BUILD_JAVA_HOME" ]; then + GRADLE_OPTS="$GRADLE_OPTS -Dorg.gradle.java.home=$BUILD_JAVA_HOME" +fi + if [[ $1 = "setup" ]]; then echo "Setup only, no tests will be run" exit 0 diff --git a/ci/license_check.sh b/ci/license_check.sh index f9632ecba..c552d797b 100755 --- a/ci/license_check.sh +++ b/ci/license_check.sh @@ -1,7 +1,12 @@ #!/bin/bash -i -export GRADLE_OPTS="-Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" +export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" ./gradlew installDefaultGems bin/dependencies-report --csv report.csv + +result=$? + # We want this to show on the CI server cat report.csv + +exit $result diff --git a/ci/unit_tests.bat b/ci/unit_tests.bat deleted file mode 100644 index e1c1148a6..000000000 --- a/ci/unit_tests.bat +++ /dev/null @@ -1,48 +0,0 @@ -@echo off -setlocal enabledelayedexpansion - -if "%WORKSPACE%" == "" ( - echo Error: environment variable WORKSPACE must be defined. Aborting.. - exit /B 1 -) - -:: see if %WORKSPACE% is already mapped to a drive -for /f "tokens=1* delims==> " %%G IN ('subst') do ( - set sdrive=%%G - :: removing extra space - set sdrive=!sdrive:~0,2! - set spath=%%H - - if /I "!spath!" == "%WORKSPACE%" ( - set use_drive=!sdrive! - goto :found_drive - ) -) - -:: no existing mapping -:: try to assign "%WORKSPACE%" to the first drive letter which works -for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do ( - set "drive=%%i:" - subst !drive! "%WORKSPACE%" >nul - if not errorlevel 1 ( - set use_drive=!drive! - goto :found_drive - ) -) - -echo Error: unable to subst drive to path %WORKSPACE%. Aborting... -exit /B 1 - -:found_drive -echo Using drive !use_drive! for %WORKSPACE% - -:: change current directory to that drive -!use_drive! - -echo Running core tests.. -call .\gradlew.bat test --console=plain --no-daemon --info - -if errorlevel 1 ( - echo Error: failed to run core tests. Aborting.. - exit /B 1 -) diff --git a/ci/unit_tests.ps1 b/ci/unit_tests.ps1 new file mode 100644 index 000000000..b070c61ff --- /dev/null +++ b/ci/unit_tests.ps1 @@ -0,0 +1,106 @@ +<# +.SYNOPSIS + This is a gradle wrapper script to help run the Logstash unit tests on Windows. + +.PARAMETER UnnamedArgument1 + Optionally allows to specify a subset of tests. + Allows values are "ruby" or "java". + If unset, all tests are executed. + +.EXAMPLE + .\ci\unit_tests.ps1 + Runs all unit tests. + + .\ci\unit_tests.ps1 java + Runs only Java unit tests. +#> + +$selectedTestSuite="all" + +if ($args.Count -eq 1) { + $selectedTestSuite=$args[0] +} + +$startingPath = Get-Location + +## Map a drive letter to the current path to avoid path length issues + +# First, check if there is already a mapping +$currentDir = $PWD.Path +$substOutput = subst + +# Filter the subst output based on the path +$matchedLines = $substOutput | Where-Object { $_ -like "*$currentDir*" } + +if ($matchedLines) { + # $currentDir seems to be already mapped to another drive letter; switch to this drive + # Extract the drive letter from the matched lines + $driveLetter = $matchedLines | ForEach-Object { + # Split the line by colon and extract the drive letter + ($_ -split ':')[0] + } + $drivePath = "$driveLetter`:" + + Write-Output "$currentDir is already mapped to $drivePath." + Set-Location -Path $drivePath + Write-Output "Changing drive to $drivePath." +} +else { + # $currentDir isn't mapped to a drive letter, let's find a free drive letter and change to it + + # Loop through drive letters A to Z; we don't use the 'A'..'Z' for BWC with Windows 2016 / Powershell < 7 + for ($driveLetterAscii = 65; $driveLetterAscii -le 90; $driveLetterAscii++) { + $drivePath = [char]$driveLetterAscii + ":" + + # check if the drive letter is available + if (-not (Test-Path $drivePath)) { + # found a free drive letter, create the virtual drive mapping and switch to it + subst $drivePath $currentDir + + Write-Output "Mapped $currentDir to $drivePath" + Set-Location -Path $drivePath + Write-Output "Changing drive to $drivePath." + # exit the loop since we found a free drive letter + break + } + } +} + +if (Test-Path Env:BUILD_JAVA_HOME) { + if (Test-Path Env:GRADLE_OPTS) { + $env:GRADLE_OPTS=$env:GRADLE_OPTS + " " + "-Dorg.gradle.java.home=" + $env:BUILD_JAVA_HOME + } else { + $env:GRADLE_OPTS="-Dorg.gradle.java.home=" + $env:BUILD_JAVA_HOME + } +} + +$testOpts = "GRADLE_OPTS: $env:GRADLE_OPTS, BUILD_JAVA_HOME: $env:BUILD_JAVA_HOME" + +try { + if ($selectedTestSuite -eq "java") { + Write-Host "~~~ :java: Running Java tests via Gradle using $testOpts" + $CIScript = ".\gradlew.bat javaTests --console=plain --no-daemon --info" + Invoke-Expression $CIScript + } + elseif ($selectedTestSuite -eq "ruby") { + Write-Host "~~~ :ruby: Running Ruby tests via Gradle using $testOpts" + $CIScript = ".\gradlew.bat rubyTests --console=plain --no-daemon --info" + Invoke-Expression $CIScript + } + else { + Write-Host "~~~ Running all tests via Gradle using $testOpts" + $CIScript = ".\gradlew.bat test --console=plain --no-daemon --info" + Invoke-Expression $CIScript + } + + if ($LASTEXITCODE -ne 0) { + throw "Test script $CIScript failed with a non-zero code: $LASTEXITCODE" + } +} catch { + # tests failed + Write-Host "^^^ +++" + exit 1 +} + +# switch back to the path when the script started +Set-Location -Path $startingPath diff --git a/ci/unit_tests.sh b/ci/unit_tests.sh index ae0ad5921..5968dd7d4 100755 --- a/ci/unit_tests.sh +++ b/ci/unit_tests.sh @@ -5,21 +5,25 @@ # uses at least 1g of memory, If we don't do this we can get OOM issues when # installing gems. See https://github.com/elastic/logstash/issues/5179 export JRUBY_OPTS="-J-Xmx1g" -export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" +export GRADLE_OPTS="-Xmx4g -Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" export SPEC_OPTS="--order rand --format documentation" export CI=true export OSS=true export TEST_DEBUG=true +if [ -n "$BUILD_JAVA_HOME" ]; then + GRADLE_OPTS="$GRADLE_OPTS -Dorg.gradle.java.home=$BUILD_JAVA_HOME" +fi + SELECTED_TEST_SUITE=$1 if [[ $SELECTED_TEST_SUITE == $"java" ]]; then echo "Running Java Tests" - ./gradlew javaTests --console=plain + ./gradlew javaTests --console=plain --warning-mode all elif [[ $SELECTED_TEST_SUITE == $"ruby" ]]; then echo "Running Ruby unit tests" - ./gradlew rubyTests --console=plain + ./gradlew rubyTests --console=plain --warning-mode all else echo "Running Java and Ruby unit tests" ./gradlew test --console=plain diff --git a/config/jvm.options b/config/jvm.options index 401f7154b..88e90940f 100644 --- a/config/jvm.options +++ b/config/jvm.options @@ -17,9 +17,9 @@ ################################################################ ## GC configuration --XX:+UseConcMarkSweepGC --XX:CMSInitiatingOccupancyFraction=75 --XX:+UseCMSInitiatingOccupancyOnly +8-13:-XX:+UseConcMarkSweepGC +8-13:-XX:CMSInitiatingOccupancyFraction=75 +8-13:-XX:+UseCMSInitiatingOccupancyOnly ## Locale # Set the locale language @@ -42,6 +42,9 @@ # ensure UTF-8 encoding by default (e.g. filenames) -Dfile.encoding=UTF-8 +# Set enableADS to true to enable Logstash to run on certain versions of the JDK +-Djdk.io.File.enableADS=true + # use our provided JNA always versus the system one #-Djna.nosys=true @@ -49,6 +52,8 @@ -Djruby.compile.invokedynamic=true # Force Compilation -Djruby.jit.threshold=0 +# Make sure joni regexp interruptability is enabled +-Djruby.regexp.interruptible=true ## heap dumps @@ -74,3 +79,9 @@ # Entropy source for randomness -Djava.security.egd=file:/dev/urandom + +# Copy the logging context from parent threads to children +-Dlog4j2.isThreadContextMapInheritable=true + +17-:--add-opens java.base/sun.nio.ch=ALL-UNNAMED +17-:--add-opens java.base/java.io=ALL-UNNAMED diff --git a/config/log4j2.properties b/config/log4j2.properties index a9eed0a3e..234b23db4 100644 --- a/config/log4j2.properties +++ b/config/log4j2.properties @@ -4,7 +4,7 @@ name = LogstashPropertiesConfig appender.console.type = Console appender.console.name = plain_console appender.console.layout.type = PatternLayout -appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %m%n +appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c]%notEmpty{[%X{pipeline.id}]}%notEmpty{[%X{plugin.id}]} %m%n appender.json_console.type = Console appender.json_console.name = json_console @@ -14,23 +14,24 @@ appender.json_console.layout.eventEol = true appender.rolling.type = RollingFile appender.rolling.name = plain_rolling -appender.rolling.fileName = ${sys:ls.logs}/logstash-${sys:ls.log.format}.log -appender.rolling.filePattern = ${sys:ls.logs}/logstash-${sys:ls.log.format}-%d{yyyy-MM-dd}-%i.log.gz +appender.rolling.fileName = ${sys:ls.logs}/logstash-plain.log +appender.rolling.filePattern = ${sys:ls.logs}/logstash-plain-%d{yyyy-MM-dd}-%i.log.gz appender.rolling.policies.type = Policies appender.rolling.policies.time.type = TimeBasedTriggeringPolicy appender.rolling.policies.time.interval = 1 appender.rolling.policies.time.modulate = true appender.rolling.layout.type = PatternLayout -appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %-.10000m%n +appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c]%notEmpty{[%X{pipeline.id}]}%notEmpty{[%X{plugin.id}]} %m%n appender.rolling.policies.size.type = SizeBasedTriggeringPolicy appender.rolling.policies.size.size = 100MB appender.rolling.strategy.type = DefaultRolloverStrategy appender.rolling.strategy.max = 30 +appender.rolling.avoid_pipelined_filter.type = PipelineRoutingFilter appender.json_rolling.type = RollingFile appender.json_rolling.name = json_rolling -appender.json_rolling.fileName = ${sys:ls.logs}/logstash-${sys:ls.log.format}.log -appender.json_rolling.filePattern = ${sys:ls.logs}/logstash-${sys:ls.log.format}-%d{yyyy-MM-dd}-%i.log.gz +appender.json_rolling.fileName = ${sys:ls.logs}/logstash-json.log +appender.json_rolling.filePattern = ${sys:ls.logs}/logstash-json-%d{yyyy-MM-dd}-%i.log.gz appender.json_rolling.policies.type = Policies appender.json_rolling.policies.time.type = TimeBasedTriggeringPolicy appender.json_rolling.policies.time.interval = 1 @@ -42,10 +43,25 @@ appender.json_rolling.policies.size.type = SizeBasedTriggeringPolicy appender.json_rolling.policies.size.size = 100MB appender.json_rolling.strategy.type = DefaultRolloverStrategy appender.json_rolling.strategy.max = 30 +appender.json_rolling.avoid_pipelined_filter.type = PipelineRoutingFilter + +appender.routing.type = PipelineRouting +appender.routing.name = pipeline_routing_appender +appender.routing.pipeline.type = RollingFile +appender.routing.pipeline.name = appender-${ctx:pipeline.id} +appender.routing.pipeline.fileName = ${sys:ls.logs}/pipeline_${ctx:pipeline.id}.log +appender.routing.pipeline.filePattern = ${sys:ls.logs}/pipeline_${ctx:pipeline.id}.%i.log.gz +appender.routing.pipeline.layout.type = PatternLayout +appender.routing.pipeline.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %m%n +appender.routing.pipeline.policy.type = SizeBasedTriggeringPolicy +appender.routing.pipeline.policy.size = 100MB +appender.routing.pipeline.strategy.type = DefaultRolloverStrategy +appender.routing.pipeline.strategy.max = 30 rootLogger.level = ${sys:ls.log.level} rootLogger.appenderRef.console.ref = ${sys:ls.log.format}_console rootLogger.appenderRef.rolling.ref = ${sys:ls.log.format}_rolling +rootLogger.appenderRef.routing.ref = pipeline_routing_appender # Slowlog @@ -62,14 +78,14 @@ appender.json_console_slowlog.layout.eventEol = true appender.rolling_slowlog.type = RollingFile appender.rolling_slowlog.name = plain_rolling_slowlog -appender.rolling_slowlog.fileName = ${sys:ls.logs}/logstash-slowlog-${sys:ls.log.format}.log -appender.rolling_slowlog.filePattern = ${sys:ls.logs}/logstash-slowlog-${sys:ls.log.format}-%d{yyyy-MM-dd}-%i.log.gz +appender.rolling_slowlog.fileName = ${sys:ls.logs}/logstash-slowlog-plain.log +appender.rolling_slowlog.filePattern = ${sys:ls.logs}/logstash-slowlog-plain-%d{yyyy-MM-dd}-%i.log.gz appender.rolling_slowlog.policies.type = Policies appender.rolling_slowlog.policies.time.type = TimeBasedTriggeringPolicy appender.rolling_slowlog.policies.time.interval = 1 appender.rolling_slowlog.policies.time.modulate = true appender.rolling_slowlog.layout.type = PatternLayout -appender.rolling_slowlog.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %.10000m%n +appender.rolling_slowlog.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %m%n appender.rolling_slowlog.policies.size.type = SizeBasedTriggeringPolicy appender.rolling_slowlog.policies.size.size = 100MB appender.rolling_slowlog.strategy.type = DefaultRolloverStrategy @@ -77,8 +93,8 @@ appender.rolling_slowlog.strategy.max = 30 appender.json_rolling_slowlog.type = RollingFile appender.json_rolling_slowlog.name = json_rolling_slowlog -appender.json_rolling_slowlog.fileName = ${sys:ls.logs}/logstash-slowlog-${sys:ls.log.format}.log -appender.json_rolling_slowlog.filePattern = ${sys:ls.logs}/logstash-slowlog-${sys:ls.log.format}-%d{yyyy-MM-dd}-%i.log.gz +appender.json_rolling_slowlog.fileName = ${sys:ls.logs}/logstash-slowlog-json.log +appender.json_rolling_slowlog.filePattern = ${sys:ls.logs}/logstash-slowlog-json-%d{yyyy-MM-dd}-%i.log.gz appender.json_rolling_slowlog.policies.type = Policies appender.json_rolling_slowlog.policies.time.type = TimeBasedTriggeringPolicy appender.json_rolling_slowlog.policies.time.interval = 1 @@ -99,3 +115,33 @@ logger.slowlog.additivity = false logger.licensereader.name = logstash.licensechecker.licensereader logger.licensereader.level = error + +# Silence http-client by default +logger.apache_http_client.name = org.apache.http +logger.apache_http_client.level = fatal + +# Deprecation log +appender.deprecation_rolling.type = RollingFile +appender.deprecation_rolling.name = deprecation_plain_rolling +appender.deprecation_rolling.fileName = ${sys:ls.logs}/logstash-deprecation.log +appender.deprecation_rolling.filePattern = ${sys:ls.logs}/logstash-deprecation-%d{yyyy-MM-dd}-%i.log.gz +appender.deprecation_rolling.policies.type = Policies +appender.deprecation_rolling.policies.time.type = TimeBasedTriggeringPolicy +appender.deprecation_rolling.policies.time.interval = 1 +appender.deprecation_rolling.policies.time.modulate = true +appender.deprecation_rolling.layout.type = PatternLayout +appender.deprecation_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c]%notEmpty{[%X{pipeline.id}]}%notEmpty{[%X{plugin.id}]} %m%n +appender.deprecation_rolling.policies.size.type = SizeBasedTriggeringPolicy +appender.deprecation_rolling.policies.size.size = 100MB +appender.deprecation_rolling.strategy.type = DefaultRolloverStrategy +appender.deprecation_rolling.strategy.max = 30 + +logger.deprecation.name = org.logstash.deprecation, deprecation +logger.deprecation.level = WARN +logger.deprecation.appenderRef.deprecation_rolling.ref = deprecation_plain_rolling +logger.deprecation.additivity = false + +logger.deprecation_root.name = deprecation +logger.deprecation_root.level = WARN +logger.deprecation_root.appenderRef.deprecation_rolling.ref = deprecation_plain_rolling +logger.deprecation_root.additivity = false diff --git a/config/logstash.yml b/config/logstash.yml index db8ca3cd0..9abc6d86b 100644 --- a/config/logstash.yml +++ b/config/logstash.yml @@ -57,6 +57,29 @@ # # pipeline.unsafe_shutdown: false # +# Set the pipeline event ordering. Options are "auto" (the default), "true" or "false". +# "auto" will automatically enable ordering if the 'pipeline.workers' setting +# is also set to '1'. +# "true" will enforce ordering on the pipeline and prevent logstash from starting +# if there are multiple workers. +# "false" will disable any extra processing necessary for preserving ordering. +# +# pipeline.ordered: auto +# +# Sets the pipeline's default value for `ecs_compatibility`, a setting that is +# available to plugins that implement an ECS Compatibility mode for use with +# the Elastic Common Schema. +# Possible values are: +# - disabled (default) +# - v1 +# - v8 +# The default value will be `v8` in Logstash 8, making ECS on-by-default. To ensure a +# migrated pipeline continues to operate as it did before your upgrade, opt-OUT +# of ECS for the individual pipeline in its `pipelines.yml` definition. Setting +# it here will set the default for _all_ pipelines, including new ones. +# +# pipeline.ecs_compatibility: disabled +# # ------------ Pipeline Configuration Settings -------------- # # Where to fetch the pipeline configuration for the main pipeline @@ -77,6 +100,9 @@ # config.reload.automatic: false # # How often to check if the pipeline configuration has changed (in seconds) +# Note that the unit value (s) is required. Values without a qualifier (e.g. 60) +# are treated as nanoseconds. +# Setting the interval this way is not recommended and might change in later versions. # # config.reload.interval: 3s # @@ -90,6 +116,55 @@ # # config.support_escapes: false # +# ------------ API Settings ------------- +# Define settings related to the HTTP API here. +# +# The HTTP API is enabled by default. It can be disabled, but features that rely +# on it will not work as intended. +# +# api.enabled: true +# +# By default, the HTTP API is not secured and is therefore bound to only the +# host's loopback interface, ensuring that it is not accessible to the rest of +# the network. +# When secured with SSL and Basic Auth, the API is bound to _all_ interfaces +# unless configured otherwise. +# +# api.http.host: 127.0.0.1 +# +# The HTTP API web server will listen on an available port from the given range. +# Values can be specified as a single port (e.g., `9600`), or an inclusive range +# of ports (e.g., `9600-9700`). +# +# api.http.port: 9600-9700 +# +# The HTTP API includes a customizable "environment" value in its response, +# which can be configured here. +# +# api.environment: "production" +# +# The HTTP API can be secured with SSL (TLS). To do so, you will need to provide +# the path to a password-protected keystore in p12 or jks format, along with credentials. +# +# api.ssl.enabled: false +# api.ssl.keystore.path: /path/to/keystore.jks +# api.ssl.keystore.password: "y0uRp4$$w0rD" +# +# The HTTP API can be configured to require authentication. Acceptable values are +# - `none`: no auth is required (default) +# - `basic`: clients must authenticate with HTTP Basic auth, as configured +# with `api.auth.basic.*` options below +# api.auth.type: none +# +# When configured with `api.auth.type` `basic`, you must provide the credentials +# that requests will be validated against. Usage of Environment or Keystore +# variable replacements is encouraged (such as the value `"${HTTP_PASS}"`, which +# resolves to the value stored in the keystore's `HTTP_PASS` variable if present +# or the same variable from the environment) +# +# api.auth.basic.username: "logstash-user" +# api.auth.basic.password: "s3cUreP4$$w0rD" +# # ------------ Module Settings --------------- # Define modules here. Modules definitions must be defined as an array. # The simple way to see this is to prepend each `name` with a `-`, and keep @@ -178,22 +253,19 @@ # Default is 1024mb # dead_letter_queue.max_bytes: 1024mb +# If using dead_letter_queue.enable: true, the interval in milliseconds where if no further events eligible for the DLQ +# have been created, a dead letter queue file will be written. A low value here will mean that more, smaller, queue files +# may be written, while a larger value will introduce more latency between items being "written" to the dead letter queue, and +# being available to be read by the dead_letter_queue input when items are are written infrequently. +# Default is 5000. +# +# dead_letter_queue.flush_interval: 5000 + # If using dead_letter_queue.enable: true, the directory path where the data files will be stored. # Default is path.data/dead_letter_queue # # path.dead_letter_queue: # -# ------------ Metrics Settings -------------- -# -# Bind address for the metrics REST endpoint -# -# http.host: "127.0.0.1" -# -# Bind port for the metrics REST endpoint, this option also accept a range -# (9600-9700) and logstash will pick up the first available ports. -# -# http.port: 9600-9700 -# # ------------ Debugging Settings -------------- # # Options for log.level: @@ -212,6 +284,10 @@ # Where to find custom plugins # path.plugins: [] # +# Flag to output log lines of each pipeline in its separate log file. Each log filename contains the pipeline.name +# Default is false +# pipeline.separate_logs: false +# # ------------ X-Pack Settings (not applicable for OSS build)-------------- # # X-Pack Monitoring @@ -219,7 +295,13 @@ #xpack.monitoring.enabled: false #xpack.monitoring.elasticsearch.username: logstash_system #xpack.monitoring.elasticsearch.password: password +#xpack.monitoring.elasticsearch.proxy: ["http://proxy:port"] #xpack.monitoring.elasticsearch.hosts: ["https://es1:9200", "https://es2:9200"] +# an alternative to hosts + username/password settings is to use cloud_id/cloud_auth +#xpack.monitoring.elasticsearch.cloud_id: monitoring_cluster_id:xxxxxxxxxx +#xpack.monitoring.elasticsearch.cloud_auth: logstash_system:password +# another authentication alternative is to use an Elasticsearch API key +#xpack.monitoring.elasticsearch.api_key: "id:api_key" #xpack.monitoring.elasticsearch.ssl.certificate_authority: [ "/path/to/ca.crt" ] #xpack.monitoring.elasticsearch.ssl.truststore.path: path/to/file #xpack.monitoring.elasticsearch.ssl.truststore.password: password @@ -236,7 +318,13 @@ #xpack.management.pipeline.id: ["main", "apache_logs"] #xpack.management.elasticsearch.username: logstash_admin_user #xpack.management.elasticsearch.password: password +#xpack.management.elasticsearch.proxy: ["http://proxy:port"] #xpack.management.elasticsearch.hosts: ["https://es1:9200", "https://es2:9200"] +# an alternative to hosts + username/password settings is to use cloud_id/cloud_auth +#xpack.management.elasticsearch.cloud_id: management_cluster_id:xxxxxxxxxx +#xpack.management.elasticsearch.cloud_auth: logstash_admin_user:password +# another authentication alternative is to use an Elasticsearch API key +#xpack.management.elasticsearch.api_key: "id:api_key" #xpack.management.elasticsearch.ssl.certificate_authority: [ "/path/to/ca.crt" ] #xpack.management.elasticsearch.ssl.truststore.path: /path/to/file #xpack.management.elasticsearch.ssl.truststore.password: password @@ -245,3 +333,7 @@ #xpack.management.elasticsearch.ssl.verification_mode: certificate #xpack.management.elasticsearch.sniffing: false #xpack.management.logstash.poll_interval: 5s + +# X-Pack GeoIP plugin +# https://www.elastic.co/guide/en/logstash/current/plugins-filters-geoip.html#plugins-filters-geoip-manage_update +#xpack.geoip.download.endpoint: "https://geoip.elastic.co/v1/database" diff --git a/config/pipelines.yml b/config/pipelines.yml index 5ea696462..99d96c530 100644 --- a/config/pipelines.yml +++ b/config/pipelines.yml @@ -70,6 +70,15 @@ # will be dropped if they would increase the size of the dead letter queue beyond this setting. # Default is 1024mb # dead_letter_queue.max_bytes: 1024mb +# +# If using dead_letter_queue.enable: true, the interval in milliseconds where if no further events eligible for the DLQ +# have been created, a dead letter queue file will be written. A low value here will mean that more, smaller, queue files +# may be written, while a larger value will introduce more latency between items being "written" to the dead letter queue, and +# being available to be read by the dead_letter_queue input when items are are written infrequently. +# Default is 5000. +# +# dead_letter_queue.flush_interval: 5000 + # # If using dead_letter_queue.enable: true, the directory path where the data files will be stored. # Default is path.data/dead_letter_queue diff --git a/tools/dependencies-report/src/main/resources/notices/unsafe-fences-1.0-NOTICE.txt b/docker/LICENSE similarity index 99% rename from tools/dependencies-report/src/main/resources/notices/unsafe-fences-1.0-NOTICE.txt rename to docker/LICENSE index d64569567..8dada3eda 100644 --- a/tools/dependencies-report/src/main/resources/notices/unsafe-fences-1.0-NOTICE.txt +++ b/docker/LICENSE @@ -1,4 +1,3 @@ - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -179,7 +178,7 @@ APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" + boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -187,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/docker/Makefile b/docker/Makefile new file mode 100644 index 000000000..bef05b11d --- /dev/null +++ b/docker/Makefile @@ -0,0 +1,220 @@ +SHELL=/bin/bash +ELASTIC_REGISTRY ?= docker.elastic.co +PY_VERSION ?= 3.6.13 +export PATH := ./bin:$(HOME)/.pyenv/bin:$(HOME)/.pyenv/shims:./venv/bin:$(PATH) + +# Determine the version to build. +ELASTIC_VERSION := $(shell ../vendor/jruby/bin/jruby bin/elastic-version) + +ifdef STAGING_BUILD_NUM + VERSION_TAG := $(ELASTIC_VERSION)-$(STAGING_BUILD_NUM) +else + VERSION_TAG := $(ELASTIC_VERSION) +endif + +ifdef DOCKER_ARCHITECTURE + ARCHITECTURE := $(DOCKER_ARCHITECTURE) +else + ARCHITECTURE := $(shell uname -m) +endif + +IMAGE_FLAVORS ?= oss full ubi8 +DEFAULT_IMAGE_FLAVOR ?= full + +IMAGE_TAG := $(ELASTIC_REGISTRY)/logstash/logstash +HTTPD ?= logstash-docker-artifact-server + +FIGLET := pyfiglet -w 160 -f puffy + +all: build-from-local-artifacts build-from-local-oss-artifacts public-dockerfiles + +lint: venv + flake8 tests + +# Build from artifacts on the local filesystem, using an http server (running +# in a container) to provide the artifacts to the Dockerfile. +build-from-local-full-artifacts: venv dockerfile env2yaml + docker run --rm -d --name=$(HTTPD) \ + -p 8000:8000 --expose=8000 -v $(ARTIFACTS_DIR):/mnt \ + python:3 bash -c 'cd /mnt && python3 -m http.server' + timeout 120 bash -c 'until curl -s localhost:8000 > /dev/null; do sleep 1; done' + pyfiglet -f puffy -w 160 "Building: full"; \ + docker build --network=host -t $(IMAGE_TAG)-full:$(VERSION_TAG) -f $(ARTIFACTS_DIR)/Dockerfile-full data/logstash || \ + (docker kill $(HTTPD); false); \ + docker tag $(IMAGE_TAG)-full:$(VERSION_TAG) $(IMAGE_TAG):$(VERSION_TAG); + docker kill $(HTTPD) + +build-from-local-oss-artifacts: venv dockerfile env2yaml + docker run --rm -d --name=$(HTTPD) \ + -p 8000:8000 --expose=8000 -v $(ARTIFACTS_DIR):/mnt \ + python:3 bash -c 'cd /mnt && python3 -m http.server' + timeout 120 bash -c 'until curl -s localhost:8000 > /dev/null; do sleep 1; done' + pyfiglet -f puffy -w 160 "Building: oss"; \ + docker build --network=host -t $(IMAGE_TAG)-oss:$(VERSION_TAG) -f $(ARTIFACTS_DIR)/Dockerfile-oss data/logstash || \ + (docker kill $(HTTPD); false); + -docker kill $(HTTPD) + +build-from-local-ubi8-artifacts: venv dockerfile env2yaml + docker run --rm -d --name=$(HTTPD) \ + -p 8000:8000 --expose=8000 -v $(ARTIFACTS_DIR):/mnt \ + python:3 bash -c 'cd /mnt && python3 -m http.server' + timeout 120 bash -c 'until curl -s localhost:8000 > /dev/null; do sleep 1; done' + pyfiglet -f puffy -w 160 "Building: ubi8"; \ + docker build --network=host -t $(IMAGE_TAG)-ubi8:$(VERSION_TAG) -f $(ARTIFACTS_DIR)/Dockerfile-ubi8 data/logstash || \ + (docker kill $(HTTPD); false); + -docker kill $(HTTPD) + +COPY_FILES = $(ARTIFACTS_DIR)/docker/config/pipelines.yml $(ARTIFACTS_DIR)/docker/config/logstash-oss.yml $(ARTIFACTS_DIR)/docker/config/logstash-full.yml $(ARTIFACTS_DIR)/docker/config/log4j2.properties $(ARTIFACTS_DIR)/docker/pipeline/default.conf $(ARTIFACTS_DIR)/docker/bin/docker-entrypoint $(ARTIFACTS_DIR)/docker/env2yaml/env2yaml + +$(ARTIFACTS_DIR)/docker/config/pipelines.yml: data/logstash/config/pipelines.yml +$(ARTIFACTS_DIR)/docker/config/logstash-oss.yml: data/logstash/config/logstash-oss.yml +$(ARTIFACTS_DIR)/docker/config/logstash-full.yml: data/logstash/config/logstash-full.yml +$(ARTIFACTS_DIR)/docker/config/log4j2.properties: data/logstash/config/log4j2.properties +$(ARTIFACTS_DIR)/docker/pipeline/default.conf: data/logstash/pipeline/default.conf +$(ARTIFACTS_DIR)/docker/bin/docker-entrypoint: data/logstash/bin/docker-entrypoint +$(ARTIFACTS_DIR)/docker/env2yaml/env2yaml: data/logstash/env2yaml/env2yaml + +$(ARTIFACTS_DIR)/docker/%: + cp -f $< $@ + +docker_paths: + mkdir -p $(ARTIFACTS_DIR)/docker/ + mkdir -p $(ARTIFACTS_DIR)/docker/bin + mkdir -p $(ARTIFACTS_DIR)/docker/config + mkdir -p $(ARTIFACTS_DIR)/docker/env2yaml + mkdir -p $(ARTIFACTS_DIR)/docker/pipeline + +COPY_IRONBANK_FILES = $(ARTIFACTS_DIR)/ironbank/scripts/config/pipelines.yml $(ARTIFACTS_DIR)/ironbank/scripts/config/logstash.yml $(ARTIFACTS_DIR)/ironbank/scripts/config/log4j2.properties $(ARTIFACTS_DIR)/ironbank/scripts/pipeline/default.conf $(ARTIFACTS_DIR)/ironbank/scripts/bin/docker-entrypoint $(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/env2yaml.go $(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/go.mod $(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/go.sum $(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/vendor/modules.txt $(ARTIFACTS_DIR)/ironbank/LICENSE $(ARTIFACTS_DIR)/ironbank/README.md + +$(ARTIFACTS_DIR)/ironbank/scripts/config/pipelines.yml: data/logstash/config/pipelines.yml +$(ARTIFACTS_DIR)/ironbank/scripts/config/logstash.yml: data/logstash/config/logstash-full.yml +$(ARTIFACTS_DIR)/ironbank/scripts/config/log4j2.properties: data/logstash/config/log4j2.properties +$(ARTIFACTS_DIR)/ironbank/scripts/pipeline/default.conf: data/logstash/pipeline/default.conf +$(ARTIFACTS_DIR)/ironbank/scripts/bin/docker-entrypoint: data/logstash/bin/docker-entrypoint +$(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/env2yaml.go: data/logstash/env2yaml/env2yaml.go +$(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/go.mod: ironbank/go/src/env2yaml/go.mod +$(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/go.sum: ironbank/go/src/env2yaml/go.sum +$(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/vendor/modules.txt: ironbank/go/src/env2yaml/vendor/modules.txt +$(ARTIFACTS_DIR)/ironbank/LICENSE: ironbank/LICENSE +$(ARTIFACTS_DIR)/ironbank/README.md: ironbank/README.md + +$(ARTIFACTS_DIR)/ironbank/%: + cp -f $< $@ + +ironbank_docker_paths: + mkdir -p $(ARTIFACTS_DIR)/ironbank/ + mkdir -p $(ARTIFACTS_DIR)/ironbank/scripts + mkdir -p $(ARTIFACTS_DIR)/ironbank/scripts/bin + mkdir -p $(ARTIFACTS_DIR)/ironbank/scripts/config + mkdir -p $(ARTIFACTS_DIR)/ironbank/scripts/go/src/env2yaml/vendor + mkdir -p $(ARTIFACTS_DIR)/ironbank/scripts/pipeline + +public-dockerfiles: public-dockerfiles_oss public-dockerfiles_full public-dockerfiles_ubi8 public-dockerfiles_ironbank + +public-dockerfiles_full: venv templates/Dockerfile.j2 docker_paths $(COPY_FILES) + jinja2 \ + -D created_date='$(BUILD_DATE)' \ + -D elastic_version='$(ELASTIC_VERSION)' \ + -D arch='${ARCHITECTURE}' \ + -D version_tag='$(VERSION_TAG)' \ + -D image_flavor='full' \ + -D local_artifacts='false' \ + -D release='$(RELEASE)' \ + templates/Dockerfile.j2 > $(ARTIFACTS_DIR)/Dockerfile-full && \ + cd $(ARTIFACTS_DIR)/docker && \ + cp $(ARTIFACTS_DIR)/Dockerfile-full Dockerfile && \ + tar -zcf ../logstash-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline + +public-dockerfiles_oss: venv templates/Dockerfile.j2 docker_paths $(COPY_FILES) + jinja2 \ + -D created_date='$(BUILD_DATE)' \ + -D elastic_version='$(ELASTIC_VERSION)' \ + -D arch='${ARCHITECTURE}' \ + -D version_tag='$(VERSION_TAG)' \ + -D image_flavor='oss' \ + -D local_artifacts='false' \ + -D release='$(RELEASE)' \ + templates/Dockerfile.j2 > $(ARTIFACTS_DIR)/Dockerfile-oss && \ + cd $(ARTIFACTS_DIR)/docker && \ + cp $(ARTIFACTS_DIR)/Dockerfile-oss Dockerfile && \ + tar -zcf ../logstash-oss-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline + +public-dockerfiles_ubi8: venv templates/Dockerfile.j2 docker_paths $(COPY_FILES) + jinja2 \ + -D created_date='$(BUILD_DATE)' \ + -D elastic_version='$(ELASTIC_VERSION)' \ + -D arch='${ARCHITECTURE}' \ + -D version_tag='$(VERSION_TAG)' \ + -D image_flavor='ubi8' \ + -D local_artifacts='false' \ + -D release='$(RELEASE)' \ + templates/Dockerfile.j2 > $(ARTIFACTS_DIR)/Dockerfile-ubi8 && \ + cd $(ARTIFACTS_DIR)/docker && \ + cp $(ARTIFACTS_DIR)/Dockerfile-ubi8 Dockerfile && \ + tar -zcf ../logstash-ubi8-$(VERSION_TAG)-docker-build-context.tar.gz Dockerfile bin config env2yaml pipeline + +public-dockerfiles_ironbank: templates/hardening_manifest.yaml templates/Dockerfile.j2 ironbank_docker_paths $(COPY_IRONBANK_FILES) + jinja2 \ + -D elastic_version='$(ELASTIC_VERSION)' \ + templates/hardening_manifest.yaml > $(ARTIFACTS_DIR)/ironbank/hardening_manifest.yaml && \ + jinja2 \ + -D created_date='$(BUILD_DATE)' \ + -D elastic_version='$(ELASTIC_VERSION)' \ + -D arch='${ARCHITECTURE}' \ + -D version_tag='$(VERSION_TAG)' \ + -D image_flavor='ironbank' \ + -D local_artifacts='false' \ + -D release='$(RELEASE)' \ + templates/Dockerfile.j2 > $(ARTIFACTS_DIR)/Dockerfile-ironbank && \ + cd $(ARTIFACTS_DIR)/ironbank && \ + cp $(ARTIFACTS_DIR)/Dockerfile-ironbank Dockerfile && \ + tar -zcf ../logstash-ironbank-$(VERSION_TAG)-docker-build-context.tar.gz scripts Dockerfile hardening_manifest.yaml LICENSE README.md + +# Push the image to the dedicated push endpoint at "push.docker.elastic.co" +push: + $(foreach FLAVOR, $(IMAGE_FLAVORS), \ + docker tag $(IMAGE_TAG)-$(FLAVOR):$(VERSION_TAG) push.$(IMAGE_TAG)-$(FLAVOR):$(VERSION_TAG); \ + docker push push.$(IMAGE_TAG)-$(FLAVOR):$(VERSION_TAG); \ + docker rmi push.$(IMAGE_TAG)-$(FLAVOR):$(VERSION_TAG); \ + ) + # Also push the default version, with no suffix like '-oss' or '-full' + docker tag $(IMAGE_TAG):$(VERSION_TAG) push.$(IMAGE_TAG):$(VERSION_TAG); + docker push push.$(IMAGE_TAG):$(VERSION_TAG); + docker rmi push.$(IMAGE_TAG):$(VERSION_TAG); + +# The tests are written in Python. Make a virtualenv to handle the dependencies. +venv: requirements.txt + LOCAL_PY_VER=`python3 --version 2>&1`&&\ + echo "Was using $$LOCAL_PY_VER" &&\ + eval "$$(pyenv init -)" && eval "$$(pyenv init --path)" &&\ + pyenv install --skip-existing $(PY_VERSION) &&\ + pyenv local $(PY_VERSION) &&\ + python3 -mvenv venv && \ + for i in 0 1 2 3 4 5; do sleep "$i"; pip install -r requirements.txt && break; done &&\ + touch venv + +# Compile "env2yaml", the helper for configuring logstash.yml via environment +# variables. +env2yaml: + docker run --rm \ + -v "$(PWD)/data/logstash/env2yaml:/usr/src/env2yaml" \ + -w /usr/src/env2yaml golang:1 go build + +# Generate the Dockerfiles from Jinja2 templates. +dockerfile: venv templates/Dockerfile.j2 + $(foreach FLAVOR, $(IMAGE_FLAVORS), \ + jinja2 \ + -D created_date='$(BUILD_DATE)' \ + -D elastic_version='$(ELASTIC_VERSION)' \ + -D arch='${ARCHITECTURE}' \ + -D version_tag='$(VERSION_TAG)' \ + -D image_flavor='$(FLAVOR)' \ + -D local_artifacts='true' \ + templates/Dockerfile.j2 > $(ARTIFACTS_DIR)/Dockerfile-$(FLAVOR); \ + ) + +clean: + rm -f ${ARTIFACTS_DIR}/env2yaml/env2yaml ${ARTIFACTS_DIR}/Dockerfile + rm -rf venv + +.PHONY: clean push diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..ae2edfd7f --- /dev/null +++ b/docker/README.md @@ -0,0 +1,34 @@ +## Description + +This repository contains the official [Logstash][logstash] Docker image from +[Elastic][elastic]. + +Documentation can be found on the [Elastic website](https://www.elastic.co/guide/en/logstash/current/docker.html). + +[logstash]: https://www.elastic.co/products/logstash +[elastic]: https://www.elastic.co/ + +## Supported Docker versions + +The images have been tested on Docker version 18.09.2, build 6247962 + +## Requirements +A full build requires: +* Docker +* GNU Make +* Python 3.5 with Virtualenv +* JRuby 9.1+ + +## Running a build +To build an image check out the corresponding branch for the version and run the rake task +Like this: +``` +git checkout 7.0 +rake artifact:docker +# and for the OSS package +rake artifact:docker_oss +``` + +This image is built on [Centos 7][centos-7]. + +[centos-7]: https://github.com/CentOS/sig-cloud-instance-images/blob/50281d86d6ed5c61975971150adfd0ede86423bb/docker/Dockerfile diff --git a/docker/bin/elastic-version b/docker/bin/elastic-version new file mode 100755 index 000000000..3352cec34 --- /dev/null +++ b/docker/bin/elastic-version @@ -0,0 +1,24 @@ +#!/usr/bin/env ruby +# +# Print the Elastic Stack version for the current branch, as defined in +# the 'version.json' file. +# +require 'yaml' + +def get_hard_coded_version + version_info = YAML::safe_load(IO.read('../versions.yml')) + version_info['logstash'] +end + +def qualify(version) + qualifier = ENV['VERSION_QUALIFIER'] + qualifier.nil? || qualifier.empty? ? version : [version, qualifier].join("-") +end + +def get_version + version = get_hard_coded_version() + version = qualify(version) + ENV["RELEASE"] == "1" ? version : [version, "SNAPSHOT"].join("-") +end + +puts get_version diff --git a/docker/bin/pytest b/docker/bin/pytest new file mode 100755 index 000000000..90c52e1db --- /dev/null +++ b/docker/bin/pytest @@ -0,0 +1,5 @@ +#!/bin/bash +# +# A wrapper for `pytest` to handle the appropriate Testinfra arguments. + +./venv/bin/pytest --verbose --connection=docker --hosts=logstash-test $@ diff --git a/docker/data/logstash/bin/docker-entrypoint b/docker/data/logstash/bin/docker-entrypoint new file mode 100755 index 000000000..19165f149 --- /dev/null +++ b/docker/data/logstash/bin/docker-entrypoint @@ -0,0 +1,15 @@ +#!/bin/bash -e + +# Map environment variables to entries in logstash.yml. +# Note that this will mutate logstash.yml in place if any such settings are found. +# This may be undesirable, especially if logstash.yml is bind-mounted from the +# host system. +env2yaml /usr/share/logstash/config/logstash.yml + +export LS_JAVA_OPTS="-Dls.cgroup.cpuacct.path.override=/ -Dls.cgroup.cpu.path.override=/ $LS_JAVA_OPTS" + +if [[ -z $1 ]] || [[ ${1:0:1} == '-' ]] ; then + exec logstash "$@" +else + exec "$@" +fi diff --git a/docker/data/logstash/config/log4j2.properties b/docker/data/logstash/config/log4j2.properties new file mode 100644 index 000000000..663a01580 --- /dev/null +++ b/docker/data/logstash/config/log4j2.properties @@ -0,0 +1,16 @@ +status = error +name = LogstashPropertiesConfig + +appender.console.type = Console +appender.console.name = plain_console +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c]%notEmpty{[%X{pipeline.id}]}%notEmpty{[%X{plugin.id}]} %m%n + +appender.json_console.type = Console +appender.json_console.name = json_console +appender.json_console.layout.type = JSONLayout +appender.json_console.layout.compact = true +appender.json_console.layout.eventEol = true + +rootLogger.level = ${sys:ls.log.level} +rootLogger.appenderRef.console.ref = ${sys:ls.log.format}_console diff --git a/docker/data/logstash/config/logstash-full.yml b/docker/data/logstash/config/logstash-full.yml new file mode 100644 index 000000000..58e1a35d0 --- /dev/null +++ b/docker/data/logstash/config/logstash-full.yml @@ -0,0 +1,2 @@ +http.host: "0.0.0.0" +xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ] diff --git a/docker/data/logstash/config/logstash-oss.yml b/docker/data/logstash/config/logstash-oss.yml new file mode 100644 index 000000000..342d19af8 --- /dev/null +++ b/docker/data/logstash/config/logstash-oss.yml @@ -0,0 +1 @@ +http.host: "0.0.0.0" diff --git a/docker/data/logstash/config/pipelines.yml b/docker/data/logstash/config/pipelines.yml new file mode 100644 index 000000000..aed22ce73 --- /dev/null +++ b/docker/data/logstash/config/pipelines.yml @@ -0,0 +1,6 @@ +# This file is where you define your pipelines. You can define multiple. +# For more information on multiple pipelines, see the documentation: +# https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html + +- pipeline.id: main + path.config: "/usr/share/logstash/pipeline" diff --git a/docker/data/logstash/env2yaml/env2yaml.go b/docker/data/logstash/env2yaml/env2yaml.go new file mode 100644 index 000000000..f96dd8d63 --- /dev/null +++ b/docker/data/logstash/env2yaml/env2yaml.go @@ -0,0 +1,192 @@ +// env2yaml +// +// Merge environment variables into logstash.yml. +// For example, running Docker with: +// +// docker run -e pipeline.workers=6 +// +// or +// +// docker run -e PIPELINE_WORKERS=6 +// +// will cause logstash.yml to contain the line: +// +// pipeline.workers: 6 +// +package main + +import ( + "errors" + "gopkg.in/yaml.v2" + "io/ioutil" + "log" + "os" + "strings" +) + +// If the given string can be parsed as YAML, then do so and return the +// resulting entity. Otherwise, return the string unmodified. +func FromYamlIfPossible(str string) interface{} { + var entity interface{} + err := yaml.Unmarshal([]byte(str), &entity) + if err == nil { + return entity + } else { + return str + } +} + +// Given a setting name, return a downcased version with delimiters removed. +func squashSetting(setting string) string { + downcased := strings.ToLower(setting) + de_dotted := strings.Replace(downcased, ".", "", -1) + de_underscored := strings.Replace(de_dotted, "_", "", -1) + return de_underscored +} + +// Given a setting name like "pipeline.workers" or "PIPELINE_UNSAFE_SHUTDOWN", +// return the canonical setting name. eg. 'pipeline.unsafe_shutdown' +func normalizeSetting(setting string) (string, error) { + valid_settings := []string{ + "api.enabled", + "api.http.host", + "api.http.port", + "api.environment", + "node.name", + "path.data", + "pipeline.id", + "pipeline.workers", + "pipeline.output.workers", + "pipeline.batch.size", + "pipeline.batch.delay", + "pipeline.unsafe_shutdown", + "pipeline.java_execution", + "pipeline.ecs_compatibility", + "pipeline.ordered", + "pipeline.plugin_classloaders", + "pipeline.separate_logs", + "path.config", + "config.string", + "config.test_and_exit", + "config.reload.automatic", + "config.reload.interval", + "config.debug", + "config.support_escapes", + "queue.type", + "path.queue", + "queue.page_capacity", + "queue.max_events", + "queue.max_bytes", + "queue.checkpoint.acks", + "queue.checkpoint.writes", + "queue.checkpoint.interval", + "queue.drain", + "dead_letter_queue.enable", + "dead_letter_queue.max_bytes", + "dead_letter_queue.flush_interval", + "path.dead_letter_queue", + "http.enabled", // DEPRECATED: prefer `api.enabled` + "http.environment", // DEPRECATED: prefer `api.environment` + "http.host", // DEPRECATED: prefer `api.http.host` + "http.port", // DEPRECATED: prefer `api.http.port` + "log.level", + "log.format", + "modules", + "path.logs", + "path.plugins", + "monitoring.cluster_uuid", + "xpack.monitoring.enabled", + "xpack.monitoring.collection.interval", + "xpack.monitoring.elasticsearch.hosts", + "xpack.monitoring.elasticsearch.username", + "xpack.monitoring.elasticsearch.password", + "xpack.monitoring.elasticsearch.proxy", + "xpack.monitoring.elasticsearch.api_key", + "xpack.monitoring.elasticsearch.cloud_auth", + "xpack.monitoring.elasticsearch.cloud_id", + "xpack.monitoring.elasticsearch.sniffing", + "xpack.monitoring.elasticsearch.ssl.certificate_authority", + "xpack.monitoring.elasticsearch.ssl.verification_mode", + "xpack.monitoring.elasticsearch.ssl.truststore.path", + "xpack.monitoring.elasticsearch.ssl.truststore.password", + "xpack.monitoring.elasticsearch.ssl.keystore.path", + "xpack.monitoring.elasticsearch.ssl.keystore.password", + "xpack.management.enabled", + "xpack.management.logstash.poll_interval", + "xpack.management.pipeline.id", + "xpack.management.elasticsearch.hosts", + "xpack.management.elasticsearch.username", + "xpack.management.elasticsearch.password", + "xpack.management.elasticsearch.proxy", + "xpack.management.elasticsearch.api_key", + "xpack.management.elasticsearch.cloud_auth", + "xpack.management.elasticsearch.cloud_id", + "xpack.management.elasticsearch.sniffing", + "xpack.management.elasticsearch.ssl.certificate_authority", + "xpack.management.elasticsearch.ssl.verification_mode", + "xpack.management.elasticsearch.ssl.truststore.path", + "xpack.management.elasticsearch.ssl.truststore.password", + "xpack.management.elasticsearch.ssl.keystore.path", + "xpack.management.elasticsearch.ssl.keystore.password", + "xpack.geoip.download.endpoint", + "cloud.id", + "cloud.auth", + } + + for _, valid_setting := range valid_settings { + if squashSetting(setting) == squashSetting(valid_setting) { + return valid_setting, nil + } + } + return "", errors.New("Invalid setting: " + setting) +} + +func main() { + if len(os.Args) != 2 { + log.Fatalf("usage: env2yaml FILENAME") + } + settingsFilePath := os.Args[1] + + settingsFile, err := ioutil.ReadFile(settingsFilePath) + if err != nil { + log.Fatalf("error: %v", err) + } + + // Read the original settings file into a map. + settings := make(map[string]interface{}) + err = yaml.Unmarshal(settingsFile, &settings) + if err != nil { + log.Fatalf("error: %v", err) + } + + // Merge any valid settings found in the environment. + foundNewSettings := false + for _, line := range os.Environ() { + kv := strings.SplitN(line, "=", 2) + key := kv[0] + value := kv[1] + setting, err := normalizeSetting(key) + if err == nil { + foundNewSettings = true + log.Printf("Setting '%s' from environment.", setting) + settings[setting] = FromYamlIfPossible(value) + } + } + + if foundNewSettings { + output, err := yaml.Marshal(&settings) + if err != nil { + log.Fatalf("error: %v", err) + } + + stat, err := os.Stat(settingsFilePath) + if err != nil { + log.Fatalf("error: %v", err) + } + + err = ioutil.WriteFile(settingsFilePath, output, stat.Mode()) + if err != nil { + log.Fatalf("error: %v", err) + } + } +} diff --git a/docker/data/logstash/env2yaml/go.mod b/docker/data/logstash/env2yaml/go.mod new file mode 100644 index 000000000..760000742 --- /dev/null +++ b/docker/data/logstash/env2yaml/go.mod @@ -0,0 +1,5 @@ +module logstash/env2yaml + +go 1.21 + +require gopkg.in/yaml.v2 v2.4.0 diff --git a/docker/data/logstash/env2yaml/go.sum b/docker/data/logstash/env2yaml/go.sum new file mode 100644 index 000000000..75346616b --- /dev/null +++ b/docker/data/logstash/env2yaml/go.sum @@ -0,0 +1,3 @@ +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/docker/data/logstash/pipeline/default.conf b/docker/data/logstash/pipeline/default.conf new file mode 100644 index 000000000..11ce14cdf --- /dev/null +++ b/docker/data/logstash/pipeline/default.conf @@ -0,0 +1,12 @@ +input { + beats { + port => 5044 + } +} + +output { + stdout { + codec => rubydebug + } +} + diff --git a/docker/examples/logstash.conf b/docker/examples/logstash.conf new file mode 100644 index 000000000..4c20d126d --- /dev/null +++ b/docker/examples/logstash.conf @@ -0,0 +1,14 @@ +input { + heartbeat { + interval => 5 + message => 'Hello from Logstash 💓' + } +} + +output { + elasticsearch { + hosts => [ 'elasticsearch' ] + user => 'elastic' + password => 'changeme' + } +} diff --git a/docker/ironbank/LICENSE b/docker/ironbank/LICENSE new file mode 100644 index 000000000..632c3abe2 --- /dev/null +++ b/docker/ironbank/LICENSE @@ -0,0 +1,280 @@ +ELASTIC LICENSE AGREEMENT + +PLEASE READ CAREFULLY THIS ELASTIC LICENSE AGREEMENT (THIS "AGREEMENT"), WHICH +CONSTITUTES A LEGALLY BINDING AGREEMENT AND GOVERNS ALL OF YOUR USE OF ALL OF +THE ELASTIC SOFTWARE WITH WHICH THIS AGREEMENT IS INCLUDED ("ELASTIC SOFTWARE") +THAT IS PROVIDED IN OBJECT CODE FORMAT, AND, IN ACCORDANCE WITH SECTION 2 BELOW, +CERTAIN OF THE ELASTIC SOFTWARE THAT IS PROVIDED IN SOURCE CODE FORMAT. BY +INSTALLING OR USING ANY OF THE ELASTIC SOFTWARE GOVERNED BY THIS AGREEMENT, YOU +ARE ASSENTING TO THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE +WITH SUCH TERMS AND CONDITIONS, YOU MAY NOT INSTALL OR USE THE ELASTIC SOFTWARE +GOVERNED BY THIS AGREEMENT. IF YOU ARE INSTALLING OR USING THE SOFTWARE ON +BEHALF OF A LEGAL ENTITY, YOU REPRESENT AND WARRANT THAT YOU HAVE THE ACTUAL +AUTHORITY TO AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT ON BEHALF OF +SUCH ENTITY. + +Posted Date: April 20, 2018 + +This Agreement is entered into by and between Elasticsearch BV ("Elastic") and +You, or the legal entity on behalf of whom You are acting (as applicable, +"You"). + +1. OBJECT CODE END USER LICENSES, RESTRICTIONS AND THIRD PARTY OPEN SOURCE +SOFTWARE + + 1.1 Object Code End User License. Subject to the terms and conditions of + Section 1.2 of this Agreement, Elastic hereby grants to You, AT NO CHARGE and + for so long as you are not in breach of any provision of this Agreement, a + License to the Basic Features and Functions of the Elastic Software. + + 1.2 Reservation of Rights; Restrictions. As between Elastic and You, Elastic + and its licensors own all right, title and interest in and to the Elastic + Software, and except as expressly set forth in Sections 1.1, and 2.1 of this + Agreement, no other license to the Elastic Software is granted to You under + this Agreement, by implication, estoppel or otherwise. You agree not to: (i) + reverse engineer or decompile, decrypt, disassemble or otherwise reduce any + Elastic Software provided to You in Object Code, or any portion thereof, to + Source Code, except and only to the extent any such restriction is prohibited + by applicable law, (ii) except as expressly permitted in this Agreement, + prepare derivative works from, modify, copy or use the Elastic Software Object + Code or the Commercial Software Source Code in any manner; (iii) except as + expressly permitted in Section 1.1 above, transfer, sell, rent, lease, + distribute, sublicense, loan or otherwise transfer, Elastic Software Object + Code, in whole or in part, to any third party; (iv) use Elastic Software + Object Code for providing time-sharing services, any software-as-a-service, + service bureau services or as part of an application services provider or + other service offering (collectively, "SaaS Offering") where obtaining access + to the Elastic Software or the features and functions of the Elastic Software + is a primary reason or substantial motivation for users of the SaaS Offering + to access and/or use the SaaS Offering ("Prohibited SaaS Offering"); (v) + circumvent the limitations on use of Elastic Software provided to You in + Object Code format that are imposed or preserved by any License Key, or (vi) + alter or remove any Marks and Notices in the Elastic Software. If You have any + question as to whether a specific SaaS Offering constitutes a Prohibited SaaS + Offering, or are interested in obtaining Elastic's permission to engage in + commercial or non-commercial distribution of the Elastic Software, please + contact elastic_license@elastic.co. + + 1.3 Third Party Open Source Software. The Commercial Software may contain or + be provided with third party open source libraries, components, utilities and + other open source software (collectively, "Open Source Software"), which Open + Source Software may have applicable license terms as identified on a website + designated by Elastic. Notwithstanding anything to the contrary herein, use of + the Open Source Software shall be subject to the license terms and conditions + applicable to such Open Source Software, to the extent required by the + applicable licensor (which terms shall not restrict the license rights granted + to You hereunder, but may contain additional rights). To the extent any + condition of this Agreement conflicts with any license to the Open Source + Software, the Open Source Software license will govern with respect to such + Open Source Software only. Elastic may also separately provide you with + certain open source software that is licensed by Elastic. Your use of such + Elastic open source software will not be governed by this Agreement, but by + the applicable open source license terms. + +2. COMMERCIAL SOFTWARE SOURCE CODE + + 2.1 Limited License. Subject to the terms and conditions of Section 2.2 of + this Agreement, Elastic hereby grants to You, AT NO CHARGE and for so long as + you are not in breach of any provision of this Agreement, a limited, + non-exclusive, non-transferable, fully paid up royalty free right and license + to the Commercial Software in Source Code format, without the right to grant + or authorize sublicenses, to prepare Derivative Works of the Commercial + Software, provided You (i) do not hack the licensing mechanism, or otherwise + circumvent the intended limitations on the use of Elastic Software to enable + features other than Basic Features and Functions or those features You are + entitled to as part of a Subscription, and (ii) use the resulting object code + only for reasonable testing purposes. + + 2.2 Restrictions. Nothing in Section 2.1 grants You the right to (i) use the + Commercial Software Source Code other than in accordance with Section 2.1 + above, (ii) use a Derivative Work of the Commercial Software outside of a + Non-production Environment, in any production capacity, on a temporary or + permanent basis, or (iii) transfer, sell, rent, lease, distribute, sublicense, + loan or otherwise make available the Commercial Software Source Code, in whole + or in part, to any third party. Notwithstanding the foregoing, You may + maintain a copy of the repository in which the Source Code of the Commercial + Software resides and that copy may be publicly accessible, provided that you + include this Agreement with Your copy of the repository. + +3. TERMINATION + + 3.1 Termination. This Agreement will automatically terminate, whether or not + You receive notice of such Termination from Elastic, if You breach any of its + provisions. + + 3.2 Post Termination. Upon any termination of this Agreement, for any reason, + You shall promptly cease the use of the Elastic Software in Object Code format + and cease use of the Commercial Software in Source Code format. For the + avoidance of doubt, termination of this Agreement will not affect Your right + to use Elastic Software, in either Object Code or Source Code formats, made + available under the Apache License Version 2.0. + + 3.3 Survival. Sections 1.2, 2.2. 3.3, 4 and 5 shall survive any termination or + expiration of this Agreement. + +4. DISCLAIMER OF WARRANTIES AND LIMITATION OF LIABILITY + + 4.1 Disclaimer of Warranties. TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE + LAW, THE ELASTIC SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + AND ELASTIC AND ITS LICENSORS MAKE NO WARRANTIES WHETHER EXPRESSED, IMPLIED OR + STATUTORY REGARDING OR RELATING TO THE ELASTIC SOFTWARE. TO THE MAXIMUM EXTENT + PERMITTED UNDER APPLICABLE LAW, ELASTIC AND ITS LICENSORS SPECIFICALLY + DISCLAIM ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NON-INFRINGEMENT WITH RESPECT TO THE ELASTIC SOFTWARE, AND WITH + RESPECT TO THE USE OF THE FOREGOING. FURTHER, ELASTIC DOES NOT WARRANT RESULTS + OF USE OR THAT THE ELASTIC SOFTWARE WILL BE ERROR FREE OR THAT THE USE OF THE + ELASTIC SOFTWARE WILL BE UNINTERRUPTED. + + 4.2 Limitation of Liability. IN NO EVENT SHALL ELASTIC OR ITS LICENSORS BE + LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT OR INDIRECT DAMAGES, + INCLUDING, WITHOUT LIMITATION, FOR ANY LOSS OF PROFITS, LOSS OF USE, BUSINESS + INTERRUPTION, LOSS OF DATA, COST OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY + SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, IN CONNECTION WITH + OR ARISING OUT OF THE USE OR INABILITY TO USE THE ELASTIC SOFTWARE, OR THE + PERFORMANCE OF OR FAILURE TO PERFORM THIS AGREEMENT, WHETHER ALLEGED AS A + BREACH OF CONTRACT OR TORTIOUS CONDUCT, INCLUDING NEGLIGENCE, EVEN IF ELASTIC + HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +5. MISCELLANEOUS + + This Agreement completely and exclusively states the entire agreement of the + parties regarding the subject matter herein, and it supersedes, and its terms + govern, all prior proposals, agreements, or other communications between the + parties, oral or written, regarding such subject matter. This Agreement may be + modified by Elastic from time to time, and any such modifications will be + effective upon the "Posted Date" set forth at the top of the modified + Agreement. If any provision hereof is held unenforceable, this Agreement will + continue without said provision and be interpreted to reflect the original + intent of the parties. This Agreement and any non-contractual obligation + arising out of or in connection with it, is governed exclusively by Dutch law. + This Agreement shall not be governed by the 1980 UN Convention on Contracts + for the International Sale of Goods. All disputes arising out of or in + connection with this Agreement, including its existence and validity, shall be + resolved by the courts with jurisdiction in Amsterdam, The Netherlands, except + where mandatory law provides for the courts at another location in The + Netherlands to have jurisdiction. The parties hereby irrevocably waive any and + all claims and defenses either might otherwise have in any such action or + proceeding in any of such courts based upon any alleged lack of personal + jurisdiction, improper venue, forum non conveniens or any similar claim or + defense. A breach or threatened breach, by You of Section 2 may cause + irreparable harm for which damages at law may not provide adequate relief, and + therefore Elastic shall be entitled to seek injunctive relief without being + required to post a bond. You may not assign this Agreement (including by + operation of law in connection with a merger or acquisition), in whole or in + part to any third party without the prior written consent of Elastic, which + may be withheld or granted by Elastic in its sole and absolute discretion. + Any assignment in violation of the preceding sentence is void. Notices to + Elastic may also be sent to legal@elastic.co. + +6. DEFINITIONS + + The following terms have the meanings ascribed: + + 6.1 "Affiliate" means, with respect to a party, any entity that controls, is + controlled by, or which is under common control with, such party, where + "control" means ownership of at least fifty percent (50%) of the outstanding + voting shares of the entity, or the contractual right to establish policy for, + and manage the operations of, the entity. + + 6.2 "Basic Features and Functions" means those features and functions of the + Elastic Software that are eligible for use under a Basic license, as set forth + at https://www.elastic.co/subscriptions, as may be modified by Elastic from + time to time. + + 6.3 "Commercial Software" means the Elastic Software Source Code in any file + containing a header stating the contents are subject to the Elastic License or + which is contained in the repository folder labeled "x-pack", unless a LICENSE + file present in the directory subtree declares a different license. + + 6.4 "Derivative Work of the Commercial Software" means, for purposes of this + Agreement, any modification(s) or enhancement(s) to the Commercial Software, + which represent, as a whole, an original work of authorship. + + 6.5 "License" means a limited, non-exclusive, non-transferable, fully paid up, + royalty free, right and license, without the right to grant or authorize + sublicenses, solely for Your internal business operations to (i) install and + use the applicable Features and Functions of the Elastic Software in Object + Code, and (ii) permit Contractors and Your Affiliates to use the Elastic + software as set forth in (i) above, provided that such use by Contractors must + be solely for Your benefit and/or the benefit of Your Affiliates, and You + shall be responsible for all acts and omissions of such Contractors and + Affiliates in connection with their use of the Elastic software that are + contrary to the terms and conditions of this Agreement. + + 6.6 "License Key" means a sequence of bytes, including but not limited to a + JSON blob, that is used to enable certain features and functions of the + Elastic Software. + + 6.7 "Marks and Notices" means all Elastic trademarks, trade names, logos and + notices present on the Documentation as originally provided by Elastic. + + 6.8 "Non-production Environment" means an environment for development, testing + or quality assurance, where software is not used for production purposes. + + 6.9 "Object Code" means any form resulting from mechanical transformation or + translation of Source Code form, including but not limited to compiled object + code, generated documentation, and conversions to other media types. + + 6.10 "Source Code" means the preferred form of computer software for making + modifications, including but not limited to software source code, + documentation source, and configuration files. + + 6.11 "Subscription" means the right to receive Support Services and a License + to the Commercial Software. + + +GOVERNMENT END USER ADDENDUM TO THE ELASTIC LICENSE AGREEMENT + + This ADDENDUM TO THE ELASTIC LICENSE AGREEMENT (this "Addendum") applies +only to U.S. Federal Government, State Government, and Local Government +entities ("Government End Users") of the Elastic Software. This Addendum is +subject to, and hereby incorporated into, the Elastic License Agreement, +which is being entered into as of even date herewith, by Elastic and You (the +"Agreement"). This Addendum sets forth additional terms and conditions +related to Your use of the Elastic Software. Capitalized terms not defined in +this Addendum have the meaning set forth in the Agreement. + + 1. LIMITED LICENSE TO DISTRIBUTE (DSOP ONLY). Subject to the terms and +conditions of the Agreement (including this Addendum), Elastic grants the +Department of Defense Enterprise DevSecOps Initiative (DSOP) a royalty-free, +non-exclusive, non-transferable, limited license to reproduce and distribute +the Elastic Software solely through a software distribution repository +controlled and managed by DSOP, provided that DSOP: (i) distributes the +Elastic Software complete and unmodified, inclusive of the Agreement +(including this Addendum) and (ii) does not remove or alter any proprietary +legends or notices contained in the Elastic Software. + + 2. CHOICE OF LAW. The choice of law and venue provisions set forth shall +prevail over those set forth in Section 5 of the Agreement. + + "For U.S. Federal Government Entity End Users. This Agreement and any + non-contractual obligation arising out of or in connection with it, is + governed exclusively by U.S. Federal law. To the extent permitted by + federal law, the laws of the State of Delaware (excluding Delaware choice + of law rules) will apply in the absence of applicable federal law. + + For State and Local Government Entity End Users. This Agreement and any + non-contractual obligation arising out of or in connection with it, is + governed exclusively by the laws of the state in which you are located + without reference to conflict of laws. Furthermore, the Parties agree that + the Uniform Computer Information Transactions Act or any version thereof, + adopted by any state in any form ('UCITA'), shall not apply to this + Agreement and, to the extent that UCITA is applicable, the Parties agree to + opt out of the applicability of UCITA pursuant to the opt-out provision(s) + contained therein." + + 3. ELASTIC LICENSE MODIFICATION. Section 5 of the Agreement is hereby +amended to replace + + "This Agreement may be modified by Elastic from time to time, and any + such modifications will be effective upon the "Posted Date" set forth at + the top of the modified Agreement." + + with: + + "This Agreement may be modified by Elastic from time to time; provided, + however, that any such modifications shall apply only to Elastic Software + that is installed after the "Posted Date" set forth at the top of the + modified Agreement." + +V100820.0 diff --git a/docker/ironbank/README.md b/docker/ironbank/README.md new file mode 100644 index 000000000..9fade56b5 --- /dev/null +++ b/docker/ironbank/README.md @@ -0,0 +1,34 @@ +# Logstash +Logstash is part of the [Elastic Stack](https://www.elastic.co/products) along with Elasticsearch, Kibana, and Beats. Logstash is a server-side data processing pipeline that ingests data from a multitude of sources simultaneously, transforms it, and then sends it to your favorite "stash." (Ours is Elasticsearch, naturally.). Logstash has over 200 plugins, and you can write your own very easily as well. + +For more info, see + +### Installation instructions + +Please follow the documentation on [how to install Logstash with Docker](https://www.elastic.co/guide/en/logstash/current/docker.html). + +## Documentation and Getting Started + +You can find the documentation and getting started guides for Logstash +on the [elastic.co site](https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html). + +### Where to file issues and PRs + +- [Issues](https://github.com/elastic/logstash/issues) +- [PRs](https://github.com/elastic/logstash/pulls) + +**Please open new issues and pull requests for plugins under its own repository** + +For example, if you have to report an issue/enhancement for the Elasticsearch output, please do so [here](https://github.com/logstash-plugins/logstash-output-elasticsearch/issues). + +## Need Help? + +- [Logstash Forum](https://discuss.elastic.co/c/logstash) +- [Logstash Documentation](https://www.elastic.co/guide/en/logstash/current/index.html) +- [Elastic Support](https://www.elastic.co/subscriptions) + +## Project Principles + +* Community: If a newbie has a bad time, it's a bug. +* Software: Make it work, then make it right, then make it fast. +* Technology: If it doesn't do a thing today, we can make it do it tomorrow. diff --git a/docker/ironbank/go/src/env2yaml/go.mod b/docker/ironbank/go/src/env2yaml/go.mod new file mode 100644 index 000000000..a21d1f1af --- /dev/null +++ b/docker/ironbank/go/src/env2yaml/go.mod @@ -0,0 +1,5 @@ +module env2yaml + +go 1.13 + +require gopkg.in/yaml.v2 v2.3.0 diff --git a/docker/ironbank/go/src/env2yaml/go.sum b/docker/ironbank/go/src/env2yaml/go.sum new file mode 100644 index 000000000..8fabe8daa --- /dev/null +++ b/docker/ironbank/go/src/env2yaml/go.sum @@ -0,0 +1,3 @@ +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/docker/ironbank/go/src/env2yaml/vendor/modules.txt b/docker/ironbank/go/src/env2yaml/vendor/modules.txt new file mode 100644 index 000000000..bdd2db2d7 --- /dev/null +++ b/docker/ironbank/go/src/env2yaml/vendor/modules.txt @@ -0,0 +1,2 @@ +# gopkg.in/yaml.v2 v2.3.0 +gopkg.in/yaml.v2 diff --git a/docker/requirements.txt b/docker/requirements.txt new file mode 100644 index 000000000..8fffe2d3b --- /dev/null +++ b/docker/requirements.txt @@ -0,0 +1,6 @@ +flake8==3.4.1 +jinja2-cli[yaml]==0.7.0 +jinja2==2.10.1 +retrying==1.3.3 +testinfra==1.6.0 +pyfiglet diff --git a/docker/templates/Dockerfile.j2 b/docker/templates/Dockerfile.j2 new file mode 100644 index 000000000..76510dbc7 --- /dev/null +++ b/docker/templates/Dockerfile.j2 @@ -0,0 +1,198 @@ +# This Dockerfile was generated from templates/Dockerfile.j2 +{% if local_artifacts == 'false' -%} +{% set url_root = 'https://artifacts.elastic.co/downloads/logstash' -%} +{% else -%} +{% set url_root = 'http://localhost:8000' -%} +{% endif -%} + +{% if image_flavor == 'oss' -%} + {% set tarball = 'logstash-oss-%s-linux-$(arch).tar.gz' % (elastic_version) -%} + {% set license = 'Apache 2.0' -%} +{% else -%} + {% set tarball = 'logstash-%s-linux-$(arch).tar.gz' % (elastic_version) -%} + {% set license = 'Elastic License' -%} +{% endif -%} + +{% if image_flavor == 'ubi8' -%} + {% set base_image = 'docker.elastic.co/ubi8/ubi-minimal' -%} + {% set package_manager = 'microdnf' -%} + # Minimal distributions do not ship with en language packs. + {% set locale = 'C.UTF-8' -%} +{% elif image_flavor == 'ironbank' -%} + {% set package_manager = 'yum' -%} +{% else -%} + {% set base_image = 'ubuntu:20.04' -%} + {% set package_manager = 'apt-get' -%} + {% set locale = 'en_US.UTF-8' -%} +{% endif -%} + + +{% if image_flavor == 'ironbank' -%} +ARG BASE_REGISTRY=registry1.dsop.io +ARG BASE_IMAGE=ironbank/redhat/ubi/ubi8 +ARG BASE_TAG=8.6 +ARG LOGSTASH_VERSION={{ elastic_version }} +ARG GOLANG_VERSION=1.17.8 + +FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} AS env2yaml + +ARG GOLANG_VERSION + +# install golang +RUN yum update -y && yum install -y git +COPY go${GOLANG_VERSION}.linux-amd64.tar.gz /opt/go.tar.gz +RUN tar -C /usr/local -xzf /opt/go.tar.gz +ENV PATH=$PATH:/usr/local/go/bin + +# compile the env2yaml tool +COPY v2.3.0.tar.gz /opt/env2yaml.tar.gz +COPY scripts/go /usr/local/src/go +WORKDIR /usr/local/src/go/src/env2yaml +RUN mkdir -p vendor/gopkg.in +RUN tar -zxf /opt/env2yaml.tar.gz -C vendor/gopkg.in +RUN mv vendor/gopkg.in/yaml-2.3.0 vendor/gopkg.in/yaml.v2 +ENV GOPATH=/usr/local/src/go +RUN go build -mod vendor + +# stage 1: unpack logstash +FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} AS builder + +ARG LOGSTASH_VERSION + +WORKDIR /usr/share/ +COPY logstash-${LOGSTASH_VERSION}-linux-x86_64.tar.gz /opt/logstash.tar.gz + +RUN tar zxf /opt/logstash.tar.gz && \ + mv /usr/share/logstash-${LOGSTASH_VERSION} /usr/share/logstash + +FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} + +{% else -%} +FROM {{ base_image }} + +{% endif -%} + +RUN for iter in {1..10}; do \ +{% if image_flavor == 'full' or image_flavor == 'oss' -%} + export DEBIAN_FRONTEND=noninteractive && \ +{% endif -%} + {{ package_manager }} update -y && \ +{% if image_flavor != 'ironbank' -%} + {{ package_manager }} upgrade -y && \ +{% endif -%} + {{ package_manager }} install -y procps findutils tar gzip curl && \ +{% if image_flavor == 'ubi8' or image_flavor == 'ironbank' -%} + {{ package_manager }} install -y which shadow-utils && \ +{% else -%} + {{ package_manager }} install -y locales && \ +{% endif -%} + {{ package_manager }} clean all && \ +{% if image_flavor == 'full' or image_flavor == 'oss' -%} + locale-gen 'en_US.UTF-8' && \ + {{ package_manager }} clean metadata && \ +{% endif -%} + exit_code=0 && break || exit_code=$? && \ + echo "packaging error: retry $iter in 10s" && \ + {{ package_manager }} clean all && \ +{% if image_flavor == 'full' or image_flavor == 'oss' -%} + {{ package_manager }} clean metadata && \ +{% endif -%} + sleep 10; done; \ + (exit $exit_code) + +# Provide a non-root user to run the process. +RUN groupadd --gid 1000 logstash && \ + adduser --uid 1000 --gid 1000 \ + {% if image_flavor != 'ironbank' %} --home {% else %} --home-dir {% endif -%} /usr/share/logstash --no-create-home \ + logstash + +{% if image_flavor == 'ironbank' -%} +WORKDIR /usr/share/logstash +COPY --from=env2yaml /usr/local/src/go/src/env2yaml/env2yaml /usr/local/bin/env2yaml +COPY --from=builder --chown=1000:0 /usr/share/logstash /usr/share/logstash +{% endif -%} + +# Add Logstash itself. +RUN \ +{% if image_flavor != 'ironbank' -%} curl -Lo - {{ url_root }}/{{ tarball }} | \ + tar zxf - -C /usr/share && \ + mv /usr/share/logstash-{{ elastic_version }} /usr/share/logstash && \ +{% endif -%} + chown --recursive logstash:logstash /usr/share/logstash/ && \ + chown -R logstash:root /usr/share/logstash && \ + chmod -R g=u /usr/share/logstash && \ + mkdir /licenses/ && \ + mv /usr/share/logstash/NOTICE.TXT /licenses/NOTICE.TXT && \ + mv /usr/share/logstash/LICENSE.txt /licenses/LICENSE.txt && \ + find /usr/share/logstash -type d -exec chmod g+s {} \; && \ + ln -s /usr/share/logstash /opt/logstash + +{% if image_flavor != 'ironbank' -%} +WORKDIR /usr/share/logstash +{% endif -%} +ENV ELASTIC_CONTAINER true +ENV PATH=/usr/share/logstash/bin:$PATH + +# Provide a minimal configuration, so that simple invocations will provide +# a good experience. +{% if image_flavor != 'ironbank' -%} +ADD config/pipelines.yml config/pipelines.yml +{% if image_flavor == 'oss' -%} +ADD config/logstash-oss.yml config/logstash.yml +{% else -%} +ADD config/logstash-full.yml config/logstash.yml +{% endif -%} +ADD config/log4j2.properties config/ +ADD pipeline/default.conf pipeline/logstash.conf +RUN chown --recursive logstash:root config/ pipeline/ +# Ensure Logstash gets the correct locale by default. +ENV LANG={{ locale }} LC_ALL={{ locale }} +ADD env2yaml/env2yaml /usr/local/bin/ +# Place the startup wrapper script. +ADD bin/docker-entrypoint /usr/local/bin/ +{% else -%} +COPY scripts/config/pipelines.yml config/pipelines.yml +COPY scripts/config/logstash.yml config/logstash.yml +COPY scripts/config/log4j2.properties config/ +COPY scripts/pipeline/default.conf pipeline/logstash.conf +RUN chown --recursive logstash:root config/ pipeline/ +# Place the startup wrapper script. +COPY scripts/bin/docker-entrypoint /usr/local/bin/ +{% endif -%} + +RUN chmod 0755 /usr/local/bin/docker-entrypoint + +USER 1000 + +EXPOSE 9600 5044 + +{% if image_flavor != 'ironbank' -%} +LABEL org.label-schema.schema-version="1.0" \ + org.label-schema.vendor="Elastic" \ + org.opencontainers.image.vendor="Elastic" \ + org.label-schema.name="logstash" \ + org.opencontainers.image.title="logstash" \ + org.label-schema.version="{{ elastic_version }}" \ + org.opencontainers.image.version="{{ elastic_version }}" \ + org.label-schema.url="https://www.elastic.co/products/logstash" \ + org.label-schema.vcs-url="https://github.com/elastic/logstash" \ + org.label-schema.license="{{ license }}" \ + org.opencontainers.image.licenses="{{ license }}" \ + org.opencontainers.image.description="Logstash is a free and open server-side data processing pipeline that ingests data from a multitude of sources, transforms it, and then sends it to your favorite 'stash.'" \ + org.label-schema.build-date={{ created_date }} \ +{% if image_flavor == 'ubi8' -%} + license="{{ license }}" \ + description="Logstash is a free and open server-side data processing pipeline that ingests data from a multitude of sources, transforms it, and then sends it to your favorite 'stash.'" \ + name="logstash" \ + maintainer="info@elastic.co" \ + summary="Logstash is a free and open server-side data processing pipeline that ingests data from a multitude of sources, transforms it, and then sends it to your favorite 'stash.'" \ + vendor="Elastic" \ +{% endif -%} + org.opencontainers.image.created={{ created_date }} +{% endif -%} + +{% if image_flavor == 'ironbank' -%} +HEALTHCHECK --interval=10s --timeout=5s --start-period=1m --retries=5 CMD curl -I -f --max-time 5 http://localhost:9600 || exit 1 +{% endif -%} + +ENTRYPOINT ["/usr/local/bin/docker-entrypoint"] diff --git a/docker/templates/hardening_manifest.yaml b/docker/templates/hardening_manifest.yaml new file mode 100644 index 000000000..8014c8df5 --- /dev/null +++ b/docker/templates/hardening_manifest.yaml @@ -0,0 +1,72 @@ +--- +apiVersion: v1 + +# The repository name in registry1, excluding /ironbank/ +name: "elastic/logstash/logstash" + +# List of tags to push for the repository in registry1 +# The most specific version should be the first tag and will be shown +# on ironbank.dsop.io +tags: +- "{{ elastic_version }}" +- "latest" + +# Build args passed to Dockerfile ARGs +args: + BASE_IMAGE: "redhat/ubi/ubi8" + BASE_TAG: "8.6" + LOGSTASH_VERSION: "{{ elastic_version }}" + GOLANG_VERSION: "1.17.8" + +# Docker image labels +labels: + org.opencontainers.image.title: "logstash" + ## Human-readable description of the software packaged in the image + org.opencontainers.image.description: "Logstash is a free and open server-side data processing pipeline that ingests data from a multitude of sources, transforms it, and then sends it to your favorite 'stash.'" + ## License(s) under which contained software is distributed + org.opencontainers.image.licenses: "Elastic License" + ## URL to find more information on the image + org.opencontainers.image.url: "https://www.elastic.co/products/logstash" + ## Name of the distributing entity, organization or individual + org.opencontainers.image.vendor: "Elastic" + org.opencontainers.image.version: "{{ elastic_version }}" + ## Keywords to help with search (ex. "cicd,gitops,golang") + # mil.dso.ironbank.image.keywords: "FIXME" + ## This value can be "opensource" or "commercial" + # mil.dso.ironbank.image.type: "FIXME" + ## Product the image belongs to for grouping multiple images + mil.dso.ironbank.product.name: "Logstash" + +# List of resources to make available to the offline build context +resources: +- filename: logstash-{{ elastic_version }}-linux-x86_64.tar.gz + url: /logstash-{{ elastic_version }}-linux-x86_64.tar.gz + validation: + type: sha512 + value: +- filename: go1.17.8.linux-amd64.tar.gz + url: https://dl.google.com/go/go1.17.8.linux-amd64.tar.gz + validation: + type: sha256 + value: 980e65a863377e69fd9b67df9d8395fd8e93858e7a24c9f55803421e453f4f99 +- filename: v2.3.0.tar.gz + url: https://github.com/go-yaml/yaml/archive/v2.3.0.tar.gz + validation: + type: sha512 + value: ba934e9cb5ebd2346d3897308b71d13bc6471a8dbc0dc0d46a02644ee6b6553d20c20393471b81025b572a9b03e3326bde9c3e8be156474f1a1f91ff027b6a4f + +# List of project maintainers +maintainers: +- name: "Nassim Kammah" + username: "nkammah" + email: "nassim.kammah@elastic.co" +- name: "Joao Duarte" + username: "joaodiasduarte" + email: "joao@elastic.co" +- name: "Rob Bavey" + username: "robbavey" + email: "rob.bavey@elastic.co" +- name: "Kaise Cheng" + username: "kaisecheng" + email: "kaise.cheng@elastic.co" + diff --git a/docker/tox.ini b/docker/tox.ini new file mode 100644 index 000000000..1105ab911 --- /dev/null +++ b/docker/tox.ini @@ -0,0 +1,5 @@ +# pytest fixtures (which are wonderful) trigger false positives for these +# pyflakes checks. +[flake8] +ignore = F401,F811 +max-line-length = 120 diff --git a/docs/gs-index.asciidoc b/docs/gs-index.asciidoc index 23c39dd8c..feec48b87 100644 --- a/docs/gs-index.asciidoc +++ b/docs/gs-index.asciidoc @@ -20,7 +20,6 @@ release-state can be: released | prerelease | unreleased :filebeat: https://www.elastic.co/guide/en/beats/filebeat/{branch}/ :lsissue: https://github.com/elastic/logstash/issues/ :security: X-Pack Security -:stack: https://www.elastic.co/guide/en/elastic-stack/current/ [[introduction]] == Logstash Introduction diff --git a/docs/include/attributes-ls.asciidoc b/docs/include/attributes-ls.asciidoc new file mode 100644 index 000000000..714982cad --- /dev/null +++ b/docs/include/attributes-ls.asciidoc @@ -0,0 +1,10 @@ +///// +These settings control attributes for Logstash core content +in the Logstash Reference (LSR) only. + +Shared attributes for the plugin docs (in the LSR and VPR) should +go in /docs/include/attributes-lsplugins.asciidoc instead +with a corresponding change to the VPR settings in +logstash-docs/docs/versioned-plugins/include/attributes-ls-vpr.asciidoc +///// + diff --git a/docs/include/attributes-lsplugins.asciidoc b/docs/include/attributes-lsplugins.asciidoc new file mode 100644 index 000000000..25aff152c --- /dev/null +++ b/docs/include/attributes-lsplugins.asciidoc @@ -0,0 +1,12 @@ +///// +These settings control attributes in the LSR only. +They correspond to the VPR settings in logstash-docs/docs/versioned-plugins/include/attributes-ls-vpr.asciidoc +When we update one, we must update settings in the other location, + +Attribute text formatted without hard wrap is deliberate. +Otherwise, text breaks at return and content isn't displayed in its entirety. +///// + + +:ecs-default: The `pipeline.ecs_compatibility` setting is available in {logstash-ref}/logstash-settings-file.html[`logstash.yml`] and `pipelines.yml`. Any value in `pipeline.ecs_compatibility` other than `disabled` is considered BETA and unsupported until Logstash 8.0 and the final 7.x version are released. Having this pipeline level flag set will cause even patch-level upgrades to automatically consume breaking changes in the upgraded plugins, changing the shape of data the plugin produces. + diff --git a/docs/include/filter.asciidoc b/docs/include/filter.asciidoc index 12b9596b0..23035490f 100644 --- a/docs/include/filter.asciidoc +++ b/docs/include/filter.asciidoc @@ -118,8 +118,8 @@ endif::[] * Value type is {logstash-ref}/configuration-file-structure.html#boolean[boolean] * Default value is `true` -Disable or enable metric logging for this specific plugin instance -by default we record all the metrics we can, but you can disable metrics collection +Disable or enable metric logging for this specific plugin instance. +By default we record all the metrics we can, but you can disable metrics collection for a specific plugin. ifeval::["{versioned_docs}"!="true"] @@ -146,6 +146,8 @@ Adding a named ID in this case will help in monitoring Logstash when using the m } } +NOTE: Variable substitution in the `id` field only supports environment variables + and does not support the use of values from the secret store. ifeval::["{versioned_docs}"!="true"] [id="plugins-{type}s-{plugin}-periodic_flush"] diff --git a/docs/include/input.asciidoc b/docs/include/input.asciidoc index 9c6a7b802..d0b9b5cd0 100644 --- a/docs/include/input.asciidoc +++ b/docs/include/input.asciidoc @@ -112,6 +112,8 @@ input { } --------------------------------------------------------------------------------------------------- +NOTE: Variable substitution in the `id` field only supports environment variables + and does not support the use of values from the secret store. ifeval::["{versioned_docs}"!="true"] [id="plugins-{type}s-{plugin}-tags"] @@ -152,7 +154,8 @@ a new input will not override the existing type. A type set at the shipper stays with that event for its life even when sent to another Logstash server. -ifeval::["{type}"=="input" and "{plugin}"=="beats"] +ifeval::["{type}"=="input"] +ifeval::["{plugin}"=="beats"] ifeval::["{versioned_docs}"!="true"] NOTE: The Beats shipper automatically sets the `type` field on the event. @@ -168,4 +171,5 @@ Logstash, it is ignored. endif::[] endif::[] +endif::[] diff --git a/docs/include/output.asciidoc b/docs/include/output.asciidoc index e546ce8ab..5d8090645 100644 --- a/docs/include/output.asciidoc +++ b/docs/include/output.asciidoc @@ -89,4 +89,6 @@ output { } --------------------------------------------------------------------------------------------------- +NOTE: Variable substitution in the `id` field only supports environment variables + and does not support the use of values from the secret store. diff --git a/docs/include/plugin_header-core.asciidoc b/docs/include/plugin_header-core.asciidoc new file mode 100644 index 000000000..64717a25d --- /dev/null +++ b/docs/include/plugin_header-core.asciidoc @@ -0,0 +1,14 @@ +[subs="attributes"] +++++ +{plugin} +++++ + +*{ls} Core Plugin.* The {plugin} {type} plugin cannot be +installed or uninstalled independently of {ls}. + +==== Getting Help + +For questions about the plugin, open a topic in the +http://discuss.elastic.co[Discuss] forums. For bugs or feature requests, open an +issue in https://github.com/logstash[Github]. + diff --git a/docs/include/plugin_header-integration.asciidoc b/docs/include/plugin_header-integration.asciidoc new file mode 100644 index 000000000..78c85445b --- /dev/null +++ b/docs/include/plugin_header-integration.asciidoc @@ -0,0 +1,39 @@ +ifeval::["{versioned_docs}"!="true"] +[subs="attributes"] +++++ +{plugin} +++++ +endif::[] +ifeval::["{versioned_docs}"=="true"] +[subs="attributes"] +++++ +{version} +++++ +endif::[] + +* A component of the <> +* Integration version: {version} +* Released on: {release_date} +* {changelog_url}[Changelog] + +ifeval::["{versioned_docs}"!="true"] + +For other versions, see the +{lsplugindocs}/{type}-{plugin}-index.html[Versioned plugin docs]. + +endif::[] + +ifeval::["{versioned_docs}"=="true"] + +For other versions, see the <<{type}-{plugin}-index,overview list>>. + +To learn more about Logstash, see the {logstash-ref}/index.html[Logstash Reference]. + +endif::[] + +==== Getting Help + +For questions about the plugin, open a topic in the http://discuss.elastic.co[Discuss] forums. +For bugs or feature requests, open an issue in https://github.com/logstash-plugins/logstash-integration-{integration}[Github]. +For the list of Elastic supported plugins, please consult the https://www.elastic.co/support/matrix#matrix_logstash_plugins[Elastic Support Matrix]. + diff --git a/docs/include/plugin_header.asciidoc b/docs/include/plugin_header.asciidoc index 9640b1c59..d77f7195b 100644 --- a/docs/include/plugin_header.asciidoc +++ b/docs/include/plugin_header.asciidoc @@ -1,9 +1,11 @@ ifeval::["{versioned_docs}"!="true"] +[subs="attributes"] ++++ {plugin} ++++ endif::[] ifeval::["{versioned_docs}"=="true"] +[subs="attributes"] ++++ {version} ++++ @@ -28,12 +30,14 @@ To learn more about Logstash, see the {logstash-ref}/index.html[Logstash Referen endif::[] -ifeval::[("{default_plugin}"=="0") and ("{versioned_docs}"!="true")] +ifeval::["{default_plugin}"=="0"] +ifeval::["{versioned_docs}"!="true"] ==== Installation For plugins not bundled by default, it is easy to install by running +bin/logstash-plugin install logstash-{type}-{plugin}+. See {logstash-ref}/working-with-plugins.html[Working with plugins] for more details. +endif::[] endif::[] ==== Getting Help diff --git a/docs/include/version-list-intro.asciidoc b/docs/include/version-list-intro.asciidoc index 5ba89ed4b..c396d201c 100644 --- a/docs/include/version-list-intro.asciidoc +++ b/docs/include/version-list-intro.asciidoc @@ -1,6 +1,7 @@ [id="{type}-{plugin}-index"] == Versioned {plugin} {type} plugin docs +[subs="attributes"] ++++ {plugin} ++++ diff --git a/docs/index.asciidoc b/docs/index.asciidoc index ea2d01af1..64c84d5c5 100644 --- a/docs/index.asciidoc +++ b/docs/index.asciidoc @@ -1,30 +1,25 @@ [[logstash-reference]] = Logstash Reference +include::{docs-root}/shared/versions/stack/{source_branch}.asciidoc[] +include::{docs-root}/shared/attributes.asciidoc[] +include::./include/attributes-ls.asciidoc[] +include::./include/attributes-lsplugins.asciidoc[] + :include-xpack: true :lang: en :xls-repo-dir: {docdir}/../x-pack/docs/{lang} :log-repo-dir: {docdir} :plugins-repo-dir: {docdir}/../../logstash-docs/docs -:branch: master -:major-version: 7.x -:logstash_version: 7.0.0-alpha2 -:elasticsearch_version: 7.0.0-alpha2 -:kibana_version: 7.0.0-alpha2 :docker-repo: docker.elastic.co/logstash/logstash :docker-image: {docker-repo}:{logstash_version} -////////// -release-state can be: released | prerelease | unreleased -////////// -:release-state: prerelease :versioned_docs: false :jdk: 1.8.0 :lsissue: https://github.com/elastic/logstash/issues :lsplugindocs: https://www.elastic.co/guide/en/logstash-versioned-plugins/current -include::{asciidoc-dir}/../../shared/attributes.asciidoc[] [[introduction]] == Logstash Introduction @@ -62,6 +57,15 @@ include::static/advanced-pipeline.asciidoc[] :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/life-of-an-event.asciidoc include::static/life-of-an-event.asciidoc[] +// Elastic Common Schema (ECS) +:editurl!: +include::static/ecs-compatibility.asciidoc[] + +// Processing details + +:edit_url!: +include::static/processing-info.asciidoc[] + // Logstash setup :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/setting-up-logstash.asciidoc @@ -82,15 +86,15 @@ include::static/running-logstash.asciidoc[] :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/docker.asciidoc include::static/docker.asciidoc[] +:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/running-logstash-windows.asciidoc +include::static/running-logstash-windows.asciidoc[] + :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/logging.asciidoc include::static/logging.asciidoc[] :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/shutdown.asciidoc include::static/shutdown.asciidoc[] -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/setting-up-xpack.asciidoc -include::static/setup/setting-up-xpack.asciidoc[] - // Upgrading Logstash :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/upgrading.asciidoc @@ -98,46 +102,53 @@ include::static/upgrading.asciidoc[] // Configuring Logstash -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/configuration.asciidoc +:edit_url!: include::static/configuration.asciidoc[] -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/field-reference.asciidoc -include::static/field-reference.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/multiple-pipelines.asciidoc -include::static/multiple-pipelines.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/pipeline-pipeline-config.asciidoc -include::static/pipeline-pipeline-config.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/reloading-config.asciidoc -include::static/reloading-config.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/managing-multiline-events.asciidoc -include::static/managing-multiline-events.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/glob-support.asciidoc -include::static/glob-support.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/ingest-convert.asciidoc -include::static/ingest-convert.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/ls-ls-config.asciidoc -include::static/ls-ls-config.asciidoc[] - -ifdef::include-xpack[] -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/management/configuring-centralized-pipelines.asciidoc -include::static/management/configuring-centralized-pipelines.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/monitoring/configuring-logstash.asciidoc -include::static/monitoring/configuring-logstash.asciidoc[] - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/security/logstash.asciidoc +:edit_url!: include::static/security/logstash.asciidoc[] -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/setup/configuring-xls.asciidoc -include::static/setup/configuring-xls.asciidoc[] -endif::include-xpack[] +:edit_url!: +include::static/ls-to-cloud.asciidoc[] + +// Advanced Logstash Configuration + +:edit_url!: +include::static/configuration-advanced.asciidoc[] + +:edit_url!: +include::static/multiple-pipelines.asciidoc[] + +:edit_url!: +include::static/pipeline-pipeline-config.asciidoc[] + +:edit_url!: +include::static/reloading-config.asciidoc[] + +:edit_url!: +include::static/managing-multiline-events.asciidoc[] + +:edit_url!: +include::static/glob-support.asciidoc[] + +:edit_url!: +include::static/ingest-convert.asciidoc[] + +:edit_url!: +include::static/ls-ls-config.asciidoc[] + +:edit_url!: +include::static/management/configuring-centralized-pipelines.asciidoc[] + +:edit_url!: +include::static/field-reference.asciidoc[] + +//The `field-reference.asciidoc` file (included above) contains a +//`role="exclude"` attribute to pull in the topic and make it linkable in the LS +//Ref, but not appear in the main TOC. The `exclude`attribute was carrying +//forward for all subsequent topics under the `configuration.asciidoc` heading. +//This include should remain after includes for all other topics under the +//`Advanced Logstash Configuration` heading. // Centralized configuration managements :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/config-management.asciidoc @@ -166,6 +177,9 @@ include::static/filebeat-modules.asciidoc[] :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/resiliency.asciidoc include::static/resiliency.asciidoc[] +:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/mem-queue.asciidoc +include::static/mem-queue.asciidoc[] + :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/persistent-queues.asciidoc include::static/persistent-queues.asciidoc[] @@ -187,15 +201,13 @@ include::static/deploying.asciidoc[] :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/performance-checklist.asciidoc include::static/performance-checklist.asciidoc[] -// Monitoring overview +// X-Pack Monitoring +:edit_url!: +include::static/monitoring/monitoring-overview.asciidoc[] -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/monitoring.asciidoc -include::static/monitoring.asciidoc[] - -// Monitoring APIs - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/monitoring-apis.asciidoc -include::static/monitoring-apis.asciidoc[] +// Monitoring +:edit_url!: +include::static/monitoring/monitoring.asciidoc[] // Working with Plugins @@ -204,6 +216,7 @@ include::static/plugin-manager.asciidoc[] // These files do their own pass blocks +include::{plugins-repo-dir}/plugins/integrations.asciidoc[] include::{plugins-repo-dir}/plugins/inputs.asciidoc[] include::{plugins-repo-dir}/plugins/outputs.asciidoc[] include::{plugins-repo-dir}/plugins/filters.asciidoc[] @@ -211,11 +224,14 @@ include::{plugins-repo-dir}/plugins/codecs.asciidoc[] // FAQ and Troubleshooting -// :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/faq.asciidoc +:edit_url!: include::static/best-practice.asciidoc[] -// :edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/troubleshooting.asciidoc -include::static/troubleshooting.asciidoc[] +:edit_url!: +include::static/config-details.asciidoc[] + +:edit_url!: +include::static/troubleshoot/troubleshooting.asciidoc[] :edit_url: @@ -228,24 +244,36 @@ include::static/codec.asciidoc[] include::static/filter.asciidoc[] include::static/output.asciidoc[] -// Contributing a Patch to a Logstash Plugin - -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/contributing-patch.asciidoc -include::static/contributing-patch.asciidoc[] - // Logstash Community Maintainer Guide -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/maintainer-guide.asciidoc +:edit_url!: include::static/maintainer-guide.asciidoc[] // A space is necessary here ^^^ +// Plugin doc guidelines + +:edit_url: +include::static/doc-for-plugin.asciidoc[] // Submitting a Plugin -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/submitting-a-plugin.asciidoc -include::static/submitting-a-plugin.asciidoc[] +:edit_url!: +include::static/submitting-a-plugin.asciidoc[] +:edit_url!: +include::static/listing-a-plugin.asciidoc[] + +:edit_url!: +include::static/contributing-patch.asciidoc[] + +:edit_url!: +include::static/contribute-core.asciidoc[] + +// Contributing to Logstash - JAVA EDITION + +:edit_url: +include::static/contributing-java-plugin.asciidoc[] // Glossary of Terms @@ -262,6 +290,8 @@ include::static/breaking-changes.asciidoc[] // Release Notes -:edit_url: https://github.com/elastic/logstash/edit/{branch}/docs/static/releasenotes.asciidoc +:edit_url!: include::static/releasenotes.asciidoc[] +:edit_url: +include::static/redirects.asciidoc[] diff --git a/docs/static/advanced-pipeline.asciidoc b/docs/static/advanced-pipeline.asciidoc index da442a497..1e3e274ee 100644 --- a/docs/static/advanced-pipeline.asciidoc +++ b/docs/static/advanced-pipeline.asciidoc @@ -31,7 +31,7 @@ input plugin enables Logstash to receive events from the Elastic Beats framework to work with the Beats framework, such as Packetbeat and Metricbeat, can also send event data to Logstash. To install Filebeat on your data source machine, download the appropriate package from the Filebeat https://www.elastic.co/downloads/beats/filebeat[product page]. You can also refer to -{filebeat-ref}/filebeat-getting-started.html[Getting Started with Filebeat] in the Beats documentation for additional +{filebeat-ref}/filebeat-installation-configuration.html[Filebeat quick start] for additional installation instructions. After installing Filebeat, you need to configure it. Open the `filebeat.yml` file located in your Filebeat installation @@ -40,14 +40,13 @@ directory, and replace the contents with the following lines. Make sure `paths` [source,yaml] -------------------------------------------------------------------------------- -filebeat.prospectors: +filebeat.inputs: - type: log paths: - /path/to/file/logstash-tutorial.log <1> output.logstash: hosts: ["localhost:5044"] -------------------------------------------------------------------------------- - <1> Absolute path to the file or files that Filebeat processes. Save your changes. @@ -172,6 +171,9 @@ If your pipeline is working correctly, you should see a series of events like th "host" => "My-MacBook-Pro.local", "prospector" => { "type" => "log" + }, + "input" => { + "type" => "log" }, "source" => "/path/to/file/logstash-tutorial.log", "message" => "83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] \"GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1\" 200 203023 \"http://semicomplete.com/presentations/logstash-monitorama-2013/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36\"", @@ -295,6 +297,9 @@ After Logstash applies the grok pattern, the events will have the following JSON "verb" => "GET", "prospector" => { "type" => "log" + }, + "input" => { + "type" => "log" }, "source" => "/path/to/file/logstash-tutorial.log", "message" => "83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] \"GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1\" 200 203023 \"http://semicomplete.com/presentations/logstash-monitorama-2013/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36\"", @@ -409,11 +414,7 @@ Notice that the event now contains geographic location information: Now that the web logs are broken down into specific fields, you're ready to get your data into Elasticsearch. -TIP: You can run Elasticsearch on your own hardware, or use our -https://www.elastic.co/cloud/elasticsearch-service[hosted {es} Service] on -Elastic Cloud. The Elasticsearch Service is available on both AWS and GCP. -https://www.elastic.co/cloud/elasticsearch-service/signup[Try the {es} Service -for free]. +TIP: {ess-leadin} The Logstash pipeline can index the data into an Elasticsearch cluster. Edit the `first-pipeline.conf` file and replace the entire `output` section with the following @@ -534,6 +535,9 @@ You should get multiple hits back. For example: "prospector": { "type": "log" }, + "input": { + "type": "log" + }, "source": "/path/to/file/logstash-tutorial.log", "message": """83.149.9.216 - - [04/Jan/2015:05:13:45 +0000] "GET /presentations/logstash-monitorama-2013/images/frontend-response-codes.png HTTP/1.1" 200 52878 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"""", "tags": [ @@ -618,6 +622,9 @@ A few log entries come from Buffalo, so the query produces the following respons "prospector": { "type": "log" }, + "input": { + "type": "log" + }, "source": "/path/to/file/logstash-tutorial.log", "message": """198.46.149.143 - - [04/Jan/2015:05:29:13 +0000] "GET /blog/geekery/disabling-battery-in-ubuntu-vms.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+semicomplete%2Fmain+%28semicomplete.com+-+Jordan+Sissel%29 HTTP/1.1" 200 9316 "-" "Tiny Tiny RSS/1.11 (http://tt-rss.org/)"""", "tags": [ @@ -647,7 +654,7 @@ If you are using Kibana to visualize your data, you can also explore the Filebea image::static/images/kibana-filebeat-data.png[Discovering Filebeat data in Kibana] -See the {filebeat-ref}/filebeat-getting-started.html[Filebeat getting started docs] for info about loading the Kibana +See the {filebeat-ref}/filebeat-installation-configuration.html[Filebeat quick start docs] for info about loading the Kibana index pattern for Filebeat. You've successfully created a pipeline that uses Filebeat to take Apache web logs as input, parses those logs to @@ -711,7 +718,7 @@ directory, and replace the contents with the following lines. Make sure `paths` [source,shell] -------------------------------------------------------------------------------- -filebeat.prospectors: +filebeat.inputs: - type: log paths: - /var/log/*.log <1> @@ -720,7 +727,6 @@ filebeat.prospectors: output.logstash: hosts: ["localhost:5044"] -------------------------------------------------------------------------------- - <1> Absolute path to the file or files that Filebeat processes. <2> Adds a field called `type` with the value `syslog` to the event. diff --git a/docs/static/azure-module.asciidoc b/docs/static/azure-module.asciidoc index 96ac77970..14c9caea3 100644 --- a/docs/static/azure-module.asciidoc +++ b/docs/static/azure-module.asciidoc @@ -3,6 +3,12 @@ === Azure Module experimental[] +++++ +Azure Module (deprecated) +++++ + +deprecated[7.8.0, "We recommend using the Azure modules in {filebeat-ref}/filebeat-module-azure.html[{Filebeat}] and {metricbeat-ref}/metricbeat-module-azure.html[{metricbeat}], which are compliant with the {ecs-ref}/index.html[Elastic Common Schema (ECS)]"] + The https://azure.microsoft.com/en-us/overview/what-is-azure/[Microsoft Azure] module in Logstash helps you easily integrate your Azure activity logs and SQL diagnostic logs with the Elastic Stack. @@ -19,12 +25,6 @@ and decreasing overall time to resolution. The Azure module helps you: * Perform root-cause analysis by investigating user activity * Monitor and optimize your SQL DB deployments. -NOTE: The Logstash Azure module is an -https://www.elastic.co/products/x-pack[{xpack}] feature under the Basic License -and is therefore free to use. Please contact -mailto:monitor-azure@elastic.co[monitor-azure@elastic.co] for questions or more -information. - The Azure module uses the {logstash-ref}/plugins-inputs-azure_event_hubs.html[Logstash Azure Event Hubs input plugin] to consume data from Azure Event Hubs. The module taps directly into the @@ -125,7 +125,6 @@ modules: - "Endpoint=sb://...EntityPath=insights-logs-querystorewaitstatistics" - "Endpoint=sb://...EntityPath=insights-logs-timeouts" ----- - <1> The `consumer_group` (optional) is highly recommended. See <>. <2> The `storage_connection` (optional) sets the Azure Blob Storage connection for tracking processing state for Event Hubs when scaling out a deployment with multiple Logstash instances. See <> for additional details. <3> See <> for guidelines on choosing an appropriate number of threads. @@ -168,7 +167,7 @@ modules: var.input.azure_event_hubs.event_hubs: - ["name", "initial_position", "storage_container", "decorate_events", "event_hub_connection"] <3> - ["insights-operational-logs", "TAIL", "activity-logs1", "true", "Endpoint=sb://...EntityPath=insights-operational-logs"] - - ["insights-operational-logs", "TAIL", "activity_logs2",<4> "true", "Endpoint=sb://...EntityPath=insights-operational-logs"] + - ["insights-operational-logs", "TAIL", "activity_logs2", "true", "Endpoint=sb://...EntityPath=insights-operational-logs"] <4> - ["insights-metrics-pt1m", "TAIL", "dbmetrics", "true", "Endpoint=sb://...EntityPath=insights-metrics-pt1m"] - ["insights-logs-blocks", "TAIL", "dbblocks", "true", "Endpoint=sb://...EntityPath=insights-logs-blocks"] - ["insights-logs-databasewaitstatistics", "TAIL", "dbwaitstats", "false", "Endpoint=sb://...EntityPath=insights-logs-databasewaitstatistics"] @@ -177,7 +176,6 @@ modules: - ["insights-logs-querystorewaitstatistics", "TAIL", "dbstorewaitstats", "true", "Endpoint=sb://...EntityPath=insights-logs-querystorewaitstatistics"] - ["insights-logs-timeouts", "TAIL", "dbtimeouts", "true", "Endpoint=sb://...EntityPath=insights-logs-timeouts"] ----- - <1> You can specify global Event Hub options. They will be overridden by any configurations specified in the event_hubs option. <2> See <> for guidelines on choosing an appropriate number of threads. <3> The header array must be defined with name in the first position. Other options can be defined in any order. The per Event Hub configuration takes precedence. Any values not defined per Event Hub use the global config value. @@ -222,32 +220,59 @@ https://portal.azure.com[Azure Portal]`-> Blob Storage account -> Access keys`. Here are some guidelines to help you achieve a successful deployment, and avoid data conflicts that can cause lost events. -* **Create a {ls} consumer group.** +* <> +* <> +* <> + +[[azure-bp-group]] +====== Create a {ls} consumer group + Create a new consumer group specifically for {ls}. Do not use the $default or any other consumer group that might already be in use. Reusing consumer groups among non-related consumers can cause unexpected behavior and possibly lost events. All {ls} instances should use the same consumer group so that they can work together for processing events. -* **Avoid overwriting offset with multiple Event Hubs.** + +[[azure-bp-multihub]] +====== Avoid overwriting offset with multiple Event Hubs + The offsets (position) of the Event Hubs are stored in the configured Azure Blob store. The Azure Blob store uses paths like a file system to store the offsets. If the paths between multiple Event Hubs overlap, then the offsets may be stored incorrectly. + To avoid duplicate file paths, use the advanced configuration model and make sure that at least one of these options is different per Event Hub: -** storage_connection -** storage_container (defaults to Event Hub name if not defined) -** consumer_group -* **Set number of threads correctly.** -The number of threads should equal the number of Event Hubs plus one (or more). -Each Event Hub needs at least one thread. An additional thread is needed to help -coordinate the other threads. The number of threads should not exceed the number of Event Hubs multiplied by the -number of partitions per Event Hub plus one. Threads are -currently available only as a global setting. -** Sample: Event Hubs = 4. Partitions on each Event Hub = 3. + +* storage_connection +* storage_container (defaults to Event Hub name if not defined) +* consumer_group + +[[azure-bp-threads]] +====== Set number of threads correctly + +By default, the number of threads used to service all event hubs is `16`. And +while this may be sufficient for most use cases, throughput may be improved by +refining this number. When servicing a large number of partitions across one or +more event hubs, setting a higher value may result in improved performance. The +maximum number of threads is not strictly bound by the total number of +partitions being serviced, but setting the value much higher than that may mean +that some threads are idle. + +NOTE: The number of threads *must* be greater than or equal to the number of Event +hubs plus one. + +NOTE: Threads are currently available only as a global setting across all event hubs +in a single `azure_event_hubs` input definition. However if your configuration +includes multiple `azure_event_hubs` inputs, the threads setting applies +independently to each. + +**Sample scenarios:** + +* Event Hubs = 4. Partitions on each Event Hub = 3. Minimum threads is 5 (4 Event Hubs plus one). Maximum threads is 13 (4 Event Hubs times 3 partitions plus one). -** If you're collecting activity logs from only one specified event hub instance, +* If you're collecting activity logs from only one specified event hub instance, then only 2 threads (1 Event Hub plus one) are required. [[azure-module-setup]] @@ -429,7 +454,7 @@ containers. ===== `threads` * Value type is <> * Minimum value is `2` -* Default value is `4` +* Default value is `16` Total number of threads used to process events. The value you set here applies to all Event Hubs. Even with advanced configuration, this value is a global @@ -494,7 +519,7 @@ the event originated. ==== Deploying the module in production Use security best practices to secure your configuration. -See {stack-ov}/elasticsearch-security.html[Securing the {stack}] for details and recommendations. +See {ref}/secure-cluster.html[Secure a cluster] for details and recommendations. [[azure-resources]] ==== Microsoft Azure resources diff --git a/docs/static/best-practice.asciidoc b/docs/static/best-practice.asciidoc index 2be607b14..a49b8f567 100644 --- a/docs/static/best-practice.asciidoc +++ b/docs/static/best-practice.asciidoc @@ -1,5 +1,5 @@ [[tips]] -== Tips and Best Practices +== Tips and best practices We are adding more tips and best practices, so please check back soon. If you have something to add, please: @@ -13,11 +13,11 @@ https://github.com/elastic/logstash/issues, or Also check out the https://discuss.elastic.co/c/logstash[Logstash discussion forum]. -[float] +[discrete] [[tip-cli]] === Command line -[float] +[discrete] [[tip-windows-cli]] ==== Shell commands on Windows OS @@ -38,11 +38,11 @@ Use this format on Windows systems: bin\logstash -e "input { stdin { } } output { stdout {} }" ----- -[float] +[discrete] [[tip-pipelines]] === Pipelines -[float] +[discrete] [[tip-pipeline-mgmt]] ==== Pipeline management @@ -55,15 +55,55 @@ no longer specify local pipeline configurations. The `pipelines.yml` file and settings such as `path.config` and `config.string` are inactive when centralized pipeline management is enabled. -[float] + +[discrete] +[[tip-filters]] +=== Tips using filters + +[discrete] +[[tip-check-field]] +==== Check to see if a boolean field exists + +You can use the mutate filter to see if a boolean field exists. + +{ls} supports [@metadata] fields--fields that are not visible for output plugins and live only in the filtering state. +You can use [@metadata] fields with the mutate filter to see if a field exists. + +[source,ruby] +----- +filter { + mutate { + # we use a "temporal" field with a predefined arbitrary known value that + # lives only in filtering stage. + add_field => { "[@metadata][test_field_check]" => "a null value" } + + # we copy the field of interest into that temporal field. + # If the field doesn't exist, copy is not executed. + copy => { "test_field" => "[@metadata][test_field_check]" } + } + + + # now we now if testField didn't exists, our field will have + # the initial arbitrary value + if [@metadata][test_field_check] == "a null value" { + # logic to execute when [test_field] did not exist + mutate { add_field => { "field_did_not_exist" => true }} + } else { + # logic to execute when [test_field] existed + mutate { add_field => { "field_did_exist" => true }} + } +} +----- + +[discrete] [[tip-kafka]] === Kafka -[float] +[discrete] [[tip-kafka-settings]] ==== Kafka settings -[float] +[discrete] [[tip-kafka-partitions]] ===== Partitions per topic @@ -80,7 +120,7 @@ exceed 2000. Err on the side of over-partitioning up to a total 1000 partitions overall. Try not to exceed 1000 partitions. -[float] +[discrete] [[tip-kafka-threads]] ===== Consumer threads @@ -91,11 +131,11 @@ value of `1` then iterate your way up. The value should in general be lower than the number of pipeline workers. Values larger than 4 rarely result in performance improvement. -[float] +[discrete] [[tip-kafka-pq-persist]] ==== Kafka input and persistent queue (PQ) -[float] +[discrete] [[tip-kafka-offset-commit]] ===== Kafka offset commits @@ -107,6 +147,3 @@ No, we can’t make that guarantee. Offsets are committed to Kafka periodically. writes to the PQ are slow or blocked, offsets for events that haven’t safely reached the PQ can be committed. - - - diff --git a/docs/static/breaking-changes.asciidoc b/docs/static/breaking-changes.asciidoc index 803cc8005..e93490c23 100644 --- a/docs/static/breaking-changes.asciidoc +++ b/docs/static/breaking-changes.asciidoc @@ -1,26 +1,230 @@ [[breaking-changes]] == Breaking Changes -We strive to maintain backward compatibility between minor versions (6.x to 6.y, +We strive to maintain backward compatibility between minor versions (7.x to 7.y, for example) so that you can upgrade without changing any configuration files. -Breaking changes are usually introduced only between major versions (such as 5.x -to 6.y). On occasion, we are forced to break compatibility within a given major release +Breaking changes are usually introduced only between major versions (such as 6.x +to 7.y). On occasion, we are forced to break compatibility within a given major release to ensure correctness of operation. This section covers the changes that you need to be aware of when migrating to -Logstash 6.0.0 and later. +Logstash 7.0.0 and later. -NOTE: Migrating directly between non-consecutive major versions (1.x to -6.x) is not recommended. +NOTE: Migrating directly between non-consecutive major versions (5.x to +7.x) is not recommended. See these topics for a description of breaking changes: +* <> * <> * <> See also <>. +//NOTE: The notable-breaking-changes tagged regions are re-used in the +//Installation and Upgrade Guide + +[[breaking-7.0]] +=== Breaking changes in 7.0 + +Here are the breaking changes for {ls} 7.0. + +// tag::notable-breaking-changes[] [float] +==== Changes in Logstash Core + +These changes can affect any instance of Logstash that uses impacted features. +Changes to Logstash Core are plugin agnostic. + +[float] +[[java-exec-default]] +===== Java execution engine enabled by default + +The new Java execution engine is enabled by default. It features faster +performance, reduced memory usage, and lower config startup and reload times. + +For more information, see the blog post about the +https://www.elastic.co/blog/meet-the-new-logstash-java-execution-engine[initial +release of the Java execution engine]. + +We went to considerable lengths to make this change seamless. Still, it's a big +change. If you notice different behaviors that might be related, please +https://github.com/elastic/logstash/issues[open a GitHub issue] to let us +know. + +[float] +[[beats-ecs]] +===== Beats conform to the Elastic Common Schema (ECS) + +As of 7.0, Beats fields conform to the {ecs-ref}/index.html[Elastic Common +Schema (ECS)]. + +If you upgrade Logstash before you upgrade Beats, the payloads continue to use +the pre-ECS schema. If you upgrade your Beats before you upgrade Logstash, then +you'll get payloads with the ECS schema in advance of any Logstash upgrade. + +If you see mapping conflicts after upgrade, that is an indication that the +Beats/ECS change is influencing the data reaching existing indices. + +See the *{beats} Platform Reference* for more information on +{beats-ref}/upgrading-6-to-7.html#enable-ecs-compatibility[Beats and ECS]. + +[float] +[[field-ref-strict]] +===== Field Reference parser is more strict + +The Field Reference parser, which is used to interpret references to fields in +your pipelines and plugins, was made to be more strict and will now reject +inputs that are either ambiguous or illegal. Since 6.4, Logstash has emitted +warnings when encountering input that is ambiguous, and allowed an early opt-in +of strict-mode parsing either by providing the command-line flag +`--field-reference-parser STRICT` or by adding `config.field_reference.parser: +STRICT` to `logstash.yml`. + +Here's an example. + +*Before* + +[source,txt] +----- +logstash-6.7.0 % echo "hello"| bin/logstash -e 'filter { mutate { replace => { "message" => "%{[[]]message]} you" } } }' +[2019-04-05T16:52:18,691][WARN ][org.logstash.FieldReference] Detected ambiguous Field Reference `[[]]message]`, which we expanded to the path `[message]`; in a future release of Logstash, ambiguous Field References will not be expanded. +{ + "message" => "hello you", + "@version" => "1", + "@timestamp" => 2019-04-05T15:52:18.546Z, + "type" => "stdin", + "host" => "overcraft.lan" +} +----- + +*After* + +[source,txt] +----- +logstash-7.0.0 % echo "hello"| bin/logstash -e 'filter { mutate { replace => { "message" => "%{[[]]message]} you" } } }' +[2019-04-05T16:48:09,135][FATAL][logstash.runner ] An unexpected error occurred! {:error=>java.lang.IllegalStateException: org.logstash.FieldReference$IllegalSyntaxException: Invalid FieldReference: `[[]]message]` +[2019-04-05T16:48:09,167][ERROR][org.logstash.Logstash ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit +----- + + +[float] +==== Changes in Logstash Plugins + +With 7.0.0, we have taken the opportunity to upgrade a number of bundled plugins +to their newest major version, absorbing their breaking changes into the +Logstash distribution. + +While these upgrades included new features and important fixes, only the +breaking changes are called out below. + +NOTE: The majority of the changes to plugins are the removal of previously-deprecated +and now-obsolete options. Please ensure that your pipeline +configurations do not use these removed options before upgrading. + +[float] +===== Codec Plugins + +Here are the breaking changes for codec plugins. + +*CEF Codec* + +* Removed obsolete `sev` option +* Removed obsolete `deprecated_v1_fields` option + +*Netflow Codec* + +* Changed decoding of application_id to implement RFC6759; the format changes from a pair of colon-separated ids (e.g. `0:40567`) to a variable number of double-dot-separated ids (e.g. `0..12356..40567`). + +[float] +===== Filter Plugins + +Here are the breaking changes for filter plugins. + +*Clone Filter* + +* Make `clones` a required option + +*Geoip Filter* + +* Removed obsolete `lru_cache_size` option + +*HTTP Filter* + +* Removed obsolete `ssl_certificate_verify` option + +[float] +===== Input Plugins + +Here are the breaking changes for input plugins. + +*Beats Input* + +* Removed obsolete `congestion_threshold` option +* Removed obsolete `target_field_for_codec` option +* Changed default value of `add_hostname` to false + +NOTE: In Beats 7.0.0, the fields exported by Beats _to_ the Logstash Beats Input +conform to the {ecs-ref}/index.html[Elastic Common Schema (ECS)]. Many of the +exported fields have been renamed, so you may need to modify your pipeline +configurations to access them at their new locations prior to upgrading your +Beats. See {beats-ref}/breaking-changes-7.0.html[Beats Breaking changes in 7.0] +for the full list of changed names. + +*HTTP Input* + +* Removed obsolete `ssl_certificate_verify` option + +*HTTP Poller Input* + +* Removed obsolete `interval` option +* Removed obsolete `ssl_certificate_verify` option + +*Tcp Input* + +* Removed obsolete `data_timeout` option +* Removed obsolete `ssl_cacert` option + +[float] +===== Output Plugins + +Here are the breaking changes for output plugins. + +*Elasticsearch Output* + +* {es} {ref}/index-lifecycle-management.html[Index lifecycle management (ILM)] is +auto-detected and enabled by default if your {es} cluster supports it. +* Remove support for parent/child (still support join data type) since we don't +support multiple document types any more +* Removed obsolete `flush_size` option +* Removed obsolete `idle_flush_time` option + +*HTTP Output* + +* Removed obsolete `ssl_certificate_verify` option + +*Kafka Output* + +* Removed obsolete `block_on_buffer_full` option +* Removed obsolete `ssl` option +* Removed obsolete `timeout_ms` option + +*Redis Output* + +* Removed obsolete `queue` option +* Removed obsolete `name` option + +*Sqs Output* + +* Removed obsolete `batch` option +* Removed obsolete `batch_timeout` option + +*Tcp Output* + +* Removed obsolete `message_format` option + +// end::notable-breaking-changes[] + [[breaking-pq]] === Breaking change across PQ versions prior to Logstash 6.3.0 @@ -29,7 +233,6 @@ and have the persistent queue enabled, we strongly recommend that you drain or delete the persistent queue before you upgrade. See <> for information and instructions. -[float] [[breaking-6.0]] === Breaking changes in 6.0 @@ -38,13 +241,15 @@ Here are the breaking changes for 6.0. [float] ==== Changes in Logstash Core -These changes can impact any instance of Logstash and are plugin agnostic, but only if you are using the features that are impacted. +These changes can affect any instance of Logstash that uses impacted features. +Changes to Logstash Core are plugin agnostic. [float] ===== Application Settings * The setting `config.reload.interval` has been changed to use time value strings such as `5m`, `10s` etc. Previously, users had to convert this to a millisecond time value themselves. + Note that the unit qualifier (`s`) is required. [float] ===== RPM/Deb package changes @@ -62,7 +267,7 @@ These changes can impact any instance of Logstash and are plugin agnostic, but o [float] ===== List of plugins bundled with Logstash -The following plugins were removed from the 5.0 default bundle based on usage data. You can still install these plugins manually: +The following plugins were removed from the default bundle based on usage data. You can still install these plugins manually: * logstash-codec-oldlogstashjson * logstash-input-couchdb_changes diff --git a/docs/static/codec.asciidoc b/docs/static/codec.asciidoc index 6b0fd558a..f3ed7fd7e 100644 --- a/docs/static/codec.asciidoc +++ b/docs/static/codec.asciidoc @@ -10,6 +10,6 @@ :getstarted: Let's step through creating a {plugintype} plugin using the https://github.com/logstash-plugins/logstash-codec-example/[example {plugintype} plugin]. -:methodheader: Logstash codecs must implement the `register` method, and the `decode` method or the `encode` method (or both). +:methodheader: pass:m[Logstash codecs must implement the `register` method, and the `decode` method or the `encode` method (or both).] include::include/pluginbody.asciidoc[] diff --git a/docs/static/config-details.asciidoc b/docs/static/config-details.asciidoc new file mode 100644 index 000000000..af0bd396a --- /dev/null +++ b/docs/static/config-details.asciidoc @@ -0,0 +1,118 @@ +[[jvm-settings]] +=== JVM settings + +Configure JVM settings in the `jvm.options` <>. JVM settings can also be set via the <> environment variable. + +This file contains a line-delimited list of JVM arguments following a special syntax: + +* lines consisting of whitespace only are ignored +* lines beginning with `#` are treated as comments and are ignored ++ +[source,text] +------------------------------------- +# this is a comment +------------------------------------- + +* lines beginning with a `-` are treated as a JVM option that applies +independent of the version of the JVM ++ +[source,text] +------------------------------------- +-Xmx2g +------------------------------------- + +* lines beginning with a number followed by a `:` followed by a `-` are treated +as a JVM option that applies only if the version of the JVM matches the number ++ +[source,text] +------------------------------------- +8:-Xmx2g +------------------------------------- + +* lines beginning with a number followed by a `-` followed by a `:` are treated +as a JVM option that applies only if the version of the JVM is greater than or +equal to the number ++ +[source,text] +------------------------------------- +8-:-Xmx2g +------------------------------------- + +* lines beginning with a number followed by a `-` followed by a number followed +by a `:` are treated as a JVM option that applies only if the version of the +JVM falls in the inclusive range of the two numbers ++ +[source,text] +------------------------------------- +8-9:-Xmx2g +------------------------------------- + +* all other lines are rejected + + +[[heap-size]] +==== Setting the JVM heap size + +Here are some tips for adjusting the JVM heap size: + +// tag::heap-size-tips[] +* The recommended heap size for typical ingestion scenarios should be no +less than 4GB and no more than 8GB. + +* CPU utilization can increase unnecessarily if the heap size is too low, +resulting in the JVM constantly garbage collecting. You can check for this issue +by doubling the heap size to see if performance improves. + +* Do not increase the heap size past the amount of physical memory. Some memory +must be left to run the OS and other processes. As a general guideline for most +installations, don't exceed 50-75% of physical memory. The more memory you have, +the higher percentage you can use. + +* Set the minimum (Xms) and maximum (Xmx) heap allocation size to the same +value to prevent the heap from resizing at runtime, which is a very costly +process. + +* You can make more accurate measurements of the JVM heap by using either the +`jmap` command line utility distributed with Java or by using VisualVM. For more +info, see <>. +// end::heap-size-tips[] + +[[stacks-size]] +==== Setting the JVM stack size + +Large configurations may require additional JVM stack memory. +If you see a stack overflow error, try increasing the JVM stack size. +Add an entry similar to this one in the `jvm.options` +<>: + +[source,sh] +----- +-Xss4M +----- + +Note that the default stack size is different per platform and per OS +flavor. You can find out what the default is by running: + +[source,sh] +----- +java -XX:+PrintFlagsFinal -version | grep ThreadStackSize +----- + +Depending on the default stack size, start by multiplying by 4x, then 8x, and +then 16x until the overflow error resolves. + +[[ls-java-opts]] +==== Using `LS_JAVA_OPTS` + +The `LS_JAVA_OPTS` environment variable can also be used to override JVM settings in the `jvm.options` file <>. +The content of this variable is additive to options configured in the `jvm.options` file, and will override any settings that exist in both places. + +For example to set a different locale to launch {ls} instance: + +[source,sh] +----- +LS_JAVA_OPTS="-Duser.country=DE -Duser.language=de" bin/logstash -e 'input { stdin { codec => json } }' +----- + + + diff --git a/docs/static/config-management.asciidoc b/docs/static/config-management.asciidoc index a5d3dd071..2960f651c 100644 --- a/docs/static/config-management.asciidoc +++ b/docs/static/config-management.asciidoc @@ -9,7 +9,5 @@ only. For information about other config management tools, such as Puppet and Chef, see the documentation for those projects. Also take a look at the https://forge.puppet.com/elastic/logstash[Logstash Puppet module documentation]. -ifdef::include-xpack[] :edit_url!: include::management/centralized-pipelines.asciidoc[] -endif::include-xpack[] diff --git a/docs/static/configuration-advanced.asciidoc b/docs/static/configuration-advanced.asciidoc new file mode 100644 index 000000000..54d02619b --- /dev/null +++ b/docs/static/configuration-advanced.asciidoc @@ -0,0 +1,6 @@ +[[configuration-advanced]] +== Advanced Logstash Configurations + +You can take {ls} beyond basic configuration to handle more advanced +requirements, such as multiple pipelines, communication between {ls} pipelines, +and multiple line events. diff --git a/docs/static/configuration.asciidoc b/docs/static/configuration.asciidoc index 07d8e0c46..b5245c0dc 100644 --- a/docs/static/configuration.asciidoc +++ b/docs/static/configuration.asciidoc @@ -23,11 +23,11 @@ Then, run logstash and specify the configuration file with the `-f` flag. bin/logstash -f logstash-simple.conf ---------------------------------- -Et voilà! Logstash reads the specified configuration file and outputs to both Elasticsearch and stdout. Before we +Et voilà! Logstash reads the specified configuration file and outputs to both Elasticsearch and stdout. Note that if you see a message in stdout that reads "Elasticsearch Unreachable" that you will need to make sure Elasticsearch is installed and up and reachable on port 9200. Before we move on to some <>, let's take a closer look at what's in a config file. [[configuration-file-structure]] -=== Structure of a Config File +=== Structure of a config file A Logstash config file has a separate section for each type of plugin you want to add to the event processing pipeline. For example: @@ -52,9 +52,9 @@ Each section contains the configuration options for one or more plugins. If you multiple filters, they are applied in the order of their appearance in the configuration file. -[float] +[discrete] [[plugin_configuration]] -=== Plugin Configuration +=== Plugin configuration The configuration of a plugin consists of the plugin name followed by a block of settings for that plugin. For example, this input section configures two file inputs: @@ -78,9 +78,9 @@ In this example, two settings are configured for each of the file inputs: 'path' The settings you can configure vary according to the plugin type. For information about each plugin, see <>, <>, <>, and <>. -[float] +[discrete] [[plugin-value-types]] -=== Value Types +=== Value types A plugin can require that the value for a setting be a certain type, such as boolean, list, or hash. The following value @@ -99,7 +99,7 @@ Example: ---------------------------------- [[list]] -[float] +[discrete] ==== Lists Not a type in and of itself, but a property types can have. @@ -118,7 +118,7 @@ This example configures `path`, which is a `string` to be a list that contains a [[boolean]] -[float] +[discrete] ==== Boolean A boolean must be either `true` or `false`. Note that the `true` and `false` keywords @@ -132,7 +132,7 @@ Example: ---------------------------------- [[bytes]] -[float] +[discrete] ==== Bytes A bytes field is a string field that represents a valid unit of bytes. It is a @@ -153,7 +153,7 @@ Examples: ---------------------------------- [[codec]] -[float] +[discrete] ==== Codec A codec is the name of Logstash codec used to represent the data. Codecs can be @@ -173,7 +173,7 @@ Example: ---------------------------------- [[hash]] -[float] +[discrete] ==== Hash A hash is a collection of key value pairs specified in the format `"field1" => "value1"`. @@ -193,7 +193,7 @@ match => { "field1" => "value1" "field2" => "value2" } ---------------------------------- [[number]] -[float] +[discrete] ==== Number Numbers must be valid numeric values (floating point or integer). @@ -206,7 +206,7 @@ Example: ---------------------------------- [[password]] -[float] +[discrete] ==== Password A password is a string with a single value that is not logged or printed. @@ -219,7 +219,7 @@ Example: ---------------------------------- [[uri]] -[float] +[discrete] ==== URI A URI can be anything from a full URL like 'http://elastic.co/' to a simple identifier @@ -234,7 +234,7 @@ Example: [[path]] -[float] +[discrete] ==== Path A path is a string that represents a valid operating system path. @@ -247,13 +247,13 @@ Example: ---------------------------------- [[string]] -[float] +[discrete] ==== String A string must be a single character sequence. Note that string values are enclosed in quotes, either double or single. -===== Escape Sequences +===== Escape sequences By default, escape sequences are not enabled. If you wish to use escape sequences in quoted strings, you will need to set @@ -278,7 +278,15 @@ Example: name => 'It\'s a beautiful day' ---------------------------------- -[float] +[[field-reference]] +[discrete] +==== Field reference + +A Field Reference is a special <> value representing the path to a field in an event, such as `@timestamp` or `[@timestamp]` to reference a top-level field, or `[client][ip]` to access a nested field. +The <> provides detailed information about the structure of Field References. +When provided as a configuration option, Field References need to be quoted and special characters must be escaped following the same rules as <>. + +[discrete] [[comments]] === Comments @@ -294,7 +302,7 @@ input { # comments can appear at the end of a line, too ---------------------------------- [[event-dependent-configuration]] -=== Accessing Event Data and Fields in the Configuration +=== Accessing event data and fields in the configuration The logstash agent is a processing pipeline with 3 stages: inputs -> filters -> outputs. Inputs generate events, filters modify them, outputs ship them @@ -312,11 +320,11 @@ Because of their dependency on events and fields, the following configuration options will only work within filter and output blocks. IMPORTANT: Field references, sprintf format and conditionals, described below, -will not work in an input block. +do not work in an input block. -[float] +[discrete] [[logstash-config-field-references]] -==== Field References +==== Field references It is often useful to be able to refer to a field by name. To do this, you can use the Logstash <>. @@ -351,7 +359,7 @@ field such as `request`, you can simply specify the field name. For more detailed information, see <>. -[float] +[discrete] [[sprintf]] ==== sprintf format @@ -369,10 +377,10 @@ output { } ---------------------------------- -Similarly, you can convert the timestamp in the `@timestamp` field into a string. Instead of specifying a field name inside the curly braces, use the `+FORMAT` syntax where `FORMAT` is a http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html[time format]. +Similarly, you can convert the UTC timestamp in the `@timestamp` field into a string. Instead of specifying a field name inside the curly braces, use the `+FORMAT` syntax where `FORMAT` is a http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html[time format]. For example, if you want to use the file output to write to logs based on the -event's date and hour and the `type` field: +event's UTC date and hour and the `type` field: [source,js] ---------------------------------- @@ -383,11 +391,13 @@ output { } ---------------------------------- -[float] +NOTE: A Logstash timestamp represents an instant on the UTC-timeline, so using sprintf formatters will produce results that may not align with your machine-local timezone. + +[discrete] [[conditionals]] ==== Conditionals -Sometimes you only want to filter or output an event under +Sometimes you want to filter or output an event only under certain conditions. For that, you can use a conditional. Conditionals in Logstash look and act the same way they do in programming @@ -415,11 +425,11 @@ You can use the following comparison operators: * regexp: `=~`, `!~` (checks a pattern on the right against a string value on the left) * inclusion: `in`, `not in` -The supported boolean operators are: +Supported boolean operators are: * `and`, `or`, `nand`, `xor` -The supported unary operators are: +Supported unary operators are: * `!` @@ -452,7 +462,9 @@ output { } ---------------------------------- -You can use the `in` operator to test whether a field contains a specific string, key, or (for lists) element: +You can use the `in` operator to test whether a field contains a specific string, key, or list element. +Note that the semantic meaning of `in` can vary, based on the target type. For example, when applied to +a string. `in` means "is a substring of". When applied to a collection type, `in` means "collection contains the exact value". [source,js] ---------------------------------- @@ -500,18 +512,23 @@ doesn't exist versus a field that's simply false. The expression `if [foo]` retu For more complex examples, see <>. -[float] +NOTE: Sprintf date/time format in conditionals is not currently supported. +A workaround using the `@metadata` field is available. +See <> for more details and an example. + + +[discrete] [[metadata]] ==== The @metadata field -In Logstash 1.5 and later, there is a special field called `@metadata`. The contents -of `@metadata` will not be part of any of your events at output time, which +In Logstash, there is a special field called `@metadata`. The contents +of `@metadata` are not part of any of your events at output time, which makes it great to use for conditionals, or extending and building event fields -with field reference and sprintf formatting. +with field reference and `sprintf` formatting. -The following configuration file will yield events from STDIN. Whatever is -typed will become the `message` field in the event. The `mutate` events in the -filter block will add a few fields, some nested in the `@metadata` field. +This configuration file yields events from STDIN. Whatever you type +becomes the `message` field in the event. The `mutate` events in the +filter block add a few fields, some nested in the `@metadata` field. [source,ruby] ---------------------------------- @@ -632,8 +649,7 @@ Pipeline main started That's it! No extra fields in the output, and a cleaner config file because you do not have to delete a "timestamp" field after conversion in the `date` filter. -Another use case is the CouchDB Changes input plugin (See -https://github.com/logstash-plugins/logstash-input-couchdb_changes). +Another use case is the https://github.com/logstash-plugins/logstash-input-couchdb_changes[CouchDB Changes input plugin]. This plugin automatically captures CouchDB document field metadata into the `@metadata` field within the input plugin itself. When the events pass through to be indexed by Elasticsearch, the Elasticsearch output plugin allows you to @@ -653,8 +669,53 @@ output { } ---------------------------------- +[discrete] +[[date-time]] +===== sprintf date/time format in conditionals + +Sprintf date/time format in conditionals is not currently supported, but a workaround is available. +Put the date calculation in a field so that you can use the field reference in a conditional. + +*Example* + +Using sprintf time format directly to add a field based on ingestion time _will not work_: +// This counter example is formatted to be understated to help users avoid following a bad example + +``` +---------- +# non-working example +filter{ + if "%{+HH}:%{+mm}" < "16:30" { + mutate { + add_field => { "string_compare" => "%{+HH}:%{+mm} is before 16:30" } + } + } +} +---------- +``` + +This workaround gives you the intended results: + +[source,js] +---------------------------------- +filter { + mutate{ + add_field => { + "[@metadata][time]" => "%{+HH}:%{+mm}" + } + } + if [@metadata][time] < "16:30" { + mutate { + add_field => { + "string_compare" => "%{+HH}:%{+mm} is before 16:30" + } + } + } +} +---------------------------------- + [[environment-variables]] -=== Using Environment Variables in the Configuration +=== Using environment variables in the configuration ==== Overview @@ -672,7 +733,7 @@ environment variable is undefined. The following examples show you how to use environment variables to set the values of some commonly used configuration options. -===== Setting the TCP Port +===== Setting the TCP port Here's an example that uses an environment variable to set the TCP port: @@ -729,7 +790,7 @@ input { If the environment variable is defined, Logstash uses the value specified for the variable instead of the default. -===== Setting the Value of a Tag +===== Setting the value of a tag Here's an example that uses an environment variable to set the value of a tag: @@ -760,7 +821,7 @@ filter { } ---- -===== Setting a File Path +===== Setting a file path Here's an example that uses an environment variable to set the path to a log file: @@ -797,16 +858,16 @@ filter { [[config-examples]] -=== Logstash Configuration Examples -The following examples illustrate how you can configure Logstash to filter events, process Apache logs and syslog messages, and use conditionals to control what events are processed by a filter or output. +=== Logstash configuration examples +These examples illustrate how you can configure Logstash to filter events, process Apache logs and syslog messages, and use conditionals to control what events are processed by a filter or output. TIP: If you need help building grok patterns, try out the {kibana-ref}/xpack-grokdebugger.html[Grok Debugger]. The Grok Debugger is an {xpack} feature under the Basic License and is therefore *free to use*. -[float] +[discrete] [[filter-example]] -==== Configuring Filters +==== Configuring filters Filters are an in-line processing mechanism that provide the flexibility to slice and dice your data to fit your needs. Let's take a look at some filters in action. The following configuration file sets up the `grok` and `date` filters. [source,ruby] @@ -870,8 +931,8 @@ As you can see, Logstash (with help from the `grok` filter) was able to parse th The other filter used in this example is the `date` filter. This filter parses out a timestamp and uses it as the timestamp for the event (regardless of when you're ingesting the log data). You'll notice that the `@timestamp` field in this example is set to December 11, 2013, even though Logstash is ingesting the event at some point afterwards. This is handy when backfilling logs. It gives you the ability to tell Logstash "use this value as the timestamp for this event". -[float] -==== Processing Apache Logs +[discrete] +==== Processing Apache logs Let's do something that's actually *useful*: process apache2 access log files! We are going to read the input from a file on the localhost, and use a <> to process the event according to our needs. First, create a file called something like 'logstash-apache.conf' with the following contents (you can change the log's file path to suit your needs): [source,js] @@ -936,9 +997,9 @@ When you restart Logstash, it will process both the error and access logs. Howev Note that Logstash did not reprocess the events that were already seen in the access_log file. When reading from a file, Logstash saves its position and only processes new lines as they are added. Neat! -[float] +[discrete] [[using-conditionals]] -==== Using Conditionals +==== Using conditionals You use conditionals to control what events are processed by a filter or output. For example, you could label each event according to which file it appeared in (access_log, error_log, and other random files that end with "log"). [source,ruby] @@ -999,8 +1060,8 @@ output { } ---------------------------------- -[float] -==== Processing Syslog Messages +[discrete] +==== Processing Syslog messages Syslog is one of the most common use cases for Logstash, and one it handles exceedingly well (as long as the log lines conform roughly to RFC3164). Syslog is the de facto UNIX networked logging standard, sending messages from client machines to a local file, or to a centralized log server via rsyslog. For this example, you won't need a functioning syslog instance; we'll fake it from the command line so you can get a feel for what happens. First, let's make a simple configuration file for Logstash + syslog, called 'logstash-syslog.conf'. diff --git a/docs/static/contrib-acceptance.asciidoc b/docs/static/contrib-acceptance.asciidoc new file mode 100644 index 000000000..0f473d886 --- /dev/null +++ b/docs/static/contrib-acceptance.asciidoc @@ -0,0 +1,19 @@ +[discrete] +[[plugin-acceptance]] +==== Acceptance guidelines + +Start with the end in mind. +These guidelines and best practices can help you build a better plugin, even if you choose not to share it with the world. + +* **Consistency.** Your plugin must be consistent in quality and naming conventions used by other plugins. +The plugin name must be unique and in this format: `logstash-plugintype-pluginname`. +If the plugin name is more than one word, separate words after plugin type with underscores. +Example: _logstash-output-elastic_app_search_ +* **Documentation.** Documentation is a required component of your plugin. +If we list your plugin in the Logstash Reference, we point to your documentation--a readme.md, docs/index.asciidoc, or both--in your plugin repo. +* **Code Review.** Your plugin must be reviewed by members of the community for coherence, quality, readability, stability and security. +* **Tests.** Your plugin must contain tests to be accepted. You can refer to http://betterspecs.org/ for examples. +** Step 1. Enable travis on your account +** Step 2. Import our standard travis.yml https://github.com/logstash-plugins/.ci/blob/1.x/travis/travis.yml, as shown in the +https://github.com/logstash-plugins/logstash-filter-fingerprint/blob/master/.travis.yml[fingerprint filter example]. +** Step 3. Have specs in the spec folder. diff --git a/docs/static/contribute-core.asciidoc b/docs/static/contribute-core.asciidoc new file mode 100644 index 000000000..2489e755c --- /dev/null +++ b/docs/static/contribute-core.asciidoc @@ -0,0 +1,10 @@ +[[contribute-to-core]] +=== Extending Logstash core + +We also welcome contributions and bug fixes to the Logstash core feature set. + +Please read through our +https://github.com/elastic/logstash/blob/master/CONTRIBUTING.md[contribution] +guide, and the Logstash +https://github.com/elastic/logstash/blob/master/README.md[readme] +document. \ No newline at end of file diff --git a/docs/static/contributing-java-plugin.asciidoc b/docs/static/contributing-java-plugin.asciidoc new file mode 100644 index 000000000..2e4b2cba2 --- /dev/null +++ b/docs/static/contributing-java-plugin.asciidoc @@ -0,0 +1,50 @@ +[[contributing-java-plugin]] +== Contributing a Java Plugin + +Now you can write your own Java plugin for use with {ls}. +We have provided instructions and GitHub examples to give +you a head start. + +Native support for Java plugins in {ls} consists of several components: + +* Extensions to the Java execution engine to support running Java plugins in +Logstash pipelines +* APIs for developing Java plugins. +The APIs are in the `co.elastic.logstash.api` package. +A Java plugin might break if it references classes or specific concrete +implementations of API interfaces outside that package. The implementation of +classes outside of the API package may change at any time. +* Tooling to automate the packaging and deployment of Java plugins in Logstash. + +[discrete] +=== Process overview +Here are the steps: + +. Choose the type of plugin you want to create: input, codec, filter, or output. +. Set up your environment. +. Code the plugin. +. Package and deploy the plugin. +. Run Logstash with your new plugin. + +[float] +==== Let's get started +Here are the example repos: + +* https://github.com/logstash-plugins/logstash-input-java_input_example[Input plugin example] +* https://github.com/logstash-plugins/logstash-codec-java_codec_example[Codec plugin example] +* https://github.com/logstash-plugins/logstash-filter-java_filter_example[Filter plugin example] +* https://github.com/logstash-plugins/logstash-output-java_output_example[Output plugin example] + +Here are the instructions: + +* <> +* <> +* <> +* <> + + +include::java-input.asciidoc[] +include::java-codec.asciidoc[] +include::java-filter.asciidoc[] +include::java-output.asciidoc[] + diff --git a/docs/static/contributing-patch.asciidoc b/docs/static/contributing-patch.asciidoc index c126e0bdc..9af4942cb 100644 --- a/docs/static/contributing-patch.asciidoc +++ b/docs/static/contributing-patch.asciidoc @@ -1,24 +1,26 @@ [[contributing-patch-plugin]] -=== Contributing a Patch to a Logstash Plugin +=== Contributing a patch to a Logstash plugin This section discusses the information you need to know to successfully contribute a patch to a Logstash plugin. -Each plugin defines its own configuration options. These control the behaviour of the plugin to some degree. Configuration -option definitions commonly include: +Each plugin defines its own configuration options. These control the behavior of the plugin to some degree. +Configuration option definitions commonly include: * Data validation -* The default value +* Default value * Any required flags Plugins are subclasses of a Logstash base class. A plugin's base class defines common configuration and methods. -==== Input Plugins +[[contrib-patch-input]] +==== Input plugins Input plugins ingest data from an external source. Input plugins are always associated with a codec. An input plugin always has an associated codec plugin. Input and codec plugins operate in conjunction to create a Logstash event and add that event to the processing queue. An input codec is a subclass of the `LogStash::Inputs::Base` class. -.Input API +[[input-api]] +===== Input API [horizontal] `#register() -> nil`:: Required. This API sets up resources for the plugin, typically the connection to the external source. @@ -27,12 +29,14 @@ errors inside the loop. Pushes any created events to the queue object specified receive batched data to minimize the external call overhead. `#stop() -> nil`:: Optional. Stops external connections and cleans up. -==== Codec Plugins +[[contrib-patch-codec]] +==== Codec plugins Codec plugins decode input data that has a specific structure, such as JSON input data. A codec plugin is a subclass of `LogStash::Codecs::Base`. -.Codec API +[[codec-api]] +===== Codec API [horizontal] `#register() -> nil`:: Identical to the API of the same name for input plugins. `#decode(data){|event| block} -> nil`:: Must be implemented. Used to create an Event from the raw data given in the method @@ -41,22 +45,26 @@ argument. Must handle errors. The caller must provide a Ruby block. The block is errors. This method calls a block that was previously stored as @on_event with two arguments: the original event and the data object. -==== Filter Plugins +[[contrib-patch-filter]] +==== Filter plugins A mechanism to change, mutate or merge one or more Events. A filter plugin is a subclass of the `LogStash::Filters::Base` class. -.Filter API +[[filter-api]] +===== Filter API [horizontal] `#register() -> nil`:: Identical to the API of the same name for input plugins. `#filter(event) -> nil`:: Required. May handle errors. Used to apply a mutation function to the given event. -==== Output Plugins +[[contrib-patch-output]] +==== Output plugins A mechanism to send an event to an external destination. This process may require serialization. An output plugin is a subclass of the `LogStash::Outputs::Base` class. -.Output API +[[output-api]] +===== Output API [horizontal] `#register() -> nil`:: Identical to the API of the same name for input plugins. `#receive(event) -> nil`:: Required. Must handle errors. Used to prepare the given event for transmission to @@ -72,25 +80,28 @@ The <> explains, in more detail merged and published. The Community Maintainer Guide also details the roles that contributors and maintainers are expected to perform. -==== Testing Methodologies +[[test-methods]] +==== Testing methodologies -===== Test Driven Development +[[tdd]] +===== Test driven development -Test Driven Development, colloquially known as TDD, describes a methodology for using tests to guide evolution of source -code. For our purposes, we are only going to use a part of it, that is, before writing the fix - we create tests that -illustrate the bug by failing. We stop when we have written enough code to make the tests pass and submit the fix and -tests as a patch. It is not necessary to write the tests before the fix, but it is very easy to write a passing test +Test driven development (TDD) describes a methodology for using tests to guide evolution of source code. +For our purposes, we are use only a part of it. +Before writing the fix, we create tests that illustrate the bug by failing. +We stop when we have written enough code to make the tests pass and submit the fix and tests as a patch. +It is not necessary to write the tests before the fix, but it is very easy to write a passing test afterwards that may not actually verify that the fault is really fixed especially if the fault can be triggered via multiple execution paths or varying input data. -===== The RSpec Framework +[[rspec]] +===== RSpec framework Logstash uses Rspec, a Ruby testing framework, to define and run the test suite. What follows is a summary of various sources. -. Rspec Example +.Rspec Example [source,ruby] - 1 # encoding: utf-8 2 require "logstash/devutils/rspec/spec_helper" 3 require "logstash/plugin" 4 @@ -221,6 +232,7 @@ eql(object) -> matcher instance In RSpec, a matcher is an object generated by the equivalent method call (be, eq) that will be used to evaluate the expected against the actual values. +[[all-together]] ==== Putting it all together This example fixes an https://github.com/logstash-plugins/logstash-output-zeromq/issues/9[issue] in the ZeroMQ output @@ -252,11 +264,10 @@ https://howistart.org/posts/ruby/1[environment]. The `chruby` tool manages Ruby + NOTE: Line 21 of `util/zeromq.rb` reads `@logger.info("0mq: #{server? ? 'connected' : 'bound'}", :address => address)` -. In the text editor, set the file encoding and require `zeromq.rb` for the file `zeromq_spec.rb` by adding the following +. In the text editor, require `zeromq.rb` for the file `zeromq_spec.rb` by adding the following lines: + [source,ruby] -# encoding: utf-8 require "logstash/outputs/zeromq" require "logstash/devutils/rspec/spec_helper" @@ -303,7 +314,6 @@ At the end of the modifications, the relevant code section reads: [source,ruby] -------- -# encoding: utf-8 require "logstash/outputs/zeromq" require "logstash/devutils/rspec/spec_helper" diff --git a/docs/static/contributing-to-logstash.asciidoc b/docs/static/contributing-to-logstash.asciidoc index 5c7206201..49e8ec114 100644 --- a/docs/static/contributing-to-logstash.asciidoc +++ b/docs/static/contributing-to-logstash.asciidoc @@ -1,33 +1,36 @@ [[contributing-to-logstash]] == Contributing to Logstash -Before version 1.5, Logstash included all plugins in each release. This made it -easy to make use of any plugin, but it complicated plugin development--a new -release of Logstash became necessary if a plugin needed patching. Since version -1.5, all plugins are independent of the Logstash core. Now you can add your own -input, codec, filter, or output plugins to Logstash much more easily! +You can add your own input, codec, filter, or output plugins to Logstash. -[float] -=== Adding plugins +include::contrib-acceptance.asciidoc[] -Since plugins can now be developed and deployed independently of the Logstash -core, there are documents which guide you through the process of coding and -deploying your own plugins: +[discrete] +[[add-plugin]] +=== Add a plugin -* <> -* http://www.elasticsearch.org/guide/en/logstash/current/_how_to_write_a_logstash_input_plugin.html[How to write a Logstash input plugin] -* http://www.elasticsearch.org/guide/en/logstash/current/_how_to_write_a_logstash_codec_plugin.html[How to write a Logstash codec plugin] -* http://www.elasticsearch.org/guide/en/logstash/current/_how_to_write_a_logstash_filter_plugin.html[How to write a Logstash filter plugin] -* http://www.elasticsearch.org/guide/en/logstash/current/_how_to_write_a_logstash_output_plugin.html[How to write a Logstash output plugin] -* <> -* <> -* <> +Plugins can be developed and deployed independently of the Logstash core. +Here are some documents to guide you through the process of coding, deploying, and sharing your plugin: -[float] -==== Plugin Shutdown APIs +* Write a new plugin +** <> +** <> +** <> +** <> +** <> +* <> +* <> +* <> -Starting in Logstash 2.0, we changed how input plugins shut down to increase shutdown reliability. There are three methods -for plugin shutdown: `stop`, `stop?`, and `close`. +* Contribute a patch +** <> +** <> + +[discrete] +[[shutdown-apis]] +===== Plugin Shutdown APIs + +You have three options for shutting down a plugin: `stop`, `stop?`, and `close`. * Call the `stop` method from outside the plugin thread. This method signals the plugin to stop. * The `stop?` method returns `true` when the `stop` method has already been called for that plugin. @@ -39,13 +42,3 @@ Plugin Base class. Sample code for the plugin shutdown APIs is https://github.com/logstash-plugins/logstash-input-example/blob/master/lib/logstash/inputs/example.rb[available]. -[float] -=== Extending Logstash core - -We also welcome contributions and bug fixes to the Logstash core feature set. - -Please read through our -https://github.com/elastic/logstash/blob/master/CONTRIBUTING.md[contribution] -guide, and the Logstash -https://github.com/elastic/logstash/blob/master/README.md[readme] -document. diff --git a/docs/static/core-plugins/codecs/java_dots.asciidoc b/docs/static/core-plugins/codecs/java_dots.asciidoc new file mode 100644 index 000000000..3337668f3 --- /dev/null +++ b/docs/static/core-plugins/codecs/java_dots.asciidoc @@ -0,0 +1,24 @@ +:plugin: jdots +:type: codec + +/////////////////////////////////////////// +REPLACES GENERATED VARIABLES +/////////////////////////////////////////// +:include_path: ../../../../../logstash/docs/include +/////////////////////////////////////////// +END - REPLACES GENERATED VARIABLES +/////////////////////////////////////////// + +[id="plugins-{type}s-{plugin}"] + +=== Jdots codec plugin + +include::{include_path}/plugin_header-core.asciidoc[] + +==== Description + +This codec renders each processed event as a dot (`.`). It is typically used with the `java_stdout` output to provide +approximate event throughput. It is especially useful when combined with `pv` and `wc -c` as follows: + +[source,bash] + bin/logstash -f /path/to/config/with/jdots/codec | pv | wc -c diff --git a/docs/static/core-plugins/codecs/java_line.asciidoc b/docs/static/core-plugins/codecs/java_line.asciidoc new file mode 100644 index 000000000..6b0f64d4f --- /dev/null +++ b/docs/static/core-plugins/codecs/java_line.asciidoc @@ -0,0 +1,63 @@ +:plugin: java_line +:type: codec + +/////////////////////////////////////////// +REPLACES GENERATED VARIABLES +/////////////////////////////////////////// +:include_path: ../../../../../logstash/docs/include +/////////////////////////////////////////// +END - REPLACES GENERATED VARIABLES +/////////////////////////////////////////// + +[id="plugins-{type}s-{plugin}"] + +=== Java_line codec plugin + +include::{include_path}/plugin_header-core.asciidoc[] + +==== Description + +Encodes and decodes line-oriented text data. + +Decoding behavior: All text data between specified delimiters will be decoded as distinct events. + +Encoding behavior: Each event will be emitted with the specified trailing delimiter. + +[id="plugins-{type}s-{plugin}-options"] +==== Java_line Codec Configuration Options + +[cols="<,<,<",options="header",] +|======================================================================= +|Setting |Input type|Required +| <> |<>, one of `["ASCII-8BIT", "UTF-8", "US-ASCII", "Big5", "Big5-HKSCS", "Big5-UAO", "CP949", "Emacs-Mule", "EUC-JP", "EUC-KR", "EUC-TW", "GB2312", "GB18030", "GBK", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-10", "ISO-8859-11", "ISO-8859-13", "ISO-8859-14", "ISO-8859-15", "ISO-8859-16", "KOI8-R", "KOI8-U", "Shift_JIS", "UTF-16BE", "UTF-16LE", "UTF-32BE", "UTF-32LE", "Windows-31J", "Windows-1250", "Windows-1251", "Windows-1252", "IBM437", "IBM737", "IBM775", "CP850", "IBM852", "CP852", "IBM855", "CP855", "IBM857", "IBM860", "IBM861", "IBM862", "IBM863", "IBM864", "IBM865", "IBM866", "IBM869", "Windows-1258", "GB1988", "macCentEuro", "macCroatian", "macCyrillic", "macGreek", "macIceland", "macRoman", "macRomania", "macThai", "macTurkish", "macUkraine", "CP950", "CP951", "IBM037", "stateless-ISO-2022-JP", "eucJP-ms", "CP51932", "EUC-JIS-2004", "GB12345", "ISO-2022-JP", "ISO-2022-JP-2", "CP50220", "CP50221", "Windows-1256", "Windows-1253", "Windows-1255", "Windows-1254", "TIS-620", "Windows-874", "Windows-1257", "MacJapanese", "UTF-7", "UTF8-MAC", "UTF-16", "UTF-32", "UTF8-DoCoMo", "SJIS-DoCoMo", "UTF8-KDDI", "SJIS-KDDI", "ISO-2022-JP-KDDI", "stateless-ISO-2022-JP-KDDI", "UTF8-SoftBank", "SJIS-SoftBank", "BINARY", "CP437", "CP737", "CP775", "IBM850", "CP857", "CP860", "CP861", "CP862", "CP863", "CP864", "CP865", "CP866", "CP869", "CP1258", "Big5-HKSCS:2008", "ebcdic-cp-us", "eucJP", "euc-jp-ms", "EUC-JISX0213", "eucKR", "eucTW", "EUC-CN", "eucCN", "CP936", "ISO2022-JP", "ISO2022-JP2", "ISO8859-1", "ISO8859-2", "ISO8859-3", "ISO8859-4", "ISO8859-5", "ISO8859-6", "CP1256", "ISO8859-7", "CP1253", "ISO8859-8", "CP1255", "ISO8859-9", "CP1254", "ISO8859-10", "ISO8859-11", "CP874", "ISO8859-13", "CP1257", "ISO8859-14", "ISO8859-15", "ISO8859-16", "CP878", "MacJapan", "ASCII", "ANSI_X3.4-1968", "646", "CP65000", "CP65001", "UTF-8-MAC", "UTF-8-HFS", "UCS-2BE", "UCS-4BE", "UCS-4LE", "CP932", "csWindows31J", "SJIS", "PCK", "CP1250", "CP1251", "CP1252", "external", "locale"]`|No +| <> |<>|No +| <> |<>|No +|======================================================================= + +  + +[id="plugins-{type}s-{plugin}-charset"] +===== `charset` + + * Value can be any of: `ASCII-8BIT`, `UTF-8`, `US-ASCII`, `Big5`, `Big5-HKSCS`, `Big5-UAO`, `CP949`, `Emacs-Mule`, `EUC-JP`, `EUC-KR`, `EUC-TW`, `GB2312`, `GB18030`, `GBK`, `ISO-8859-1`, `ISO-8859-2`, `ISO-8859-3`, `ISO-8859-4`, `ISO-8859-5`, `ISO-8859-6`, `ISO-8859-7`, `ISO-8859-8`, `ISO-8859-9`, `ISO-8859-10`, `ISO-8859-11`, `ISO-8859-13`, `ISO-8859-14`, `ISO-8859-15`, `ISO-8859-16`, `KOI8-R`, `KOI8-U`, `Shift_JIS`, `UTF-16BE`, `UTF-16LE`, `UTF-32BE`, `UTF-32LE`, `Windows-31J`, `Windows-1250`, `Windows-1251`, `Windows-1252`, `IBM437`, `IBM737`, `IBM775`, `CP850`, `IBM852`, `CP852`, `IBM855`, `CP855`, `IBM857`, `IBM860`, `IBM861`, `IBM862`, `IBM863`, `IBM864`, `IBM865`, `IBM866`, `IBM869`, `Windows-1258`, `GB1988`, `macCentEuro`, `macCroatian`, `macCyrillic`, `macGreek`, `macIceland`, `macRoman`, `macRomania`, `macThai`, `macTurkish`, `macUkraine`, `CP950`, `CP951`, `IBM037`, `stateless-ISO-2022-JP`, `eucJP-ms`, `CP51932`, `EUC-JIS-2004`, `GB12345`, `ISO-2022-JP`, `ISO-2022-JP-2`, `CP50220`, `CP50221`, `Windows-1256`, `Windows-1253`, `Windows-1255`, `Windows-1254`, `TIS-620`, `Windows-874`, `Windows-1257`, `MacJapanese`, `UTF-7`, `UTF8-MAC`, `UTF-16`, `UTF-32`, `UTF8-DoCoMo`, `SJIS-DoCoMo`, `UTF8-KDDI`, `SJIS-KDDI`, `ISO-2022-JP-KDDI`, `stateless-ISO-2022-JP-KDDI`, `UTF8-SoftBank`, `SJIS-SoftBank`, `BINARY`, `CP437`, `CP737`, `CP775`, `IBM850`, `CP857`, `CP860`, `CP861`, `CP862`, `CP863`, `CP864`, `CP865`, `CP866`, `CP869`, `CP1258`, `Big5-HKSCS:2008`, `ebcdic-cp-us`, `eucJP`, `euc-jp-ms`, `EUC-JISX0213`, `eucKR`, `eucTW`, `EUC-CN`, `eucCN`, `CP936`, `ISO2022-JP`, `ISO2022-JP2`, `ISO8859-1`, `ISO8859-2`, `ISO8859-3`, `ISO8859-4`, `ISO8859-5`, `ISO8859-6`, `CP1256`, `ISO8859-7`, `CP1253`, `ISO8859-8`, `CP1255`, `ISO8859-9`, `CP1254`, `ISO8859-10`, `ISO8859-11`, `CP874`, `ISO8859-13`, `CP1257`, `ISO8859-14`, `ISO8859-15`, `ISO8859-16`, `CP878`, `MacJapan`, `ASCII`, `ANSI_X3.4-1968`, `646`, `CP65000`, `CP65001`, `UTF-8-MAC`, `UTF-8-HFS`, `UCS-2BE`, `UCS-4BE`, `UCS-4LE`, `CP932`, `csWindows31J`, `SJIS`, `PCK`, `CP1250`, `CP1251`, `CP1252`, `external`, `locale` + * Default value is `"UTF-8"` + +The character encoding used by this input. Examples include `UTF-8` and `cp1252`. This setting is useful if your +inputs are in `Latin-1` (aka `cp1252`) or other character sets than `UTF-8`. + +[id="plugins-{type}s-{plugin}-delimiter"] +===== `delimiter` + + * Value type is <> + * Default value is the system-dependent line separator ("\n" for UNIX systems; "\r\n" for Microsoft Windows) + +Specifies the delimiter that indicates end-of-line. + +[id="plugins-{type}s-{plugin}-format"] +===== `format` + + * Value type is <> + * There is no default value for this setting. + +Set the desired text format for encoding in +https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html#sprintf[`sprintf`] format. diff --git a/docs/static/core-plugins/codecs/java_plain.asciidoc b/docs/static/core-plugins/codecs/java_plain.asciidoc new file mode 100644 index 000000000..97685739d --- /dev/null +++ b/docs/static/core-plugins/codecs/java_plain.asciidoc @@ -0,0 +1,51 @@ +:plugin: java_plain +:type: codec + +/////////////////////////////////////////// +REPLACES GENERATED VARIABLES +/////////////////////////////////////////// +:include_path: ../../../../../logstash/docs/include +/////////////////////////////////////////// +END - REPLACES GENERATED VARIABLES +/////////////////////////////////////////// + +[id="plugins-{type}s-{plugin}"] + +=== Java_plain codec plugin + +include::{include_path}/plugin_header-core.asciidoc[] + +==== Description + +The `java_plain` codec is for text data with no delimiters between events. It is useful mainly for inputs and outputs that +already have a defined framing in their transport protocol such as ZeroMQ, RabbitMQ, Redis, etc. + +[id="plugins-{type}s-{plugin}-options"] +==== Java_plain Codec Configuration Options + +[cols="<,<,<",options="header",] +|======================================================================= +|Setting |Input type|Required +| <> |<>, one of `["ASCII-8BIT", "UTF-8", "US-ASCII", "Big5", "Big5-HKSCS", "Big5-UAO", "CP949", "Emacs-Mule", "EUC-JP", "EUC-KR", "EUC-TW", "GB2312", "GB18030", "GBK", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-10", "ISO-8859-11", "ISO-8859-13", "ISO-8859-14", "ISO-8859-15", "ISO-8859-16", "KOI8-R", "KOI8-U", "Shift_JIS", "UTF-16BE", "UTF-16LE", "UTF-32BE", "UTF-32LE", "Windows-31J", "Windows-1250", "Windows-1251", "Windows-1252", "IBM437", "IBM737", "IBM775", "CP850", "IBM852", "CP852", "IBM855", "CP855", "IBM857", "IBM860", "IBM861", "IBM862", "IBM863", "IBM864", "IBM865", "IBM866", "IBM869", "Windows-1258", "GB1988", "macCentEuro", "macCroatian", "macCyrillic", "macGreek", "macIceland", "macRoman", "macRomania", "macThai", "macTurkish", "macUkraine", "CP950", "CP951", "IBM037", "stateless-ISO-2022-JP", "eucJP-ms", "CP51932", "EUC-JIS-2004", "GB12345", "ISO-2022-JP", "ISO-2022-JP-2", "CP50220", "CP50221", "Windows-1256", "Windows-1253", "Windows-1255", "Windows-1254", "TIS-620", "Windows-874", "Windows-1257", "MacJapanese", "UTF-7", "UTF8-MAC", "UTF-16", "UTF-32", "UTF8-DoCoMo", "SJIS-DoCoMo", "UTF8-KDDI", "SJIS-KDDI", "ISO-2022-JP-KDDI", "stateless-ISO-2022-JP-KDDI", "UTF8-SoftBank", "SJIS-SoftBank", "BINARY", "CP437", "CP737", "CP775", "IBM850", "CP857", "CP860", "CP861", "CP862", "CP863", "CP864", "CP865", "CP866", "CP869", "CP1258", "Big5-HKSCS:2008", "ebcdic-cp-us", "eucJP", "euc-jp-ms", "EUC-JISX0213", "eucKR", "eucTW", "EUC-CN", "eucCN", "CP936", "ISO2022-JP", "ISO2022-JP2", "ISO8859-1", "ISO8859-2", "ISO8859-3", "ISO8859-4", "ISO8859-5", "ISO8859-6", "CP1256", "ISO8859-7", "CP1253", "ISO8859-8", "CP1255", "ISO8859-9", "CP1254", "ISO8859-10", "ISO8859-11", "CP874", "ISO8859-13", "CP1257", "ISO8859-14", "ISO8859-15", "ISO8859-16", "CP878", "MacJapan", "ASCII", "ANSI_X3.4-1968", "646", "CP65000", "CP65001", "UTF-8-MAC", "UTF-8-HFS", "UCS-2BE", "UCS-4BE", "UCS-4LE", "CP932", "csWindows31J", "SJIS", "PCK", "CP1250", "CP1251", "CP1252", "external", "locale"]`|No +| <> |<>|No +|======================================================================= + +  + +[id="plugins-{type}s-{plugin}-charset"] +===== `charset` + + * Value can be any of: `ASCII-8BIT`, `UTF-8`, `US-ASCII`, `Big5`, `Big5-HKSCS`, `Big5-UAO`, `CP949`, `Emacs-Mule`, `EUC-JP`, `EUC-KR`, `EUC-TW`, `GB2312`, `GB18030`, `GBK`, `ISO-8859-1`, `ISO-8859-2`, `ISO-8859-3`, `ISO-8859-4`, `ISO-8859-5`, `ISO-8859-6`, `ISO-8859-7`, `ISO-8859-8`, `ISO-8859-9`, `ISO-8859-10`, `ISO-8859-11`, `ISO-8859-13`, `ISO-8859-14`, `ISO-8859-15`, `ISO-8859-16`, `KOI8-R`, `KOI8-U`, `Shift_JIS`, `UTF-16BE`, `UTF-16LE`, `UTF-32BE`, `UTF-32LE`, `Windows-31J`, `Windows-1250`, `Windows-1251`, `Windows-1252`, `IBM437`, `IBM737`, `IBM775`, `CP850`, `IBM852`, `CP852`, `IBM855`, `CP855`, `IBM857`, `IBM860`, `IBM861`, `IBM862`, `IBM863`, `IBM864`, `IBM865`, `IBM866`, `IBM869`, `Windows-1258`, `GB1988`, `macCentEuro`, `macCroatian`, `macCyrillic`, `macGreek`, `macIceland`, `macRoman`, `macRomania`, `macThai`, `macTurkish`, `macUkraine`, `CP950`, `CP951`, `IBM037`, `stateless-ISO-2022-JP`, `eucJP-ms`, `CP51932`, `EUC-JIS-2004`, `GB12345`, `ISO-2022-JP`, `ISO-2022-JP-2`, `CP50220`, `CP50221`, `Windows-1256`, `Windows-1253`, `Windows-1255`, `Windows-1254`, `TIS-620`, `Windows-874`, `Windows-1257`, `MacJapanese`, `UTF-7`, `UTF8-MAC`, `UTF-16`, `UTF-32`, `UTF8-DoCoMo`, `SJIS-DoCoMo`, `UTF8-KDDI`, `SJIS-KDDI`, `ISO-2022-JP-KDDI`, `stateless-ISO-2022-JP-KDDI`, `UTF8-SoftBank`, `SJIS-SoftBank`, `BINARY`, `CP437`, `CP737`, `CP775`, `IBM850`, `CP857`, `CP860`, `CP861`, `CP862`, `CP863`, `CP864`, `CP865`, `CP866`, `CP869`, `CP1258`, `Big5-HKSCS:2008`, `ebcdic-cp-us`, `eucJP`, `euc-jp-ms`, `EUC-JISX0213`, `eucKR`, `eucTW`, `EUC-CN`, `eucCN`, `CP936`, `ISO2022-JP`, `ISO2022-JP2`, `ISO8859-1`, `ISO8859-2`, `ISO8859-3`, `ISO8859-4`, `ISO8859-5`, `ISO8859-6`, `CP1256`, `ISO8859-7`, `CP1253`, `ISO8859-8`, `CP1255`, `ISO8859-9`, `CP1254`, `ISO8859-10`, `ISO8859-11`, `CP874`, `ISO8859-13`, `CP1257`, `ISO8859-14`, `ISO8859-15`, `ISO8859-16`, `CP878`, `MacJapan`, `ASCII`, `ANSI_X3.4-1968`, `646`, `CP65000`, `CP65001`, `UTF-8-MAC`, `UTF-8-HFS`, `UCS-2BE`, `UCS-4BE`, `UCS-4LE`, `CP932`, `csWindows31J`, `SJIS`, `PCK`, `CP1250`, `CP1251`, `CP1252`, `external`, `locale` + * Default value is `"UTF-8"` + +The character encoding used in this input. Examples include `UTF-8` and `cp1252`. This setting is useful if your data +is in a character set other than `UTF-8`. + +[id="plugins-{type}s-{plugin}-format"] +===== `format` + + * Value type is <> + * There is no default value for this setting. + +Set the desired text format for encoding in +https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html#sprintf[`sprintf`] format. diff --git a/docs/static/core-plugins/filters/java_uuid.asciidoc b/docs/static/core-plugins/filters/java_uuid.asciidoc new file mode 100644 index 000000000..bfa66aaa0 --- /dev/null +++ b/docs/static/core-plugins/filters/java_uuid.asciidoc @@ -0,0 +1,91 @@ +:plugin: java_uuid +:type: filter + +/////////////////////////////////////////// +REPLACES GENERATED VARIABLES +/////////////////////////////////////////// +:include_path: ../../../../../logstash/docs/include +/////////////////////////////////////////// +END - REPLACES GENERATED VARIABLES +/////////////////////////////////////////// + + +[id="plugins-{type}s-{plugin}"] + +=== Java_uuid filter plugin + +include::{include_path}/plugin_header-core.asciidoc[] + +==== Description + +The uuid filter allows you to generate a +https://en.wikipedia.org/wiki/Universally_unique_identifier[UUID] +and add it as a field to each processed event. + +This is useful if you need to generate a string that's unique for every +event even if the same input is processed multiple times. If you want +to generate strings that are identical each time an event with the same +content is processed (i.e., a hash), you should use the +{logstash-ref}/plugins-filters-fingerprint.html[fingerprint filter] instead. + +The generated UUIDs follow the version 4 definition in +https://tools.ietf.org/html/rfc4122[RFC 4122] and will be +represented in standard hexadecimal string format, e.g. +"e08806fe-02af-406c-bbde-8a5ae4475e57". + +[id="plugins-{type}s-{plugin}-options"] +==== Java_uuid Filter Configuration Options + +This plugin supports the following configuration options plus the <> described later. + +[cols="<,<,<",options="header",] +|======================================================================= +|Setting |Input type|Required +| <> |<>|No +| <> |<>|Yes +|======================================================================= + +Also see <> for a list of options supported by all +filter plugins. + +  + +[id="plugins-{type}s-{plugin}-overwrite"] +===== `overwrite` + + * Value type is <> + * Default value is `false` + +Determines if an existing value in the field specified by the `target` option should +be overwritten by the filter. + +Example: +[source,ruby] + filter { + java_uuid { + target => "uuid" + overwrite => true + } + } + +[id="plugins-{type}s-{plugin}-target"] +===== `target` + + * This is a required setting. + * Value type is <> + * There is no default value for this setting. + +Specifies the name of the field in which the generated UUID should be stored. + +Example: +[source,ruby] + filter { + java_uuid { + target => "uuid" + } + } + + + +[id="plugins-{type}s-{plugin}-common-options"] +include::{include_path}/{type}.asciidoc[] \ No newline at end of file diff --git a/docs/static/core-plugins/inputs/java_generator.asciidoc b/docs/static/core-plugins/inputs/java_generator.asciidoc new file mode 100644 index 000000000..b888a8fa7 --- /dev/null +++ b/docs/static/core-plugins/inputs/java_generator.asciidoc @@ -0,0 +1,117 @@ +:plugin: java_generator +:type: input +:default_codec: plain + +/////////////////////////////////////////// +REPLACES GENERATED VARIABLES +/////////////////////////////////////////// +:include_path: ../../../../../logstash/docs/include +/////////////////////////////////////////// +END - REPLACES GENERATED VARIABLES +/////////////////////////////////////////// + +[id="plugins-{type}s-{plugin}"] + +=== Java_generator input plugin + +include::{include_path}/plugin_header-core.asciidoc[] + +==== Description + +Generate synthetic log events. + +This plugin generates a stream of synthetic events that can be used to test the correctness or performance of a +Logstash pipeline. + + +[id="plugins-{type}s-{plugin}-options"] +==== Java_generator Input Configuration Options + +This plugin supports the following configuration options plus the <> described later. + +[cols="<,<,<",options="header",] +|======================================================================= +|Setting |Input type|Required +| <> |<>|No +| <> |<>|No +| <> |<>|No +| <> |<>|No +| <> |<>|No +|======================================================================= + +Also see <> for a list of options supported by all +input plugins. + +  + +[id="plugins-{type}s-{plugin}-count"] +===== `count` + + * Value type is <> + * Default value is `0` + +Sets the number of events that should be generated. + +The default, `0`, means generate an unlimited number of events. + +[id="plugins-{type}s-{plugin}-eps"] +===== `eps` + + * Value type is <> + * Default value is `0` + +Sets the rate at which events should be generated. Fractional values may be specified. For +example, a rate of `0.25` means that one event will be generated every four seconds. + +The default, `0`, means generate events as fast as possible. + +[id="plugins-{type}s-{plugin}-lines"] +===== `lines` + + * Value type is <> + * There is no default value for this setting. + +The lines to emit, in order. This option overrides the 'message' setting if it has also been specified. + +Example: +[source,ruby] + input { + java_generator { + lines => [ + "line 1", + "line 2", + "line 3" + ] + # Emit all lines 2 times. + count => 2 + } + } + +The above will emit a series of three events `line 1` then `line 2` then `line 3` two times for a total of 6 events. + +[id="plugins-{type}s-{plugin}-message"] +===== `message` + + * Value type is <> + * Default value is `"Hello world!"` + +The message string to use in the event. + +[id="plugins-{type}s-{plugin}-threads"] +===== `threads` + + * Value type is <> + * Default value is `1` + +Increasing the number of generator threads up to about the number of CPU cores generally increases overall event +throughput. The `count`, `eps`, and `lines` settings all apply on a per-thread basis. In other words, each thread +will emit the number of events specified in the `count` setting for a total of `threads * count` events. Each thread +will emit events at the `eps` rate for a total rate of `threads * eps`, and each thread will emit each line specified +in the `lines` option. + + + +[id="plugins-{type}s-{plugin}-common-options"] +include::{include_path}/{type}.asciidoc[] + +:default_codec!: \ No newline at end of file diff --git a/docs/static/core-plugins/inputs/java_stdin.asciidoc b/docs/static/core-plugins/inputs/java_stdin.asciidoc new file mode 100644 index 000000000..d7137540e --- /dev/null +++ b/docs/static/core-plugins/inputs/java_stdin.asciidoc @@ -0,0 +1,35 @@ +:plugin: java_stdin +:type: input +:default_codec: java_line + +/////////////////////////////////////////// +REPLACES GENERATED VARIABLES +/////////////////////////////////////////// +:include_path: ../../../../../logstash/docs/include +/////////////////////////////////////////// +END - REPLACES GENERATED VARIABLES +/////////////////////////////////////////// + +[id="plugins-{type}s-{plugin}"] + +=== Java_stdin input plugin + +include::{include_path}/plugin_header-core.asciidoc[] + +==== Description + +Read events from standard input. + +By default, each event is assumed to be terminated by end-of-line. If you want events delimited in a different +method, you'll need to use a codec with support for that encoding. + +[id="plugins-{type}s-{plugin}-options"] +==== Java_stdin Input Configuration Options + +There are no special configuration options for this plugin, +but it does support the <>. + +[id="plugins-{type}s-{plugin}-common-options"] +include::{include_path}/{type}.asciidoc[] + +:default_codec!: \ No newline at end of file diff --git a/docs/static/core-plugins/outputs/java_sink.asciidoc b/docs/static/core-plugins/outputs/java_sink.asciidoc new file mode 100644 index 000000000..5f340f5b0 --- /dev/null +++ b/docs/static/core-plugins/outputs/java_sink.asciidoc @@ -0,0 +1,33 @@ +:plugin: sink +:type: output +:default_codec!: + +/////////////////////////////////////////// +REPLACES GENERATED VARIABLES +/////////////////////////////////////////// +:include_path: ../../../../../logstash/docs/include +/////////////////////////////////////////// +END - REPLACES GENERATED VARIABLES +/////////////////////////////////////////// + +[id="plugins-{type}s-{plugin}"] + +=== Sink output plugin + +include::{include_path}/plugin_header-core.asciidoc[] + +==== Description + +An event sink that discards any events received. Generally useful for testing the performance of inputs +and filters. + +[id="plugins-{type}s-{plugin}-options"] +==== Sink Output Configuration Options + +There are no special configuration options for this plugin, +but it does support the <>. + +[id="plugins-{type}s-{plugin}-common-options"] +include::{include_path}/{type}.asciidoc[] + +:default_codec!: diff --git a/docs/static/core-plugins/outputs/java_stdout.asciidoc b/docs/static/core-plugins/outputs/java_stdout.asciidoc new file mode 100644 index 000000000..315a109b8 --- /dev/null +++ b/docs/static/core-plugins/outputs/java_stdout.asciidoc @@ -0,0 +1,50 @@ +:plugin: java_stdout +:type: output +:default_codec: java_line + +/////////////////////////////////////////// +REPLACES GENERATED VARIABLES +/////////////////////////////////////////// +:include_path: ../../../../../logstash/docs/include +/////////////////////////////////////////// +END - REPLACES GENERATED VARIABLES +/////////////////////////////////////////// + +[id="plugins-{type}s-{plugin}"] + +=== Java_stdout output plugin + +include::{include_path}/plugin_header-core.asciidoc[] + +==== Description + +Prints events to the STDOUT of the shell running Logstash. This output is convenient for debugging +plugin configurations by providing instant access to event data after it has passed through the inputs and filters. + +For example, the following output configuration in conjunction with the Logstash `-e` command-line flag, will +allow you to see the results of your event pipeline for quick iteration. +[source,ruby] + output { + java_stdout {} + } + +Useful codecs include: + +`java_line`: outputs event data in JSON format followed by an end-of-line character. This is the default codec for +java_stdout. + +[source,ruby] + output { + stdout { } + } + +[id="plugins-{type}s-{plugin}-options"] +==== Java_stdout Output Configuration Options + +There are no special configuration options for this plugin, +but it does support the <>. + +[id="plugins-{type}s-{plugin}-common-options"] +include::{include_path}/{type}.asciidoc[] + +:default_codec!: \ No newline at end of file diff --git a/docs/static/cross-plugin-concepts.asciidoc b/docs/static/cross-plugin-concepts.asciidoc new file mode 100644 index 000000000..c6765397f --- /dev/null +++ b/docs/static/cross-plugin-concepts.asciidoc @@ -0,0 +1,17 @@ +[[plugin-concepts]] +=== Cross-plugin concepts and features + +New section for concepts, features, and behaviours that apply to multiple plugins. + +[[space-delimited-uris-in-list-params]] +==== Space-deliminated URIs in list-type params + +List-type URI parameters will automatically expand strings that contain multiple +whitespace-delimited URIs into separate entries. This behaviour enables the expansion +of an arbitrary list of URIs from a single Environment- or Keystore-variable. + +Examples of plugins and options that support this functionality: + +* <> +* <> +* <> diff --git a/docs/static/dead-letter-queues.asciidoc b/docs/static/dead-letter-queues.asciidoc index 5b63cd7c5..0fca50897 100644 --- a/docs/static/dead-letter-queues.asciidoc +++ b/docs/static/dead-letter-queues.asciidoc @@ -1,37 +1,66 @@ [[dead-letter-queues]] -=== Dead Letter Queues +=== Dead letter queues (DLQ) -NOTE: The dead letter queue feature is currently supported for the -<> output only. Additionally, The dead -letter queue is only used where the response code is either 400 -or 404, both of which indicate an event that cannot be retried. -Support for additional outputs will be available in future releases of the -Logstash plugins. Before configuring Logstash to use this feature, refer to -the output plugin documentation to verify that the plugin supports the dead -letter queue feature. +The dead letter queue (DLQ) is designed as a place to temporarily write events that cannot be processed. +The DLQ gives you flexibility to investigate problematic events without blocking the pipeline or losing the events. +Your pipeline keeps flowing, and the immediate problem is averted. +But those events still need to be addressed. + +You can <> with the <> . + +Processing events does not delete items from the queue, and the DLQ sometimes needs attention. +See <> and <> for more info. + +[[dead-letter-how]] +==== How the dead letter queue works By default, when Logstash encounters an event that it cannot process because the data contains a mapping error or some other issue, the Logstash pipeline either hangs or drops the unsuccessful event. In order to protect against data loss in this situation, you can <> to write -unsuccessful events to a dead letter queue instead of dropping them. +unsuccessful events to a dead letter queue instead of dropping them. -Each event written to the dead letter queue includes the original event, along -with metadata that describes the reason the event could not be processed, -information about the plugin that wrote the event, and the timestamp for when -the event entered the dead letter queue. +NOTE: The dead letter queue is currently supported only for the +<>. The dead letter queue is used for +documents with response codes of 400 or 404, both of which indicate an event +that cannot be retried. -To process events in the dead letter queue, you simply create a Logstash -pipeline configuration that uses the +Each event written to the dead letter queue includes the original event, +metadata that describes the reason the event could not be processed, information +about the plugin that wrote the event, and the timestamp when the event +entered the dead letter queue. + +To process events in the dead letter queue, create a Logstash pipeline +configuration that uses the <> to read -from the queue. +from the queue. See <> for more information. image::static/images/dead_letter_queue.png[Diagram showing pipeline reading from the dead letter queue] -See <> for more information. +[[es-proc-dlq]] +==== {es} processing and the dead letter queue + +**HTTP request failure.** If the HTTP request fails (because {es} is unreachable +or because it returned an HTTP error code), the {es} output retries the entire +request indefinitely. In these scenarios, the dead letter queue has no +opportunity to intercept. + +**HTTP request success.** The {ref}/docs-bulk.html[{es} Bulk API] can perform +multiple actions using the same request. If the Bulk API request is successful, +it returns `200 OK`, even if some documents in the batch have +{ref}/docs-bulk.html#bulk-failures-ex[failed]. In this situation, the `errors` +flag for the request will be `true`. + +The response body can include metadata indicating that one or more specific +actions in the bulk request could not be performed, along with an HTTP-style +status code per entry to indicate why the action could not be performed. +If the DLQ is configured, individual indexing failures are routed there. + +Even if you regularly process events, events remain in the dead letter queue. +The dead letter queue requires <> to clear it. [[configuring-dlq]] -==== Configuring Logstash to Use Dead Letter Queues +==== Configuring {ls} to use dead letter queues Dead letter queues are disabled by default. To enable dead letter queues, set the `dead_letter_queue_enable` option in the `logstash.yml` @@ -57,11 +86,32 @@ specify a different path for the files: path.dead_letter_queue: "path/to/data/dead_letter_queue" ------------------------------------------------------------------------------- +TIP: Use the local filesystem for data integrity and performance. Network File System (NFS) is not supported. + +Dead letter queue entries are written to a temporary file, which is then renamed + to a dead letter queue segment file, which is then eligible for ingestion. The rename + happens either when this temporary file is considered 'full', or when a period + of time has elapsed since the last dead letter queue eligible event was written + to the temporary file. + +This length of time can be set using the `dead_letter_queue.flush_interval` setting. + This setting is in milliseconds, and defaults to 5000ms. A low value here will mean + in the event of infrequent writes to the dead letter queue more, smaller, queue + files may be written, while a larger value will introduce more latency between + items being "written" to the dead letter queue, and being made available for + reading by the dead_letter_queue input. + + Note that this value cannot be set to lower than 1000ms. + +[source,yaml] +------------------------------------------------------------------------------- +dead_letter_queue.flush_interval: 5000 +------------------------------------------------------------------------------- NOTE: You may not use the same `dead_letter_queue` path for two different Logstash instances. -===== File Rotation +===== File rotation Dead letter queues have a built-in file rotation policy that manages the file size of the queue. When the file size reaches a preconfigured threshold, a new @@ -73,7 +123,7 @@ will be dropped if they would increase the size of the dead letter queue beyond this setting. [[processing-dlq-events]] -==== Processing Events in the Dead Letter Queue +==== Processing events in the dead letter queue When you are ready to process events in the dead letter queue, you create a pipeline that uses the @@ -103,7 +153,6 @@ output { } } -------------------------------------------------------------------------------- - <1> The path to the top-level directory containing the dead letter queue. This directory contains a separate folder for each pipeline that writes to the dead letter queue. To find the path to this directory, look at the `logstash.yml` @@ -132,7 +181,7 @@ will not be resubmitted to the dead letter queue if they cannot be processed correctly. [[dlq-timestamp]] -==== Reading From a Timestamp +==== Reading from a timestamp When you read from the dead letter queue, you might not want to process all the events in the queue, especially if there are a lot of old events in the queue. @@ -145,7 +194,7 @@ processing events based on the timestamp of when they entered the queue: input { dead_letter_queue { path => "/path/to/data/dead_letter_queue" - start_timestamp => 2017-06-06T23:40:37 + start_timestamp => "2017-06-06T23:40:37" pipeline_id => "main" } } @@ -155,7 +204,7 @@ For this example, the pipeline starts reading all events that were delivered to the dead letter queue on or after June 6, 2017, at 23:40:37. [[dlq-example]] -==== Example: Processing Data That Has Mapping Errors +==== Example: Processing data that has mapping errors In this example, the user attempts to index a document that includes geo_ip data, but the data cannot be processed because it contains a mapping error: @@ -212,9 +261,40 @@ output { } } -------------------------------------------------------------------------------- - <1> The <> reads from the dead letter queue. <2> The `mutate` filter removes the problem field called `location`. <3> The clean event is sent to Elasticsearch, where it can be indexed because the mapping issue is resolved. +[[dlq-size]] +==== Track dead letter queue size + +Monitor the size of the dead letter queue before it becomes a problem. +By checking it periodically, you can determine the maximum queue size that makes sense for each pipeline. + +The size of the DLQ for each pipeline is available in the node stats API. + +[source,txt] +----- +pipelines.${pipeline_id}.dead_letter_queue.queue_size_in_bytes. +----- + +Where `{pipeline_id}` is the name of a pipeline with DLQ enabled. + + +[[dlq-clear]] +==== Clear the dead letter queue + +The dead letter queue cannot be cleared with the upstream pipeline running. + +The dead letter queue is a directory of pages. +To clear it, stop the pipeline and delete location/. + +[source,txt] +----- +${path.data}/dead_letter_queue/${pipeline_id} +----- + +Where `{pipeline_id}` is the name of a pipeline with DLQ enabled. + +The pipeline creates a new dead letter queue when it starts again. \ No newline at end of file diff --git a/docs/static/deploying.asciidoc b/docs/static/deploying.asciidoc index 8813bd3c8..997753966 100644 --- a/docs/static/deploying.asciidoc +++ b/docs/static/deploying.asciidoc @@ -124,7 +124,7 @@ Enterprise-grade security is available across the entire delivery chain. * There’s a wealth of security options when communicating with Elasticsearch including basic authentication, TLS, PKI, LDAP, AD, and other custom realms. To enable Elasticsearch security, see -{stack-ov}/elasticsearch-security.html[Securing the {stack}]. +{ref}/secure-cluster.html[Secure a cluster]. [float] ==== Monitoring @@ -158,7 +158,7 @@ Logstash can expose endpoint listeners with the respective <> input plugins. The data sources enumerated below are typically ingested through one of these three protocols. -NOTE: The TCP protocol does not support application-level acknowledgements, so +NOTE: The TCP and UDP protocols do not support application-level acknowledgements, so connectivity issues may result in data loss. For high availability scenarios, a third-party hardware or software load diff --git a/docs/static/doc-for-plugin.asciidoc b/docs/static/doc-for-plugin.asciidoc new file mode 100644 index 000000000..981a2b927 --- /dev/null +++ b/docs/static/doc-for-plugin.asciidoc @@ -0,0 +1,191 @@ +[[plugin-doc]] +=== Document your plugin + +Documentation is a required component of your plugin. +Quality documentation with good examples contributes to the adoption of your plugin. + +The documentation that you write for your plugin will be generated and published +in the {logstash-ref}/index.html[Logstash Reference] and the +{lsplugindocs}[Logstash Versioned Plugin Reference]. + +.Plugin listing in {ls} Reference +[NOTE] +===== +We may list your plugin in the {logstash-ref}/index.html[Logstash Reference] if +it meets our <>. +When we list your plugin, we point to _your_ documentation--a readme.md, docs/index.asciidoc, or both--in your plugin repo. +For more info on this option, see <>. +===== + +The following sections contain guidelines for documenting plugins hosted in +the Github https://github.com/logstash-plugins/[logstash-plugins] organization. + +[[plugin-doc-file]] +==== Documentation file + +Documentation belongs in a single file called 'docs/index.asciidoc'. +It belongs in a single file called 'docs/index.asciidoc'. +The <> creates a starter file for you. + +[[heading-ids]] +==== Heading IDs + +Format heading anchors with variables that can support generated IDs. This approach +creates unique IDs when the {lsplugindocs}[Logstash Versioned Plugin Reference] +is built. Unique heading IDs are required to avoid duplication over multiple versions of a plugin. + +*Example* + +Don't hardcode a plugin heading ID like this: `[[config_models]]` + +Instead, use variables to define it: + +[source,txt] +---------------------------------- +[id="plugins-{type}s-{plugin}-config_models"] +==== Configuration models +---------------------------------- + +If you hardcode an ID, the {lsplugindocs}[Logstash Versioned Plugin Reference] +builds correctly the first time. The second time the doc build runs, the ID +is flagged as a duplicate, and the build fails. + +[[link-format]] +==== Link formats + +Correct link formatting is essential for directing users to the content you +want them to see. Incorrect link formatting or duplicate links can break the +documentation build. Let's not do that. + +===== Link to content in the same file + +Use angle brackets to format links to content in the same asciidoc file. + +*Example* + +This link: +[source,txt] +----- +<> +----- + +Points to this heading in the same file: + +[source,txt] +---------------------------------- +[id="plugins-{type}s-{plugin}-config_models"] +==== Configuration models +---------------------------------- + +===== Link to content in the Logstash Reference Guide + +Use external link syntax for links that point to documentation for other plugins or content in the Logstash Reference Guide. + +*Examples* +[source,txt] +----- +{logstash-ref}/plugins-codecs-multiline.html[Multiline codec plugin] +----- + +[source,txt] +----- +{logstash-ref}/getting-started-with-logstash.html +----- + +===== Link text + +If you don't specify link text, the URL is used as the link text. + +*Examples* + +If you want your link to display as {logstash-ref}/getting-started-with-logstash.html, use this format: +[source,txt] +----- +{logstash-ref}/getting-started-with-logstash.html +----- + +If you want your link to display as {logstash-ref}/getting-started-with-logstash.html[Getting Started with Logstash], use this format: +[source,txt] +----- +{logstash-ref}/getting-started-with-logstash.html[Getting Started with Logstash] +----- + +===== Link to data type descriptions + +We make an exception for links that point to data type descriptions, +such as `<>`, because they are used so frequently. +We have a cleanup step in the conversion script that converts the links to the +correct syntax. + +[[format-code]] +==== Code samples + +We all love code samples. Asciidoc supports code blocks and config examples. +To include Ruby code, use the asciidoc `[source,ruby]` directive. + +Note that the hashmarks (#) are present to make the example render correctly. +Don't include the hashmarks in your asciidoc file. + +[source,txt] +[subs="attributes"] +---------------------------------- +# [source,ruby] +# ----- +# match => { +# "field1" => "value1" +# "field2" => "value2" +# ... +# } +# ----- +---------------------------------- + +The sample above (with hashmarks removed) renders in the documentation like this: +[source,ruby] +---------------------------------- +match => { + "field1" => "value1" + "field2" => "value2" + ... +} +---------------------------------- + +==== Where's my doc? + +Plugin documentation goes through several steps before it gets published in the +{lsplugindocs}[Logstash Versioned Plugin Reference] and the {logstash-ref}/index.html[Logstash Reference]. + +Here's an overview of the workflow: + +* Be sure that you have signed the contributor license agreement (CLA) and have all necessary approvals and sign offs. +* Merge the pull request for your plugin (including the `index.asciidoc` file, the `changelog.md` file, and the gemspec). +* Wait for the continuous integration build to complete successfully. +* Publish the plugin to https://rubygems.org. +* A script detects the new or changed version, and picks up the `index.asciidoc` file for inclusion in the doc build. +* The documentation for your new plugin is published in the {lsplugindocs}[Logstash Versioned Plugin Reference]. + +We're not done yet. + +* For each release, we package the new and changed documentation files into a pull request to add or update content. +(We sometimes package plugin docs between releases if we make significant changes to plugin documentation or add a new plugin.) +* The script detects the new or changed version, and picks up the `index.asciidoc` file for inclusion in the doc build. +* We create a pull request, and merge the new and changed content into the appropriate version branches. +* For a new plugin, we add a link to the list of plugins in the {logstash-ref}/index.html[Logstash Reference]. +* The documentation for your new (or changed) plugin is published in the {logstash-ref}/index.html[Logstash Reference]. + +===== Documentation or plugin updates + +When you make updates to your plugin or the documentation, consider +bumping the version number in the changelog and gemspec (or version file). The +version change triggers the doc build to pick up your changes for publishing. + +==== Resources + +For more asciidoc formatting tips, see the excellent reference at +https://github.com/elastic/docs#asciidoc-guide. + +For tips on contributing and changelog guidelines, see +https://github.com/elastic/logstash/blob/master/CONTRIBUTING.md#logstash-plugin-changelog-guidelines[CONTRIBUTING.md]. + +For general information about contributing, see +{logstash-ref}/contributing-to-logstash.html[Contributing to Logstash]. + diff --git a/docs/static/docker.asciidoc b/docs/static/docker.asciidoc index e0f76d114..f36959c0c 100644 --- a/docs/static/docker.asciidoc +++ b/docs/static/docker.asciidoc @@ -5,11 +5,11 @@ registry. The base image is https://hub.docker.com/_/centos/[centos:7]. A list of all published Docker images and tags is available at https://www.docker.elastic.co[www.docker.elastic.co]. The source code is in -https://github.com/elastic/logstash-docker/tree/{branch}[GitHub]. +https://github.com/elastic/logstash/tree/{branch}[GitHub]. These images are free to use under the Elastic license. They contain open source and free commercial features and access to paid commercial features. -{xpack-ref}/license-management.html[Start a 30-day trial] to try out all of the +{kibana-ref}/managing-licenses.html[Start a 30-day trial] to try out all of the paid commercial features. See the https://www.elastic.co/subscriptions[Subscriptions] page for information about Elastic license levels. @@ -140,11 +140,11 @@ that you don't retain the example config from the base image. Under Docker, Logstash settings can be configured via environment variables. When the container starts, a helper process checks the environment for variables that can be mapped to Logstash settings. Settings that are found -in the environment are merged into `logstash.yml` as the container starts up. +in the environment override those in the `logstash.yml` as the container starts up. For compatibility with container orchestration systems, these environment variables are written in all capitals, with underscores as word -separators +separators. Some example translations are shown here: @@ -153,7 +153,7 @@ Some example translations are shown here: **Environment Variable**:: **Logstash Setting** `PIPELINE_WORKERS`:: `pipeline.workers` `LOG_LEVEL`:: `log.level` -`XPACK_MONITORING_ENABLED`:: `xpack.monitoring.enabled` +`MONITORING_ENABLED`:: `monitoring.enabled` In general, any setting listed in the <> can be configured with this technique. @@ -170,9 +170,9 @@ images: [horizontal] `http.host`:: `0.0.0.0` -`xpack.monitoring.elasticsearch.hosts`:: `http://elasticsearch:9200` +`monitoring.elasticsearch.hosts`:: `http://elasticsearch:9200` -NOTE: The setting `xpack.monitoring.elasticsearch.hosts` is not +NOTE: The setting `monitoring.elasticsearch.hosts` is not defined in the `-oss` image. These settings are defined in the default `logstash.yml`. They can be overridden diff --git a/docs/static/ecs-compatibility.asciidoc b/docs/static/ecs-compatibility.asciidoc new file mode 100644 index 000000000..46871e27a --- /dev/null +++ b/docs/static/ecs-compatibility.asciidoc @@ -0,0 +1,85 @@ +[[ecs-ls]] +=== ECS in Logstash + +// LS8 will ship with ECS v8, but until ECS v8 is ready we rely on ECS v1 as an approximation. +:ls8-ecs-major-version: v8 + +The {ecs-ref}/index.html[Elastic Common Schema (ECS)] is an open source specification, developed with support from the Elastic user community. +ECS defines a common set of fields to be used for storing event data, such as logs and metrics, in {es}. +With ECS, users can normalize event data to better analyze, visualize, and correlate the data represented in their events. + +[[ecs-compatibility]] +==== ECS compatibility + +Many plugins implement an ECS-compatibility mode, which causes them to produce and manipulate events in a manner that is compatible with the Elastic Common Schema (ECS). + +Any plugin that supports this mode will also have an `ecs_compatibility` option, which allows you to configure which mode the individual plugin instance should operate in. +If left unspecified for an individual plugin, the pipeline's `pipeline.ecs_compatibility` setting will be observed. +This allows you to configure plugins to use ECS -- or to lock in your existing non-ECS behavior -- in advance of your {ls} 8.0 upgrade where ECS will be enabled by default. + +ECS Compatibility modes do not prevent you from explicitly configuring a plugin in a manner that conflicts with ECS. +Instead, they ensure that _implicit_ configuration avoids conflicts. + +[[ecs-configuration]] +===== Configuring ECS + +ECS will be on by default in {ls} 8, but you can begin using it now by configuring individual plugins with `ecs_compatibility`. +You can also "lock in" the existing non-ECS behavior for an entire pipeline to ensure its behavior doesn't change when you perform your next major upgrade. + +====== Specific plugin instance + +Use a plugin's `ecs_compatibility` option to override the default value on the plugin instance. + +For example, if you want a specific instance of the GeoIP Filter to behave without ECS compatibility, you can adjust its definition in your pipeline without affecting any other plugin instances. + +[source,text] +----- +filter { + geoip { + source => "[host][ip]" + ecs_compatibility => disabled + } +} +----- + +Alternatively, if you had a UDP input with a CEF codec, and wanted both to use an ECS mode while still running {ls} 7, you can adjust their definitions to specify the major version of ECS to use. + +[source,text,subs="attributes"] +----- +input { + udp { + port => 1234 + ecs_compatibility => {ls8-ecs-major-version} + codec => cef { + ecs_compatibility => {ls8-ecs-major-version} + } + } +} +----- + +[[ecs-configuration-pipeline]] +====== All plugins in a given pipeline + +If you wish to provide a specific default value for `ecs_compatibility` to _all_ plugins in a pipeline, you can do so with the `pipeline.ecs_compatibility` setting in your pipeline definition in `config/pipelines.yml` or Central Management. +This setting will be used unless overridden by a specific plugin instance. +If unspecified for an individual pipeline, the global value will be used. + +[source,yaml,subs="attributes"] +----- +- pipeline.id: my-legacy-pipeline + path.config: "/etc/path/to/legacy-pipeline.config" + pipeline.ecs_compatibility: disabled +- pipeline.id: my-ecs-pipeline + path.config: "/etc/path/to/ecs-pipeline.config" + pipeline.ecs_compatibility: {ls8-ecs-major-version} +----- + +[[ecs-configuration-all]] +====== All plugins in all pipelines + +Similarly, you can set the default value for the whole {ls} process by setting the `pipeline.ecs_compatibility` value in `config/logstash.yml`. + +[source,yaml] +----- +pipeline.ecs_compatibility: disabled +----- diff --git a/docs/static/fb-ls-kafka-example.asciidoc b/docs/static/fb-ls-kafka-example.asciidoc new file mode 100644 index 000000000..de2280ffb --- /dev/null +++ b/docs/static/fb-ls-kafka-example.asciidoc @@ -0,0 +1,156 @@ +[[use-filebeat-modules-kafka]] +=== Example: Set up {filebeat} modules to work with Kafka and {ls} + +This section shows how to set up {filebeat} +{filebeat-ref}/filebeat-modules-overview.html[modules] to work with {ls} when +you are using Kafka in between {filebeat} and {ls} in your publishing pipeline. +The main goal of this example is to show how to load ingest pipelines from +{filebeat} and use them with {ls}. + +The examples in this section show simple configurations with topic names hard +coded. For a full list of configuration options, see documentation about +configuring the <>. Also see +{filebeat-ref}/kafka-output.html[Configure the Kafka output] in the _{filebeat} +Reference_. + +==== Set up and run {filebeat} + +. If you haven't already set up the {filebeat} index template and sample {kib} +dashboards, run the {filebeat} `setup` command to do that now: ++ +[source,shell] +---------------------------------------------------------------------- +filebeat -e setup +---------------------------------------------------------------------- ++ +The `-e` flag is optional and sends output to standard error instead of syslog. ++ +A connection to {es} and {kib} is required for this one-time setup +step because {filebeat} needs to create the index template in {es} and +load the sample dashboards into {kib}. For more information about configuring +the connection to {es}, see the Filebeat +{filebeat-ref}/filebeat-installation-configuration.html[quick start]. ++ +After the template and dashboards are loaded, you'll see the message `INFO +{kib} dashboards successfully loaded. Loaded dashboards`. + +. Run the `modules enable` command to enable the modules that you want to run. +For example: ++ +[source,shell] +---------------------------------------------------------------------- +filebeat modules enable system +---------------------------------------------------------------------- ++ +You can further configure the module by editing the config file under the +{filebeat} `modules.d` directory. For example, if the log files are not in the +location expected by the module, you can set the `var.paths` option. + +. Run the `setup` command with the `--pipelines` and `--modules` options +specified to load ingest pipelines for the modules you've enabled. This step +also requires a connection to {es}. If you want use a {ls} pipeline instead of +ingest node to parse the data, skip this step. ++ +[source,shell] +---------------------------------------------------------------------- +filebeat setup --pipelines --modules system +---------------------------------------------------------------------- + +. Configure {filebeat} to send log lines to Kafka. To do this, in the ++filebeat.yml+ config file, disable the {es} output by commenting it out, and +enable the Kafka output. For example: ++ +[source,yaml] +----- +#output.elasticsearch: + #hosts: ["localhost:9200"] +output.kafka: + hosts: ["kafka:9092"] + topic: "filebeat" + codec.json: + pretty: false +----- + +. Start {filebeat}. For example: ++ +[source,shell] +---------------------------------------------------------------------- +filebeat -e +---------------------------------------------------------------------- ++ +{filebeat} will attempt to send messages to {ls} and continue until {ls} is +available to receive them. ++ +NOTE: Depending on how you've installed {filebeat}, you might see errors +related to file ownership or permissions when you try to run {filebeat} modules. +See {beats-ref}/config-file-permissions.html[Config File Ownership and Permissions] +in the _Beats Platform Reference_ if you encounter errors related to file +ownership or permissions. + + +==== Create and start the {ls} pipeline + +. On the system where {ls} is installed, create a {ls} pipeline configuration +that reads from a Kafka input and sends events to an {es} output: ++ +-- +[source,yaml] +----- +input { + kafka { + bootstrap_servers => "myhost:9092" + topics => ["filebeat"] + codec => json + } +} + +output { + if [@metadata][pipeline] { + elasticsearch { + hosts => "https://myEShost:9200" + manage_template => false + index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" + pipeline => "%{[@metadata][pipeline]}" <1> + user => "elastic" + password => "secret" + } + } else { + elasticsearch { + hosts => "https://myEShost:9200" + manage_template => false + index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" + user => "elastic" + password => "secret" + } + } +} +----- +<1> Set the `pipeline` option to `%{[@metadata][pipeline]}`. This setting +configures {ls} to select the correct ingest pipeline based on metadata +passed in the event. + +///// +//Commenting out this section until we can update docs to use ECS-compliant. +//fields for 7.0 +// +//If you want use a {ls} pipeline instead of ingest node to parse the data, see +//the `filter` and `output` settings in the examples under +//<>. +///// +-- + +. Start {ls}, passing in the pipeline configuration file you just defined. For +example: ++ +[source,shell] +---------------------------------------------------------------------- +bin/logstash -f mypipeline.conf +---------------------------------------------------------------------- ++ +{ls} should start a pipeline and begin receiving events from the Kafka input. + +==== Visualize the data + +To visualize the data in {kib}, launch the {kib} web interface by pointing your +browser to port 5601. For example, http://127.0.0.1:5601[http://127.0.0.1:5601]. +Click *Dashboards* then view the {filebeat} dashboards. \ No newline at end of file diff --git a/docs/static/field-reference.asciidoc b/docs/static/field-reference.asciidoc index fe48ecb33..0b2955722 100644 --- a/docs/static/field-reference.asciidoc +++ b/docs/static/field-reference.asciidoc @@ -42,6 +42,12 @@ fieldReferenceLiteral : ( pathFragment )+ ; +NOTE: In Logstash 7.x and earlier, a quoted value (such as `["foo"]`) is +considered a field reference and isn't treated as a single element array. This +behavior might cause confusion in conditionals, such as `[message] in ["foo", +"bar"]` compared to `[message] in ["foo"]`. We discourage using names with +quotes, such as `"\"foo\""`, as this behavior might change in the future. + [float] [[formal-grammar-field-reference]] ==== Field Reference (Event APIs) diff --git a/docs/static/filebeat-modules.asciidoc b/docs/static/filebeat-modules.asciidoc index 1b601f685..c12223b09 100644 --- a/docs/static/filebeat-modules.asciidoc +++ b/docs/static/filebeat-modules.asciidoc @@ -1,185 +1,191 @@ [[filebeat-modules]] -== Working with Filebeat Modules +== Working with {filebeat} Modules -Filebeat comes packaged with pre-built {filebeat-ref}/filebeat-modules.html[modules] -that contain the configurations needed to collect, parse, enrich, and visualize -data from various log file formats. Each Filebeat module consists of one or more -filesets that contain ingest node pipelines, Elasticsearch templates, Filebeat -prospector configurations, and Kibana dashboards. +{filebeat} comes packaged with pre-built +{filebeat-ref}/filebeat-modules.html[modules] that contain the configurations +needed to collect, parse, enrich, and visualize data from various log file +formats. Each {filebeat} module consists of one or more filesets that contain +ingest node pipelines, {es} templates, {filebeat} input configurations, and +{kib} dashboards. -Filebeat modules are a great way to get started, but you might find that ingest -pipelines don't offer the processing power that you require. If that's the case, -you'll need to use Logstash. +You can use {filebeat} modules with {ls}, but you need to do some extra setup. +The simplest approach is to <> provided by {filebeat}. -[float] -[[graduating-to-Logstash]] -=== Using Logstash instead of Ingest Node +///// +//Commenting out this section until we can update docs to use ECS-compliant. +//fields for 7.0 +// +//If the ingest pipelines don't meet your +//requirements, you can +//<> to use +//instead of the ingest pipelines. +// +//Either approach allows you to use the configurations, index templates, and +//dashboards available with {filebeat} modules, as long as you maintain the +//field structure expected by the index and dashboards. +///// -Logstash provides an <> -to help you migrate ingest pipeline definitions to Logstash configs. However, -the tool does not currently support all the processors that are available for -ingest node. +[[use-ingest-pipelines]] +=== Use ingest pipelines for parsing -You can follow the steps in this section to build and run Logstash -configurations that parse the data collected by Filebeat modules. Then you'll be -able to use the same dashboards available with Filebeat to visualize your data -in Kibana. +When you use {filebeat} modules with {ls}, you can use the ingest pipelines +provided by {filebeat} to parse the data. You need to load the pipelines +into {es} and configure {ls} to use them. -[float] -==== Create and start the Logstash pipeline +*To load the ingest pipelines:* -. Create a Logstash pipeline configuration that reads from the Beats input and -parses the events. -+ -See <> for detailed examples. +On the system where {filebeat} is installed, run the `setup` command with the +`--pipelines` option specified to load ingest pipelines for specific modules. +For example, the following command loads ingest pipelines for the system and +nginx modules: -. Start Logstash, passing in the pipeline configuration file that parses the -log. For example: -+ [source,shell] ----------------------------------------------------------------------- -bin/logstash -f mypipeline.conf ----------------------------------------------------------------------- -+ -You'll see the following message when Logstash is running and listening for -input from Beats: -+ -[source,shell] ----------------------------------------------------------------------- -[2017-10-13T00:01:15,413][INFO ][logstash.inputs.beats ] Beats inputs: Starting input listener {:address=>"127.0.0.1:5044"} -[2017-10-13T00:01:15,443][INFO ][logstash.pipeline ] Pipeline started {"pipeline.id"=>"main"} ----------------------------------------------------------------------- +----- +filebeat setup --pipelines --modules nginx,system +----- +A connection to {es} is required for this setup step because {filebeat} needs to +load the ingest pipelines into {es}. If necessary, you can temporarily disable +your configured output and enable the {es} output before running the command. -The Logstash pipeline is now ready to receive events from Filebeat. Next, you -set up and run Filebeat. +*To configure {ls} to use the pipelines:* -[float] -==== Set up and run Filebeat +On the system where {ls} is installed, create a {ls} pipeline configuration +that reads from a {ls} input, such as {beats} or Kafka, and sends events to an +{es} output. Set the `pipeline` option in the {es} output to +`%{[@metadata][pipeline]}` to use the ingest pipelines that you loaded +previously. -. If you haven't already set up the Filebeat index template and sample Kibana -dashboards, run the Filebeat `setup` command to do that now: -+ -[source,shell] ----------------------------------------------------------------------- -./filebeat -e setup ----------------------------------------------------------------------- -+ -The `-e` flag is optional and sends output to standard error instead of syslog. -+ -A connection to Elasticsearch and Kibana is required for this one-time setup -step because Filebeat needs to create the index template in Elasticsearch and -load the sample dashboards into Kibana. -+ -After the template and dashboards are loaded, you'll see the message `INFO -Kibana dashboards successfully loaded. Loaded dashboards`. +Here's an example configuration that reads data from the Beats input and uses +{filebeat} ingest pipelines to parse data collected by modules: -. Configure Filebeat to send log lines to Logstash. To do this, in the -+filebeat.yml+ config file, disable the Elasticsearch output, and enable the -Logstash output. For example: -+ [source,yaml] ----- -#output.elasticsearch: - #hosts: ["localhost:9200"] -output.logstash: - hosts: ["localhost:5044"] +input { + beats { + port => 5044 + } +} + +output { + if [@metadata][pipeline] { + elasticsearch { + hosts => "https://061ab24010a2482e9d64729fdb0fd93a.us-east-1.aws.found.io:9243" + manage_template => false + index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" + pipeline => "%{[@metadata][pipeline]}" <1> + user => "elastic" + password => "secret" + } + } else { + elasticsearch { + hosts => "https://061ab24010a2482e9d64729fdb0fd93a.us-east-1.aws.found.io:9243" + manage_template => false + index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" + user => "elastic" + password => "secret" + } + } +} ----- +<1> Set the `pipeline` option to `%{[@metadata][pipeline]}`. This setting +configures {ls} to select the correct ingest pipeline based on metadata +passed in the event. -. Run the `modules enable` command to enable the modules that you want to run. -For example: -+ -[source,shell] ----------------------------------------------------------------------- -./filebeat modules enable nginx ----------------------------------------------------------------------- -+ -You can further configure the module by editing the config file under the -Filebeat `modules.d` directory. For example, if the log files are not in the -location expected by the module, you can set the `var.paths` option. +See the {filebeat} {filebeat-ref}/filebeat-modules-overview.html[Modules] +documentation for more information about setting up and running modules. -. Start Filebeat. For example, to start Filebeat in the foreground, use: -+ -[source,shell] ----------------------------------------------------------------------- -./filebeat -e ----------------------------------------------------------------------- -+ -NOTE: Depending on how you've installed Filebeat, you might see errors -related to file ownership or permissions when you try to run Filebeat modules. -See {beats-ref}/config-file-permissions.html[Config File Ownership and Permissions] -in the _Beats Platform Reference_ if you encounter errors related to file -ownership or permissions. -+ -See {filebeat-ref}/filebeat-starting.html[Starting Filebeat] for more info. - -[float] -==== Visualize the data - -To visualize the data in Kibana, launch the Kibana web interface by pointing -your browser to port 5601. For example, -http://127.0.0.1:5601[http://127.0.0.1:5601]. - -[[logstash-config-for-filebeat-modules]] -=== Configuration Examples - -The examples in this section show you how to build Logstash pipelines that parse -data sent collected by Filebeat modules: - -* <> -* <> -* <> -* <> - -[[parsing-apache2]] -==== Apache 2 Logs - -The Logstash pipeline configuration in this example shows how to ship and parse -access and error logs collected by the -{filebeat-ref}/filebeat-module-apache.html[`apache` Filebeat module]. - -[source,json] ----------------------------------------------------------------------------- -include::filebeat_modules/apache2/pipeline.conf[] ----------------------------------------------------------------------------- +For a full example, see <>. -[[parsing-mysql]] -==== MySQL Logs +///// +//Commenting out this section until we can update docs to use ECS-compliant. +//fields for 7.0 +// +//[[logstash-config-for-filebeat-modules]] +//=== Use {ls} pipelines for parsing +// +//The examples in this section show how to build {ls} pipeline configurations that +//replace the ingest pipelines provided with {filebeat} modules. The pipelines +//take the data collected by {filebeat} modules, parse it into fields expected by +//the {filebeat} index, and send the fields to {es} so that you can visualize the +//data in the pre-built dashboards provided by {filebeat}. +// +//This approach is more time consuming than using the existing ingest pipelines to +//parse the data, but it gives you more control over how the data is processed. +//By writing your own pipeline configurations, you can do additional processing, +//such as dropping fields, after the fields are extracted, or you can move your +//load from {es} ingest nodes to {ls} nodes. +// +//Before deciding to replaced the ingest pipelines with {ls} configurations, +//read <>. +// +//Here are some examples that show how to implement {ls} configurations to replace +//ingest pipelines: +// +//* <> +//* <> +//* <> +//* <> +// +//TIP: {ls} provides an <> +//to help you migrate ingest pipeline definitions to {ls} configs. The tool does +//not currently support all the processors that are available for ingest node, but +//it's a good starting point. +// +//[[parsing-apache2]] +//==== Apache 2 Logs +// +//The {ls} pipeline configuration in this example shows how to ship and parse +//access and error logs collected by the +//{filebeat-ref}/filebeat-module-apache.html[`apache` {filebeat} module]. +// +//[source,json] +//---------------------------------------------------------------------------- +//include::filebeat_modules/apache2/pipeline.conf[] +//---------------------------------------------------------------------------- +// +// +//[[parsing-mysql]] +//==== MySQL Logs +// +//The {ls} pipeline configuration in this example shows how to ship and parse +//error and slowlog logs collected by the +//{filebeat-ref}/filebeat-module-mysql.html[`mysql` {filebeat} module]. +// +//[source,json] +//---------------------------------------------------------------------------- +//include::filebeat_modules/mysql/pipeline.conf[] +//---------------------------------------------------------------------------- +// +// +//[[parsing-nginx]] +//==== Nginx Logs +// +//The {ls} pipeline configuration in this example shows how to ship and parse +//access and error logs collected by the +//{filebeat-ref}/filebeat-module-nginx.html[`nginx` {filebeat} module]. +// +//[source,json] +//---------------------------------------------------------------------------- +//include::filebeat_modules/nginx/pipeline.conf[] +//---------------------------------------------------------------------------- +// +// +//[[parsing-system]] +//==== System Logs +// +//The {ls} pipeline configuration in this example shows how to ship and parse +//system logs collected by the +//{filebeat-ref}/filebeat-module-system.html[`system` {filebeat} module]. +// +//[source,json] +//---------------------------------------------------------------------------- +//include::filebeat_modules/system/pipeline.conf[] +//---------------------------------------------------------------------------- +///// -The Logstash pipeline configuration in this example shows how to ship and parse -error and slowlog logs collected by the -{filebeat-ref}/filebeat-module-mysql.html[`mysql` Filebeat module]. - -[source,json] ----------------------------------------------------------------------------- -include::filebeat_modules/mysql/pipeline.conf[] ----------------------------------------------------------------------------- - - -[[parsing-nginx]] -==== Nginx Logs - -The Logstash pipeline configuration in this example shows how to ship and parse -access and error logs collected by the -{filebeat-ref}/filebeat-module-nginx.html[`nginx` Filebeat module]. - -[source,json] ----------------------------------------------------------------------------- -include::filebeat_modules/nginx/pipeline.conf[] ----------------------------------------------------------------------------- - - -[[parsing-system]] -==== System Logs - -The Logstash pipeline configuration in this example shows how to ship and parse -system logs collected by the -{filebeat-ref}/filebeat-module-system.html[`system` Filebeat module]. - -[source,json] ----------------------------------------------------------------------------- -include::filebeat_modules/system/pipeline.conf[] ----------------------------------------------------------------------------- +include::fb-ls-kafka-example.asciidoc[] diff --git a/docs/static/filter.asciidoc b/docs/static/filter.asciidoc index ba20f5856..e12712c8b 100644 --- a/docs/static/filter.asciidoc +++ b/docs/static/filter.asciidoc @@ -9,6 +9,6 @@ :getstarted: Let's step through creating a {plugintype} plugin using the https://github.com/logstash-plugins/logstash-filter-example/[example {plugintype} plugin]. -:methodheader: Logstash filters must implement the `register` and `filter` methods. +:methodheader: pass:m[Logstash filters must implement the `register` and `filter` methods.] include::include/pluginbody.asciidoc[] diff --git a/docs/static/getting-started-with-logstash.asciidoc b/docs/static/getting-started-with-logstash.asciidoc index a8b57c70a..df9f685b0 100644 --- a/docs/static/getting-started-with-logstash.asciidoc +++ b/docs/static/getting-started-with-logstash.asciidoc @@ -7,50 +7,34 @@ input, parses the logs, and writes the parsed data to an Elasticsearch cluster. This section includes the following topics: +* <> * <> * <> * {logstash-ref}/advanced-pipeline.html[Parsing Logs with Logstash] * {logstash-ref}/multiple-input-output-plugins.html[Stitching Together Multiple Input and Output Plugins] +include::jvm.asciidoc[] + [[installing-logstash]] === Installing Logstash -NOTE: Logstash requires Java 8. Java 9 is not supported. Use the -http://www.oracle.com/technetwork/java/javase/downloads/index.html[official Oracle distribution] or an open-source -distribution such as http://openjdk.java.net/[OpenJDK]. - -To check your Java version, run the following command: - -[source,shell] -java -version - -On systems with Java installed, this command produces output similar to the following: - -[source,shell] -java version "1.8.0_65" -Java(TM) SE Runtime Environment (build 1.8.0_65-b17) -Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode) - -On some Linux systems, you may also need to have the `JAVA_HOME` environment -exported before attempting the install, particularly if you installed Java from -a tarball. This is because Logstash uses Java during installation to -automatically detect your environment and install the correct startup method -(SysV init scripts, Upstart, or systemd). If Logstash is unable to find the -JAVA_HOME environment variable during package installation time, you may get an -error message, and Logstash will be unable to start properly. - [float] [[installing-binary]] === Installing from a Downloaded Binary -Download the https://www.elastic.co/downloads/logstash[Logstash installation file] that matches your host environment. -Unpack the file. Do not install Logstash into a directory path that contains colon (:) characters. +The {ls} binaries are available from +https://www.elastic.co/downloads/logstash[https://www.elastic.co/downloads]. +Download the Logstash installation file for your host environment--TARG.GZ, DEB, +ZIP, or RPM. + +Unpack the file. Do not install Logstash into a directory path that +contains colon (:) characters. [NOTE] -- These packages are free to use under the Elastic license. They contain open source and free commercial features and access to paid commercial features. -{xpack-ref}/license-management.html[Start a 30-day trial] to try out all of the +{kibana-ref}/managing-licenses.html[Start a 30-day trial] to try out all of the paid commercial features. See the https://www.elastic.co/subscriptions[Subscriptions] page for information about Elastic license levels. @@ -172,7 +156,7 @@ Download and install the public signing key: [source,sh] -------------------------------------------------- -rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch +sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch -------------------------------------------------- Add the following in your `/etc/yum.repos.d/` directory @@ -228,6 +212,51 @@ See the {logstash-ref}/running-logstash.html[Running Logstash] document for mana endif::[] +[float] +[[brew]] +=== Installing {ls} on macOS with Homebrew + +Elastic publishes Homebrew formulae so you can install {ls} with the +https://brew.sh/[Homebrew] package manager. + +To install with Homebrew, you first need to tap the Elastic Homebrew repository: + +[source,sh] +------------------------- +brew tap elastic/tap +------------------------- + +After you've tapped the Elastic Homebrew repo, you can use `brew install` to +install the default distribution of {ls}: + +[source,sh] +------------------------- +brew install elastic/tap/logstash-full +------------------------- + +This installs the most recently released default distribution of {ls}. +To install the OSS distribution, specify `elastic/tap/logstash-oss`. + + +[float] +[[brew-start]] +==== Starting {ls} with Homebrew + +To have launchd start elastic/tap/logstash-full now and restart at login, run: + +[source,sh] +----- +brew services start elastic/tap/logstash-full +----- + +To run {ls}, in the foreground, run: + +[source,sh] +----- +logstash +----- + + ==== Docker Images are available for running Logstash as a Docker container. They are @@ -249,8 +278,9 @@ the data to a destination. image::static/images/basic_logstash_pipeline.png[] -To test your Logstash installation, run the most basic Logstash pipeline. For -example: +To test your Logstash installation, run the most basic Logstash pipeline. + +**MacOS, Linux** ["source","sh",subs="attributes"] -------------------------------------------------- @@ -258,8 +288,47 @@ cd logstash-{logstash_version} bin/logstash -e 'input { stdin { } } output { stdout {} }' -------------------------------------------------- -NOTE: The location of the `bin` directory varies by platform. See {logstash-ref}/dir-layout.html[Directory layout] -to find the location of `bin\logstash` on your system. +**Windows** + +["source","sh",subs="attributes"] +-------------------------------------------------- +cd logstash-{logstash_version} +.\bin\logstash.bat -e "input { stdin { } } output { stdout {} }" +-------------------------------------------------- + +The command might vary slightly, depending on the terminal or shell you +are using. + +NOTE: The location of the `bin` directory varies by platform. See +{logstash-ref}/dir-layout.html[Directory layout] to find the location of +`bin\logstash` on your system. + +[IMPORTANT] +.macOS Gatekeeper warnings +==== +Apple's rollout of stricter notarization requirements affected the notarization +of the {version} {ls} artifacts. If macOS Catalina displays a dialog when you +first run {ls} that interrupts it, you will need to take an action to allow it +to run. +To prevent Gatekeeper checks on the {ls} files, run the following command on the +downloaded `.tar.gz` archive or the directory to which was extracted: +[source,sh] +---- +xattr -d -r com.apple.quarantine +---- +For example, if the `.tar.gz` file was extracted to the default +logstash-{version} directory, the command is: +[source,sh,subs="attributes"] +---- +xattr -d -r com.apple.quarantine logstash-{version} +---- +Alternatively, you can add a security override if a Gatekeeper popup appears by +following the instructions in the _How to open an app that hasn’t been notarized +or is from an unidentified developer_ section of +https://support.apple.com/en-us/HT202491[Safely open apps on your Mac]. +==== + + The `-e` flag enables you to specify a configuration directly from the command line. Specifying configurations at the command line lets you quickly test configurations without having to edit a file between iterations. diff --git a/docs/static/glob-support.asciidoc b/docs/static/glob-support.asciidoc index 7f45279e2..3e28e9cb5 100644 --- a/docs/static/glob-support.asciidoc +++ b/docs/static/glob-support.asciidoc @@ -41,7 +41,7 @@ Matches config files ending in `.conf` in the specified path. `"/var/log/*.log"`:: Matches log files ending in `.log` in the specified path. -`"/var/log/**/*.log`:: +`"/var/log/**/*.log"`:: Matches log files ending in `.log` in subdirectories under the specified path. `"/path/to/logs/{app1,app2,app3}/data.log"`:: diff --git a/docs/static/include/javapluginpkg.asciidoc b/docs/static/include/javapluginpkg.asciidoc new file mode 100644 index 000000000..7f23d2f0a --- /dev/null +++ b/docs/static/include/javapluginpkg.asciidoc @@ -0,0 +1,83 @@ +[float] +=== Package and deploy + +Java plugins are packaged as Ruby gems for dependency management and +interoperability with Ruby plugins. Once they are packaged as gems, they may +be installed with the `logstash-plugin` utility just as Ruby plugins are. +Because no knowledge of Ruby or its toolchain should be required for Java +plugin development, the procedure for packaging Java plugins as Ruby gems +has been automated through a custom task in the Gradle build file provided +with the example Java plugins. The following sections describe how to +configure and execute that packaging task as well as how to install the +packaged Java plugin in Logstash. + +[float] +==== Configuring the Gradle packaging task + +The following section appears near the top of the `build.gradle` file supplied +with the example Java plugins: + +[source,java] +[subs="attributes"] +----- +// =========================================================================== +// plugin info +// =========================================================================== +group 'org.logstashplugins' // must match the package of the main plugin class +version "${file("VERSION").text.trim()}" // read from required VERSION file +description = "Example Java filter implementation" +pluginInfo.licenses = ['Apache-2.0'] // list of SPDX license IDs +pluginInfo.longDescription = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using \$LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program" +pluginInfo.authors = ['Elasticsearch'] +pluginInfo.email = ['info@elastic.co'] +pluginInfo.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html" +pluginInfo.pluginType = "filter" +pluginInfo.pluginClass = "JavaFilterExample" +pluginInfo.pluginName = "java_filter_example" +// =========================================================================== +----- + +You should configure the values above for your plugin. + +* The `version` value will be automatically read from the `VERSION` file in the +root of your plugin's codebase. +* `pluginInfo.pluginType` should be set to one of `input`, `filter`, `codec`, +or `output`. +* `pluginInfo.pluginName` must match the name specified on the `@LogstashPlugin` +annotation on the main plugin class. The Gradle packaging task will validate +that and return an error if they do not match. + +[float] +==== Running the Gradle packaging task + +Several Ruby source files along with a `gemspec` file and a `Gemfile` are +required to package the plugin as a Ruby gem. These Ruby files are used only +for defining the Ruby gem structure or at Logstash startup time to register +the Java plugin. They are not used during runtime event processing. The +Gradle packaging task automatically generates all of these files based on +the values configured in the section above. + +You run the Gradle packaging task with the following command: + +[source,shell] +----- +./gradlew gem +----- + +For Windows platforms: Substitute `gradlew.bat` for `./gradlew` as appropriate in the command. + +That task will produce a gem file in the root directory of your +plugin's codebase with the name `logstash-{plugintype}--.gem` + +[float] +==== Installing the Java plugin in Logstash + +After you have packaged your Java plugin as a Ruby gem, you can install it in +Logstash with this command: + +[source,shell] +----- +bin/logstash-plugin install --no-verify --local /path/to/javaPlugin.gem +----- + +For Windows platforms: Substitute backslashes for forward slashes as appropriate in the command. diff --git a/docs/static/include/javapluginsetup.asciidoc b/docs/static/include/javapluginsetup.asciidoc new file mode 100644 index 000000000..8a753138f --- /dev/null +++ b/docs/static/include/javapluginsetup.asciidoc @@ -0,0 +1,52 @@ +To develop a new Java {plugintype} for Logstash, you write a new Java class that +conforms to the Logstash Java {pluginclass} API, package it, and install it with the +logstash-plugin utility. We'll go through each of those steps. + +[float] +=== Set up your environment + +[float] +==== Copy the example repo + +Start by copying the {pluginrepo}. The plugin API is currently part of the +Logstash codebase so you must have a local copy of that available. You can +obtain a copy of the Logstash codebase with the following `git` command: + +[source,shell] +----- +git clone --branch --single-branch https://github.com/elastic/logstash.git +----- + +The `branch_name` should correspond to the version of Logstash containing the +preferred revision of the Java plugin API. + +NOTE: The GA version of the Java plugin API is available in the `7.1` +and later branches of the Logstash codebase. + +Specify the `target_folder` for your local copy of the Logstash codebase. If you +do not specify `target_folder`, it defaults to a new folder called `logstash` +under your current folder. + +[float] +==== Generate the .jar file + +After you have obtained a copy of the appropriate revision of the Logstash +codebase, you need to compile it to generate the .jar file containing the Java +plugin API. From the root directory of your Logstash codebase ($LS_HOME), you +can compile it with `./gradlew assemble` (or `gradlew.bat assemble` if you're +running on Windows). This should produce the +`$LS_HOME/logstash-core/build/libs/logstash-core-x.y.z.jar` where `x`, `y`, and +`z` refer to the version of Logstash. + +After you have successfully compiled Logstash, you need to tell your Java plugin +where to find the `logstash-core-x.y.z.jar` file. Create a new file named +`gradle.properties` in the root folder of your plugin project. That file should +have a single line: + +[source,txt] +----- +LOGSTASH_CORE_PATH=/logstash-core +----- + +where `target_folder` is the root folder of your local copy of the Logstash codebase. + diff --git a/docs/static/include/pluginbody.asciidoc b/docs/static/include/pluginbody.asciidoc index 88e14779f..aa163d51d 100644 --- a/docs/static/include/pluginbody.asciidoc +++ b/docs/static/include/pluginbody.asciidoc @@ -1,8 +1,8 @@ - +[id="{plugintype}-new-plugin"] === How to write a Logstash {plugintype} plugin -To develop a new {plugintype} for Logstash, you build a self-contained Ruby gem +To develop a new {plugintype} for Logstash, build a self-contained Ruby gem whose source code lives in its own GitHub repository. The Ruby gem can then be hosted and shared on RubyGems.org. You can use the example {plugintype} implementation as a starting point. (If you're unfamiliar with @@ -13,7 +13,7 @@ https://www.ruby-lang.org/en/documentation/quickstart/[].) {getstarted} -==== Create a GitHub repo for your new plugin +===== Create a GitHub repo for your new plugin Each Logstash plugin lives in its own GitHub repository. To create a new repository for your plugin: . Log in to GitHub. @@ -25,15 +25,15 @@ Each Logstash plugin lives in its own GitHub repository. To create a new reposit ** **Initialize this repository with a README** -- enables you to immediately clone the repository to your computer. . Click **Create Repository**. -==== Use the plugin generator tool +===== Use the plugin generator tool -You can now create your own Logstash plugin in seconds! The `generate` subcommand of `bin/logstash-plugin` creates the foundation +You can create your own Logstash plugin in seconds! The `generate` subcommand of `bin/logstash-plugin` creates the foundation for a new Logstash plugin with templatized files. It creates the correct directory structure, gemspec files, and dependencies so you can start adding custom code to process data with Logstash. For more information, see <> -==== Copy the {plugintype} code +===== Copy the {plugintype} code Alternatively, you can use the examples repo we host on github.com @@ -43,7 +43,7 @@ Alternatively, you can use the examples repo we host on github.com *** alternately, via ssh: `git clone git@github.com:GITUSERNAME/logstash`+-pass:attributes[{plugintype}]-MYPLUGINNAME.git+ ** +cd logstash-pass:attributes[{plugintype}]-MYPLUGINNAME+ -. **Clone the {inputtype} plugin example and copy it to your plugin branch.** +. **Clone the {plugintype} plugin example and copy it to your plugin branch.** + You don't want to include the example .git directory or its contents, so delete it before you copy the example. @@ -92,7 +92,7 @@ For more information about the Ruby gem file structure and an excellent walkthrough of the Ruby gem creation process, see http://timelessrepo.com/making-ruby-gems -==== See what your plugin looks like +===== See what your plugin looks like Before we dive into the details, open up the plugin file in your favorite text editor and take a look. @@ -105,7 +105,6 @@ ifndef::blockinput[] [source,ruby] [subs="attributes"] ---------------------------------- -# encoding: utf-8 require "logstash/{plugintype}s/base" require "logstash/namespace" require "stud/interval" @@ -157,7 +156,6 @@ ifndef::blockcodec[] [source,ruby] [subs="attributes"] ---------------------------------- -# encoding: utf-8 require "logstash/{plugintype}s/base" require "logstash/codecs/line" @@ -216,7 +214,6 @@ ifndef::blockfilter[] [source,ruby] [subs="attributes"] ---------------------------------- -# encoding: utf-8 require "logstash/{plugintype}s/base" require "logstash/namespace" @@ -270,7 +267,6 @@ ifdef::multi_receive_method[] [source,ruby] [subs="attributes"] ---------------------------------- -# encoding: utf-8 require "logstash/{plugintype}s/base" require "logstash/namespace" @@ -312,20 +308,7 @@ endif::multi_receive_method[] Now let's take a line-by-line look at the example plugin. -==== `encoding` - -It seems like a small thing, but remember to specify the encoding at the -beginning of your plugin code: - -[source,sh] ----------------------------------- -# encoding: utf-8 ----------------------------------- - -Logstash depends on things being in UTF-8, so we put this here to tell the Ruby -interpreter that we’re going to be using the UTF-8 encoding. - -==== `require` Statements +===== `require` Statements Logstash {plugintype} plugins require parent classes defined in +logstash/pass:attributes[{plugintype}]s/base+ and logstash/namespace: @@ -344,51 +327,7 @@ them here along with these Logstash dependencies. Let's go through the various elements of the plugin itself. -==== Inline Documentation -Logstash provides infrastructure to automatically generate documentation for -plugins. We use the asciidoc format to write documentation so _any_ comments in -the source code will be first converted into asciidoc and then into html. - -All plugin documentation is then rendered and placed in -http://www.elasticsearch.org/guide/en/logstash/current/index.html[the Logstash section of the Elasticsearch Guide]. - -The inline documentation can include code blocks and config examples! To include -Ruby code, use the asciidoc `[source,ruby]` directive: - -[source,txt] -[subs="attributes"] ----------------------------------- -# Using hashes: -# [source,ruby] -# ---------------------------------- -# match => { -# "field1" => "value1" -# "field2" => "value2" -# ... -# } -# ---------------------------------- ----------------------------------- - -In the rendered HTML document, this block would look like: - -[] -========================= -Using hashes: -[source,ruby] ----------------------------------- -match => { - "field1" => "value1" - "field2" => "value2" - ... - } ----------------------------------- -========================= - - -TIP: For more asciidoc formatting tips, see the excellent reference at -https://github.com/elastic/docs#asciidoc-guide - -==== `class` Declaration +===== `class` Declaration The {plugintype} plugin class should be a subclass of +LogStash::pass:attributes[{pluginclass}]::Base+: @@ -405,7 +344,7 @@ The class name should closely mirror the plugin name, for example: LogStash::{pluginclass}::{pluginnamecap} ---- -==== `config_name` +===== `config_name` [source,ruby] [subs="attributes"] ---------------------------------- @@ -490,7 +429,7 @@ will become a valid boolean in the config. This coercion works for the // ///////////////////////////////////////////////////////////////////////////// ifdef::register_method[] -==== `register` Method +===== `register` Method [source,ruby] [subs="attributes"] ---------------------------------- @@ -519,7 +458,7 @@ endif::register_method[] ifdef::filter_method[] ifndef::blockfilter[] -==== `filter` Method +===== `filter` Method [source,ruby] [subs="attributes"] @@ -574,7 +513,7 @@ endif::filter_method[] ifdef::decode_method[] ifndef::blockcodec[] -==== `decode` Method +===== `decode` Method [source,ruby] [subs="attributes"] @@ -604,7 +543,7 @@ endif::decode_method[] ifdef::encode_method[] ifndef::blockcodec[] -==== `encode` Method +===== `encode` Method [source,ruby] [subs="attributes"] @@ -631,7 +570,7 @@ endif::encode_method[] ifdef::run_method[] ifndef::blockinput[] -==== `run` Method +===== `run` Method The {pluginname} input plugin has the following `run` Method: @@ -719,7 +658,7 @@ endif::run_method[] // ///////////////////////////////////////////////////////////////////////////// ifdef::receive_method[] -==== `receive` Method +===== `receive` Method [source,ruby] [subs="attributes"] @@ -782,9 +721,9 @@ endif::receive_method[] ==== Building the Plugin At this point in the process you have coded your plugin and are ready to build -a Ruby Gem from it. The following steps will help you complete the process. +a Ruby Gem from it. The following information will help you complete the process. -==== External dependencies +===== External dependencies A `require` statement in Ruby is used to include necessary code. In some cases your plugin may require additional files. For example, the collectd plugin @@ -823,7 +762,25 @@ will be discussed further in the testing section of this document. Another kind of external dependency is on jar files. This will be described in the "Add a `gemspec` file" section. -==== Add a Gemfile +===== Deprecated features + +As a plugin evolves, an option or feature may no longer serve the +intended purpose, and the developer may want to _deprecate_ its usage. +Deprecation warns users about the option's status, so they aren't caught by +surprise when it is removed in a later release. + +{ls} 7.6 introduced a _deprecation logger_ to make handling those situations +easier. You can use the +https://github.com/logstash-plugins/logstash-mixin-deprecation_logger_support[adapter] +to ensure that your plugin can use the deprecation logger while still supporting +older versions of {ls}. See the +https://github.com/logstash-plugins/logstash-mixin-deprecation_logger_support/blob/master/README.md[readme] +for more information and for instructions on using the adapter. + +Deprecations are noted in the `logstash-deprecation.log` file in the +`log` directory. + +===== Add a Gemfile Gemfiles allow Ruby's Bundler to maintain the dependencies for your plugin. Currently, all we'll need is the Logstash gem, for testing, but if you require @@ -889,7 +846,7 @@ please make sure to have this line in your gemspec: The gem version, designated by `s.version`, helps track changes to plugins over time. You should use http://semver.org/[semver versioning] strategy for version numbers. -==== Runtime & Development Dependencies +===== Runtime and Development Dependencies At the bottom of the `gemspec` file is a section with a comment: `Gem dependencies`. This is where any other needed gems must be mentioned. If @@ -916,7 +873,7 @@ it have a version number greater than or equal to version 1.60 and less than or IMPORTANT: All plugins have a runtime dependency on the `logstash-core-plugin-api` gem, and a development dependency on `logstash-devutils`. -==== Jar dependencies +===== Jar dependencies In some cases, such as the https://github.com/logstash-plugins/logstash-output-elasticsearch/blob/master/logstash-output-elasticsearch.gemspec#L22-L23[Elasticsearch output plugin], @@ -934,6 +891,14 @@ added in the gemspec file in this manner: With these both defined, the install process will search for the required jar file at http://mvnrepository.com and download the specified version. + +==== Document your plugin +Documentation is an important part of your plugin. All plugin documentation is +rendered and placed in the +{logstash-ref}[Logstash Reference] and the {lsplugindocs}[Versioned plugin docs]. + +See <> for tips and guidelines. + ==== Add Tests Logstash loves tests. Lots of tests. If you're using your new {plugintype} @@ -995,7 +960,7 @@ Hooray! You're almost there! (Unless you saw failures... you should fix those Now you're ready to build your (well-tested) plugin into a Ruby gem. -==== Build +===== Build You already have all the necessary ingredients, so let's go ahead and run the build command: @@ -1014,7 +979,7 @@ logstash-{plugintype}-mypluginname-0.1.0.gem The `s.version` number from your gemspec file will provide the gem version, in this case, `0.1.0`. -==== Test installation +===== Test installation You should test install your plugin into a clean installation of Logstash. Download the latest version from the @@ -1201,7 +1166,7 @@ Logstash uses http://rubygems.org[RubyGems.org] as its repository for all plugin artifacts. Once you have developed your new plugin, you can make it available to Logstash users by simply publishing it to RubyGems.org. -==== Licensing +===== Licensing Logstash and all its plugins are licensed under https://github.com/elasticsearch/logstash/blob/master/LICENSE[Apache License, version 2 ("ALv2")]. If you make your plugin publicly available via http://rubygems.org[RubyGems.org], @@ -1209,7 +1174,7 @@ please make sure to have this line in your gemspec: * `s.licenses = ['Apache License (2.0)']` -==== Publishing to http://rubygems.org[RubyGems.org] +===== Publishing to http://rubygems.org[RubyGems.org] To begin, you’ll need an account on RubyGems.org @@ -1270,25 +1235,25 @@ It is not required to contribute your source code to https://github.com/logstash-plugins[logstash-plugins] github organization, but we always welcome new plugins! -==== Benefits +===== Benefits Some of the many benefits of having your plugin in the logstash-plugins repository are: -* **Discovery** Your plugin will appear in the http://www.elasticsearch.org/guide/en/logstash/current/index.html[Logstash Reference], +* **Discovery.** Your plugin will appear in the {logstash-ref}[Logstash Reference], where Logstash users look first for plugins and documentation. -* **Documentation** Your plugin documentation will automatically be added to the - http://www.elasticsearch.org/guide/en/logstash/current/index.html[Logstash Reference]. -* **Testing** With our testing infrastructure, your plugin will be continuously +* **Documentation.** Your plugin documentation will automatically be added to the +{logstash-ref}[Logstash Reference]. +* **Testing.** With our testing infrastructure, your plugin will be continuously tested against current and future releases of Logstash. As a result, users will have the assurance that if incompatibilities arise, they will be quickly discovered and corrected. -==== Acceptance Guidelines +===== Acceptance Guidelines -* **Code Review** Your plugin must be reviewed by members of the community for +* **Code Review.** Your plugin must be reviewed by members of the community for coherence, quality, readability, stability and security. -* **Tests** Your plugin must contain tests to be accepted. These tests are also +* **Tests.** Your plugin must contain tests to be accepted. These tests are also subject to code review for scope and completeness. It's ok if you don't know how to write tests -- we will guide you. We are working on publishing a guide to creating tests for Logstash which will make it easier. In the meantime, you can diff --git a/docs/static/input.asciidoc b/docs/static/input.asciidoc index d84275b51..7c3f720e7 100644 --- a/docs/static/input.asciidoc +++ b/docs/static/input.asciidoc @@ -7,6 +7,6 @@ :getstarted: Let's step through creating an {plugintype} plugin using the https://github.com/logstash-plugins/logstash-input-example/[example {plugintype} plugin]. -:methodheader: Logstash inputs must implement two main methods: `register` and `run`. +:methodheader: pass:m[Logstash inputs must implement two main methods: `register` and `run`.] include::include/pluginbody.asciidoc[] diff --git a/docs/static/java-codec.asciidoc b/docs/static/java-codec.asciidoc new file mode 100644 index 000000000..cfefc424a --- /dev/null +++ b/docs/static/java-codec.asciidoc @@ -0,0 +1,359 @@ +:register_method: true +:encode_method: true +:decode_method: true +:plugintype: codec +:pluginclass: Codecs +:pluginname: example +:pluginnamecap: Example +:plugintypecap: Codec +:sversion: '0.2.0' + +:pluginrepo: https://github.com/logstash-plugins/logstash-codec-java_codec_example[example codec plugin] + +:blockinput: true + +//:getstarted: Let's step through creating a {plugintype} plugin using the https://github.com/logstash-plugins/logstash-codec-example/[example {plugintype} plugin]. + +//:methodheader: Logstash codecs must implement the `register` method, and the `decode` method or the `encode` method (or both). + +[[java-codec-plugin]] + +=== How to write a Java codec plugin + +NOTE: Java codecs are currently supported only for Java input and output plugins. They will not work with Ruby +input or output plugins. + +// Pulls in shared section: Setting Up Environment +include::include/javapluginsetup.asciidoc[] + +[float] +=== Code the plugin + +The example codec plugin decodes messages separated by a configurable delimiter +and encodes messages by writing their string representation separated by a +delimiter. For example, if the codec were configured with `/` as the delimiter, +the input text `event1/event2/` would be decoded into two separate events with +`message` fields of `event1` and `event2`, respectively. Note that this is only +an example codec and does not cover all the edge cases that a production-grade +codec should cover. + +Let's look at the main class in that codec filter: + +[source,java] +----- +@LogstashPlugin(name="java_codec_example") +public class JavaCodecExample implements Codec { + + public static final PluginConfigSpec DELIMITER_CONFIG = + PluginConfigSpec.stringSetting("delimiter", ","); + + private final String id; + private final String delimiter; + + public JavaCodecExample(final Configuration config, final Context context) { + this(config.get(DELIMITER_CONFIG)); + } + + private JavaCodecExample(String delimiter) { + this.id = UUID.randomUUID().toString(); + this.delimiter = delimiter; + } + + @Override + public void decode(ByteBuffer byteBuffer, Consumer> consumer) { + // a not-production-grade delimiter decoder + byte[] byteInput = new byte[byteBuffer.remaining()]; + byteBuffer.get(byteInput); + if (byteInput.length > 0) { + String input = new String(byteInput); + String[] split = input.split(delimiter); + for (String s : split) { + Map map = new HashMap<>(); + map.put("message", s); + consumer.accept(map); + } + } + } + + @Override + public void flush(ByteBuffer byteBuffer, Consumer> consumer) { + // if the codec maintains any internal state such as partially-decoded input, this + // method should flush that state along with any additional input supplied in + // the ByteBuffer + + decode(byteBuffer, consumer); // this is a simplistic implementation + } + + @Override + public void encode(Event event, OutputStream outputStream) throws IOException { + outputStream.write((event.toString() + delimiter).getBytes(Charset.defaultCharset())); + } + + @Override + public Collection> configSchema() { + // should return a list of all configuration options for this plugin + return Collections.singletonList(DELIMITER_CONFIG); + } + + @Override + public Codec cloneCodec() { + return new JavaCodecExample(this.delimiter); + } + + @Override + public String getId() { + return this.id; + } + +} +----- + +Let's step through and examine each part of that class. + +[float] +==== Class declaration + +[source,java] +----- +@LogstashPlugin(name="java_codec_example") +public class JavaCodecExample implements Codec { +----- + +Notes about the class declaration: + +* All Java plugins must be annotated with the `@LogstashPlugin` annotation. Additionally: +** The `name` property of the annotation must be supplied and defines the name of the plugin as it will be used + in the Logstash pipeline definition. For example, this codec would be referenced in the codec section of the + an appropriate input or output in the Logstash pipeline defintion as `codec => java_codec_example { }` +** The value of the `name` property must match the name of the class excluding casing and underscores. +* The class must implement the `co.elastic.logstash.api.Codec` interface. +* Java plugins may not be created in the `org.logstash` or `co.elastic.logstash` packages to prevent potential +clashes with classes in Logstash itself. + +[float] +===== Plugin settings + +The snippet below contains both the setting definition and the method referencing it: + +[source,java] +----- +public static final PluginConfigSpec DELIMITER_CONFIG = + PluginConfigSpec.stringSetting("delimiter", ","); + +@Override +public Collection> configSchema() { + return Collections.singletonList(DELIMITER_CONFIG); +} +----- + +The `PluginConfigSpec` class allows developers to specify the settings that a +plugin supports complete with setting name, data type, deprecation status, +required status, and default value. In this example, the `delimiter` setting +defines the delimiter on which the codec will split events. It is not a required +setting and if it is not explicitly set, its default value will be `,`. + +The `configSchema` method must return a list of all settings that the plugin +supports. The Logstash execution engine will validate that all required +settings are present and that no unsupported settings are present. + +[float] +===== Constructor and initialization + +[source,java] +----- +private final String id; +private final String delimiter; + +public JavaCodecExample(final Configuration config, final Context context) { + this(config.get(DELIMITER_CONFIG)); +} + +private JavaCodecExample(String delimiter) { + this.id = UUID.randomUUID().toString(); + this.delimiter = delimiter; +} +----- + +All Java codec plugins must have a constructor taking a `Configuration` and +`Context` argument. This is the constructor that will be used to instantiate +them at runtime. The retrieval and validation of all plugin settings should +occur in this constructor. In this example, the delimiter to be used for +delimiting events is retrieved from its setting and stored in a local variable +so that it can be used later in the `decode` and `encode` methods. The codec's +ID is initialized to a random UUID (as should be done for most codecs), and a +local `encoder` variable is initialized to encode and decode with a specified +character set. + +Any additional initialization may occur in the constructor as well. If there are +any unrecoverable errors encountered in the configuration or initialization of +the codec plugin, a descriptive exception should be thrown. The exception will +be logged and will prevent Logstash from starting. + +[float] +==== Codec methods + +[source,java] +----- +@Override +public void decode(ByteBuffer byteBuffer, Consumer> consumer) { + // a not-production-grade delimiter decoder + byte[] byteInput = new byte[byteBuffer.remaining()]; + byteBuffer.get(byteInput); + if (byteInput.length > 0) { + String input = new String(byteInput); + String[] split = input.split(delimiter); + for (String s : split) { + Map map = new HashMap<>(); + map.put("message", s); + consumer.accept(map); + } + } +} + +@Override +public void flush(ByteBuffer byteBuffer, Consumer> consumer) { + // if the codec maintains any internal state such as partially-decoded input, this + // method should flush that state along with any additional input supplied in + // the ByteBuffer + + decode(byteBuffer, consumer); // this is a simplistic implementation +} + +@Override +public void encode(Event event, OutputStream outputStream) throws IOException { + outputStream.write((event.toString() + delimiter).getBytes(Charset.defaultCharset())); +} +----- + +The `decode`, `flush`, and `encode` methods provide the core functionality of +the codec. Codecs may be used by inputs to decode a sequence or stream of bytes +into events or by outputs to encode events into a sequence of bytes. + +The `decode` method decodes events from the specified `ByteBuffer` and passes +them to the provided `Consumer`. The input must provide a `ByteBuffer` that is +ready for reading with `byteBuffer.position()` indicating the next position to +read and `byteBuffer.limit()` indicating the first byte in the buffer that is +not safe to read. Codecs must ensure that `byteBuffer.position()` reflects the +last-read position before returning control to the input. The input is then +responsible for returning the buffer to write mode via either +`byteBuffer.clear()` or `byteBuffer.compact()` before resuming writes. In the +example above, the `decode` method simply splits the incoming byte stream on the +specified delimiter. A production-grade codec such as +https://github.com/elastic/logstash/blob/master/logstash-core/src/main/java/org/logstash/plugins/codecs/Line.java[`java-line`] +would not make the simplifying assumption that the end of the supplied byte +stream corresponded with the end of an event. + +Events should be constructed as instances of `Map` and pushed into the event pipeline via the +`Consumer>.accept()` method. To reduce allocations and GC pressure, codecs may reuse the same +map instance by modifying its fields between calls to `Consumer>.accept()` because the event +pipeline will create events based on a copy of the map's data. + +The `flush` method works in coordination with the `decode` method to decode all +remaining events from the specified `ByteBuffer` along with any internal state +that may remain after previous calls to the `decode` method. As an example of +internal state that a codec might maintain, consider an input stream of bytes +`event1/event2/event3` with a delimiter of `/`. Due to buffering or other +reasons, the input might supply a partial stream of bytes such as `event1/eve` +to the codec's `decode` method. In this case, the codec could save the beginning +three characters `eve` of the second event rather than assuming that the +supplied byte stream ends on an event boundary. If the next call to `decode` +supplied the `nt2/ev` bytes, the codec would prepend the saved `eve` bytes to +produce the full `event2` event and then save the remaining `ev` bytes for +decoding when the remainder of the bytes for that event were supplied. A call to +`flush` signals the codec that the supplied bytes represent the end of an event +stream and all remaining bytes should be decoded to events. The `flush` example +above is a simplistic implementation that does not maintain any state about +partially-supplied byte streams across calls to `decode`. + +The `encode` method encodes an event into a sequence of bytes and writes it into +the specified `OutputStream`. Because a single codec instance is shared across +all pipeline workers in the output stage of the Logstash pipeline, codecs should +_not_ retain state across calls to their `encode` methods. + +[float] +==== cloneCodec method + +[source,java] +----- +@Override +public Codec cloneCodec() { + return new JavaCodecExample(this.delimiter); +} +----- + +The `cloneCodec` method should return an identical instance of the codec with the exception of its ID. Because codecs +may be stateful across calls to their `decode` methods, input plugins that are multi-threaded should use a separate +instance of each codec via the `cloneCodec` method for each of their threads. Because a single codec instance is shared +across all pipeline workers in the output stage of the Logstash pipeline, codecs should _not_ retain state across calls +to their `encode` methods. In the example above, the codec is cloned with the same delimiter but a different ID. + +[float] +==== getId method + +[source,java] +----- +@Override +public String getId() { + return id; +} +----- + +For codec plugins, the `getId` method should always return the id that was set at instantiation time. This is typically +an UUID. + +[float] +==== Unit tests + +Lastly, but certainly not least importantly, unit tests are strongly encouraged. +The example codec plugin includes an +https://github.com/logstash-plugins/logstash-codec-java_codec_example/blob/master/src/test/java/org/logstash/javaapi/JavaCodecExampleTest.java[example unit +test] that you can use as a template for your own. + +// Pulls in shared section about Packaging and Deploying +include::include/javapluginpkg.asciidoc[] + +[float] +=== Run Logstash with the Java codec plugin + +To test the plugin, start Logstash with: + +[source,java] +----- +echo "foo,bar" | bin/logstash -e 'input { java_stdin { codec => java_codec_example } } }' +----- + +NOTE: The Java execution engine, the default execution engine since Logstash 7.0, is required +as Java plugins are not supported in the Ruby execution engine. + +The expected Logstash output (excluding initialization) with the configuration above is: + +[source,txt] +----- +{ + "@version" => "1", + "message" => "foo", + "@timestamp" => yyyy-MM-ddThh:mm:ss.SSSZ, + "host" => "" +} +{ + "@version" => "1", + "message" => "bar\n", + "@timestamp" => yyyy-MM-ddThh:mm:ss.SSSZ, + "host" => "" +} +----- + +[float] +=== Feedback + +If you have any feedback on Java plugin support in Logstash, please comment on our +https://github.com/elastic/logstash/issues/9215[main Github issue] or post in the +https://discuss.elastic.co/c/logstash[Logstash forum]. + +:pluginrepo!: +:sversion!: +:plugintypecap!: +:pluginnamecap!: +:pluginname!: +:pluginclass!: +:plugintype!: diff --git a/docs/static/java-filter.asciidoc b/docs/static/java-filter.asciidoc new file mode 100644 index 000000000..912c1fd01 --- /dev/null +++ b/docs/static/java-filter.asciidoc @@ -0,0 +1,284 @@ +:register_method: true +:filter_method: true +:plugintype: filter +:pluginclass: Filters +:pluginname: example +:pluginnamecap: Example +:plugintypecap: Filter +:sversion: '0.0.1' + +:pluginrepo: https://github.com/logstash-plugins/logstash-filter-java_filter_example[example filter plugin] + +:blockcodec: true + +[[java-filter-plugin]] +=== How to write a Java filter plugin + +// Pulls in shared section: Setting Up Environment +include::include/javapluginsetup.asciidoc[] + +[float] +=== Code the plugin + +The example filter plugin allows one to configure a field in each event that +will be reversed. For example, if the filter were configured to reverse the +`day_of_week` field, an event with `day_of_week: "Monday"` would be transformed +to `day_of_week: "yadnoM"`. Let's look at the main class in that example filter: + +[source,java] +----- +@LogstashPlugin(name = "java_filter_example") +public class JavaFilterExample implements Filter { + + public static final PluginConfigSpec SOURCE_CONFIG = + PluginConfigSpec.stringSetting("source", "message"); + + private String id; + private String sourceField; + + public JavaFilterExample(String id, Configuration config, Context context) { + this.id = id; + this.sourceField = config.get(SOURCE_CONFIG); + } + + @Override + public Collection filter(Collection events, FilterMatchListener matchListener) { + for (Event e : events) { + Object f = e.getField(sourceField); + if (f instanceof String) { + e.setField(sourceField, StringUtils.reverse((String)f)); + matchListener.filterMatched(e); + } + } + return events; + } + + @Override + public Collection> configSchema() { + return Collections.singletonList(SOURCE_CONFIG); + } + + @Override + public String getId() { + return this.id; + } +} +----- + +Let's step through and examine each part of that class. + +[float] +==== Class declaration + +[source,java] +----- +@LogstashPlugin(name = "java_filter_example") +public class JavaFilterExample implements Filter { +----- + +Notes about the class declaration: + +* All Java plugins must be annotated with the `@LogstashPlugin` annotation. Additionally: +** The `name` property of the annotation must be supplied and defines the name of the plugin as it will be used + in the Logstash pipeline definition. For example, this filter would be referenced in the filter section of the + Logstash pipeline defintion as `filter { java_filter_example => { .... } }` +** The value of the `name` property must match the name of the class excluding casing and underscores. +* The class must implement the `co.elastic.logstash.api.Filter` interface. +* Java plugins may not be created in the `org.logstash` or `co.elastic.logstash` packages to prevent potential +clashes with classes in Logstash itself. + +[float] +==== Plugin settings +The snippet below contains both the setting definition and the method referencing it: + +[source,java] +----- +public static final PluginConfigSpec SOURCE_CONFIG = + PluginConfigSpec.stringSetting("source", "message"); + +@Override +public Collection> configSchema() { + return Collections.singletonList(SOURCE_CONFIG); +} +----- + +The `PluginConfigSpec` class allows developers to specify the settings that a plugin supports complete with setting +name, data type, deprecation status, required status, and default value. In this example, the `source` setting defines +the name of the field in each event that will be reversed. It is not a required setting and if it is not explicitly +set, its default value will be `message`. + +The `configSchema` method must return a list of all settings that the plugin supports. In a future phase of the +Java plugin project, the Logstash execution engine will validate that all required settings are present and that +no unsupported settings are present. + +[float] +==== Constructor and initialization + +[source,java] +----- +private String id; +private String sourceField; + +public JavaFilterExample(String id, Configuration config, Context context) { + this.id = id; + this.sourceField = config.get(SOURCE_CONFIG); +} +----- + +All Java filter plugins must have a constructor taking a `String` id and a +`Configuration` and `Context` argument. This is the constructor that will be +used to instantiate them at runtime. The retrieval and validation of all plugin +settings should occur in this constructor. In this example, the name of the +field to be reversed in each event is retrieved from its setting and stored in +a local variable so that it can be used later in the `filter` method. + +Any additional initialization may occur in the constructor as well. If there are +any unrecoverable errors encountered in the configuration or initialization of +the filter plugin, a descriptive exception should be thrown. The exception will +be logged and will prevent Logstash from starting. + +[float] +==== Filter method + +[source,java] +----- +@Override +public Collection filter(Collection events, FilterMatchListener matchListener) { + for (Event e : events) { + Object f = e.getField(sourceField); + if (f instanceof String) { + e.setField(sourceField, StringUtils.reverse((String)f)); + matchListener.filterMatched(e); + } + } + return events; +----- + +Finally, we come to the `filter` method that is invoked by the Logstash +execution engine on batches of events as they flow through the event processing +pipeline. The events to be filtered are supplied in the `events` argument and +the method should return a collection of filtered events. Filters may perform a +variety of actions on events as they flow through the pipeline including: + +* Mutation -- Fields in events may be added, removed, or changed by a filter. This +is the most common scenario for filters that perform various kinds of +enrichment on events. In this scenario, the incoming `events` collection may be +returned unmodified since the events in the collection are mutated in place. + +* Deletion -- Events may be removed from the event pipeline by a filter so that +subsequent filters and outputs do not receive them. In this scenario, the +events to be deleted must be removed from the collection of filtered events +before it is returned. + +* Creation -- A filter may insert new events into the event pipeline that will be +seen only by subsequent filters and outputs. In this scenario, the new events +must be added to the collection of filtered events before it is returned. + +* Observation -- Events may pass unchanged by a filter through the event pipeline. +This may be useful in scenarios where a filter performs external actions (e.g., +updating an external cache) based on the events observed in the event pipeline. +In this scenario, the incoming `events` collection may be returned unmodified +since no changes were made. + +In the example above, the value of the `source` field is retrieved from each +event and reversed if it is a string value. Because each event is mutated in +place, the incoming `events` collection can be returned. + +The `matchListener` is the mechanism by which filters indicate which events +"match". The common actions for filters such as `add_field` and `add_tag` are +applied only to events that are designated as "matching". Some filters such as +the https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html[grok +filter] +have a clear definition for what constitutes a matching event and will notify +the listener only for matching events. Other filters such as the +https://www.elastic.co/guide/en/logstash/current/plugins-filters-uuid.html[UUID +filter] +have no specific match criteria and should notify the listener for every event +filtered. In this example, the filter notifies the match listener for any event +that had a `String` value in its `source` field and was therefore able to be +reversed. + +[float] +==== getId method + +[source,java] +----- +@Override +public String getId() { + return id; +} +----- + +For filter plugins, the `getId` method should always return the id that was provided to the plugin through its +constructor at instantiation time. + +[float] +==== Unit tests + +Lastly, but certainly not least importantly, unit tests are strongly encouraged. +The example filter plugin includes an +https://github.com/logstash-plugins/logstash-filter-java_filter_example/blob/master/src/test/java/org/logstashplugins/JavaFilterExampleTest.java[example +unit test] that you can use as a template for your own. + + +// Pulls in shared section about Packaging and Deploying +include::include/javapluginpkg.asciidoc[] + +[float] +=== Run Logstash with the Java filter plugin + +The following is a minimal Logstash configuration that can be used to test that +the Java filter plugin is correctly installed and functioning. + +[source,java] +----- +input { + generator { message => "Hello world!" count => 1 } +} +filter { + java_filter_example {} +} +output { + stdout { codec => rubydebug } +} +----- + +Copy the above Logstash configuration to a file such as `java_filter.conf`. +Start Logstash with: + +[source,shell] +----- +bin/logstash -f /path/to/java_filter.conf +----- + +NOTE: The Java execution engine, the default execution engine since Logstash 7.0, is required +as Java plugins are not supported in the Ruby execution engine. + +The expected Logstash output (excluding initialization) with the configuration +above is: + +[source,txt] +----- +{ + "sequence" => 0, + "@version" => "1", + "message" => "!dlrow olleH", + "@timestamp" => yyyy-MM-ddThh:mm:ss.SSSZ, + "host" => "" +} +----- + +[float] +=== Feedback + +If you have any feedback on Java plugin support in Logstash, please comment on our +https://github.com/elastic/logstash/issues/9215[main Github issue] or post in the +https://discuss.elastic.co/c/logstash[Logstash forum]. + +:pluginrepo!: +:sversion!: +:plugintypecap!: +:pluginnamecap!: +:pluginname!: +:pluginclass!: +:plugintype!: diff --git a/docs/static/java-input.asciidoc b/docs/static/java-input.asciidoc new file mode 100644 index 000000000..26f01780d --- /dev/null +++ b/docs/static/java-input.asciidoc @@ -0,0 +1,319 @@ +:register_method: true +:run_method: true +:plugintype: input +:pluginclass: Inputs +:pluginname: example +:pluginnamecap: Example +:plugintypecap: Input +:sversion: '0.0.1' + +:pluginrepo: https://github.com/logstash-plugins/logstash-input-java_input_example[example input plugin] + + +[[java-input-plugin]] +=== How to write a Java input plugin + +// Pulls in shared section: Setting Up Environment +include::include/javapluginsetup.asciidoc[] + +[float] +=== Code the plugin + +The example input plugin generates a configurable number of simple events before +terminating. Let's look at the main class in the example input. + +[source,java] +----- +@LogstashPlugin(name="java_input_example") +public class JavaInputExample implements Input { + + public static final PluginConfigSpec EVENT_COUNT_CONFIG = + PluginConfigSpec.numSetting("count", 3); + + public static final PluginConfigSpec PREFIX_CONFIG = + PluginConfigSpec.stringSetting("prefix", "message"); + + private String id; + private long count; + private String prefix; + private final CountDownLatch done = new CountDownLatch(1); + private volatile boolean stopped; + + + public JavaInputExample(String id, Configuration config, Context context) { + this.id = id; + count = config.get(EVENT_COUNT_CONFIG); + prefix = config.get(PREFIX_CONFIG); + } + + @Override + public void start(Consumer> consumer) { + int eventCount = 0; + try { + while (!stopped && eventCount < count) { + eventCount++; + consumer.accept.push(Collections.singletonMap("message", + prefix + " " + StringUtils.center(eventCount + " of " + count, 20))); + } + } finally { + stopped = true; + done.countDown(); + } + } + + @Override + public void stop() { + stopped = true; // set flag to request cooperative stop of input + } + + @Override + public void awaitStop() throws InterruptedException { + done.await(); // blocks until input has stopped + } + + @Override + public Collection> configSchema() { + return Arrays.asList(EVENT_COUNT_CONFIG, PREFIX_CONFIG); + } + + @Override + public String getId() { + return this.id; + } +} +----- + +Let's step through and examine each part of that class. + +[float] +==== Class declaration + +[source,java] +----- +@LogstashPlugin(name="java_input_example") +public class JavaInputExample implements Input { +----- + +Notes about the class declaration: + +* All Java plugins must be annotated with the `@LogstashPlugin` annotation. Additionally: +** The `name` property of the annotation must be supplied and defines the name of the plugin as it will be used + in the Logstash pipeline definition. For example, this input would be referenced in the input section of the + Logstash pipeline defintion as `input { java_input_example => { .... } }` +** The value of the `name` property must match the name of the class excluding casing and underscores. +* The class must implement the `co.elastic.logstash.api.Input` interface. +* Java plugins may not be created in the `org.logstash` or `co.elastic.logstash` packages to prevent potential +clashes with classes in Logstash itself. + +[float] +==== Plugin settings + +The snippet below contains both the setting definition and the method referencing it. + +[source,java] +----- +public static final PluginConfigSpec EVENT_COUNT_CONFIG = + PluginConfigSpec.numSetting("count", 3); + +public static final PluginConfigSpec PREFIX_CONFIG = + PluginConfigSpec.stringSetting("prefix", "message"); + +@Override +public Collection> configSchema() { + return Arrays.asList(EVENT_COUNT_CONFIG, PREFIX_CONFIG); +} +----- + +The `PluginConfigSpec` class allows developers to specify the settings that a +plugin supports complete with setting name, data type, deprecation status, +required status, and default value. In this example, the `count` setting defines +the number of events that will be generated and the `prefix` setting defines an +optional prefix to include in the event field. Neither setting is required and +if it is not explicitly set, the settings default to `3` and `message`, +respectively. + +The `configSchema` method must return a list of all settings that the plugin +supports. In a future phase of the Java plugin project, the Logstash execution +engine will validate that all required settings are present and that no +unsupported settings are present. + +[float] +==== Constructor and initialization + +[source,java] +----- +private String id; +private long count; +private String prefix; + +public JavaInputExample(String id, Configuration config, Context context) { + this.id = id; + count = config.get(EVENT_COUNT_CONFIG); + prefix = config.get(PREFIX_CONFIG); +} +----- + +All Java input plugins must have a constructor taking a `String` id and +`Configuration` and `Context` argument. This is the constructor that will be +used to instantiate them at runtime. The retrieval and validation of all plugin +settings should occur in this constructor. In this example, the values of the +two plugin settings are retrieved and stored in local variables for later use in +the `start` method. + +Any additional initialization may occur in the constructor as well. If there are +any unrecoverable errors encountered in the configuration or initialization of +the input plugin, a descriptive exception should be thrown. The exception will +be logged and will prevent Logstash from starting. + +[float] +==== Start method + +[source,java] +----- +@Override +public void start(Consumer> consumer) { + int eventCount = 0; + try { + while (!stopped && eventCount < count) { + eventCount++; + consumer.accept.push(Collections.singletonMap("message", + prefix + " " + StringUtils.center(eventCount + " of " + count, 20))); + } + } finally { + stopped = true; + done.countDown(); + } +} +----- + +The `start` method begins the event-producing loop in an input. Inputs are flexible and may produce events through +many different mechanisms including: + + * a pull mechanism such as periodic queries of external database + * a push mechanism such as events sent from clients to a local network port + * a timed computation such as a heartbeat + * any other mechanism that produces a useful stream of events. Event streams may be either finite or infinite. +If the input produces an infinite stream of events, this method should loop until a stop request is made through +the `stop` method. If the input produces a finite stream of events, this method should terminate when the last +event in the stream is produced or a stop request is made, whichever comes first. + +Events should be constructed as instances of `Map` and pushed into the event pipeline via the +`Consumer>.accept()` method. To reduce allocations and GC pressure, inputs may reuse the same +map instance by modifying its fields between calls to `Consumer>.accept()` because the event +pipeline will create events based on a copy of the map's data. + +[float] +==== Stop and awaitStop methods + +[source,java] +----- +private final CountDownLatch done = new CountDownLatch(1); +private volatile boolean stopped; + +@Override +public void stop() { + stopped = true; // set flag to request cooperative stop of input +} + +@Override +public void awaitStop() throws InterruptedException { + done.await(); // blocks until input has stopped +} +----- + +The `stop` method notifies the input to stop producing events. The stop +mechanism may be implemented in any way that honors the API contract though a +`volatile boolean` flag works well for many use cases. + +Inputs stop both asynchronously and cooperatively. Use the `awaitStop` method to +block until the input has completed the stop process. Note that this method +should **not** signal the input to stop as the `stop` method does. The +awaitStop mechanism may be implemented in any way that honors the API contract +though a `CountDownLatch` works well for many use cases. + +[float] +==== getId method + +[source,java] +----- +@Override +public String getId() { + return id; +} +----- + +For input plugins, the `getId` method should always return the id that was provided to the plugin through its +constructor at instantiation time. + +[float] +==== Unit tests +Lastly, but certainly not least importantly, unit tests are strongly encouraged. +The example input plugin includes an +https://github.com/logstash-plugins/logstash-input-java_input_example/blob/master/src/test/java/org/logstash/javaapi/JavaInputExampleTest.java[example unit +test] that you can use as a template for your own. + +// Pulls in shared section about Packaging and Deploying +include::include/javapluginpkg.asciidoc[] + +[float] +=== Running Logstash with the Java input plugin + +The following is a minimal Logstash configuration that can be used to test that +the Java input plugin is correctly installed and functioning. + +[source,java] +----- +input { + java_input_example {} +} +output { + stdout { codec => rubydebug } +} +----- + +Copy the above Logstash configuration to a file such as `java_input.conf`. +Start {ls} with: + +[source,shell] +----- +bin/logstash -f /path/to/java_input.conf +----- + +NOTE: The Java execution engine, the default execution engine since Logstash 7.0, is required +as Java plugins are not supported in the Ruby execution engine. + +The expected Logstash output (excluding initialization) with the configuration above is: + +[source,txt] +----- +{ + "@version" => "1", + "message" => "message 1 of 3 ", + "@timestamp" => yyyy-MM-ddThh:mm:ss.SSSZ +} +{ + "@version" => "1", + "message" => "message 2 of 3 ", + "@timestamp" => yyyy-MM-ddThh:mm:ss.SSSZ +} +{ + "@version" => "1", + "message" => "message 3 of 3 ", + "@timestamp" => yyyy-MM-ddThh:mm:ss.SSSZ +} +----- + +[float] +=== Feedback + +If you have any feedback on Java plugin support in Logstash, please comment on our +https://github.com/elastic/logstash/issues/9215[main Github issue] or post in the +https://discuss.elastic.co/c/logstash[Logstash forum]. + +:pluginrepo!: +:sversion!: +:plugintypecap!: +:pluginnamecap!: +:pluginname!: +:pluginclass!: +:plugintype!: diff --git a/docs/static/java-output.asciidoc b/docs/static/java-output.asciidoc new file mode 100644 index 000000000..67de9344a --- /dev/null +++ b/docs/static/java-output.asciidoc @@ -0,0 +1,288 @@ +:register_method: true +:multi_receive_method: true +:plugintype: output +:pluginclass: Outputs +:pluginname: example +:pluginnamecap: Example +:plugintypecap: Output +:sversion: '0.0.1' + +:pluginrepo: https://github.com/logstash-plugins/logstash-output-java_output_example[example output plugin] + +:blockfilter: true + + +[[java-output-plugin]] +=== How to write a Java output plugin + +// Pulls in shared section: Setting Up Environment +include::include/javapluginsetup.asciidoc[] + +[float] +=== Code the plugin + +The example output plugin prints events to the console using the event's +`toString` method. Let's look at the main class in the example output: + +[source,java] +----- +@LogstashPlugin(name = "java_output_example") +public class JavaOutputExample implements Output { + + public static final PluginConfigSpec PREFIX_CONFIG = + PluginConfigSpec.stringSetting("prefix", ""); + + private final String id; + private String prefix; + private PrintStream printer; + private final CountDownLatch done = new CountDownLatch(1); + private volatile boolean stopped = false; + + public JavaOutputExample(final String id, final Configuration configuration, final Context context) { + this(id, configuration, context, System.out); + } + + JavaOutputExample(final String id, final Configuration config, final Context context, OutputStream targetStream) { + this.id = id; + prefix = config.get(PREFIX_CONFIG); + printer = new PrintStream(targetStream); + } + + @Override + public void output(final Collection events) { + Iterator z = events.iterator(); + while (z.hasNext() && !stopped) { + String s = prefix + z.next(); + printer.println(s); + } + } + + @Override + public void stop() { + stopped = true; + done.countDown(); + } + + @Override + public void awaitStop() throws InterruptedException { + done.await(); + } + + @Override + public Collection> configSchema() { + return Collections.singletonList(PREFIX_CONFIG); + } + + @Override + public String getId() { + return id; + } +} +----- + +Let's step through and examine each part of that class. + +[float] +==== Class declaration + +[source,java] +----- +@LogstashPlugin(name="java_output_example") +public class JavaOutputExample implements Output { +----- + +Notes about the class declaration: + +* All Java plugins must be annotated with the `@LogstashPlugin` annotation. Additionally: +** The `name` property of the annotation must be supplied and defines the name of the plugin as it will be used + in the Logstash pipeline definition. For example, this output would be referenced in the output section of the + Logstash pipeline definition as `output { java_output_example => { .... } }` +** The value of the `name` property must match the name of the class excluding casing and underscores. +* The class must implement the `co.elastic.logstash.api.Output` interface. +* Java plugins may not be created in the `org.logstash` or `co.elastic.logstash` packages to prevent potential +clashes with classes in Logstash itself. + +[float] +==== Plugin settings + +The snippet below contains both the setting definition and the method referencing it: + +[source,java] +----- +public static final PluginConfigSpec PREFIX_CONFIG = + PluginConfigSpec.stringSetting("prefix", ""); + +@Override +public Collection> configSchema() { + return Collections.singletonList(PREFIX_CONFIG); +} +----- + +The `PluginConfigSpec` class allows developers to specify the settings that a +plugin supports complete with setting name, data type, deprecation status, +required status, and default value. In this example, the `prefix` setting +defines an optional prefix to include in the output of the event. The setting is +not required and if it is not explicitly set, it defaults to the empty string. + +The `configSchema` method must return a list of all settings that the plugin +supports. In a future phase of the Java plugin project, the Logstash execution +engine will validate that all required settings are present and that no +unsupported settings are present. + +[float] +==== Constructor and initialization + +[source,java] +----- +private final String id; +private String prefix; +private PrintStream printer; + +public JavaOutputExample(final String id, final Configuration configuration, final Context context) { + this(configuration, context, System.out); +} + +JavaOutputExample(final String id, final Configuration config, final Context context, OutputStream targetStream) { + this.id = id; + prefix = config.get(PREFIX_CONFIG); + printer = new PrintStream(targetStream); +} +----- + +All Java output plugins must have a constructor taking a `String` id and a +`Configuration` and `Context` argument. This is the constructor that will be +used to instantiate them at runtime. The retrieval and validation of all plugin +settings should occur in this constructor. In this example, the values of the +`prefix` setting is retrieved and stored in a local variable for later use in +the `output` method. In this example, a second, pacakge private constructor is +defined that is useful for unit testing with a `Stream` other than `System.out`. + +Any additional initialization may occur in the constructor as well. If there are +any unrecoverable errors encountered in the configuration or initialization of +the output plugin, a descriptive exception should be thrown. The exception will +be logged and will prevent Logstash from starting. + +[float] +==== Output method + +[source,java] +----- +@Override +public void output(final Collection events) { + Iterator z = events.iterator(); + while (z.hasNext() && !stopped) { + String s = prefix + z.next(); + printer.println(s); + } +} +----- + +Outputs may send events to local sinks such as the console or a file or to remote systems such as Elasticsearch +or other external systems. In this example, the events are printed to the local console. + +[float] +==== Stop and awaitStop methods + +[source,java] +----- +private final CountDownLatch done = new CountDownLatch(1); +private volatile boolean stopped; + +@Override +public void stop() { + stopped = true; + done.countDown(); +} + +@Override +public void awaitStop() throws InterruptedException { + done.await(); +} +----- + +The `stop` method notifies the output to stop sending events. The stop mechanism +may be implemented in any way that honors the API contract though a `volatile +boolean` flag works well for many use cases. Because this output example is so +simple, its `output` method does not check for the stop flag. + +Outputs stop both asynchronously and cooperatively. Use the `awaitStop` method +to block until the output has completed the stop process. Note that this method +should **not** signal the output to stop as the `stop` method does. The +awaitStop mechanism may be implemented in any way that honors the API contract +though a `CountDownLatch` works well for many use cases. + +[float] +==== getId method + +[source,java] +----- +@Override +public String getId() { + return id; +} +----- + +For output plugins, the `getId` method should always return the id that was provided to the plugin through its +constructor at instantiation time. + +[float] +==== Unit tests + +Lastly, but certainly not least importantly, unit tests are strongly encouraged. +The example output plugin includes an +https://github.com/logstash-plugins/logstash-output-java_output_example/blob/master/src/test/java/org/logstash/javaapi/JavaOutputExampleTest.java[example unit +test] that you can use as a template for your own. + + +// Pulls in shared section about Packaging and Deploying +include::include/javapluginpkg.asciidoc[] + +[float] +=== Running Logstash with the Java output plugin + +The following is a minimal Logstash configuration that can be used to test that +the Java output plugin is correctly installed and functioning. + +[source,java] +----- +input { + generator { message => "Hello world!" count => 1 } +} +output { + java_output_example {} +} +----- + +Copy the above Logstash configuration to a file such as `java_output.conf`. +Logstash should then be started with: + +[source,txt] +----- +bin/logstash -f /path/to/java_output.conf +----- + +NOTE: The Java execution engine, the default execution engine since Logstash 7.0, is required +as Java plugins are not supported in the Ruby execution engine. + +The expected Logstash output (excluding initialization) with the configuration +above is: + +[source,txt] +----- +{"@timestamp":"yyyy-MM-ddTHH:mm:ss.SSSZ","message":"Hello world!","@version":"1","host":"","sequence":0} +----- + +[float] +=== Feedback + +If you have any feedback on Java plugin support in Logstash, please comment on our +https://github.com/elastic/logstash/issues/9215[main Github issue] or post in the +https://discuss.elastic.co/c/logstash[Logstash forum]. + +:pluginrepo!: +:sversion!: +:plugintypecap!: +:pluginnamecap!: +:pluginname!: +:pluginclass!: +:plugintype!: diff --git a/docs/static/jvm.asciidoc b/docs/static/jvm.asciidoc new file mode 100644 index 000000000..39a5c04b5 --- /dev/null +++ b/docs/static/jvm.asciidoc @@ -0,0 +1,125 @@ +[float] +[[ls-jvm]] +=== Java (JVM) version + +{ls} requires one of these versions: + +* Java 8 +* Java 11 +* Java 15 (see <> for settings info) + +Use the +http://www.oracle.com/technetwork/java/javase/downloads/index.html[official +Oracle distribution] or an open-source distribution, such as +http://openjdk.java.net/[OpenJDK]. +See the https://www.elastic.co/support/matrix#matrix_jvm[Elastic Support Matrix] +for the official word on supported versions across releases. + +[[bundled-jdk]] +.Bundled JDK +[NOTE] +===== +{ls} offers architecture-specific +https://staging-website.elastic.co/downloads/logstash[downloads] that include +AdoptOpenJDK 11, the latest long term support (LTS) release of JDK. + +Use the LS_JAVA_HOME environment variable if you want to use a JDK other than the +version that is bundled. +If you have the LS_JAVA_HOME environment variable set to use a custom JDK, Logstash +will continue to use the JDK version you have specified, even after you upgrade. +===== + +[float] +[[check-jvm]] +==== Check your Java version +Run the following command: + +[source,shell] +java -version + +On systems with Java installed, this command produces output similar to the following: + +[source,shell] +----- +java version "11.0.1" 2018-10-16 LTS +Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS) +Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode) +----- + +[float] +[[java-home]] +==== `LS_JAVA_HOME` and `JAVA_HOME` + +{ls} uses the Java version set in `LS_JAVA_HOME`. The `LS_JAVA_HOME` environment +variable must be set for {ls} to operate correctly. + +If {ls} doesn't find `LS_JAVA_HOME` it tries to fall back to `JAVA_HOME`. +The usage of `JAVA_HOME` is now considered deprecated in favor of `LS_JAVA_HOME`. + +On some Linux systems, you may need to have the `LS_JAVA_HOME` environment +exported before installing {ls}, particularly if you installed Java from +a tarball. +{ls} uses Java during installation to automatically detect your environment and +install the correct startup method (SysV init scripts, Upstart, or systemd). If +{ls} is unable to find the `LS_JAVA_HOME` environment variable during package +installation, you may get an error message, and {ls} will not start properly. + +[float] +[[jdk15-upgrade]] +==== Using JDK 15 + +{ls} supports JDK 15, but you need to update settings in `jvm.options` and +`log4j2.properties` if: + +* you are upgrading from {ls} 7.11.x (or earlier) to 7.12 or later, and +* you are using JDK 15 or later. + +[float] +===== Updates to `jvm.options` +In the `config/jvm.options` file, replace all CMS related flags with: + +[source,shell] +----- +## GC configuration +8-13:-XX:+UseConcMarkSweepGC +8-13:-XX:CMSInitiatingOccupancyFraction=75 +8-13:-XX:+UseCMSInitiatingOccupancyOnly +----- + +For more information about how to use `jvm.options`, please refer to <>. + +[float] +===== Updates to `log4j2.properties` +In the `config/log4j2.properties`: + +* Replace properties that start with `appender.rolling.avoid_pipelined_filter.*` with: ++ +[source,shell] +----- +appender.rolling.avoid_pipelined_filter.type = PipelineRoutingFilter +----- + +* Replace properties that start with `appender.json_rolling.avoid_pipelined_filter.*` with: +[source,shell] ++ +----- +appender.json_rolling.avoid_pipelined_filter.type = PipelineRoutingFilter +----- + +* Replace properties that start with `appender.routing.*` with: +[source,shell] ++ +----- +appender.routing.type = PipelineRouting +appender.routing.name = pipeline_routing_appender +appender.routing.pipeline.type = RollingFile +appender.routing.pipeline.name = appender-${ctx:pipeline.id} +appender.routing.pipeline.fileName = ${sys:ls.logs}/pipeline_${ctx:pipeline.id}.log +appender.routing.pipeline.filePattern = ${sys:ls.logs}/pipeline_${ctx:pipeline.id}.%i.log.gz +appender.routing.pipeline.layout.type = PatternLayout +appender.routing.pipeline.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %m%n +appender.routing.pipeline.policy.type = SizeBasedTriggeringPolicy +appender.routing.pipeline.policy.size = 100MB +appender.routing.pipeline.strategy.type = DefaultRolloverStrategy +appender.routing.pipeline.strategy.max = 30 +----- diff --git a/docs/static/keystore.asciidoc b/docs/static/keystore.asciidoc index d40b5a07f..ce6a9f0b1 100644 --- a/docs/static/keystore.asciidoc +++ b/docs/static/keystore.asciidoc @@ -12,20 +12,38 @@ place of the secret value when you configure sensitive settings. The syntax for referencing keys is identical to the syntax for <>: -`${KEY}` +[source,txt] +----- +${KEY} +----- Where KEY is the name of the key. -For example, imagine that the keystore contains a key called `ES_PWD` with the -value `yourelasticsearchpassword`: +**Example** + +Imagine that the keystore contains a key called `ES_PWD` with the value `yourelasticsearchpassword`. -* In configuration files, use: `output { elasticsearch {...password => "${ES_PWD}" } } }` -* In `logstash.yml`, use: `xpack.management.elasticsearch.password: ${ES_PWD}` +In configuration files, use: + +[source,shell] +----- +output { elasticsearch {...password => "${ES_PWD}" } } } +----- + +In `logstash.yml`, use: + +[source,shell] +----- +xpack.management.elasticsearch.password: ${ES_PWD} +----- Notice that the Logstash keystore differs from the Elasticsearch keystore. Whereas the Elasticsearch keystore lets you store `elasticsearch.yml` values by name, the Logstash keystore lets you specify arbitrary names that you -can reference in the Logstash configuration. +can reference in the Logstash configuration. + +NOTE: There are some configuration fields that have no secret meaning, so not every field could leverage +the secret store for variables substitution. Plugin's `id` field is a field of this kind NOTE: Referencing keystore data from `pipelines.yml` or the command line (`-e`) is not currently supported. @@ -33,16 +51,18 @@ is not currently supported. NOTE: Referencing keystore data from {logstash-ref}/logstash-centralized-pipeline-management.html[centralized pipeline management] requires each Logstash deployment to have a local copy of the keystore. +NOTE: The {ls} keystore needs to be protected, but the {ls} user must +have access to the file. While most things in {ls} can be protected with +`chown -R root:root `, the keystore itself must be accessible from the +{ls} user. Use `chown logstash:root && chmod 0600 +`. + When Logstash parses the settings (`logstash.yml`) or configuration (`/etc/logstash/conf.d/*.conf`), it resolves keys from the keystore before resolving environment variables. -// TODO: add keystore-command to running-logstash-command-line.asciidoc -// To create and manage keys, use the `keystore` command. See the -// <> for the full command syntax, including -// optional flags. -[float] +[discrete] [[keystore-password]] === Keystore password @@ -85,11 +105,11 @@ runtime environment (Windows, Docker, etc) to learn how to set the environment variable for the user that runs Logstash. Ensure that the environment variable (and thus the password) is only accessible to that user. -[float] +[discrete] [[keystore-location]] === Keystore location -The keystore must be located in Logstash's `path.settings` directory. This is +The keystore must be located in the Logstash `path.settings` directory. This is the same directory that contains the `logstash.yml` file. When performing any operation against the keystore, it is recommended to set `path.settings` for the keystore command. For example, to create a keystore on a RPM/DEB installation: @@ -107,24 +127,25 @@ See <> for more about the default directory locations. NOTE: You will see a warning if the `path.settings` is not pointed to the same directory as the `logstash.yml`. -[float] +[discrete] [[creating-keystore]] -=== Create a keystore +=== Create or overwrite a keystore -To create a secrets keystore, use the `create`: +The `create` command creates a new keystore or overwrites an existing keystore: ["source","sh",subs="attributes"] ---------------------------------------------------------------- bin/logstash-keystore create ---------------------------------------------------------------- -Creates the keystore in the directory defined by the `path.settings` -configuration setting. +Creates the keystore in the directory defined in the `path.settings` setting. -NOTE: It is recommended that you set a <> -when creating the keystore. +IMPORTANT: If a keystore already exists, the `create` command can overwrite it (after a Y/N prompt). +Selecting `Y` clears all keys and secrets that were previously stored. -[float] +TIP: Set a <> when you create the keystore. + +[discrete] [[add-keys-to-keystore]] === Add keys @@ -138,7 +159,7 @@ bin/logstash-keystore add ES_PWD When prompted, enter a value for the key. -[float] +[discrete] [[list-settings]] === List keys @@ -149,7 +170,7 @@ To list the keys defined in the keystore, use: bin/logstash-keystore list ---------------------------------------------------------------- -[float] +[discrete] [[remove-settings]] === Remove keys diff --git a/docs/static/life-of-an-event.asciidoc b/docs/static/life-of-an-event.asciidoc index 608994cac..b0fa05b6d 100644 --- a/docs/static/life-of-an-event.asciidoc +++ b/docs/static/life-of-an-event.asciidoc @@ -96,3 +96,4 @@ By default, Logstash uses in-memory bounded queues between pipeline stages unsafely, any events that are stored in memory will be lost. To help prevent data loss, you can enable Logstash to persist in-flight events to disk. See <> for more information. + diff --git a/docs/static/listing-a-plugin.asciidoc b/docs/static/listing-a-plugin.asciidoc new file mode 100644 index 000000000..045804e87 --- /dev/null +++ b/docs/static/listing-a-plugin.asciidoc @@ -0,0 +1,15 @@ +[[plugin-listing]] +=== List your plugin + +The {logstash-ref}[Logstash Reference] is the first place {ls} users look for plugins and documentation. +If your plugin meets the <>, we may be able to list it in the guide. + +The plugin source and readme will continue to live in your repo, and we will direct users there. + +If you would like to have your plugin included in the {logstash-ref}[Logstash Reference]: + +* verify that it meets our <> +* create a new https://github.com/elasticsearch/logstash/issues[issue] in the Logstash repository. +** Use `PluginListing: ` as the title for the issue. +** Apply the `docs` label. +** In the body of the issue, explain the purpose and value your plugin offers, and describe how this plugin adheres to the guidelines. diff --git a/docs/static/logging.asciidoc b/docs/static/logging.asciidoc index 8e78ff284..cf399d0cf 100644 --- a/docs/static/logging.asciidoc +++ b/docs/static/logging.asciidoc @@ -25,7 +25,7 @@ is restarted. [[log4j2]] ==== Log4j2 configuration -Logstash ships with a `log4j2.properties` file with out-of-the-box settings. You +Logstash ships with a `log4j2.properties` file with out-of-the-box settings, including logging to console. You can modify this file to change the rotation policy, type, and other https://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers[log4j2 configuration]. @@ -42,6 +42,12 @@ logger.elasticsearchoutput.name = logstash.outputs.elasticsearch logger.elasticsearchoutput.level = debug -------------------------------------------------- +The previous example defines a name and level for the logger `logstash.outputs.elasticsearch`. +The logger is usually identified by a Java class name, such as +`org.logstash.dissect.Dissector`, for example. It can also be a partial package +path as in `org.logstash.dissect`. For Ruby classes, like `LogStash::Outputs::Elasticsearch`, +the logger name is obtained by lowercasing the full class name and replacing double colons with a single dot. + ==== Logging APIs For temporary logging changes, modifying the `log4j2.properties` file and restarting Logstash leads to unnecessary @@ -49,7 +55,7 @@ downtime. Instead, you can dynamically update logging levels through the logging immediately and do not need a restart. NOTE: By default, the logging API attempts to bind to `tcp:9600`. If this port is already in use by another Logstash -instance, you need to launch Logstash with the `--http.port` flag specified to bind to a different port. See +instance, you need to launch Logstash with the `--api.http.port` flag specified to bind to a different port. See <> for more information. ===== Retrieve list of logging configurations @@ -165,10 +171,10 @@ slowlog.threshold.trace: 100ms In this example: -* If the log level is set to `warn`, the log shows events that took longer than 2 seconds to process. +* If the log level is set to `warn`, the log shows events that took longer than 2s to process. * If the log level is set to `info`, the log shows events that took longer than 1s to process. -* If the log level is set to `trace`, the log shows events that took longer than 100ms to process. * If the log level is set to `debug`, the log shows events that took longer than 500ms to process. +* If the log level is set to `trace`, the log shows events that took longer than 100ms to process. The logs include the full event and filter configuration that are responsible for the slowness. diff --git a/docs/static/ls-to-cloud.asciidoc b/docs/static/ls-to-cloud.asciidoc new file mode 100644 index 000000000..1c1e31d78 --- /dev/null +++ b/docs/static/ls-to-cloud.asciidoc @@ -0,0 +1,54 @@ +[[connecting-to-cloud]] +=== Sending data to Elasticsearch Service + +Our hosted Elasticsearch Service is available on AWS, GCP, and Azure. +{ess-trial}[You can try the Elasticsearch Service for free]. + +Logstash comes with two settings that simplify sending data to +https://cloud.elastic.co/[Elastic Cloud]: Cloud ID and Cloud Auth. + +[[cloud-id]] +==== Cloud ID + +{ls} uses the Cloud ID, found in the Elastic Cloud web console, to build the +Elasticsearch and Kibana hosts settings. It is a base64 encoded text value of +about 120 characters made up of upper and lower case letters and numbers. +If you have several Cloud IDs, you can add a label, which is ignored +internally, to help you tell them apart. To add a label you should prefix your +Cloud ID with a label and a `:` separator in this format "