mirror of
https://github.com/YuzuZensai/Minikura.git
synced 2026-09-13 10:49:21 +00:00
🐛 fix: harden backend authorization and sync
This commit is contained in:
@@ -42,7 +42,7 @@ class Main @Inject constructor(private val logger: Logger, private val server: P
|
||||
private val client = OkHttpClient()
|
||||
private val apiKey: String = System.getenv("MINIKURA_API_KEY") ?: ""
|
||||
private val apiUrl: String = System.getenv("MINIKURA_API_URL") ?: "http://localhost:3000/api"
|
||||
private val websocketUrl: String = System.getenv("MINIKURA_WEBSOCKET_URL") ?: "ws://localhost:3000/api/servers/ws?apiKey=$apiKey"
|
||||
private val websocketUrl: String = System.getenv("MINIKURA_WEBSOCKET_URL") ?: "ws://localhost:3000/api/servers/ws"
|
||||
private var acceptingTransfers = AtomicBoolean(false)
|
||||
private val redisBungeeApi = RedisBungeeAPI.getRedisBungeeApi()
|
||||
|
||||
@@ -55,7 +55,7 @@ class Main @Inject constructor(private val logger: Logger, private val server: P
|
||||
ProxyTransferUtils.logger = logger
|
||||
ProxyTransferUtils.acceptingTransfers = acceptingTransfers
|
||||
|
||||
val client = createWebSocketClient(this, logger, server, websocketUrl)
|
||||
val client = createWebSocketClient(this, logger, server, websocketUrl, apiKey)
|
||||
client.connect()
|
||||
|
||||
val commandManager: CommandManager = server.commandManager
|
||||
@@ -231,7 +231,7 @@ class Main @Inject constructor(private val logger: Logger, private val server: P
|
||||
servers.clear()
|
||||
|
||||
for (data in serversData) {
|
||||
val serverInfo = ServerInfo(data.id, InetSocketAddress("localhost", data.listen_port))
|
||||
val serverInfo = ServerInfo(data.id, InetSocketAddress(data.connection_address, data.listen_port))
|
||||
val registeredServer = server.createRawRegisteredServer(serverInfo)
|
||||
servers[data.id] = registeredServer
|
||||
this.server.registerServer(registeredServer.serverInfo)
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ import java.net.URI
|
||||
import java.time.Duration
|
||||
import com.google.gson.JsonParser
|
||||
|
||||
class MinikuraWebSocketClient(private val plugin: Main, private val logger: Logger, private val server: ProxyServer, serverUri: URI?) : WebSocketClient(serverUri) {
|
||||
class MinikuraWebSocketClient(private val plugin: Main, private val logger: Logger, private val server: ProxyServer, serverUri: URI?, headers: Map<String, String>) : WebSocketClient(serverUri, headers) {
|
||||
|
||||
override fun onOpen(handshakedata: ServerHandshake) {
|
||||
logger.info("Connected to WebSocket server at: ${uri}")
|
||||
@@ -100,4 +100,4 @@ class MinikuraWebSocketClient(private val plugin: Main, private val logger: Logg
|
||||
logger.error("Failed to schedule refresh command", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -8,9 +8,10 @@ data class ServerData(
|
||||
val type: ServerType,
|
||||
val description: String?,
|
||||
val listen_port: Int = 25565,
|
||||
val connection_address: String,
|
||||
val memory: String = "1G",
|
||||
val env_variables: List<CustomEnvironmentVariableData> = emptyList(),
|
||||
val api_key: String,
|
||||
val created_at: String,
|
||||
val updated_at: String
|
||||
)
|
||||
)
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@ import com.velocitypowered.api.proxy.ProxyServer
|
||||
import org.slf4j.Logger
|
||||
import java.net.URI
|
||||
|
||||
fun createWebSocketClient(plugin: Main, logger: Logger, server: ProxyServer, websocketUrl: String): MinikuraWebSocketClient {
|
||||
fun createWebSocketClient(plugin: Main, logger: Logger, server: ProxyServer, websocketUrl: String, apiKey: String): MinikuraWebSocketClient {
|
||||
val uri = URI(websocketUrl)
|
||||
val client = MinikuraWebSocketClient(plugin, logger, server, uri)
|
||||
val client = MinikuraWebSocketClient(plugin, logger, server, uri, mapOf("Authorization" to "Bearer $apiKey"))
|
||||
return client
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user