mirror of
https://github.com/ViaVersion/VIAaaS.git
synced 2025-11-18 07:34:15 +01:00
remove configs default-parameters, default-backend-port and require-host-name
"default-backend-port" and "require-host-name" - They were created with transparent proxying in mind, but it's probably an unused feature. "default-parameters" - If you need to connect to only one backend server, ViaProxy is probably the best alternative
This commit is contained in:
parent
cfc3958fff
commit
76f30b8b3c
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@
|
||||
/config
|
||||
/logs
|
||||
node_modules/
|
||||
.kotlin/
|
||||
@ -225,9 +225,6 @@ object PacketRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
val protocolRangeToId = TreeRangeMap.create<ProtocolVersion, Int>()
|
||||
idByProtocol.forEach { (range, id) -> protocolRangeToId.put(range, id) }
|
||||
|
||||
entriesEncoding.computeIfAbsent(direction to klass) { TreeRangeMap.create() }.also { rangeMap ->
|
||||
idByProtocol.forEach { (protocolRange, packetId) ->
|
||||
if (rangeMap.subRangeMap(protocolRange).asMapOfRanges().isNotEmpty())
|
||||
|
||||
@ -2,7 +2,6 @@ package com.viaversion.aas.config
|
||||
|
||||
import com.google.common.net.HostAndPort
|
||||
import com.viaversion.aas.secureRandom
|
||||
import com.viaversion.aas.util.AddressParser
|
||||
import com.viaversion.aas.viaaasLoggerJava
|
||||
import com.viaversion.viaversion.util.Config
|
||||
import net.coobird.thumbnailator.Thumbnails
|
||||
@ -15,12 +14,9 @@ import java.net.URL
|
||||
import java.util.*
|
||||
|
||||
object VIAaaSConfig : Config(File("config/viaaas.yml"), viaaasLoggerJava), com.viaversion.viaversion.api.configuration.Config {
|
||||
var defaultParameters: Map<Int, AddressParser> = emptyMap()
|
||||
var bindAddresses = emptyList<HostAndPort>()
|
||||
var hostName: List<String> = emptyList()
|
||||
var blockLocalAddress = true
|
||||
var requireHostName: Boolean = true
|
||||
var defaultBackendPort: Int? = null
|
||||
var blockedBackAddresses: List<String> = emptyList()
|
||||
var allowedBackAddresses: List<String> = emptyList()
|
||||
var forceOnlineMode: Boolean = false
|
||||
@ -48,14 +44,9 @@ object VIAaaSConfig : Config(File("config/viaaas.yml"), viaaasLoggerJava), com.v
|
||||
|
||||
private fun reloadFields() {
|
||||
reloadIcon()
|
||||
defaultParameters = this.get("default-parameters", emptyMap<Int, String>())!!.map {
|
||||
(it.key as Number).toInt() to AddressParser().parse(it.value)
|
||||
}.toMap()
|
||||
bindAddresses = this.getStringList("bind-addresses").map { HostAndPort.fromString(it).withDefaultPort(25565) }
|
||||
hostName = this.get("host-name", emptyList<String>())!!.map { it }
|
||||
blockLocalAddress = this.getBoolean("block-local-address", true)
|
||||
requireHostName = this.getBoolean("require-host-name", true)
|
||||
defaultBackendPort = this.getInt("default-backend-port", 25565).let { if (it == -1) null else it }
|
||||
blockedBackAddresses = this.get("blocked-back-addresses", emptyList())!!
|
||||
allowedBackAddresses = this.get("allowed-back-addresses", emptyList())!!
|
||||
forceOnlineMode = this.getBoolean("force-online-mode", false)
|
||||
|
||||
@ -60,46 +60,33 @@ class HandshakeState : ConnectionState {
|
||||
|
||||
private fun handleVirtualHost(handler: MinecraftHandler, packet: Handshake) {
|
||||
val virtualPort = packet.port
|
||||
val extraData = packet.address.substringAfter(0.toChar(), missingDelimiterValue = "").ifEmpty { null }
|
||||
val virtualHostNoExtra = packet.address.substringBefore(0.toChar())
|
||||
val extraData = packet.address.let(::extractExtraHandshakeData)
|
||||
val virtualHostNoExtra = packet.address.let(::removeHandshakeExtraData)
|
||||
|
||||
var parsed = AddressParser().parse(virtualHostNoExtra, VIAaaSConfig.hostName)
|
||||
val hadHostname = parsed.viaSuffix != null
|
||||
var usedDefault = false
|
||||
val useWebParameters = matchesBaseHostname(virtualHostNoExtra)
|
||||
|
||||
if (!hadHostname) {
|
||||
var defaultBack = VIAaaSConfig.defaultParameters[virtualPort]
|
||||
if (defaultBack == null) defaultBack = VIAaaSConfig.defaultParameters[-1]
|
||||
if (defaultBack != null) {
|
||||
parsed = defaultBack
|
||||
usedDefault = true
|
||||
}
|
||||
var parsed: AddressParser? = null
|
||||
var parsedHadViaSuffix = false
|
||||
if (!useWebParameters) {
|
||||
parsed = AddressParser().parse(virtualHostNoExtra, VIAaaSConfig.hostName)
|
||||
parsedHadViaSuffix = parsed.viaSuffix != null
|
||||
if (!parsedHadViaSuffix) parsed = null
|
||||
}
|
||||
|
||||
val backProto = parsed.protocol ?: AUTO
|
||||
|
||||
val backAddress = parsed.serverAddress!!
|
||||
val port = parsed.port ?: VIAaaSConfig.defaultBackendPort ?: virtualPort
|
||||
val host = HostAndPort.fromParts(backAddress, port)
|
||||
|
||||
val frontOnline = parsed.online
|
||||
|
||||
val addressFromWeb = VIAaaSConfig.hostName.any { parsed.serverAddress.equals(it, ignoreCase = true) }
|
||||
val backProto = parsed?.protocol ?: AUTO
|
||||
val backAutoDetect = backProto == AUTO
|
||||
val backendHostPort = parsed?.let(::hostPortFromParser)
|
||||
|
||||
handler.data.backServerVer = backProto
|
||||
handler.data.autoDetectProtocol = backProto == AUTO
|
||||
handler.data.autoDetectProtocol = backAutoDetect
|
||||
(handler.data.state as? LoginState)?.also {
|
||||
it.frontOnline = frontOnline
|
||||
it.backName = parsed.username
|
||||
if (!addressFromWeb) {
|
||||
it.backAddress = host
|
||||
}
|
||||
it.frontOnline = parsed?.online
|
||||
it.backName = parsed?.username
|
||||
it.backAddress = backendHostPort
|
||||
it.extraData = extraData
|
||||
}
|
||||
(handler.data.state as? StatusState)?.also {
|
||||
if (!addressFromWeb) {
|
||||
it.address = host
|
||||
}
|
||||
it.address = backendHostPort
|
||||
}
|
||||
|
||||
val playerAddr = handler.data.frontHandler.endRemoteAddress
|
||||
@ -108,12 +95,25 @@ class HandshakeState : ConnectionState {
|
||||
playerAddr, handler.data.state.state.name, virtualHostNoExtra, virtualPort, handler.data.frontVer
|
||||
)
|
||||
|
||||
if (!usedDefault && !hadHostname && VIAaaSConfig.requireHostName && !addressFromWeb
|
||||
) {
|
||||
if (!parsedHadViaSuffix && !useWebParameters) {
|
||||
throw StacklessException("Missing parts in hostname")
|
||||
}
|
||||
}
|
||||
|
||||
private fun extractExtraHandshakeData(hsData: String): String? {
|
||||
return hsData.substringAfter(0.toChar(), missingDelimiterValue = "").ifEmpty { null }
|
||||
}
|
||||
|
||||
private fun removeHandshakeExtraData(hsData: String) = hsData.substringBefore(0.toChar())
|
||||
|
||||
private fun matchesBaseHostname(hostAddress: String) : Boolean {
|
||||
return VIAaaSConfig.hostName.any { hostAddress.equals(it, ignoreCase = true) }
|
||||
}
|
||||
|
||||
private fun hostPortFromParser(parsed: AddressParser): HostAndPort {
|
||||
return HostAndPort.fromParts(parsed.serverAddress, parsed.port ?: 25565)
|
||||
}
|
||||
|
||||
override fun handlePacket(handler: MinecraftHandler, ctx: ChannelHandlerContext, packet: Packet) {
|
||||
if (packet !is Handshake) throw StacklessException("Invalid packet!")
|
||||
|
||||
|
||||
@ -17,25 +17,11 @@ compression-level: 6
|
||||
######
|
||||
# VIAaaS virtual hosts options
|
||||
######
|
||||
# Requires virtual host to contain the value from "host-name" as a suffix.
|
||||
# A false value will allow virtual hosts with no suffix, connecting to the hostname sent by client.
|
||||
# A false value could be used for transparent proxying or for MiTM.
|
||||
require-host-name: true
|
||||
# Host names of this instance. Will be used as a suffix.
|
||||
host-name:
|
||||
- viaaas.localhost
|
||||
- via.localhost
|
||||
- via.localho.st
|
||||
# Default port to be used when connecting to the backend server.
|
||||
# Use -1 to reuse the port sent by client, useful for transparent proxying.
|
||||
default-backend-port: 25565
|
||||
# A list of backend address if the address host-name is missing
|
||||
# It will be chosen via virtual port
|
||||
# May be useful for BungeeCord
|
||||
# default-backends:
|
||||
# -1: "anyport.example.com._v1_12._of"
|
||||
# 25565: "test.geysermc.org._v1_8"
|
||||
default-parameters: {}
|
||||
#
|
||||
######
|
||||
# Address filtering
|
||||
|
||||
Loading…
Reference in New Issue
Block a user