From 012ebcb50668e90b4b596a2504a9f15e94fd0fa0 Mon Sep 17 00:00:00 2001 From: chendelin1982 <27513732@qq.com> Date: Tue, 1 Nov 2022 15:10:37 +0800 Subject: [PATCH] plugin --- apps/.env | 9 + apps/applist | 2 + apps/main.yml | 22 + apps/roles/role_common/tests/get-docker.sh | 656 +++++++++++++++++++++ cli/__pycache__/model.cpython-38.pyc | Bin 0 -> 6903 bytes cockpit/credential/index.html | 34 ++ cockpit/credential/manifest.json | 13 + cockpit/nginxproxymanager/database.sqlite | Bin 0 -> 393216 bytes cockpit/nginxproxymanager/index.html | 13 + cockpit/nginxproxymanager/manifest.json | 27 + cockpit/nginxproxymanager/nginx.conf | 156 +++++ cockpit/phpmyadmin/index.html | 13 + cockpit/phpmyadmin/manifest.json | 27 + 13 files changed, 972 insertions(+) create mode 100644 apps/.env create mode 100644 apps/applist create mode 100644 apps/main.yml create mode 100644 apps/roles/role_common/tests/get-docker.sh create mode 100644 cli/__pycache__/model.cpython-38.pyc create mode 100644 cockpit/credential/index.html create mode 100644 cockpit/credential/manifest.json create mode 100644 cockpit/nginxproxymanager/database.sqlite create mode 100644 cockpit/nginxproxymanager/index.html create mode 100644 cockpit/nginxproxymanager/manifest.json create mode 100644 cockpit/nginxproxymanager/nginx.conf create mode 100644 cockpit/phpmyadmin/index.html create mode 100644 cockpit/phpmyadmin/manifest.json diff --git a/apps/.env b/apps/.env new file mode 100644 index 00000000..7d4416d1 --- /dev/null +++ b/apps/.env @@ -0,0 +1,9 @@ +# support version: [5.5,5.6,5.7, 8.0] +POWER_PASSWORD=8dHZPFLFGoPXuC +APP_VERSION=5.7 +APP_DB_PORT=3306 +APP_PASSWORD=$POWER_PASSWORD +APP_USER=root + +APP_NAME=mysql +APP_NETWORK=websoft9 diff --git a/apps/applist b/apps/applist new file mode 100644 index 00000000..06fddd47 --- /dev/null +++ b/apps/applist @@ -0,0 +1,2 @@ +mysql +phpmyadmin diff --git a/apps/main.yml b/apps/main.yml new file mode 100644 index 00000000..6f67180e --- /dev/null +++ b/apps/main.yml @@ -0,0 +1,22 @@ +--- +dependencies: + - phpmyadmin + +allow_duplicates: true + +galaxy_info: + author: + description: + company: + license: + min_ansible_version: + platforms: + - name: EL + versions: + - 7 + - name: Ubuntu + versions: + - 18.04 + + galaxy_tags: + diff --git a/apps/roles/role_common/tests/get-docker.sh b/apps/roles/role_common/tests/get-docker.sh new file mode 100644 index 00000000..462d3f51 --- /dev/null +++ b/apps/roles/role_common/tests/get-docker.sh @@ -0,0 +1,656 @@ +#!/bin/sh +set -e +# Docker CE for Linux installation script +# +# See https://docs.docker.com/engine/install/ for the installation steps. +# +# This script is meant for quick & easy install via: +# $ curl -fsSL https://get.docker.com -o get-docker.sh +# $ sh get-docker.sh +# +# For test builds (ie. release candidates): +# $ curl -fsSL https://test.docker.com -o test-docker.sh +# $ sh test-docker.sh +# +# NOTE: Make sure to verify the contents of the script +# you downloaded matches the contents of install.sh +# located at https://github.com/docker/docker-install +# before executing. +# +# Git commit from https://github.com/docker/docker-install when +# the script was uploaded (Should only be modified by upload job): +SCRIPT_COMMIT_SHA="4f282167c425347a931ccfd95cc91fab041d414f" + +# strip "v" prefix if present +VERSION="${VERSION#v}" + +# The channel to install from: +# * nightly +# * test +# * stable +# * edge (deprecated) +DEFAULT_CHANNEL_VALUE="stable" +if [ -z "$CHANNEL" ]; then + CHANNEL=$DEFAULT_CHANNEL_VALUE +fi + +DEFAULT_DOWNLOAD_URL="https://download.docker.com" +if [ -z "$DOWNLOAD_URL" ]; then + DOWNLOAD_URL=$DEFAULT_DOWNLOAD_URL +fi + +DEFAULT_REPO_FILE="docker-ce.repo" +if [ -z "$REPO_FILE" ]; then + REPO_FILE="$DEFAULT_REPO_FILE" +fi + +mirror='' +DRY_RUN=${DRY_RUN:-} +while [ $# -gt 0 ]; do + case "$1" in + --mirror) + mirror="$2" + shift + ;; + --dry-run) + DRY_RUN=1 + ;; + --*) + echo "Illegal option $1" + ;; + esac + shift $(( $# > 0 ? 1 : 0 )) +done + +case "$mirror" in + Aliyun) + DOWNLOAD_URL="https://mirrors.aliyun.com/docker-ce" + ;; + AzureChinaCloud) + DOWNLOAD_URL="https://mirror.azure.cn/docker-ce" + ;; +esac + +command_exists() { + command -v "$@" > /dev/null 2>&1 +} + +# version_gte checks if the version specified in $VERSION is at least +# the given CalVer (YY.MM) version. returns 0 (success) if $VERSION is either +# unset (=latest) or newer or equal than the specified version. Returns 1 (fail) +# otherwise. +# +# examples: +# +# VERSION=20.10 +# version_gte 20.10 // 0 (success) +# version_gte 19.03 // 0 (success) +# version_gte 21.10 // 1 (fail) +version_gte() { + if [ -z "$VERSION" ]; then + return 0 + fi + eval calver_compare "$VERSION" "$1" +} + +# calver_compare compares two CalVer (YY.MM) version strings. returns 0 (success) +# if version A is newer or equal than version B, or 1 (fail) otherwise. Patch +# releases and pre-release (-alpha/-beta) are not taken into account +# +# examples: +# +# calver_compare 20.10 19.03 // 0 (success) +# calver_compare 20.10 20.10 // 0 (success) +# calver_compare 19.03 20.10 // 1 (fail) +calver_compare() ( + set +x + + yy_a="$(echo "$1" | cut -d'.' -f1)" + yy_b="$(echo "$2" | cut -d'.' -f1)" + if [ "$yy_a" -lt "$yy_b" ]; then + return 1 + fi + if [ "$yy_a" -gt "$yy_b" ]; then + return 0 + fi + mm_a="$(echo "$1" | cut -d'.' -f2)" + mm_b="$(echo "$2" | cut -d'.' -f2)" + if [ "${mm_a#0}" -lt "${mm_b#0}" ]; then + return 1 + fi + + return 0 +) + +is_dry_run() { + if [ -z "$DRY_RUN" ]; then + return 1 + else + return 0 + fi +} + +is_wsl() { + case "$(uname -r)" in + *microsoft* ) true ;; # WSL 2 + *Microsoft* ) true ;; # WSL 1 + * ) false;; + esac +} + +is_darwin() { + case "$(uname -s)" in + *darwin* ) true ;; + *Darwin* ) true ;; + * ) false;; + esac +} + +deprecation_notice() { + distro=$1 + distro_version=$2 + echo + printf "\033[91;1mDEPRECATION WARNING\033[0m\n" + printf " This Linux distribution (\033[1m%s %s\033[0m) reached end-of-life and is no longer supported by this script.\n" "$distro" "$distro_version" + echo " No updates or security fixes will be released for this distribution, and users are recommended" + echo " to upgrade to a currently maintained version of $distro." + echo + printf "Press \033[1mCtrl+C\033[0m now to abort this script, or wait for the installation to continue." + echo + sleep 10 +} + +get_distribution() { + lsb_dist="" + # Every system that we officially support has /etc/os-release + if [ -r /etc/os-release ]; then + lsb_dist="$(. /etc/os-release && echo "$ID")" + fi + # Returning an empty string here should be alright since the + # case statements don't act unless you provide an actual value + echo "$lsb_dist" +} + +echo_docker_as_nonroot() { + if is_dry_run; then + return + fi + if command_exists docker && [ -e /var/run/docker.sock ]; then + ( + set -x + $sh_c 'docker version' + ) || true + fi + + # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-EOF", spaces are kept in the output + echo + echo "================================================================================" + echo + if version_gte "20.10"; then + echo "To run Docker as a non-privileged user, consider setting up the" + echo "Docker daemon in rootless mode for your user:" + echo + echo " dockerd-rootless-setuptool.sh install" + echo + echo "Visit https://docs.docker.com/go/rootless/ to learn about rootless mode." + echo + fi + echo + echo "To run the Docker daemon as a fully privileged service, but granting non-root" + echo "users access, refer to https://docs.docker.com/go/daemon-access/" + echo + echo "WARNING: Access to the remote API on a privileged Docker daemon is equivalent" + echo " to root access on the host. Refer to the 'Docker daemon attack surface'" + echo " documentation for details: https://docs.docker.com/go/attack-surface/" + echo + echo "================================================================================" + echo +} + +# Check if this is a forked Linux distro +check_forked() { + + # Check for lsb_release command existence, it usually exists in forked distros + if command_exists lsb_release; then + # Check if the `-u` option is supported + set +e + lsb_release -a -u > /dev/null 2>&1 + lsb_release_exit_code=$? + set -e + + # Check if the command has exited successfully, it means we're in a forked distro + if [ "$lsb_release_exit_code" = "0" ]; then + # Print info about current distro + cat <<-EOF + You're using '$lsb_dist' version '$dist_version'. + EOF + + # Get the upstream release info + lsb_dist=$(lsb_release -a -u 2>&1 | tr '[:upper:]' '[:lower:]' | grep -E 'id' | cut -d ':' -f 2 | tr -d '[:space:]') + dist_version=$(lsb_release -a -u 2>&1 | tr '[:upper:]' '[:lower:]' | grep -E 'codename' | cut -d ':' -f 2 | tr -d '[:space:]') + + # Print info about upstream distro + cat <<-EOF + Upstream release is '$lsb_dist' version '$dist_version'. + EOF + else + if [ -r /etc/debian_version ] && [ "$lsb_dist" != "ubuntu" ] && [ "$lsb_dist" != "raspbian" ]; then + if [ "$lsb_dist" = "osmc" ]; then + # OSMC runs Raspbian + lsb_dist=raspbian + else + # We're Debian and don't even know it! + lsb_dist=debian + fi + dist_version="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')" + case "$dist_version" in + 11) + dist_version="bullseye" + ;; + 10) + dist_version="buster" + ;; + 9) + dist_version="stretch" + ;; + 8) + dist_version="jessie" + ;; + esac + fi + fi + fi +} + +do_install() { + echo "# Executing docker install script, commit: $SCRIPT_COMMIT_SHA" + + if command_exists docker; then + cat >&2 <<-'EOF' + Warning: the "docker" command appears to already exist on this system. + + If you already have Docker installed, this script can cause trouble, which is + why we're displaying this warning and provide the opportunity to cancel the + installation. + + If you installed the current Docker package using this script and are using it + again to update Docker, you can safely ignore this message. + + You may press Ctrl+C now to abort this script. + EOF + ( set -x; sleep 20 ) + fi + + user="$(id -un 2>/dev/null || true)" + + sh_c='sh -c' + if [ "$user" != 'root' ]; then + if command_exists sudo; then + sh_c='sudo -E sh -c' + elif command_exists su; then + sh_c='su -c' + else + cat >&2 <<-'EOF' + Error: this installer needs the ability to run commands as root. + We are unable to find either "sudo" or "su" available to make this happen. + EOF + exit 1 + fi + fi + + if is_dry_run; then + sh_c="echo" + fi + + # perform some very rudimentary platform detection + lsb_dist=$( get_distribution ) + lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')" + + if is_wsl; then + echo + echo "WSL DETECTED: We recommend using Docker Desktop for Windows." + echo "Please get Docker Desktop from https://www.docker.com/products/docker-desktop" + echo + cat >&2 <<-'EOF' + + You may press Ctrl+C now to abort this script. + EOF + ( set -x; sleep 20 ) + fi + + case "$lsb_dist" in + + ubuntu) + if command_exists lsb_release; then + dist_version="$(lsb_release --codename | cut -f2)" + fi + if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then + dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")" + fi + ;; + + debian|raspbian) + dist_version="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')" + case "$dist_version" in + 11) + dist_version="bullseye" + ;; + 10) + dist_version="buster" + ;; + 9) + dist_version="stretch" + ;; + 8) + dist_version="jessie" + ;; + esac + ;; + + centos|rhel|sles) + if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then + dist_version="$(. /etc/os-release && echo "$VERSION_ID")" + fi + ;; + + *) + if command_exists lsb_release; then + dist_version="$(lsb_release --release | cut -f2)" + fi + if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then + dist_version="$(. /etc/os-release && echo "$VERSION_ID")" + fi + ;; + + esac + + # Check if this is a forked Linux distro + check_forked + + # Print deprecation warnings for distro versions that recently reached EOL, + # but may still be commonly used (especially LTS versions). + case "$lsb_dist.$dist_version" in + debian.stretch|debian.jessie) + deprecation_notice "$lsb_dist" "$dist_version" + ;; + raspbian.stretch|raspbian.jessie) + deprecation_notice "$lsb_dist" "$dist_version" + ;; + ubuntu.xenial|ubuntu.trusty) + deprecation_notice "$lsb_dist" "$dist_version" + ;; + fedora.*) + if [ "$dist_version" -lt 33 ]; then + deprecation_notice "$lsb_dist" "$dist_version" + fi + ;; + esac + + # Run setup for each distro accordingly + case "$lsb_dist" in + ubuntu|debian|raspbian) + pre_reqs="apt-transport-https ca-certificates curl" + if ! command -v gpg > /dev/null; then + pre_reqs="$pre_reqs gnupg" + fi + apt_repo="deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] $DOWNLOAD_URL/linux/$lsb_dist $dist_version $CHANNEL" + ( + if ! is_dry_run; then + set -x + fi + $sh_c 'apt-get update -qq >/dev/null' + $sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq $pre_reqs >/dev/null" + $sh_c 'mkdir -p /etc/apt/keyrings && chmod -R 0755 /etc/apt/keyrings' + $sh_c "curl -fsSL \"$DOWNLOAD_URL/linux/$lsb_dist/gpg\" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg" + $sh_c "chmod a+r /etc/apt/keyrings/docker.gpg" + $sh_c "echo \"$apt_repo\" > /etc/apt/sources.list.d/docker.list" + $sh_c 'apt-get update -qq >/dev/null' + ) + pkg_version="" + if [ -n "$VERSION" ]; then + if is_dry_run; then + echo "# WARNING: VERSION pinning is not supported in DRY_RUN" + else + # Will work for incomplete versions IE (17.12), but may not actually grab the "latest" if in the test channel + pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/~ce~.*/g" | sed "s/-/.*/g").*-0~$lsb_dist" + search_command="apt-cache madison 'docker-ce' | grep '$pkg_pattern' | head -1 | awk '{\$1=\$1};1' | cut -d' ' -f 3" + pkg_version="$($sh_c "$search_command")" + echo "INFO: Searching repository for VERSION '$VERSION'" + echo "INFO: $search_command" + if [ -z "$pkg_version" ]; then + echo + echo "ERROR: '$VERSION' not found amongst apt-cache madison results" + echo + exit 1 + fi + if version_gte "18.09"; then + search_command="apt-cache madison 'docker-ce-cli' | grep '$pkg_pattern' | head -1 | awk '{\$1=\$1};1' | cut -d' ' -f 3" + echo "INFO: $search_command" + cli_pkg_version="=$($sh_c "$search_command")" + fi + pkg_version="=$pkg_version" + fi + fi + ( + pkgs="docker-ce${pkg_version%=}" + if version_gte "18.09"; then + # older versions didn't ship the cli and containerd as separate packages + pkgs="$pkgs docker-ce-cli${cli_pkg_version%=} containerd.io" + fi + if version_gte "20.10"; then + pkgs="$pkgs docker-compose-plugin" + fi + if version_gte "20.10" && [ "$(uname -m)" = "x86_64" ]; then + # also install the latest version of the "docker scan" cli-plugin (only supported on x86 currently) + pkgs="$pkgs docker-scan-plugin" + fi + # TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel + if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then + pkgs="$pkgs docker-buildx-plugin" + fi + if ! is_dry_run; then + set -x + fi + $sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends $pkgs >/dev/null" + if version_gte "20.10"; then + # Install docker-ce-rootless-extras without "--no-install-recommends", so as to install slirp4netns when available + $sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce-rootless-extras${pkg_version%=} >/dev/null" + fi + ) + echo_docker_as_nonroot + exit 0 + ;; + centos|fedora|rhel) + if [ "$(uname -m)" != "s390x" ] && [ "$lsb_dist" = "rhel" ]; then + echo "Packages for RHEL are currently only available for s390x." + exit 1 + fi + if [ "$lsb_dist" = "fedora" ]; then + pkg_manager="dnf" + config_manager="dnf config-manager" + enable_channel_flag="--set-enabled" + disable_channel_flag="--set-disabled" + pre_reqs="dnf-plugins-core" + pkg_suffix="fc$dist_version" + else + pkg_manager="yum" + config_manager="yum-config-manager" + enable_channel_flag="--enable" + disable_channel_flag="--disable" + pre_reqs="yum-utils" + pkg_suffix="el" + fi + repo_file_url="$DOWNLOAD_URL/linux/$lsb_dist/$REPO_FILE" + ( + if ! is_dry_run; then + set -x + fi + $sh_c "$pkg_manager install -y -q $pre_reqs" + $sh_c "$config_manager --add-repo $repo_file_url" + + if [ "$CHANNEL" != "stable" ]; then + $sh_c "$config_manager $disable_channel_flag docker-ce-*" + $sh_c "$config_manager $enable_channel_flag docker-ce-$CHANNEL" + fi + $sh_c "$pkg_manager makecache" + ) + pkg_version="" + if [ -n "$VERSION" ]; then + if is_dry_run; then + echo "# WARNING: VERSION pinning is not supported in DRY_RUN" + else + pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/\\\\.ce.*/g" | sed "s/-/.*/g").*$pkg_suffix" + search_command="$pkg_manager list --showduplicates 'docker-ce' | grep '$pkg_pattern' | tail -1 | awk '{print \$2}'" + pkg_version="$($sh_c "$search_command")" + echo "INFO: Searching repository for VERSION '$VERSION'" + echo "INFO: $search_command" + if [ -z "$pkg_version" ]; then + echo + echo "ERROR: '$VERSION' not found amongst $pkg_manager list results" + echo + exit 1 + fi + if version_gte "18.09"; then + # older versions don't support a cli package + search_command="$pkg_manager list --showduplicates 'docker-ce-cli' | grep '$pkg_pattern' | tail -1 | awk '{print \$2}'" + cli_pkg_version="$($sh_c "$search_command" | cut -d':' -f 2)" + fi + # Cut out the epoch and prefix with a '-' + pkg_version="-$(echo "$pkg_version" | cut -d':' -f 2)" + fi + fi + ( + pkgs="docker-ce$pkg_version" + if version_gte "18.09"; then + # older versions didn't ship the cli and containerd as separate packages + if [ -n "$cli_pkg_version" ]; then + pkgs="$pkgs docker-ce-cli-$cli_pkg_version containerd.io" + else + pkgs="$pkgs docker-ce-cli containerd.io" + fi + fi + if version_gte "20.10" && [ "$(uname -m)" = "x86_64" ]; then + # also install the latest version of the "docker scan" cli-plugin (only supported on x86 currently) + pkgs="$pkgs docker-scan-plugin" + fi + if version_gte "20.10"; then + pkgs="$pkgs docker-compose-plugin docker-ce-rootless-extras$pkg_version" + fi + # TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel + if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then + pkgs="$pkgs docker-buildx-plugin" + fi + if ! is_dry_run; then + set -x + fi + $sh_c "$pkg_manager install -y -q $pkgs" + ) + echo_docker_as_nonroot + exit 0 + ;; + sles) + if [ "$(uname -m)" != "s390x" ]; then + echo "Packages for SLES are currently only available for s390x" + exit 1 + fi + if [ "$dist_version" = "15.3" ]; then + sles_version="SLE_15_SP3" + else + sles_minor_version="${dist_version##*.}" + sles_version="15.$sles_minor_version" + fi + opensuse_repo="https://download.opensuse.org/repositories/security:SELinux/$sles_version/security:SELinux.repo" + repo_file_url="$DOWNLOAD_URL/linux/$lsb_dist/$REPO_FILE" + pre_reqs="ca-certificates curl libseccomp2 awk" + ( + if ! is_dry_run; then + set -x + fi + $sh_c "zypper install -y $pre_reqs" + $sh_c "zypper addrepo $repo_file_url" + if ! is_dry_run; then + cat >&2 <<-'EOF' + WARNING!! + openSUSE repository (https://download.opensuse.org/repositories/security:SELinux) will be enabled now. + Do you wish to continue? + You may press Ctrl+C now to abort this script. + EOF + ( set -x; sleep 30 ) + fi + $sh_c "zypper addrepo $opensuse_repo" + $sh_c "zypper --gpg-auto-import-keys refresh" + $sh_c "zypper lr -d" + ) + pkg_version="" + if [ -n "$VERSION" ]; then + if is_dry_run; then + echo "# WARNING: VERSION pinning is not supported in DRY_RUN" + else + pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/\\\\.ce.*/g" | sed "s/-/.*/g")" + search_command="zypper search -s --match-exact 'docker-ce' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'" + pkg_version="$($sh_c "$search_command")" + echo "INFO: Searching repository for VERSION '$VERSION'" + echo "INFO: $search_command" + if [ -z "$pkg_version" ]; then + echo + echo "ERROR: '$VERSION' not found amongst zypper list results" + echo + exit 1 + fi + search_command="zypper search -s --match-exact 'docker-ce-cli' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'" + # It's okay for cli_pkg_version to be blank, since older versions don't support a cli package + cli_pkg_version="$($sh_c "$search_command")" + pkg_version="-$pkg_version" + + search_command="zypper search -s --match-exact 'docker-ce-rootless-extras' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'" + rootless_pkg_version="$($sh_c "$search_command")" + rootless_pkg_version="-$rootless_pkg_version" + fi + fi + ( + pkgs="docker-ce$pkg_version" + if version_gte "18.09"; then + if [ -n "$cli_pkg_version" ]; then + # older versions didn't ship the cli and containerd as separate packages + pkgs="$pkgs docker-ce-cli-$cli_pkg_version containerd.io" + else + pkgs="$pkgs docker-ce-cli containerd.io" + fi + fi + if version_gte "20.10"; then + pkgs="$pkgs docker-compose-plugin docker-ce-rootless-extras$pkg_version" + fi + # TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel + if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then + pkgs="$pkgs docker-buildx-plugin" + fi + if ! is_dry_run; then + set -x + fi + $sh_c "zypper -q install -y $pkgs" + ) + echo_docker_as_nonroot + exit 0 + ;; + *) + if [ -z "$lsb_dist" ]; then + if is_darwin; then + echo + echo "ERROR: Unsupported operating system 'macOS'" + echo "Please get Docker Desktop from https://www.docker.com/products/docker-desktop" + echo + exit 1 + fi + fi + echo + echo "ERROR: Unsupported distribution '$lsb_dist'" + echo + exit 1 + ;; + esac + exit 1 +} + +# wrapped up in a function so that we have some protection against only getting +# half the file during "curl | sh" +do_install diff --git a/cli/__pycache__/model.cpython-38.pyc b/cli/__pycache__/model.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..edf3828e2a1d12b45b7b170cac2281d1d00b1b44 GIT binary patch literal 6903 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 literal 0 HcmV?d00001 diff --git a/cockpit/credential/index.html b/cockpit/credential/index.html new file mode 100644 index 00000000..4410af6a --- /dev/null +++ b/cockpit/credential/index.html @@ -0,0 +1,34 @@ + + + Embedded Cockpit + + + + + + + + +
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/cockpit/credential/manifest.json b/cockpit/credential/manifest.json new file mode 100644 index 00000000..4f2d90b9 --- /dev/null +++ b/cockpit/credential/manifest.json @@ -0,0 +1,13 @@ +{ + "version": 0, + + "tools": { + "sysinfo": { + "label": "账号信息", + "path": "index.html", + "order": 999 + } + }, + "content-security-policy": "default-src 'self' 'unsafe-inline' 'unsafe-eval' *;style-src 'self' 'unsafe-inline' 'unsafe-eval' *;" + +} \ No newline at end of file diff --git a/cockpit/nginxproxymanager/database.sqlite b/cockpit/nginxproxymanager/database.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..23903c50e4f0fbadef08885337ef4d3b6cde7fac GIT binary patch literal 393216 zcmeIbdvF_9njZ>?B0=gw*kfyGS?hHRl1Jj0B)ah+iIzRKEX!lf_#x}z$B1&X2{g#I zfNrR}L5kMW8(5FAY|o4|nIyBD*{o+$o6Tlw^Qb$!H`&~(y?bx&-fZQum1L%N^7<$F zBehkjJU3I7+EkM7oPMBR06`K>g5(F&E#TmwAHVaR?|kob@r_qxLt@IRRuv5<8+#}g zkH?;8m{@F2ITnk}!vFRw18?@)AK>4(>wSy2aE^)R{&_!qyC?ZG(&upUPm@18xOe|Q z+;@6VO#EU0***Uy{-yY2i=X#$^B}poTik)f$dgaT?{bDXSCLARSP~Xg-EiIrKm|& zNioKlS$HQJQb|yiS*8T<47n;fzl86rYDq53Z91q+ilhm39S&g^hf~P9P?9PVTqWe* zN>W*@R}AI^djh(a)T$^ef+AKWeU^DoR~7fY6eZ1on<>I=hF**Do=n#(0?=TwgX@Z= zMNxr{LQz%9^874gNH+jH8$jp0EnMF}6E{NL6Og=yAKo5A=Gzo}nQ4(sRv9KxyMMooZ z6}5OxkZ#l}s%!vt2Bw)qC6tsmN>XF*V=q_mWZbi(NxN za;-Jp*hE%SH6u7$Kv-h2DCxRTk#(aJb`l+B6~*F$tjr6NLK%MWW_^rplPR&097>Fw zdph2jl9iHlgR=UXq*Y~ICk)PF{X$)luh%8txBDy-z5Lp_H!h!L&b{{H*|(WlUnk!w zW*K1n{yv1Htt-ur-nu%N7M~jYOT+psg;1#HTq$GfDXm& zSLslI__#p+Pk4udG;PgLw3|uBa?J%;mi34gx&)#xEDWt?Pl%WYle5#2A8kC+Pgzvs zD#fiT&ub!)2VuPdF~aw8z>B8uTM8`UydeuiJJBBQm0Zgu{*E@r_fnza!>4?A)x2bX zt9x13_y#EwK%5heVpEcX2IuMmQ9qiB$Y>+gml(rUawYkVMkD2d84me*vEVyUDL5$CCrY zKOO$9;cpIK9X>f6JNSnOf9YTqI^YWtKm-s0L;w*$1P}p401-e05P{u^K<=Ubm@w3z zVKW@ZvC~{GpW$+X2DQAP!WOA{Wfd5rRe&bm)8n@vdHP@c_7{`=v9FrHVsn`+$7b^^ zE114utH6@o_eZ&5=L&EUmdod+*eqP3S*;2RZWwhP%3zfw`&WM}eXu`v*}8)LtBm(o z#RaG*X8+)CeBnTU>`r5o9TV_-LUqLvW1Wz*+2M=r-u4tr^!{g0-MQ9v6Fe0n}P&=!+@GQ zy4~&9j}G?73U)Vcnw=!~E-dJV)8*I368*8)oi2Hf%LCj(v923x6)G*5^&RXJe*dX~ z=5;wX2jc>GJHrJo11h_Oe)IRUH|-vJ^it>W>>b5fv&kc zmlc+zIi1vxXd>{<_=UG8kWJ4A!_US%F|Nrh}VEELC03v`0AOeU0 zB7g`W0*C-2fCwN0y9NQr{~u3&6oWr}Ap(d1B7g`W0*C-2fCwN0hyWsh2p|H8K*R_v z#`ndt*`X&I{SOa9R7qx>W5+X-3_HbVGJKA6nx+_*<@3{gCQD*8mQ<~DJTrHk%N~Di z>AhFki*KE|tQVH_i!V=!Zw=UO;m)?9OTfT84H=Tc>{Q4QC`syV6 zmA7uLnEwB-#gbo(_yO_shyWsh2p|H803v`0AOeU0B7g`W0*JtlM4)jjegIVZ!NK&2 zk;cfAjt1{2^{lrk3wnNbL8{cAr@{PXqcBlatEWp<2-$}e5z$aJ`XQZOT3VWbEh_02 zp`=gRe4EaQ8EI-#nw!i^*^-zkmM2S6sg%t@ddf6gD2UHlNh!}(t5;GYIdST$ssI04 zEct6YauD#L5CKF05kLeG0Ym^1Km-s0L;w*$1Q3DkgTOn~k}&khVfyl#4ZPt2j&Xq# zE0wCKi1SkW<32zkp8Ov%_`??>fCwN0hyWsh2p|H803v`0AOeU0B7g|&Km_{whK7j$ ze{cUE#D;%z@Zb0U!GTYA;A7$=Ap(d%FC#EGL~@@7(?|CVl2>E=c5!g<(9n0q!DcSh z6vJ^mm*;ai)BeegvmC?1=RCAtN#&*{3YiIRDi8nXQdhYt@?nCV;EsJ*ubCBgnPNq) zm*ymKQPOT6+{ZAmcPhMfH}lhlsp(U#zbn9ZD>qXWsIw|5MQyoe2;#gZNh!W8R&;4B zRZ^fJ?*iCfC1t+Zs?5vE4M9~Zvf^)y#S-x6eg1=u0(tyj8ejGCCwX>~&lSkyf8+VS z!yXi^vwZhx2WR23e3qW2C5Rh+XhW+5JSGs5rlokLUa72*YPeT!rfQSI#pvW+zmdk-}p#ZV4Ac-X)mdiDWyemn}adPWI-Tc(< z2WM18k?2h^GbyY8ObUL{yoF=TdC28s&R!Dd8S64-O|3F#prUV0HpqjS#g+95_m3`0 z63>v^(D`(FUN#o$b2J*TX#Q**9{oMIa@zWwmUX=@>1n7fTxgzV{(ZSdpBYg17BU9V z$;n;qqz*B((ov$gnyv-S)rC|wPVv*+%2;z$aXdAqm&dcoD+2>rU<<5!C~Kl3Rd9j= zAJ{1ax=^bw(@@~>QPrd+O*SOv-E__Ac``lm#nI!;agLeOB=OoQ7uA?0&|7kj<~dxy zu~-JXa`nTjd+8E3G<7si1p#Xb`|z^8gqe#zNr>h_3ZQAyW)rMmARSCyNf{E-`ydVW(@vF7zcIiI;A*@gVA^~P*;turqJuZ2Yhj@`qzQQq?y5fO%_PV5;Z2p{|~ z0fNTh!#2ET%K0>(&+(bO<7TFkS2oM%GNJH#B(Gzm173{5{VZ1qLHGmP0hnvmib-pA@|3(>x1=G#M^XPEKS&tUUIi_Yv1F z0k*mK=CVn7Z72n~CeJDpjTcg$N)5hyWsh2p|H803v`0AOeU0BCtCUxTVF1X?j3>BtA5F_vVm0!2%L3IcFa_ zC-*YLvxW0C9}H3}%;dh%EJvF0mpY?XA!7^@_aG%eD)CIZu4`$1PFBpsKW5xu#^)hR z4tlGaP*JU9ywr?BPt7w|mPAdt$`sXlrNk(z!OYcVc&FA3xhhr|Gl{~?pwoo~QC}Ei zmeo3=FVG*zkg+L=y2MD3D+eh&!R|s;ydmiF`;b?c=Q0fB7l!nis~4|9KA_ocGIxrR z=M|Nv4z};yd^v5@sz4sd|M|d~3ujMXI?G%- z{lY6}nOXnWv&_j^xikxpX-M-hCS*`aW+(s;L#iz^*Q8}etQ#sFysD%aW6UfWMgx*V zRb`d|Y$OP{gXF&ob}n0Kfed@U5Lw>FPDhEQ%T=32P@a`TVH6b4`asl7zd>@Cr3y<&HtyzBTCkZe+7@$R2m*?b)Y%I4JR_J3%g&-Tj z{AjiE`{klGU7gjqO&?QCY|}w37A0L5DzLLun_jNvuvM?oTZ4(j$e}~=JGwKz1hK*3 zNN&yWtwE9_U1fdMb(8XPn%CTVJc%^e=3BXVt$h!3N3Ygr(9}vm+8q5bKR}1#_N#O# zKx|$h|0lddL7KK^DB8^=W4Y!6EX#W2VqF4}A7q|ZvnO0&>U88s8;|r;7S*^)ajVKu z;)SSDFh5{*^L-rfqUrmV0!uh=2&ZnR(!jlvYq?1NZ?*`qET$BBGBMmT_9>#Qvn-or1}yg`Fy-FPw)4dBHa+2&gSEVwe9sjLs*wC zf_i?>09lOQp|_}C2hJ@CIusOwYEF{xW1r{7d|#daKXzcKuRipHp^wOygsZW@VQi^auC?a)R-d-#F^V-} z@Bo`(3HpUFWS6oEm#vr9)IEI7=|Gd_PK*xzEPi%`OCwUQqJ_!3leg92%buJzw<7z+V=^usqFrdF)mH|g9F>m}JBMq}sA zqdv&&4qJm%JK;y2BZb-ouMFhDps5}bz0m3(26(e06;nl8d9L+53I+C=hp64=_R}V? zO;tglBBk&1BR-gYUvCZC9nd8ikf6xpF~>qxz9m%yBib4S&(T{)lZlaI$KrQ~D10s* z%JuehUeH|MYz6VtrpBV|07ePvS1ZdDuHfu5UJFj0O%5P+8+v;xS53cP{tty#`z`U8Se?vowT- z0nO;3!Rh5?K~%sr)6Pr{eQPk!DQj!j6P9h*DeKXZBS+%5_S2DoYHbDx7S=z9ywqZ~ z+LY3Yfp{N{W4(HBNz#j&4Bk!R>1uU~MX^#}+tNAa@vcz^-00}|p@EUpN8&MRH?*`J zVE5p718o*`B>JoZXTAA6kmevE&#yoG2-Q-*d6r_*GN%y8-upRkRX`(0=7l_E+fs{-8Z@PB?3NNcm z0xkbYo%B|{-BllKZN4>oz&bSOlarHWtOL}jOAZV{ruoTS>)@9WI_WU~pDwa^Km-s0 zL;w*$1P}p401-e05CKF05kLfXGy+8b-!uGZEV&O3_(B8_0Ym^1Km-s0L;w*$1P}p4 z01?<#2sHG;19U6lW9g~vhY5Qlz%1;yJjJst?2zZK3;;XmW%+#GwV7XF55~}a1K}K5 z*u!}|Q(#~dV>m6B3*A?5gIfZ6w;61`9pOqt9|(Ku%oMr3EDPHocJ-lJVg` z9sX}nYw(YU|LyR<9{!`@e=__JhX23e-yQxt!~e(dZw~+Z@b`!R;_#mv{+4-5u0gr| z<-vW#D0MV`1IkUrTENPs+mQU;#1B~CmD8{ z&*%6|J~ftdRS|Ueq2{0rSiGj7k0;G7#dBjRcS2B#4>f#^rR)R}a%*tz+|)!NGr>*e z;r|?*)&80!1f}=_%fflRIY23%g=g^8|D#RKT%HtP7Av|0y}UU)PP;cZ$7%Le=z_Z= zP(TW0iVw9@Syw4Ru@oq2SgArZgZ7Lgu6g;$z z6Oxg;G@>*7HaroLQDe^lC8I+_M;b@mG{f@wX+Dz;X(B1-4kse1pFrEEOHd61%5Xu+ zAyoq+C&{QJ>6}a_m`lK}OanMcy{8od;5T-k)XFWn-=^ieSDY(0DJ!JOMavc!ycytH zUXJ7Ia6~egv9AV|o z^j>qUhmPF4=^a>>af1rUg9iq94J91GOyzscYN z*pieilHsOc>6@I$!V%7A)04gQ6=0oP`_e}iNB^=1ZT?{==MJNm_0is#uK>0=ZOx+C zwEi_I^xAGsgxm40htOgJ;-7e}*20^>9E=5^`gBcHqzXV9`iQMgYqxheI4gmrmplY1 zDch_P3xdhYophf=y0V*2ElLV$YLc$QF^TN9aniNPyEjR9_egD9O{o^r0cxe~E4Rvf zY>K`6mX|yU0eP6M$ucLK6x;Q6wOdSbeVmOjtuQ{>)m0T#J)v6KCP@ zg)?w?>NFgVKMRLr({M=T;Bb_M12YDPCr`lP=TmTa;^*P;a|Gcd1kT3^UXKkD|9?FB zy%_xA3lTsB5CKF05kLeG0Ym^1Km-s0L;w*$1hxQyx%j|SPw7uTY}F|r*I~DU7p1aT zuNcflc>mUdXfTFK_BUK&mKG$1d2L=+ZZNXWEXW441lt@kBJ3)tTvNc<$-E5SW^js- z%`NH`v%=ub6=EZaC;w9n{_uqeAOeU0B7g`W0*C-2fCwN0hyWsh2p|GG1c7AVQ$uch z0_Okkkb%X=Km-s0L;w*$1P}p401-e05CKF05kLgmAVBp0!PsxalJSF&?JFmK*#Eoz z{GR^`4ZZfl{D0U)U8q2&Fl_3H`TxG$qctSku3-K@l2L^u)NSW=FWJSz0<}=w3urf2)y6NxX`u%w<8&+OEA)_otqnq&Iw|9% z$i-{!3Qr&_wcdMRETyRxNhkHM~jYNWnPdTD8C z0wALe6GgR}Hs7W*Vn&*pl;$S$Qnn;!isi|YR4Qe2(_C(vEfmD(EdT$r)oN?5D{Ohk8MEHQhl#*CA zkHcp!oIQQ%EOY7f3$L7IX3fS~=H#qgnq_3gkmeAhR3`V z5%_*L5r-hxb}C)mN<5YrId&|5=Q5=WS3yqK+lRfh;QD3-cc4rD*6hf#BaNvFhf6l;q!?Rj*H(;`$s}3R%BqVF4(P>k(T3Pb=aEWao=dz z`T=}dER{5HdbY;BBx_R9kQdiBG^68(21ZUFiN|E6B;C-jS0I(1U=J%4d=_-cFbJdP ztT&%;eC^T1$dM!QTl>uw(fr=}_K+7{tJQ|I)iU8FCyr%3i%3b*i<(?BWL0VX?2BTh zzP9Hc^DN19)gB!s{{KYmr?KJu{=YZ$uM*$upXqxXK5qNh?dOta{Z7~}z}dkPwhQ2( zQt~vPb#E77H#IHJeIAo@wpF!c^K5xOM~e2lL>92lI94P3iY%$9?2%eRw+mRUS~3wT zL|KtYrEt4eujzFvum#*EpsU*iJU85ig4iGhvH1uoXbSeF=n4f9k9UQ-YmtKN8PsWU z?Lf6_w^2Ia)m^#$>_LZu`g|OLjAuwwgcLMsZfmk}9<=2YWNnBLR+6~;J}>iPzQXL* zxJOPu2U^k(8BHJkkfsRf2iCdntYPiwXH&Mi*)8;QOWJSK&)thYVj-g$(&VC_t`{-y z&bY6ChKKPBa!*9gCcZb|?k(Kwfz2drxBI#r}+F@+sZzBoIjFWgG%--=lE

