Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 0 additions & 36 deletions velocity/src/main/kotlin/de/astride/maintenance/Maintenance.kt

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* © Copyright - Lars Artmann aka. LartyHD 2019.
*/

package de.astride.maintenance

import com.google.inject.Inject
import com.velocitypowered.api.event.EventManager
import com.velocitypowered.api.event.Subscribe
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent
import com.velocitypowered.api.event.proxy.ProxyReloadEvent
import com.velocitypowered.api.plugin.Plugin
import com.velocitypowered.api.plugin.annotation.DataDirectory
import org.slf4j.Logger
import java.nio.file.Path

/**
* @author Lars Artmann | LartyHD
* Created by Lars Artmann | LartyHD on 13.02.2019 09:52.
* Current Version: 1.0 (13.02.2019 - 02.03.2019)
*/
@Suppress("UNUSED_PARAMETER")
@Plugin(
id = "registry",
name = "Registry",
version = "@version@",
url = "Astride.de",
authors = ["Lars Artmann | LartyHD"]
)
class MaintenancePlugin @Inject constructor(
private val eventManager: EventManager,
@DataDirectory val path: Path,
private val logger: Logger
) {

private lateinit var registry: Registry

@Subscribe
fun on(event: ProxyInitializeEvent) {
registry = Registry(this, eventManager, path.toFile(), logger)
registry.register()
logger.info("Maintenance loaded")
//proxyServer.allServers.first().serverInfo.address.address.isReachable(10)
}

@Subscribe
fun on(event: ProxyReloadEvent) {
registry.register()
logger.info("Maintenance reloaded")
}

}
67 changes: 67 additions & 0 deletions velocity/src/main/kotlin/de/astride/maintenance/Registry.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
* © Copyright - Lars Artmann aka. LartyHD 2019.
*/

package de.astride.maintenance

import com.velocitypowered.api.event.EventManager
import de.astride.maintenance.config.ConfigProvider
import de.astride.maintenance.listener.Listener
import de.astride.maintenance.webinterface.WebInjector
import org.slf4j.Logger
import java.io.File

/**
* @author Lars Artmann | LartyHD
* Created by Lars Artmann | LartyHD on 02.03.2019 09:02.
* Current Version: 1.0 (02.03.2019 - 02.03.2019)
*/
@Suppress("UNUSED_PARAMETER")
class Registry(
private val plugin: Any,
private val eventManager: EventManager,
private val file: File,
private val logger: Logger
) {

companion object {
var isActive: Boolean = false
lateinit var provider: ConfigProvider
}

private lateinit var listener: Listener
private lateinit var webInjector: WebInjector

fun register(boolean: Boolean = true) {
registerConfigProvider(boolean)
if (provider.webInterface.isActive && boolean) registerWebInjector()
updateListener()
}

private fun registerConfigProvider(boolean: Boolean = true) {
provider = ConfigProvider(file)
if (boolean) isActive = provider.config.isActive
}

private fun updateListener() {
if (::listener.isInitialized) eventManager.unregisterListener(plugin, listener)
if (isActive) registerListener()
}

private fun registerListener() {
listener = Listener(provider)
eventManager.register(plugin, listener)
}

private fun registerWebInjector() {
logger.info("register WebInjector")
if (::webInjector.isInitialized) return//webInjector.stop()
webInjector = WebInjector(this)
webInjector.start()
logger.info(webInjector.server.toString())
logger.info(webInjector.server.address.toString())
logger.info("registered WebInjector")
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package de.astride.maintenance.config

import net.darkdevelopers.darkbedrock.darkness.general.configs.ConfigData
import net.darkdevelopers.darkbedrock.darkness.general.configs.gson.GsonService
import net.kyori.text.Component
import net.kyori.text.serializer.ComponentSerializers
import java.io.File

/**
* @author Lars Artmann | LartyHD
* Created by Lars Artmann | LartyHD on 15.02.2019 00:10.
* Current Version: 1.0 (15.02.2019 - 15.02.2019)
*/
class ConfigProvider(var directory: File) {

/* SubClass */
val config by lazy { Config() }
val motd by lazy { Motd() }
val webInterface by lazy { WebInterface() }

inner class Config internal constructor() {

/* Main */
private val configData by lazy { ConfigData(directory, "config.json") }
private val config by lazy { GsonService.loadAsJsonObject(configData) }
/* Values */
val isActive by lazy { config["IsActive"]?.asBoolean ?: false }
val motdFileName by lazy { config["MotdFileName"]?.asString ?: "motd.json" }
val webInterfaceFileName by lazy { config["WebInterfaceFileName"]?.asString ?: "web-interface.json" }
val byPassPermission by lazy { config["ByPassPermission"]?.asString ?: "maintenance.bypass" }
val kickMessage: Component by lazy {
ComponentSerializers.LEGACY.deserialize(config["KickMessage"]?.asString ?: "§cCosmicSky.net | Registry")
}

}

inner class Motd internal constructor() {

/* Main */
private val configData by lazy { ConfigData(directory, this@ConfigProvider.config.motdFileName) }
private val config by lazy { GsonService.loadAsJsonObject(configData) }
/* Values */
val versionName: String by lazy { config["VerisonName"]?.asString ?: "CosmicProxy" }
val description: Component by lazy {
ComponentSerializers.LEGACY.deserialize(
config["Description"]?.asString?.replace("\\n", "\n") ?: "§cCosmicSky.net | Registry"
)
}

}

inner class WebInterface internal constructor() {

/* Main */
private val configData by lazy { ConfigData(directory, this@ConfigProvider.config.webInterfaceFileName) }
private val config by lazy { GsonService.loadAsJsonObject(configData) }
/* Values */
val isActive by lazy { config["IsActive"]?.asBoolean ?: false }
val port by lazy { config["Port"]?.asInt ?: 4543 }

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package de.astride.maintenance.listener

import com.velocitypowered.api.event.ResultedEvent
import com.velocitypowered.api.event.Subscribe
import com.velocitypowered.api.event.connection.LoginEvent
import com.velocitypowered.api.event.proxy.ProxyPingEvent
import com.velocitypowered.api.proxy.server.ServerPing
import de.astride.maintenance.config.ConfigProvider

/**
* @author Lars Artmann | LartyHD
* Created by Lars Artmann | LartyHD on 14.02.2019 23:31.
* Current Version: 1.0 (14.02.2019 - 15.02.2019)
*/
class Listener(private val provider: ConfigProvider) {

@Subscribe
fun on(event: ProxyPingEvent) {
val motd = provider.motd
val version = ServerPing.Version(event.ping.version.protocol, motd.versionName)

event.ping = event.ping.asBuilder()
.version(version)
.description(motd.description)
.nullPlayers()
.build()
}

@Subscribe
fun on(event: LoginEvent) {
if (event.player.hasPermission(provider.config.byPassPermission)) return
event.result = ResultedEvent.ComponentResult.denied(provider.config.kickMessage)
}

}
Loading