diff --git a/hideout-worker/build.gradle.kts b/hideout-worker/build.gradle.kts deleted file mode 100644 index db74eb66..00000000 --- a/hideout-worker/build.gradle.kts +++ /dev/null @@ -1,68 +0,0 @@ -plugins { - alias(libs.plugins.kotlin.jvm) - alias(libs.plugins.kotlin.spring) - alias(libs.plugins.spring.boot) -} - -apply { - plugin("io.spring.dependency-management") -} - -group = "dev.usbharu" -version = "1.0-SNAPSHOT" - -repositories { - mavenCentral() - maven { - url = uri("https://git.usbharu.dev/api/packages/usbharu/maven") - } - maven { - name = "GitHubPackages" - url = uri("https://maven.pkg.github.com/usbharu/http-signature") - credentials { - - username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME") - password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN") - } - } - maven { - name = "GitHubPackages2" - url = uri("https://maven.pkg.github.com/multim-dev/emoji-kt") - credentials { - - username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME") - password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN") - } - } -} - -dependencies { - testImplementation(kotlin("test")) - implementation("dev.usbharu:owl-consumer:0.0.1") - implementation("dev.usbharu:owl-common:0.0.1") - implementation("dev.usbharu:owl-common-serialize-jackson:0.0.1") - implementation("dev.usbharu:hideout-core:0.0.1") - implementation("dev.usbharu:http-signature:1.0.0") - implementation("org.springframework.boot:spring-boot-starter") - implementation("org.jetbrains.kotlin:kotlin-reflect") - implementation("org.springframework.boot:spring-boot-starter-log4j2") - implementation(libs.jackson.databind) - implementation(libs.jackson.module.kotlin) - implementation(libs.bundles.coroutines) - - testImplementation("org.springframework.boot:spring-boot-starter-test") -} - -configurations { - all { - exclude("org.springframework.boot", "spring-boot-starter-logging") - exclude("ch.qos.logback", "logback-classic") - } -} - -tasks.test { - useJUnitPlatform() -} -kotlin { - jvmToolchain(21) -} \ No newline at end of file diff --git a/hideout-worker/gradle/wrapper/gradle-wrapper.jar b/hideout-worker/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e6441136..00000000 Binary files a/hideout-worker/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/hideout-worker/gradle/wrapper/gradle-wrapper.properties b/hideout-worker/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index a4413138..00000000 --- a/hideout-worker/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/hideout-worker/gradlew b/hideout-worker/gradlew deleted file mode 100644 index b740cf13..00000000 --- a/hideout-worker/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# 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 -# -# https://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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/hideout-worker/gradlew.bat b/hideout-worker/gradlew.bat deleted file mode 100644 index 7101f8e4..00000000 --- a/hideout-worker/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/hideout-worker/settings.gradle.kts b/hideout-worker/settings.gradle.kts deleted file mode 100644 index cf826ffd..00000000 --- a/hideout-worker/settings.gradle.kts +++ /dev/null @@ -1,18 +0,0 @@ -plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" -} -rootProject.name = "hideout-worker" - -dependencyResolutionManagement { - repositories { - mavenCentral() - } - - versionCatalogs { - create("libs") { - from(files("../libs.versions.toml")) - } - } -} - -includeBuild("../hideout-core") \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/HideoutWorker.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/HideoutWorker.kt deleted file mode 100644 index 3ef74a43..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/HideoutWorker.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout - -import org.springframework.boot.autoconfigure.SpringBootApplication -import org.springframework.boot.context.properties.ConfigurationPropertiesScan -import org.springframework.boot.runApplication - -@SpringBootApplication -@ConfigurationPropertiesScan -class HideoutWorker - -fun main(args: Array) { - runApplication(*args) -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/SpringTaskRunnerLoader.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/SpringTaskRunnerLoader.kt deleted file mode 100644 index 6ff0b4a3..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/SpringTaskRunnerLoader.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout - -import dev.usbharu.owl.consumer.TaskRunner -import dev.usbharu.owl.consumer.TaskRunnerLoader -import org.springframework.stereotype.Component - -@Component -class SpringTaskRunnerLoader(private val taskRunners: List) : TaskRunnerLoader { - override fun load(): Map = taskRunners.associateBy { it.name } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/WorkerRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/WorkerRunner.kt deleted file mode 100644 index 47f0b98e..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/WorkerRunner.kt +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout - -import com.fasterxml.jackson.databind.ObjectMapper -import dev.usbharu.hideout.worker.SpringConsumerConfig -import dev.usbharu.owl.common.property.* -import dev.usbharu.owl.consumer.StandaloneConsumer -import dev.usbharu.owl.consumer.StandaloneConsumerConfig -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import org.springframework.beans.factory.annotation.Qualifier -import org.springframework.boot.ApplicationArguments -import org.springframework.boot.ApplicationRunner -import org.springframework.stereotype.Component - -@Component -class WorkerRunner( - private val springTaskRunnerLoader: SpringTaskRunnerLoader, - @Qualifier("activitypub") private val objectMapper: ObjectMapper, - private val springCConsumerConfig: SpringConsumerConfig, -) : ApplicationRunner { - override fun run(args: ApplicationArguments?) { - GlobalScope.launch(Dispatchers.Default) { - val consumer = StandaloneConsumer( - taskRunnerLoader = springTaskRunnerLoader, - propertySerializerFactory = CustomPropertySerializerFactory( - setOf( - IntegerPropertySerializer(), - StringPropertyValueSerializer(), - DoublePropertySerializer(), - BooleanPropertySerializer(), - LongPropertySerializer(), - FloatPropertySerializer(), - ObjectPropertySerializer(objectMapper), - ) - ), - config = StandaloneConsumerConfig( - springCConsumerConfig.address, - springCConsumerConfig.port, - springCConsumerConfig.name, - springCConsumerConfig.hostname, - springCConsumerConfig.concurrency - ) - ) - consumer.init() - consumer.start() - } - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverAcceptTaskRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverAcceptTaskRunner.kt deleted file mode 100644 index 71817b59..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverAcceptTaskRunner.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import dev.usbharu.hideout.activitypub.service.common.APRequestService -import dev.usbharu.hideout.core.application.shared.Transaction -import dev.usbharu.hideout.core.external.job.DeliverAcceptTask -import dev.usbharu.hideout.core.external.job.DeliverAcceptTaskDef -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.springframework.stereotype.Component - -@Component -class DeliverAcceptTaskRunner( - private val apRequestService: APRequestService, - private val actorRepository: ActorRepository, - private val transaction: Transaction, -) : AbstractTaskRunner(DeliverAcceptTaskDef) { - override suspend fun typedRun(typedParam: DeliverAcceptTask, taskRequest: TaskRequest): TaskResult { - - transaction.transaction { - apRequestService.apPost( - typedParam.inbox, - typedParam.accept, - actorRepository.findById(typedParam.signer) - ) - } - return TaskResult.ok() - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverCreateTaskRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverCreateTaskRunner.kt deleted file mode 100644 index 0f71f98c..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverCreateTaskRunner.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import dev.usbharu.hideout.activitypub.service.common.APRequestService -import dev.usbharu.hideout.core.application.shared.Transaction -import dev.usbharu.hideout.core.external.job.DeliverCreateTask -import dev.usbharu.hideout.core.external.job.DeliverCreateTaskDef -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.springframework.stereotype.Component - -@Component -class DeliverCreateTaskRunner( - private val transaction: Transaction, - private val apRequestService: APRequestService, - private val actorRepository: ActorRepository, -) : AbstractTaskRunner(DeliverCreateTaskDef) { - override suspend fun typedRun(typedParam: DeliverCreateTask, taskRequest: TaskRequest): TaskResult { - transaction.transaction { - val signer = actorRepository.findByUrl(typedParam.actor) - - apRequestService.apPost(typedParam.inbox, typedParam.create, signer) - } - - return TaskResult.ok() - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverDeleteTaskRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverDeleteTaskRunner.kt deleted file mode 100644 index 9ce3dad7..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverDeleteTaskRunner.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import dev.usbharu.hideout.activitypub.service.common.APRequestService -import dev.usbharu.hideout.core.external.job.DeliverDeleteTask -import dev.usbharu.hideout.core.external.job.DeliverDeleteTaskDef -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.springframework.stereotype.Component - -@Component -class DeliverDeleteTaskRunner( - private val apRequestService: APRequestService, - private val actorRepository: ActorRepository, -) : - AbstractTaskRunner(DeliverDeleteTaskDef) { - override suspend fun typedRun(typedParam: DeliverDeleteTask, taskRequest: TaskRequest): TaskResult { - apRequestService.apPost(typedParam.inbox, typedParam.delete, actorRepository.findById(typedParam.signer)) - return TaskResult.ok() - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverReactionTaskRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverReactionTaskRunner.kt deleted file mode 100644 index 4867056a..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverReactionTaskRunner.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import dev.usbharu.hideout.activitypub.service.common.APRequestService -import dev.usbharu.hideout.core.external.job.DeliverReactionTask -import dev.usbharu.hideout.core.external.job.DeliverReactionTaskDef -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.springframework.stereotype.Component - -@Component -class DeliverReactionTaskRunner( - private val apRequestService: APRequestService, - private val actorRepository: ActorRepository, -) : AbstractTaskRunner(DeliverReactionTaskDef) { - override suspend fun typedRun(typedParam: DeliverReactionTask, taskRequest: TaskRequest): TaskResult { - val signer = actorRepository.findByUrl(typedParam.actor) - - apRequestService.apPost( - typedParam.inbox, - typedParam.like, - signer - ) - - return TaskResult.ok() - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverRejectTaskRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverRejectTaskRunner.kt deleted file mode 100644 index b84a5d7a..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverRejectTaskRunner.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import dev.usbharu.hideout.activitypub.service.common.APRequestService -import dev.usbharu.hideout.core.application.shared.Transaction -import dev.usbharu.hideout.core.external.job.DeliverRejectTask -import dev.usbharu.hideout.core.external.job.DeliverRejectTaskDef -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.springframework.stereotype.Component - -@Component -class DeliverRejectTaskRunner( - private val transaction: Transaction, - private val apRequestService: APRequestService, - private val actorRepository: ActorRepository, -) : AbstractTaskRunner(DeliverRejectTaskDef) { - override suspend fun typedRun(typedParam: DeliverRejectTask, taskRequest: TaskRequest): TaskResult { - val signer = transaction.transaction { - actorRepository.findById(typedParam.signer) - } - apRequestService.apPost(typedParam.inbox, typedParam.reject, signer) - - return TaskResult.ok() - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverUndoTaskRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverUndoTaskRunner.kt deleted file mode 100644 index 4c08786f..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/DeliverUndoTaskRunner.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import dev.usbharu.hideout.activitypub.service.common.APRequestService -import dev.usbharu.hideout.core.application.shared.Transaction -import dev.usbharu.hideout.core.external.job.DeliverUndoTask -import dev.usbharu.hideout.core.external.job.DeliverUndoTaskDef -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.springframework.stereotype.Component - -@Component -class DeliverUndoTaskRunner( - private val transaction: Transaction, - private val apRequestService: APRequestService, - private val actorRepository: ActorRepository, -) : AbstractTaskRunner(DeliverUndoTaskDef) { - override suspend fun typedRun(typedParam: DeliverUndoTask, taskRequest: TaskRequest): TaskResult { - val signer = transaction.transaction { - actorRepository.findById(typedParam.signer) - } - apRequestService.apPost(typedParam.inbox, typedParam.undo, signer) - - return TaskResult.ok() - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/InboxTaskRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/InboxTaskRunner.kt deleted file mode 100644 index ae4af395..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/InboxTaskRunner.kt +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import com.fasterxml.jackson.core.JsonParseException -import com.fasterxml.jackson.databind.ObjectMapper -import dev.usbharu.hideout.activitypub.service.common.ActivityPubProcessContext -import dev.usbharu.hideout.activitypub.service.common.ActivityPubProcessor -import dev.usbharu.hideout.activitypub.service.objects.user.APUserService -import dev.usbharu.hideout.core.application.shared.Transaction -import dev.usbharu.hideout.core.external.job.InboxTask -import dev.usbharu.hideout.core.external.job.InboxTaskDef -import dev.usbharu.hideout.util.RsaUtil -import dev.usbharu.httpsignature.common.HttpHeaders -import dev.usbharu.httpsignature.common.HttpMethod -import dev.usbharu.httpsignature.common.HttpRequest -import dev.usbharu.httpsignature.common.PublicKey -import dev.usbharu.httpsignature.verify.HttpSignatureVerifier -import dev.usbharu.httpsignature.verify.Signature -import dev.usbharu.httpsignature.verify.SignatureHeaderParser -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.slf4j.LoggerFactory -import org.springframework.beans.factory.annotation.Value -import org.springframework.stereotype.Component - -@Component -class InboxTaskRunner( - private val activityPubProcessorList: List>, - private val signatureHeaderParser: SignatureHeaderParser, - private val signatureVerifier: HttpSignatureVerifier, - private val apUserService: APUserService, - private val objectMapper: ObjectMapper, - private val transaction: Transaction, -) : AbstractTaskRunner(InboxTaskDef) { - - @Value("\${hideout.debug.trace-inbox:false}") - private var traceJson: Boolean = false - - override suspend fun typedRun(typedParam: InboxTask, taskRequest: TaskRequest): TaskResult { - val jsonNode = objectMapper.readTree(typedParam.json) - - logger.info("START Process inbox. type: {}", typedParam.type) - if (traceJson) { - logger.trace("type: {}\njson: \n{}", typedParam.type, jsonNode.toPrettyString()) - } - - val map = typedParam.headers - - val httpRequest = typedParam.httpRequest.copy(headers = HttpHeaders(map)) - - logger.trace("Request: {}\nheaders: {}", httpRequest, map) - - val signature = parseSignatureHeader(httpRequest.headers) - - logger.debug("Has signature? {}", signature != null) - - // todo 不正なactorを取得してしまわないようにする - val verify = - signature?.let { - verifyHttpSignature( - httpRequest, - it, - transaction, - jsonNode.get("actor")?.asText() ?: signature.keyId - ) - } - ?: false - - logger.debug("Is verifying success? {}", verify) - - val activityPubProcessor = - activityPubProcessorList.firstOrNull { it.isSupported(typedParam.type) } as? ActivityPubProcessor - - if (activityPubProcessor == null) { - logger.warn("ActivityType {} is not support.", typedParam.type) - throw IllegalStateException("ActivityPubProcessor not found. type: ${typedParam.type}") - } - - val value = try { - objectMapper.treeToValue(jsonNode, activityPubProcessor.type()) - } catch (e: JsonParseException) { - logger.warn("Invalid JSON\n\n{}\n\n", jsonNode.toPrettyString()) - throw e - } - activityPubProcessor.process(ActivityPubProcessContext(value, jsonNode, httpRequest, signature, verify)) - - logger.info("SUCCESS Process inbox. type: {}", typedParam.type) - - - return TaskResult.ok() - } - - private suspend fun verifyHttpSignature( - httpRequest: HttpRequest, - signature: Signature, - transaction: Transaction, - actor: String, - ): Boolean { - val requiredHeaders = when (httpRequest.method) { - HttpMethod.GET -> getRequiredHeaders - HttpMethod.POST -> postRequiredHeaders - } - if (signature.headers.containsAll(requiredHeaders).not()) { - logger.warn("FAILED Invalid signature. require: {}", requiredHeaders) - return false - } - - val user = transaction.transaction { - apUserService.fetchPersonWithEntity(actor).second - } - - @Suppress("TooGenericExceptionCaught") - val verify = try { - signatureVerifier.verify( - httpRequest, - PublicKey(RsaUtil.decodeRsaPublicKeyPem(user.publicKey), signature.keyId) - ) - } catch (e: Exception) { - logger.warn("FAILED Verify Http Signature", e) - return false - } - - return verify.success - } - - @Suppress("TooGenericExceptionCaught") - private fun parseSignatureHeader(httpHeaders: HttpHeaders): Signature? { - return try { - println("Signature Header =" + httpHeaders.get("Signature").single()) - signatureHeaderParser.parse(httpHeaders) - } catch (e: RuntimeException) { - logger.trace("FAILED parse signature header", e) - null - } - } - - companion object { - private val logger = LoggerFactory.getLogger(InboxTaskRunner::class.java) - private val postRequiredHeaders = listOf("(request-target)", "date", "host", "digest") - private val getRequiredHeaders = listOf("(request-target)", "date", "host") - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/ReceiveFollowTaskRunner.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/ReceiveFollowTaskRunner.kt deleted file mode 100644 index 72916733..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/ReceiveFollowTaskRunner.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import dev.usbharu.hideout.activitypub.service.objects.user.APUserService -import dev.usbharu.hideout.core.application.shared.Transaction -import dev.usbharu.hideout.core.domain.model.actor.ActorRepository -import dev.usbharu.hideout.core.external.job.ReceiveFollowTask -import dev.usbharu.hideout.core.external.job.ReceiveFollowTaskDef -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.springframework.stereotype.Component - -@Component -class ReceiveFollowTaskRunner( - private val transaction: Transaction, - private val apUserService: APUserService, - private val actorRepository: ActorRepository, - private val relationshipService: RelationshipService, -) : AbstractTaskRunner(ReceiveFollowTaskDef) { - override suspend fun typedRun(typedParam: ReceiveFollowTask, taskRequest: TaskRequest): TaskResult { - - transaction.transaction { - - apUserService.fetchPerson(typedParam.actor, typedParam.targetActor) - val targetEntity = actorRepository.findByUrl(typedParam.targetActor) ?: throw UserNotFoundException.withUrl( - typedParam.targetActor - ) - val followActorEntity = actorRepository.findByUrl(typedParam.follow.actor) - ?: throw UserNotFoundException.withUrl(typedParam.follow.actor) - relationshipService.followRequest(followActorEntity.id, targetEntity.id) - } - - return TaskResult.ok() - } -} \ No newline at end of file diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/SpringConsumerConfig.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/SpringConsumerConfig.kt deleted file mode 100644 index 2fa99d6b..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/SpringConsumerConfig.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import org.springframework.boot.context.properties.ConfigurationProperties - -@ConfigurationProperties("hideout.worker") -data class SpringConsumerConfig( - val address: String = "localhost", - val port: Int = 50051, - val name: String = "hideout-worker", - val hostname: String = "localhost", - val concurrency: Int = 10, -) diff --git a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/UpdateActorWorker.kt b/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/UpdateActorWorker.kt deleted file mode 100644 index e7de84b0..00000000 --- a/hideout-worker/src/main/kotlin/dev/usbharu/hideout/worker/UpdateActorWorker.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2024 usbharu - * - * 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. - */ - -package dev.usbharu.hideout.worker - -import dev.usbharu.hideout.activitypub.service.objects.user.APUserService -import dev.usbharu.hideout.core.application.shared.Transaction -import dev.usbharu.hideout.core.external.job.UpdateActorTask -import dev.usbharu.hideout.core.external.job.UpdateActorTaskDef -import dev.usbharu.owl.consumer.AbstractTaskRunner -import dev.usbharu.owl.consumer.TaskRequest -import dev.usbharu.owl.consumer.TaskResult -import org.springframework.stereotype.Component - -@Component -class UpdateActorWorker( - private val transaction: Transaction, - private val apUserService: APUserService, - private val postService: PostService, -) : AbstractTaskRunner(UpdateActorTaskDef) { - override suspend fun typedRun(typedParam: UpdateActorTask, taskRequest: TaskRequest): TaskResult { - transaction.transaction { - apUserService.fetchPerson(typedParam.apId, idOverride = typedParam.id) - - postService.restoreByRemoteActor(typedParam.id) - } - - return TaskResult.ok() - } -} \ No newline at end of file