Ir para conteúdo

Criando um Launcher para seu servidor (OpenSource)


Castiel

Posts Recomendados

O tutorial original pode ser encontrado aqui: https://launcher.sashok724.net/- já adianto que está tudo em russo.
 
Você vai precisar de uma máquina com Linux para prosseguir.
 
---
 
Esse launcher foi feito com Java 8 utilizando a tecnologia JavaFX, possibilitando a customização total. Sistema anti-cheat integrado, sistema de login e cadastro pelo próprio launcher, painel de controle de usuário e integração com os mais famosos CMS e Fóruns, tais como: IPB, PHPBB, XenForo, vBulletin, WordPress, DLE e etc.

 

Instalando:

 

Execute o script de instalação em uma pasta qualquer (necessário ter o curl):

curl -s https://launcher.sashok724.net/download/setup.sh | sh

Inicie o Launcher como um aplicativo comum Java:

java -Xmx256M -jar LaunchServer.jar

Personalizando o LaunchServer.cfg

Quando você iniciar a configuração, ele solicitará o IP para que o launcher se conecte e após isso o arquivo LaunchServer.cfg será gerado. IP server para autenticação, sistema se skins, processamento de UUID e gerador de arquivo .exe pelo Launch4J. Você pode utilizar o localhost para testes:

address: "localhost"; # Local do VDS (dóminio ou IP)
port: 7240; # Porta do launcher (não altere)

Métodos de autenticação (authProvider)

Maneira padrão para autenticação via Launcher. O método é bem aceitável para testes, porém para uma versão final, recomenda-se utilização de: reject, file, request, mysql. Todos esses métodos requerem uma configuração adicional no arquivo authProviderConfig:

authProvider: "accept"; # Método de autorização
authProviderConfig: {
# configurar método de autenticação
};

Processo Reject:

Esse método de autenticação faz com que qualquer nome de usuário e senha estejam incorretos, levando a uma tela de falha. Esse método pode ser utilizado para manutenção do servidor. Exemplo:

message: "Em manutenção, volta mais tarde!"; # mensagem que será exibida como erro

Processo File:

Para autenticação de usuários, esse método utiliza um arquivo especificado. É recomendado para servidores privados, com número de jogadores pré-estabelecidos. Exemplo:

file: "users.txt"; # Dentro do arquivo deverá ter a configuração "usuário:senha"
digest: "SHA-256"; # Algorítimo hash da senha. Suporta plain, MD5, SHA-1, SHA-224, SHA-256, SHA-512

Processo Request:

Esse método de autenticação utiliza uma url especifica. É recomendado para grandes projetos que utilizam CMS com hash proprietário. Exemplo:

url: "https://myserver.tld/auth.php?login=%login%&password=%password%"; # URL que o launcher utilizará para autenticar. %login% e %password% são subistituidos por nome de usuário e senha, respectivamente.
response: "OK:(?<username>.+)"; # Máscara de autenticação bem sucedida. O grupo de captura <username> deve ser o nome do usuário. Se a resposta for diferente, retornará um erro.

Você pode baixar os arquivos de autenticação pré-configurados: WordPress, XenForo, IPB e PHPBB. (devem ser adicionados à raiz do seu site).

 

Processo com MySQL:

Esse método de autenticação utiliza o MySQL. É recomendado para grandes projetos que utilizam o hash padrão, como DLE ou sites produzidos por você. Exemplo:

address: "mysqlserver.tld"; # Endereço do MySQL
port: 3306; # Porta do MySQL (porta default 3306)
username: "root"; # Usuário do banco de dados MySQL
password: "PSP1004"; # Senha do B=banco de dados MySQl
database: "dle"; # Nome do banco de dados MySQL

query: "SELECT name FROM dle_users WHERE (email=? OR name=?) AND password=MD5(MD5(?)) LIMIT 1"; # Como a query deve ser
queryParams: [ "%login%", "%login%", "%password%" ]; # Parametros da query. %login% e %password% serão substituídos por nome de usuário e senha respectivamente. 

Verificar autorização:

Para verificar uma autorização, basta executar o comando:

auth "username" "password"

- Não irei incluir o processo de UUID porque o padrão é suficiente. Caso você use o UUID em MySQL utilize o tutorial original.

 

 

Sistema de Skins e Capas:

O sistema de skins e capas permite que um usuário faça alteração mesmo sem possuir uma conta original Minecraft. Esse sistema pode ser ou não ativado, para isso você deverá criar um sistema de upload no painel de usuário do seu site e configurar no launcher. Veja os exemplos:

 

Padrão para conta originais:

skinsURL: "http://skins.minecraft.net/MinecraftSkins/%username%.png"; # URL das Skins
cloaksURL: "http://skins.minecraft.net/MinecraftCloaks/%username%.png"; # URL das Capas

Para contas não originais, hospedadas pelo seu servidor:

