Custom server port (#6406)

* custom server port

* format

* format

* Modify port range.

* Custom server port in client.

* replace `rangeTo`.

* format: Rename `getUrlWithPort` to `checkMultiplayerServerWithPort`.

Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
This commit is contained in:
Tang 2022-03-25 09:40:13 -05:00 committed by GitHub
parent 84561e7ad4
commit f6a0a5595f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 10 deletions

View File

@ -1,12 +1,12 @@
package com.unciv.logic.multiplayer
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.Net
import com.unciv.Constants
import com.unciv.UncivGame
import com.unciv.logic.GameInfo
import com.unciv.logic.GameInfoPreview
import com.unciv.logic.GameSaver
import com.unciv.models.metadata.checkMultiplayerServerWithPort
import com.unciv.ui.saves.Gzip
import com.unciv.ui.worldscreen.mainmenu.OptionsPopup
import java.util.*
@ -24,11 +24,11 @@ interface IFileMetaData {
class UncivServerFileStorage(val serverIp:String):IFileStorage {
val serverUrl = "http://$serverIp:8080"
class UncivServerFileStorage(serverIpWithPort:String):IFileStorage {
val serverUrl = "http://$serverIpWithPort"
override fun saveFileData(fileName: String, data: String) {
OptionsPopup.SimpleHttp.sendRequest(Net.HttpMethods.PUT, "$serverUrl/files/$fileName", data){
success: Boolean, result: String ->
success: Boolean, result: String ->
if (!success) {
println(result)
throw java.lang.Exception(result)
@ -70,7 +70,10 @@ class OnlineMultiplayer {
val settings = UncivGame.Current.settings
if (settings.multiplayerServer == Constants.dropboxMultiplayerServer)
fileStorage = DropboxFileStorage()
else fileStorage = UncivServerFileStorage(settings.multiplayerServer)
else {
val serverIpWithPort = settings.multiplayerServer.checkMultiplayerServerWithPort()
fileStorage = UncivServerFileStorage(serverIpWithPort)
}
}
fun tryUploadGame(gameInfo: GameInfo, withPreview: Boolean) {

View File

@ -0,0 +1,7 @@
package com.unciv.models.metadata
/** Check the url, if no port, add [defaultPort], then return the url. */
fun String.checkMultiplayerServerWithPort(defaultPort: Int = 8080): String {
return if (contains(":")) this
else "$this:$defaultPort"
}

View File

@ -16,6 +16,7 @@ import com.unciv.UncivGame
import com.unciv.logic.MapSaver
import com.unciv.logic.civilization.PlayerType
import com.unciv.models.UncivSound
import com.unciv.models.metadata.checkMultiplayerServerWithPort
import com.unciv.models.ruleset.Ruleset
import com.unciv.models.ruleset.Ruleset.RulesetError
import com.unciv.models.ruleset.Ruleset.RulesetErrorSeverity
@ -342,9 +343,9 @@ class OptionsPopup(val previousScreen: BaseScreen) : Popup(previousScreen) {
}
}
private fun successfullyConnectedToServer(action: (Boolean, String)->Unit){
SimpleHttp.sendGetRequest( "http://"+ settings.multiplayerServer+":8080/isalive", action)
fun successfullyConnectedToServer(action: (Boolean, String)->Unit){
SimpleHttp.sendGetRequest("http://${settings.multiplayerServer.checkMultiplayerServerWithPort()}/isalive", action)
}
private fun getAdvancedTab() = Table(BaseScreen.skin).apply {

View File

@ -12,12 +12,25 @@ import java.io.File
internal object UncivServer {
private var serverPort = 8080
@JvmStatic
fun main(arg: Array<String>) {
fun main(args: Array<String>) {
args.forEach { arg ->
when {
arg.startsWith("-port=") -> with(arg.removePrefix("-port=").toIntOrNull() ?: 0) {
if (this in 1024..49151) serverPort = this
else println("'port' must be between 1024 and 49151")
}
}
}
println("Server will run on $serverPort port, you can use '-port=XXXX' custom port.")
val fileFolderName = "MultiplayerFiles"
File(fileFolderName).mkdir()
println(File(fileFolderName).absolutePath)
embeddedServer(Netty, port = 8080) {
embeddedServer(Netty, port = serverPort) {
routing {
get("/isalive") {
call.respondText("true")