!CYSBH)iwr#PBsp$Sb#RJYo^i6CW-4D2C;;ej*}G zO(NQ3huC#%V_1;4JKPs9xE6!{VY8d=rc?N&U!cE$fTnw&pq6Vg6Md9DTp>TnOD~-Xxj8-ZCsLS=cPgl>h5ON&pzZ(kl)8Z z#?wbZq$yGg%67*_+?s->kpp#81}FOe-aXI94xSqNc7Foi;0qC00|IwmJZ$ryk016j zn+*6kr$U;d<3Di4Ora|}9NGf>>CCIj(7tT?W_n*3mZ6$Ot4rAJmR96BADC&Wo?i+g*t%i!$WR@l3j|YiWH>R?@T=Gj1^B^UO>NdaIgHQRf*j)SQ}0 z%_#JHp1A@M>e~EOhL9SKpDwF)IG+r==+w-3clfoR0B2I9LmDjgqIsP(r41S?p3XvQ zo>B%coO2EGS)Q-MHay^XWXf=-Oj2DZfBCsB1MoD#F>+NjDnugGBPS}p- zYpBW%WG88c47N4!illgwXJA==iHF3WGU?90gt|EZxJqogA*q?&&Z_h%$@YCh+9;$X z(CwRm^i03A?fsK$i<9R2m9Kwc#9~EHe8cCpr;H)MiZW9!R^&Bkb%z&akQYI+N2MYu z^Ud^RI!^_#^+GhJlb&xjA}<0JH`6SL0#n&u!aKFVwU8cqi5IQhdExW6%^5M%0P>*;xFE!P3L!D{!LpRMN5btlXOy}JC+ZUMEf<})2zt*a7mPcNkQ zqxtREw4M6@`(wW!JNW#*<;3%Q*r;mFTvlm2D5-G4OyH<z}**87E^xW)BRo!oXzn$pJkRd zxtMadT_{4tU1xcHb7;q_xm}z?yCGcR_7Y>W34i_# zS@`^GEoo}9i9J?{#;&B_kn}^6-qVo+gy}b7O1?kDYHQZzfC?VIK;3=e$(B+cSuO$# zl*jbibt#Yd89O39?+OGDYa7!n?~?cX=GPnX`T>Fg$2+w7o$k;S>YrMl!@W1Csp*Cb zw6-_af3v;?3~+?j(bCop`N~sKAP7wfk2^ zt2uO(*S9jZGi_K`^O-lS)>Ub>y?VAKv}!+)-^4)MSH8aYDVt`$(M%v}Qjm{k2~oLd zwtHp<=Zf74-Re5c0uu_*E42A(6`D4QPT@*E8ike((kC6+X7!cOCuwyFyL~OfS!aB8 zH>mMbtKB~x zt>#cd?zN=@rf(ZDXUnIi1!cfeP1{%Q=8xI*`-$!lYm=Hnnxdj#h?*o$rmolmkba$D zNSnW}Q%v7%`rRhszf}K^q2Re6mHaX9NuuoF}GURHVuV^_eyU4%;cLIi&IKqffV-7KBKBGleuo zIxV_X52_7HSd688F`o!bMcZ#$eErH7?P>AN=K^!UwULI+&OIAxbXCKL^$9#f-HG(= z`m_M~JD^rTn_s1XrcF{O;7VQB@Hfb@sSBqUrvSmqZ{UKqonNlt?xUmj?Eb_r3zE4O zobb^EK%2}1oUq*~;@b7uZKUspw5X;C!D_I`H`T?R%st zDw&SXzifBnO;M)nT&CL^v-cWhy1Sp7u<7)Zai5}*bMFUdFBI8Av~=2|AvG3@4y+Yc zyMMi~n!C7WtiTGit}O&tRmr!8PTfAwXx%f@>u}DDJCnk1l!8g&iR?AGYcv5a_MBtU zP6eCWDZ1b-G37&HVo##P*M9LDMD!`kHIFowDTA@rI=>mu`OR&88RCTJaO*<7!4P{ z%VeE7a?U$PASNpic|w{Zog*AZKjIwOpogQ&g3cW-V^0xpZWIXnd7krIPf1gRQv{5& zJ(}2uO0iTD%q==V26xHd{x6=QoSrnfXtvvt zQ^cVFc=VtX84dn7wyVK^YYbHZgKDV3e>a40nfkvGJMd2j|DXQ9w8z-ZnkGK`<{)tQ z#I(Jvee#yQhGkiXEkKSs&pCcHSCea5>sqd%b$SjYz202bP!x+$6x)!mqOC@su35eh zTSBypWUnKmw*y{-;X_E@dMXyy*66$4x@vhZq?mnHj_`wsOTn$eC z=8n|Pq88Eqne_bBAJv=U0VE&p+c#lC$0!K}j~GDXK}r@%b#4=zX;N{7lZ1G-U{rcAd;+cKyVrV7 z{r~Zku>=2d=(h&G1#j>bionOE(>5>p&KnNn08;~0adStZ6MKi%6bUae%_*?cP4q>q zz=$pui;}Jj6XH}HaaqCnh2g|Zq6u-^*Y8}kgnHdO)4>l%1~-yj0K5- z;6p_!8nUX8_A_enT1_^ZKcgLmnyBjx$q?ex=Ba73<&fZ~xl{fh=#n8UNMcFSn3rMi zQ06$%7u)rEd;BF;TN1UBR2o08sc}~-sof9GG|`<&S^Z~H zzGpg5&^>!eoM$Y^%9>iWhk`s=<)Vl6X2KI*iG@Y%J90CW>k`T{K5< z93K5W7+3pqTGsWtq^I+lY@vCY`S<0T>zP+v3jSKGW7}3_JNCTIWkN*(KAv%7AVJlArT5SsPP64DguEa6ZX=`HO) zTo~!%M(3|HTC~OY~T0#3mpi(*aZW?o6@G}WK%f(ChTg5>OZRgcJLCVw1M#V~m@M_{{z$-4wi zPkemzob%(^FWWrM@BatsH0Kl)H~s&#DN-Jn!Ez_a<0|1EF%(W+DNCm50)^Aw7fwH( zeW?wL%@hI#fJ`JC89E%Cn?nCT`u~x|VwNW)n{GyyXY^7m@&EV5-i_`5T>lI3PnTc! z#IM>6JYWYPn{4_RIBAMdMg}tjGH{fUTgb?02LJ?2+1Oje& z^G^M7OJpP*$H(JHlZ(f7t^RoPiqWSTLN(pBR|eTl<%YqHXRF+LiobF*RTGT`*iOu< z0s>k@*Xp2dEHMC?9x}b~ZKGkj1{fZh!jfjlWw|ICutl{}uT-pxW-0z=O4fyvtc!CM zsg&ZOuOiZYtWTG!vH}%^G|^BsAbmwHUUPp%X2YUrh#Hw7>7}KmiFwUzpygA{x9NRe{H|f18s6i|)K#?B7ao0oJ9AJA*kZ#l}s%!xF zBj+wHib~N}WUVS0BB7cJ)C!W6qPAQ!1aV%IfUc~9bYZ*01NqF$$_;?CA}i2!lQxuq zhp{1u37Q6sS1N`y;a?Mo4&~G2CdyYG*m zC9^%qU?SNH){zRanw^BMw2oY9$WFGDomj@SfbLJ*ss6ub?`N^0KLZDRAp(d1BG5w! z+`D?-7JI(!(W@rGcf#j9rYWn*rB`*eAUvENDrrX^Wl!93>v6~I+Fg9Y<1t%VIb7{z z&j4`BQHK&Gn$Gs~hBE{mTIfheM|!v;y}kVP>B{RifBU6Aw+?4mBeoRO>cVts85`kaaLNt^iJ~w7Lx{t-7YI$C$iH z@&9{YitYcop*P?kd?5me03xtP1U??TXiKqw_OM%Io#I*0nLXZ5t0^iec9PE*z%BqB zb#*D$kaS}LlG${%Y!pbaY3gb-0L#)2SE*^$k)}R9meTc#01_JraZY$+Ae6+Cas2_5 zR&!A2gl7y3qLiwlTmijyL8{cA_dFd0F$RMz%?Qe{SW6N{TdAl^0zC=Y)Y0Bx(Rl_U z1ZD)iUNftFS-09sG<6)Ky%k)70@aS&J#*^>s#`B#pses%{K(yr&RC%07YAuy zQx|2}traG+Ytq7Vl~kDDia;XhNhoqEl!=A$1uM9^^?dIrw%W@>I^{L4MNBv)iP?a|R|GxPDi0wZz@Cp2b zuU&+|y#sIB>)V5)?!^pLv^<}g4rz*NeS<4P(e%zjR)ccGw$j=<@)T;#9pNeDg3F@& z_V`OG4Lp@fI2`q z?)P#H@;OVAzd&}opR}qv0Kf4*-+567$?%dm&n%dA3yCDioPi9)nrtutO|c?NilI+< ze|Axlc!oUXI*Pcs?tA`yxkjHK5oP`K^^7&0Vtj(YHPO z#{)ki+`-3>NK=ITh?voPO8wtlqxNR2|HSj!OSFsre@SCnNRp1cYf7&!(X*8t>8b|1 z7N+f7XglTow->r-{l7gIWBav%e+&QM3lZ2T0{0HSW3QVJ{BrzcaNQ(L5w4q)Ji9B_ zO!)>KFsPBtB^o8qr_)?!YJ!FTIG)rHOq(^>z}RW~>W~I3BsR+oKw=DR(K;eKz}~C& zQuN?q@47=5hLENRmm=aof=BM1;sV=0yI=>pbC3<~I5tG}|Gw8_Lw^+x_(B8_fsG*W z>6^3ms{UPHU~!g%;_=>9oi;_cs>A6ybYQmIO?YL^74C3VXHdaR7tI0_XBBiq6eGGuKh39?1!rN&238Ty zXSt-DKe~m58b(oF>}p*XTv%{nF}8kTX=}Me{eNfb{{s)j_7B1VUx)xAfCwN0yB2|a z^*LM5__prTGjdR*Go&dxJtLdlB{e}o>cUV)+a!V!5+G%+r3Q&(r|4ntcxMJImR-!}&dB#{W@#>&>)C(S^#6Y; zHuUR#U)r@oFFrUTur35XEthPm;k%c8A_A0U@a=n-B~1}Z4NyI(vsym6sfj{nf}6_2 z|2dE|wnuFrOB@Jh;-dEClABR`+O^sfy8m~s`~S_Nv(WhC$_U%{tv#eE!i9zy0#Q9h z^%T|9-Jzc1!m?u*7E}Mf92@#!-{p0wK=>m>01@ya@ae^}Bdw)4UsEG5D=IVlmWi%`^9hEk8{PL8NgkWJqUk5BjnsES7nR~Q$q?$b zd9njr%C1JUjdvJx86si5L!+{$R+%$qK^VqRnXTKqVjbF|Yb?>I%vjs9ZtH}DHLfaD z|BwIo*wAmn0bjcZfp2l|+2X{nTyx6~#2d|LJ>rDb6rDH$DsT?P30)dXl@whlE{K(i zq|DpW!pfSf)LEg4w*TH^Q{1SIiYmqysTeSD_JE?h1_Ccz?N{vCKCSbe(;cV8W*Gs3 z6CjcWgGL(16f`t<)F#}Yr@^)eFz zfCwN0hyWsh2yANv?vGX-<^PIX(=YHW%jZ2|;#O0H%0IC!pz@Ede{}tqPq`d+t2p^k z`A6j+UH?16_5bb%OuFf_NBw_W%T{>vhyWsh2p|H8K(8Wje^hCu|8qH>D|k%;v?(h6 z-!di?+!(^Bx3Gap>}cCZPC{;#+r#YIJ`gsX`*VCekcM$Z3jp#Lw%5{tbm z&ES0@0*C-2fCwN0I|YFU3Dwrnzdzzr$MbyFvz>c^=SWj@8afyNGAwH7sG*~Vjv6{@ z=o2Jb$*ziMrd1c%0*e|tbBx)c)pR@2(22nzV5fR}{DLG_#?PH+j%!j?H6%eSl{Cw; z71H}9Ra+9Zl2jUpci!K)h;Eh8pk^$A>o*(A|GyMVT-qtJ6+QtV_Tm@Up5K z%yCjoa1E(J5$OM1EWvG!tb|uZ1P}p401-e0wgmzYUb${7_dhsly6(AgmSZ5ZKAY!r zY)Dgt%000ipmLAOJu3I8+@o@j%KffW?mu8=W?b3zuoi|@P0*wzO*SOvU02tW>4`6n z9%qho%$z2P*QnDzprAJ${9bQ8(dR=txAE_X{-Rg(|KE!xes5byUwD&<03v`0AOeU0 zB0vzh|BPnaBR-3JjSsmz57mO%OlF+3O%$}L`}PR?^wa`^_6W2`pgjWZ5onJ4^H{? zY1rF-GNdUw6`N}CsA8jvjVd;(*r;Noij69^s1&7=P*jz&JfGrIRGqdx{w{qyee%k? z>8nqVGHH*`AG+%jMB&$Kx&eUzRiPPQ&otkTmo-%}B&Ebpvv%c5Q9 zpG5(R1X!E)*^c%cX^POuK+GCwWI!VW8X3^YfJO#1GN6%R!$yXtwV?O(fAs%vij0RB zK?D#1L;w-kRtP+Jr*5m}e*b@-b?W)qsyS_nP&Fr-KdR=anxkrtsyV9WsG6f{zG2mT z*Zcp+V~O!?C6eLIA_9m2B7g`W0-J}xgY%1yAz;+&qX(@&n+s`*&JaNC3^_CepdkPa z0cZ$7LjW2A&=9a0hJYOz|Bw3r<_VE_B}4!bKm-thZHK^v^Gj{?|9l~!|K|&l>i=2P z|8>;=QU6E%AN7CK|55)({hwXAI+j|{4PB5FajqhjQhZsgkVTR<>h-yjS`}qQx7t?@ zf)Ex@{Dm0&;R_K!1P}p401-e0wibc=G~{?YJokM|3C1*V(^DAL;w*$1P}p4V7DOf z;Dcpb&;HB(KBan+&-)|#NmGP+Hqq=+&qh5P^=#C$QO`y_dsph&)n&0%m6cF+Ta$FP zvIwQ~xy;lA3;%K4DO&D-MsX|Q)+s`D@m19D8O7`XB>`+T{q6A!l2{o(cb;L6Yf@D; zBta~dG^pzz()A@(TN1UBR2qkOtM-3c)nVs>1vqYL{eRT|cZ&xr^i0*C-2U?T9~ zgZEqN|I>WNAJI>mBGmthc>(o*)c;ZcNBtl5f7Jg`|Mx}oqy7*38#Xs31X-bM+8czL zsu?M$O|Y)`|AGG*gFk#B0*C-2fCwN0y99v;zj)J8{}XQaKgY8LKF@_TMX3H0>jJ9( zsQ#n+kLo|F|ET_>`j6_r?$Yr|oIoV{f8uZq{_uqeAOeU0B7g`W0uM^RV4DVh@P^k8 zz(K8lPX<26)266Q1C}uYO#^5eK+^!42GBHsrU5h!1WW@pk)Fr6KI)0%Y@G|LDycvRZ#GBu_)Dy@v}-%Ey>C}Gn1N0ZE5|##P7%84_}A? zB7g`W0*C-2u&ofdKlO{YMc`MLeCmIm&rF6iMQ9NqHVCu`phW;J0%#FHivU^#&>|3O z5tyr&%aTS60BU(HjG~$0;ED~{Nd3RPu_t1QzuNzQ_4UIW_v=on(PzsQAA6D@GkhMZ z6-~S43ahCpSM06VN}?f^Zl>f?iqDOuikd_|3#tND47@+haeRh_$Ekuvq%4Q`$xrdQ z&dMVjl5R{aNpredHVP9(wVJxxtd!VE6$RMp5o|QDQ)5Ne4T0P~3%4(62Hac`p22R? z^@;!$7>g40D2o*x*8HMaT!1kZBt@L7xZ39`YVn#N-KbSm+0dQt!7U{T3X&nF_?xMU zWayGo)Rt?8AkJ%&mLl9Z zBk1*-NiNnc+chNh;(}C#&a@lchVuyASPJf5G-OqQJHK)>RTGT`=;undf$qUaF)d%3 zRFXBRXizc_*)(J8H^I1*ZS1k>{GRHiOiFbjP0`W0Jr~p^Mbd=24hKSkFbE~JD$0tW zh*gPyUR#g1>Tjja4k zVl5BYDO+7X|0^x}mRcAZH|v6Rpammt#kbeTQWtbX4=e$+QLoRL)3~_?gsdX|xxaG% zQX^)M^=H1igqaMV@zo=sP0g|H^DM>L(509i&rC5KlrqSh%WUhVnD)s`0<`|y46>-) z)I=dO!A<4i|6Is2%uSJR$xcqLNo1~01-1aIE-u8KEX2yZtlUTgguz9a?vDkBW6TBV zdL35c5(9IV0U?1gxu?z;DpRg2MY6unD0Y8y@uvD4?6{@FcMLbd!LC={4qhqN|EqT7c%Kxs|b|c!lGsF=b7y zGG}0!ugL}>)M7=J6hohAQra=*q9pMQAuF9vr{`s3p*}~X{&dm&**HM{9#E3~IW6mY zUDDI}Ot#QG&HVdvZH=1PD$L70lr>S2DmX!5>%N^bpbNEjI~AJTv-ee>gP`y4+55xT z!6Y2;g$N)5h(K>5aDTSZ@2EiM+`4U!SR?cKkS5B8$BFXYZ54=WSRkOG3e+RENK}EC z1qqD3y)9v(3beCST2z5{n2lmB1KM5%^4f{kXh?EdMmAz`UaLv{PPMVumN7mqx&?|X zp9Q<8C%4LKYRVXUOA@&3y6EvFKGu$8j4km55ud2v+X-!c13NL|hS}xUXXPJD(Io_& z$Q4-uXQiRl!RuC3#gwRbqlC@o(0dnCnV2mY6_^`HG)}Yw~ho< zj04z|KqWMSp%Dz@Ixr3Z19dhnu%o>Z%!~tYMKv{}o%!Ps+6$po0tt89+Wh~&9ZUS} z9u;`-wh#eC01-e05CKHMLE!$2jf7(dc-UtLnB=|N6M!9nG(}|xu*?i-2f&nnO!;3+ zCNBoVU@%P3HEzdEV8V`t#P&$=Sic>hz_Qt`)&GAxmiTQ)w7@rr03v`0AOeU0BG8iv z+<&Pt=xG0keA@pMpY^1|fO<}vBGmqgaRIe|)c#TXN9}+2R(DuS<^)y)*ao?3YZ=h> zX#b=zQHA8D^3&|r>i<89C4SPAf)3skB7g`W0*C-2fCzMo!2J`AA=^Cgt8aPD16+>J zd9qmZJZ*~5JV2}uXdXcG0GbETJb>nb7L`u1SRhm=Jum7ybM}%rza6r8)?gkeR@8cF zP7)#79~Q!3$OkmGsz6}3TLq-OXR^Pvs{a?Jrq^2V!p#5waV+uUPK68XhX^17hyWsh z2p|Hzh`{}mjeU;#@7WgubbZ(k(6fDj)fAojPpu26{-gSj>OZRgsQ#n+ze6_jSfBbI zz6Hcq>;KQi63_LbB!l;a2p|H803v`0^dtfgo^9;6RqY@2`8@5De7+FU6rrk3lzUXQ zQPoCO8&z#owNceZRXecp0I4ZJS75U2U_a?Q^81k(iEZoPb?0o|D*no`akObsQ;t>kNQ9A|7EeF!-^Q#`;WHM z{r~#<{!1+Joq_)!{=pX_fC%hp1n#`iNK%#M@X(QueTBku8J=UkE=$^^8=53mJ-gd- zu=y)A!fv;)6>Ex5`F_RmIpT?|swKHBx9_7aDXN31jYld7EE0#gpEQzBF3!=U-#w@FKMqi*m06YL{U1B8JSbz=QO?$Ju zyHFKx2)g{f#4~v=!+=pbq|aQP?m=dDo6MbJIcvP0{J`)J(9`^?1h)<&u+b&S+#aXmhh=#`Oh14F!`>ov1VlXWsHPBb9zHH}(hDN-PsSjF@df8}PXCK?MM7g~lfxZ_|QDcm|t zQVe~fx%c7pmvlCR}Ex5{;K?wW5no*Glu)GBiZW>HNx7(<1*D)-EI zt|8sKhSmLdR&{^Znh~DA-y*4C+vxvaiY30ZX<`vx2oXR85CKF05!mJkJor-MVOzuh zL4QD<&jdC6OoZY8)PR5*zDrtbYWS%CQ{#kA)T(k_DH5|nQ%$ylg-AXsl&IE8APzUd zS=p;i;dZWGE=x3Eh=wKRUN%i2%<7wa&PRqJpm-KW#lPxrL)%o}38cpc}>zeJvUnNi%^?%g=F+gW$ z1a!D8$~#m4{|@B;Z&(<@6CeVJ03v`0AOeWM1`vS!|3_@Afn0t@~W5kLeG0Ym^1 zKm=An;K9DeqqcVc{U_Y2{3OppRe(%LQ>5B`Hiz0hR`fiKVS`eo9z16>HdF#U%yO>C!4S1#J0pAFR%r64O;*<@7HCevPz1uD_5;j z|4tnltKLkT`u}lI{!#y5MQp>b5dlO15kLeGfej%5`v0Le`hU)oGeAuOxyW(`EQi<~Xe;1Z(*n0h+&2Fv!ug4PlhJ+gYF(QBnAOeU0B7g|AN8rIw~%eE|&sXaGP102%<$0DuMnGyp7$N)fiKHa8}Q9ajP_{4NIo z6xglS|F6Xo*V+p$_$?xU2p|H803v`0tP6n$4>v{}z5i*S-aqLp76^(tX^K$qCuRlI z`%&*ly&v^{)caBIN4yl~kM~DC-fCwN0hyWt6 zDgqCN8;?0AfTsc`fLtM@DMAwfu`r+s08IdB0zeZ0ngGxQfF^*=GXa=eqtXHZTd)8B zG?w`3s=^C)Km-s0L;w*$1Q3B9N8tYP#$nsi@T+fl%?ey5P-T!dMQUlt70}XvmIkym zprrvV4QOdVOM~Ci0IOq%JBvn8|L;e!#E*JhpuyWi1P}p401-e0b~ys~Uv4~Z>-L`= z_UZOnKI@Aj;7C(+x;-@=pl*-4J?i$T+oNuex;^Ule%)S^mNeOrn0M1n-Th>G;)|ol Rnd2NYr%B?qt*Za`zX9Bz_-g + + Embedded Cockpit + + + + + + + + + + \ No newline at end of file diff --git a/cockpit/nginxproxymanager/manifest.json b/cockpit/nginxproxymanager/manifest.json new file mode 100644 index 00000000..a2dc1b8a --- /dev/null +++ b/cockpit/nginxproxymanager/manifest.json @@ -0,0 +1,27 @@ +{ + "version": "215", + "requires": { + "cockpit": "122" + }, + + "tools": { + "index": { + "order": "10", + "label": "域名配置", + "path": "index.html", + "keywords": [ + { + "matches": ["plugin", "apps", "addon", "add-on", "install", "extension"] + } + ] + } + }, + + "content-security-policy": "default-src 'self' 'unsafe-inline' 'unsafe-eval' *;style-src 'self' 'unsafe-inline' 'unsafe-eval' *;", + + "config": { + "appstream_config_packages": [ "appstream" ], + "appstream_data_packages": [] + } + +} diff --git a/cockpit/nginxproxymanager/nginx.conf b/cockpit/nginxproxymanager/nginx.conf new file mode 100644 index 00000000..cbc24b54 --- /dev/null +++ b/cockpit/nginxproxymanager/nginx.conf @@ -0,0 +1,156 @@ +# ------------------------------------------------------------ +# 47.92.175.174 +# ------------------------------------------------------------ + + +server { + set $forward_scheme http; + set $server "172.17.0.1"; + set $port 9090; + + listen 80; +listen [::]:80; + + + server_name 47.92.175.174; + + + + + + + + + + + + + access_log /data/logs/proxy-host-3_access.log proxy; + error_log /data/logs/proxy-host-3_error.log warn; + + + + location /nginx/ { + proxy_set_header Host $host; + proxy_set_header X-Forwarded-Scheme $scheme; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://nginxproxymanager:81; + + + + + + + + + + + + + + # Required for web sockets to function + proxy_http_version 1.1; + proxy_buffering off; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # Pass ETag header from Cockpit to clients. + # See: https://github.com/cockpit-project/cockpit/issues/5239 + gzip off; + } + + location / { + proxy_set_header Host $host; + proxy_set_header X-Forwarded-Scheme $scheme; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://172.17.0.1:9090; + + + + + + + + + + + + + + # Required for web sockets to function + proxy_http_version 1.1; + proxy_buffering off; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # Pass ETag header from Cockpit to clients. + # See: https://github.com/cockpit-project/cockpit/issues/5239 + gzip off; + } + + location /panel/ { + proxy_set_header Host $host; + proxy_set_header X-Forwarded-Scheme $scheme; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://172.17.0.1:9090; + + + + + + + + + + + + + + # Required for web sockets to function + proxy_http_version 1.1; + proxy_buffering off; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # Pass ETag header from Cockpit to clients. + # See: https://github.com/cockpit-project/cockpit/issues/5239 + gzip off; + } + + location /phpmyadmin/ { + proxy_set_header Host $host; + proxy_set_header X-Forwarded-Scheme $scheme; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Real-IP $remote_addr; + proxy_pass http://phpmyadmin:80; + + + + + + + + + + + + + + rewrite ^/phpmyadmin(/.*)$ $1 break; + } + + + + + + # Custom + include /data/nginx/custom/server_proxy[.]conf; +} + diff --git a/cockpit/phpmyadmin/index.html b/cockpit/phpmyadmin/index.html new file mode 100644 index 00000000..4be9ce68 --- /dev/null +++ b/cockpit/phpmyadmin/index.html @@ -0,0 +1,13 @@ + + + Embedded Cockpit + + + + + + + + + + \ No newline at end of file diff --git a/cockpit/phpmyadmin/manifest.json b/cockpit/phpmyadmin/manifest.json new file mode 100644 index 00000000..ef1f42e6 --- /dev/null +++ b/cockpit/phpmyadmin/manifest.json @@ -0,0 +1,27 @@ +{ + "version": "215", + "requires": { + "cockpit": "122" + }, + + "tools": { + "index": { + "order": "11", + "label": "phpMyAdmin", + "path": "index.html", + "keywords": [ + { + "matches": ["plugin", "apps", "addon", "add-on", "install", "extension"] + } + ] + } + }, + + "content-security-policy": "default-src 'self' 'unsafe-inline' 'unsafe-eval' *;style-src 'self' 'unsafe-inline' 'unsafe-eval' *;", + + "config": { + "appstream_config_packages": [ "appstream" ], + "appstream_data_packages": [] + } + +}