skinsURL: "http://skins.meuservidor.com/MinecraftSkins/%username%.png"; # URL das Skins
cloaksURL: "http://skins.meuservidor.com/MinecraftCloaks/%username%.png"; # URL das Capas

Criando um executável .exe com Launch4J:

O launcher pode gerar automáticamente um arquivo .exe. Para isso você deverá alterar as informações como desejar, assim como o favicon.ico. Veja o exemplo de configuração:

launch4J: true; # Ativa a produção do arquivo .exe via Launch4J

Versões do Minecraft e Perfis:

Versões do jogo e perfis para servidores com mais de um tipo de servidor. Aqui você gerencia os downloads que os jogadores irão efetuar.

 

Assets que você irá utilizar:

Primeiro você deverá definir qual versão do Minecraft que seu servidor irá utilizar, após isso, execute o comando para que os assets da versão sejam baixados:

downloadAsset 1.7.10 "asset1.7.10" # Entre aspas será o nome da pasta

Obs: o launcher suporta as versões 1.6.4/1.7.2/1.7.10/1.8.9/1.9

 

Clientes que você irá utilizar:

Basicamente o cliente é o executável do Minecraft. É importante utilizar o mesmo cliente que você utilizou pros assets. Veja o Exemplo:

downloadClient 1.7.10 "HiTech" # Entre aspas será o nome da pasta do cliente.

Esse também irá criar um arquivo de configurações de perfis, profile.cfg:

version: "x.x.x"; # Versão do cliente
assetIndex: "x.x.x"; # Versão dos assets (1.7.10+)

# Runtime-dependent params
dir: "XXXXX"; # Diretório do cliente
assetDir: "XXXXX"; # diretório dos assets

# Client params
sortIndex: 0; # índice para organizar os perfis, o menor fica no topo da lista.
title: "XXXXX"; # Nome do servidor que utilizará esse perfil, por exemplo: MeuServer - PVP
serverAddress: "server.tld"; # IP do servidor que utilizará esse perfil
serverPort: 25565; # Porta do servidor

# Updater and client watch service
update: []; # Arquivos e diretórios que serão atualizados, mas não será verificada durante o jogo
updateVerify: [ # Os arquivos e diretórios que devem sempre ser verificados. Importante para impedir modificações no cliente proveniente de hackers.
    "libraries", "natives", "mods",
    "minecraft\\.jar", "forge\\.jar"
];
updateExclusions: [ # Aquivos e diretórios que deverão ser excluídos de atualizações e verificações
    # ...
];

# Client launcher params
mainClass: "net.minecraft.launchwrapper.Launch"; # Classe principal do cliente
classPath: [ "libraries", "minecraft.jar", "forge.jar" ]; # Cliente classpath
jvmArgs: [ # Argumentos adicionais JVM
    "-Dfml.ignorePatchDiscrepancies=true", # ignora diferenças
    "-Dfml.ignoreInvalidMinecraftCertificates=true", # ignora falta de certificados
    "-Dorg.lwjgl.opengl.Display.allowSoftwareOpenGL=true" # Jogadores sem placas de vídeo também poderão jogar
];
clientArgs: [ # Argumentos adicionais
    "--tweakClass", "cpw.mods.fml.common.launcher.FMLTweaker" # Se você utilizar o Forge
];

Atualizações e sincronizações de Clientes e Perfis:

Para garantir alto desempenho, launchserver armazena o conteúdo das atualizações de diretório e perfis. Ao atualizar esses arquivos o launcher dos jogadores pode não estar na mesma versão ocasionando erros. Para manter sincronizado, existem dois comandos:

syncUpdates # Sincroniza o conteúdo de atualização
syncProfiles # Sincroniza o conteúdo dos perfis

Esses comandos são necessários após a modificação do cliente, dos perfis ou dos assets! Caso contrário você e seus jogadores irão receber erros!

 

Construção do Launcher:

Agora que você configurou o launcherserver, hora de configurar o launcher (executável). Abra o arquivo runtime/config.js:

var config = {
    dir: "sashok724", // Local (pasta) onde o launcher irá armazenar os arquivos (%user.home%/dir)
    title: "sashok724's Launcher", // Título do Launcher
    icons: [ "favicon.png" ], // ícone do seu launcher (em runtime)
    
    // Tela de login
    newsURL: "https://launcher.sashok724.net/", // URL das notícias que serão exibidas na tela principal
    linkText: "link", // Texto do link acima do login
    linkURL: new java.net.URL("http://bit.ly/1SP0Rl8"), // URL do texto acima do login
    
    // Valores de configuração padrão
    settingsMagic: 0xBEEF, // Não altere
    autoLoginDefault: false, // Entrar automáticamente
    fullScreenDefault: false, // Launcher em fullscreen
    ramDefault: 1024, // Quantidade de ram (utilize 0 para automático)
    
    // Nome dos diretórios do JRE, se você não entende não altere
    jreMustdie32Dir: "jre-8u66-win32", jreMustdie64Dir: "jre-8u66-win64",
    jreLinux32Dir: "jre-8u66-linux32", jreLinux64Dir: "jre-8u66-linux64",
    jreMacOSXDir: "jre-8u66-macosx", jreUnknownDir: "jre-8u66-unknown"
}

