Browse Source

Merge pull request #5031 from pixelfed/staging

Staging
daniel 1 year ago
parent
commit
142db2c41e

+ 8 - 0
.env.docker

@@ -1202,6 +1202,14 @@ DOCKER_DB_HOST_PORT="${DB_PORT:?error}"
 # @dottie/validate required,number
 DOCKER_DB_CONTAINER_PORT="${DB_PORT:?error}"
 
+# root password for the database. By default uses DB_PASSWORD
+# but can be changed in situations where you are migrating
+# to the included docker-compose and have a different password
+# set already
+#
+# @dottie/validate required
+DOCKER_DB_ROOT_PASSWORD="${DB_PASSWORD:?error}"
+
 # How often Docker health check should run for [db] service
 # @dottie/validate required
 DOCKER_DB_HEALTHCHECK_INTERVAL="${DOCKER_ALL_DEFAULT_HEALTHCHECK_INTERVAL:?error}"

+ 2 - 2
app/Http/Kernel.php

@@ -14,12 +14,12 @@ class Kernel extends HttpKernel
      * @var array
      */
     protected $middleware = [
+        \Illuminate\Http\Middleware\HandleCors::class,
         \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
         \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
+        \App\Http\Middleware\TrustProxies::class,
         \App\Http\Middleware\TrimStrings::class,
         \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
-        \App\Http\Middleware\TrustProxies::class,
-        \Illuminate\Http\Middleware\HandleCors::class,
     ];
 
     /**

+ 6 - 3
config/cors.php

@@ -22,7 +22,9 @@ return [
      * Example: ['api/*']
      */
     'paths' => [
-        '.well-known/*'
+        '.well-known/*',
+        'api/*',
+        'oauth/*'
     ],
 
     /*
@@ -48,7 +50,8 @@ return [
     /*
      * Sets the Access-Control-Expose-Headers response header with these headers.
      */
-    'exposed_headers' => [],
+    // TODO: Add support for rate-limit related headers
+    'exposed_headers' => ['Link'],
 
     /*
      * Sets the Access-Control-Max-Age response header when > 0.
@@ -59,4 +62,4 @@ return [
      * Sets the Access-Control-Allow-Credentials header.
      */
     'supports_credentials' => false,
-];
+];

+ 1 - 1
docker-compose.migrate.yml

@@ -3,7 +3,7 @@ version: "3"
 
 services:
   migrate:
-    image: "secoresearch/rsync"
+    image: "servercontainers/rsync"
     entrypoint: ""
     working_dir: /migrate
     command: 'bash -c "exit 1"'

+ 2 - 2
docker-compose.yml

@@ -166,12 +166,12 @@ services:
     environment:
       TZ: "${TZ:?error}"
       # MySQL (Oracle) - "Environment Variables" at https://hub.docker.com/_/mysql
-      MYSQL_ROOT_PASSWORD: "${DB_PASSWORD:?error}"
+      MYSQL_ROOT_PASSWORD: "${DOCKER_DB_ROOT_PASSWORD:?error}"
       MYSQL_USER: "${DB_USERNAME:?error}"
       MYSQL_PASSWORD: "${DB_PASSWORD:?error}"
       MYSQL_DATABASE: "${DB_DATABASE:?error}"
       # MySQL (MariaDB) - "Start a mariadb server instance with user, password and database" at https://hub.docker.com/_/mariadb
-      MARIADB_ROOT_PASSWORD: "${DB_PASSWORD:?error}"
+      MARIADB_ROOT_PASSWORD: "${DOCKER_DB_ROOT_PASSWORD:?error}"
       MARIADB_USER: "${DB_USERNAME:?error}"
       MARIADB_PASSWORD: "${DB_PASSWORD:?error}"
       MARIADB_DATABASE: "${DB_DATABASE:?error}"

+ 126 - 0
docker/check-requirements