Buildando o Launcher:

Para gerar seu launcher, é necessário compilar. Esse comando irá compilar e gerar um arquivo .jar e um .exe caso a opção Launch4J esteja ativada.

build # Gera um arquivo Launcher.jar e um Launcher.exe
Editado por Castiel
Link para o comentário
Compartilhar em outros sites

Explicação Final
 
O primeiro setup trata-se do Launcher Server, o mesmo funciona como um servidor, porém para seu launcher. Ele que irá possuir a interface de comando, possibilitando atualizar e sincronizar o Launcher.
 
O segundo setup irá gerar o Launcher do seu servidor, a partir de comandos via LauncherServer. Após configurado, basta gerar o executável do seu launcher.
 
 
Possíveis Erros:
 
Erro ao tentar baixar arquivos do client/assets


[ERROR] javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Solução:
1- Desligue o LauncherServer;
2- Abra o console na raiz do Linux e digite os comandos com usuário root:

echo -n | openssl s_client -connect launcher.sashok724.net:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/sashok724.crt
 
keytool -import -trustcacerts -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts -storepass changeit -noprompt -alias mycert -file /tmp/sashok724.crt

3- Inicie novamente o LauncherServer;
4- Digite novamente o comando de download:

downloadAsset 1.7.10 "asset1.7.10"

Tradução do Launcher:
O launcher pode ser traduzido modificando os arquivos na pasta runtime/dialog. Após a tradução, o comando build deverá ser utilizado para gerar um novo launcher com suas modificações.
 
Perguntas:
1. Posso hospedar meu LauncherServer num servidor compartilhado?


R. Sim, desde que seja Linux, com Java instalado e a porta 7240 aberta.

 
Source: https://github.com/new-sashok724/Launcher/
 
Versão compilada por mim, para Windows:
Download: https://mega.nz/#!wxMAQSKQ!luC2z2L-yZs5PXqk3MWL5-hV5cAF1GaCXF8VGaY6G2s
Importante: Leia o arquivo de texto!
 
Screenshots:

gnlcTTO.png

YSjk3xO.pngCPzEMEG.pngFed64Kc.png9MPz1d3.png

Editado por Castiel
Link para o comentário
Compartilhar em outros sites

Guest Cborgbrine

O Launcher já compilado está na segunda postagem para download, o mesmo funciona no Windows :)

Da para modificar td na versão compilada? ou só do jeito q vc deixou msm?

Link para o comentário
Compartilhar em outros sites

 

 


Da pra modificar tudo, eu só compilei o launchserver pra funcionar no Windows
eu n entendi direito esse negócio de hospedar o launcher, é obrigado ter uma vps? '-'

@Edit
Não entendi mt esse tutorial q tem no arquivo compilado, nem tem launchserver.bat :\

 

@Edit²

Baixou e pa, arrumei e pa, mas ta dando um erro '-', poderia fazer um pra mim? Posso pagar e.e

Editado por BuildHell
Link para o comentário
Compartilhar em outros sites

eu n entendi direito esse negócio de hospedar o launcher, é obrigado ter uma vps? '-'

 

@Edit

Não entendi mt esse tutorial q tem no arquivo compilado, nem tem launchserver.bat :\

 

@Edit²

Baixou e pa, arrumei e pa, mas ta dando um erro '-', poderia fazer um pra mim? Posso pagar e.e

 

Opa, esqueci de add o .bat, mas segue aí:

@ECHO OFF
:start
java -Xmx256M -jar LaunchServer.jar
PAUSE

Qual erro que ta dando? Manda uma print aí.

Se quiser que eu faça, manda contato via PM

Link para o comentário
Compartilhar em outros sites

 

Opa, esqueci de add o .bat, mas segue aí:

@ECHO OFF
:start
java -Xmx256M -jar LaunchServer.jar
PAUSE
Qual erro que ta dando? Manda uma print aí.

Se quiser que eu faça, manda contato via PM

vlw por me ajudar via MP, funcionou, vlw mesm, só n te dou um beijo pq n sou gay :V

 

Opa, esqueci de add o .bat, mas segue aí:

@ECHO OFF
:start
java -Xmx256M -jar LaunchServer.jar
PAUSE
Qual erro que ta dando? Manda uma print aí.

Se quiser que eu faça, manda contato via PM

vlw por me ajudar via MP, funcionou, vlw mesm, só n te dou um beijo pq n sou gay :V
Link para o comentário
Compartilhar em outros sites

vlw por me ajudar via MP, funcionou, vlw mesm, só n te dou um beijo pq n sou gay :v

vlw por me ajudar via MP, funcionou, vlw mesm, só n te dou um beijo pq n sou gay :v

kkkkkkkkkkkk sem problemas
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...