@@ -0,0 +1,126 @@
+#!/bin/bash
+
+set -e -o errexit -o nounset -o pipefail
+
+#
+# Colors
+#
+
+declare -r RED="\e[31m"
+declare -r GREEN="\e[32m"
+declare -r BLUE="\e[34m"
+declare -r NO_COLOR="\e[0m"
+
+#
+# Helper functions
+#
+
+function highlight() {
+    local reset="${2:-$NO_COLOR}"
+    echo "${BLUE}$1${reset}"
+}
+
+function action_start() {
+    echo -en "⚙️ $1: "
+}
+
+function action_ok() {
+    echo -e "\n\t✅ ${GREEN}${*}${NO_COLOR}\n"
+}
+
+function action_error() {
+    echo -e "\n\t❌ ${RED}${*}${NO_COLOR}" >&2
+}
+
+function action_error_exit() {
+    action_error "${*}\n\n${RED}Aborting!${NO_COLOR}"
+
+    exit 1
+}
+
+#
+# Configuration
+#
+
+declare -r min_docker_compose_version_arr=(2 17)
+min_docker_compose_version=$(
+    IFS=.
+    echo "${min_docker_compose_version[*]}"
+)
+
+#
+# Help text
+#
+
+DOCKER_HELP="
+
+\tWe recommend installing Docker (and Compose) directly from Docker.com instead of your Operation System package registry.
+\tPlease see $(highlight "https://docs.docker.com/engine/install/")${RED} for information on how to install Docker on your system.
+
+\tA convinience script is provided by Docker to automate the installation that should work on all supported platforms:
+
+\t\t ${GREEN}\$${BLUE} curl -fsSL https://get.docker.com -o get-docker.sh
+\t\t ${GREEN}\$${BLUE} sudo sh ./get-docker.sh
+${RED}
+\tPlease see $(highlight "https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script")${RED} for more information
+
+\tAlternatively, you can update *JUST* the Compose plugin by following the guide here:
+\t$(highlight "https://docs.docker.com/compose/install/linux/#install-the-plugin-manually")${RED}
+
+\tLearn more about Docker compose release history here:
+\t$(highlight "https://docs.docker.com/compose/release-notes/")${RED}${NO_COLOR}"
+declare -r DOCKER_HELP
+
+#
+# System checks
+#
+
+echo -e "👋 ${GREEN}Hello!"
+echo -e ""
+echo -e "This script will check your system for the minimum requirements outlined in the Pixelfed Docker install guide"
+echo -e "You can find the guide here ${BLUE}https://jippi.github.io/pixelfed-docs-next/pr-preview/pr-1/running-pixelfed/docker/prerequisites.html#software${GREEN}."
+echo -e "${NO_COLOR}"
+
+# git installed?
+action_start "Checking if [$(highlight "git")] command is available"
+command -v git >/dev/null 2>&1 || {
+    action_error_exit "Pixelfed require the 'git' command, but it's not installed"
+}
+action_ok "git is installed"
+
+# docker installed?
+action_start "Checking if [$(highlight "docker")] command is available"
+command -v docker >/dev/null 2>&1 || {
+    action_error_exit "Pixelfed require the 'docker' command, but it's not installed. ${DOCKER_HELP}"
+}
+action_ok "docker is installed"
+
+# docker compose installed?
+action_start "Checking if [$(highlight "docker compose")] command is available"
+docker compose >/dev/null 2>&1 || {
+    action_error_exit "Pixelfed require the 'docker compose' command, but it's not installed. ${DOCKER_HELP}"
+}
+action_ok "docker compose is installed"
+
+# docker compose version is acceptable?
+compose_version=$(docker compose version --short)
+
+declare -a compose_version_arr
+IFS="." read -r -a compose_version_arr <<<"$compose_version"
+
+## major version
+action_start "Checking if [$(highlight "docker compose version")] major version (${min_docker_compose_version_arr[0]}) is acceptable"
+[[ ${compose_version_arr[0]} -eq ${min_docker_compose_version_arr[0]} ]] || {
+    action_error_exit "Pixelfed require minimum Docker Compose major version ${min_docker_compose_version_arr[0]}.x.x - found ${compose_version}.${DOCKER_HELP}"
+}
+action_ok "You're using major version ${compose_version_arr[0]}"
+
+## minor version
+action_start "Checking if [$(highlight "docker compose version")] minor version (${min_docker_compose_version_arr[1]}) is acceptable"
+[[ ${compose_version_arr[1]} -ge ${min_docker_compose_version_arr[1]} ]] || {
+    action_error_exit "Pixelfed require minimum Docker Compose minor version ${min_docker_compose_version_arr[0]}.${min_docker_compose_version_arr[1]} - found ${compose_version}.${DOCKER_HELP}"
+}
+action_ok "You're using minor version ${compose_version_arr[1]}"
+
+# Yay, everything is fine
+echo -e "🎉 ${GREEN}All checks passed, you should be ready to run Pixelfed on this server!${NO_COLOR}"

+ 9 - 15
resources/views/settings/relationships/home.blade.php

@@ -6,18 +6,14 @@
 	<h3 class="font-weight-bold">Relationships</h3>
 </div>
 <hr>
-<ul class="nav nav-pills">
-	<li class="nav-item">
-		<a class="nav-link font-weight-bold {{!request()->has('mode') || $mode == 'followers' ? 'active' : ''}}" href="?mode=followers&page=1">Followers</a>
-	</li>
-	<li class="nav-item">
-		<a class="nav-link font-weight-bold {{$mode == 'following' ? 'active' : ''}}" href="?mode=following&page=1">Following</a>
-	</li>
-	<li class="nav-item">
-		<a class="nav-link font-weight-bold {{$mode == 'hashtags' ? 'active' : ''}}" href="?mode=hashtags&page=1">Hashtags</a>
-	</li>
-</ul>
-<hr>
+<div class="form-group pb-1">
+    <p>
+        <a class="btn py-0 btn-link {{!request()->has('mode') || $mode == 'followers' ? 'font-weight-bold' : 'text-muted'}}" href="?mode=followers&page=1">Followers</a>
+        <a class="btn btn-link py-0  {{$mode == 'following' ? 'font-weight-bold' : 'text-muted'}}" href="?mode=following&page=1">Following</a>
+        <a class="btn btn-link py-0 {{$mode == 'hashtags' ? 'font-weight-bold' : 'text-muted'}}" href="?mode=hashtags&page=1">Hashtags</a>
+    </p>
+</div>
+
 @if(empty($data))
 <p class="text-center lead pt-5 mt-5">You are not {{$mode == 'hashtags' ? 'following any hashtags.' : ($mode == 'following' ? 'following anyone.' : 'followed by anyone.')}}</p>
 @else
@@ -149,9 +145,7 @@
 				break;
 
 				case 'unfollowhashtag':
-				axios.post('/api/local/discover/tag/subscribe', {
-					name: id
-				}).then(res => {
+				axios.post('/api/v1/tags/' + id + '/unfollow').then(res => {
 					swal(
 						'Unfollow Successful',
 						'You have successfully unfollowed that hashtag',