Sobre o projeto

Ling Yggdrasil é um sistema de autenticação externa Yggdrasil para Minecraft, totalmente compatível com o ecossistema authlib, oferecendo registro de contas, login, gerenciamento de personagens e hospedagem de skins/capas. Inclui assistente de instalação web, painel de controle com estilo anime e sistema de segurança em múltiplas camadas, permitindo configurar um serviço de login externo seguro e bonito em minutos. ## Início Rápido Requisitos de ambiente: Java 25 (recomendado; suporta teoricamente Java 21+), recomendado pelo menos 512 MB de memória disponível. Início em três passos: 1. Confirme a versão do Java 2. Baixe LingYggdrasil-2.2.7.jar e coloque em um diretório vazio separado 3. Inicie (este diretório se tornará o diretório de dados) No primeiro início, o assistente de instalação será aberto automaticamente (`http://<endereço do servidor>:35598`), siga as instruções para configurar a conta de administrador, banco de dados e e-mail. Após a instalação, o programa fornecerá três serviços simultaneamente: | Porta | Uso | Acesso | |------|------|----------| | 35565 | Lado do usuário (registro, login, painel, skins, amigos, etc.) | Público | | 35577 | API Yggdrasil (para uso pelos launchers do Minecraft) | Público | | 35599 | Painel administrativo | Deve permanecer privado | | 35598 | Assistente de instalação | Apenas na primeira instalação | ## Recursos ### Pronto para uso - Assistente de instalação web: guia automaticamente na configuração da conta de administrador, banco de dados e serviço de e-mail no primeiro início - Suporte a múltiplos bancos de dados: SQLite, MySQL, PostgreSQL - Implantação em JAR único: empacotado como um único JAR executável ### Sistema de plugins - Carregamento de plugins externos: escaneia automaticamente o diretório `plugins/` e carrega os JARs de plugins na inicialização - Descrição `plugin.yml`: estilo Paper, declara nome, versão, autor, dependências, ícone e nós de permissão - Gerenciamento de plugins no painel: suporta iniciar/parar manualmente - Submenu de plugins: plugins podem ser registrados em até um submenu no painel administrativo - Nós de permissão dinâmicos: nós integrados e de plugins são registrados dinamicamente pela origem - API de desenvolvimento de plugins: a compilação produz `LingYggdrasil-plugin-api-2.2.7.jar` ### Sistema de segurança - Criptografia de senha Argon2: 6 níveis de intensidade ajustáveis - Verificação de e-mail: suporta listas de permissão/negação de domínios - Limite de registro por IP: previne registros em massa - Lista negra de nomes: suporta curingas - Sistema de sessão independente: lado do usuário, lado administrativo e API usam cookies de sessão isolados - Proteção de integridade do root: verifica a tabela `root_info` - Limitação de login e operações: todas as operações críticas têm limites de frequência ### Lado do usuário - Gerenciamento de personagens: crie múltiplos personagens, cada um com Token Yggdrasil e UUID independentes - Skins e capas: envie e gerencie skins e capas pessoais, com nomes alternativos e controle público/privado - Biblioteca de texturas: praça pública de materiais, ordenada por popularidade, com rolagem infinita e carregamento preguiçoso - Curtidas e favoritos: curta materiais para ajudar a impulsioná-los - Materiais compartilhados: seções de compartilhamento com amigos e meus favoritos - Sistema de amigos: adicionar por código de amigo, cartão de detalhes do amigo, gerenciamento de bloqueio, compartilhamento de materiais por seleção - Pré-visualização 3D de skins: integra skinview3d, suporta rotação de 360° - Configurações de segurança: altere senha, e-mail e apelido, visualize e regenere Tokens - Logs de operação: visualize, baixe e limpe seus próprios logs - Temas e idiomas: alternância entre temas claro/escuro, 10 idiomas persistidos por conta ### Painel administrativo - Visão geral do dashboard: dados principais como número de usuários, personagens, skins/capas, com componentes arrastáveis para ordenação - Gerenciamento de usuários: visualize, pesquise, crie, edite e banir usuários - Gerenciamento de personagens: CRUD global, suporta alteração de nome, transferência de propriedade e alternância de forma - Gerenciamento de skins e capas: gerencie recursos de textura globalmente, configure tamanho de upload, quantidade, caminho de armazenamento e limites de frequência - Configurações de segurança: cartões visuais para 6 níveis de criptografia - Gerenciamento do sistema: informações do site, interruptores de recursos, domínios, anúncios, registro ICP, logs de operação, etc., em grupos - Grupos de permissão: grupos de permissão de administrador e de usuário, com controle fino de visibilidade de menus e disponibilidade de funções - Configurações do mundo: algoritmo de assinatura, validade do Token, limites de frequência, versão do UUID e outras configurações de protocolo ### Protocolo Yggdrasil - Implementação completa do protocolo: compatível com a autenticação Yggdrasil dos launchers principais do Minecraft - Três modos de assinatura: Ed448 (moderno), RSA-SHA512, RSA-SHA1 (compatível) - Sistema de Token: cada personagem gera automaticamente um Token de 64 bits de alta segurança - Hospedagem de texturas: endpoint público `/textures/{tipo}/{hash}` - Gerenciamento de sessão: fluxo completo de login, logout e validação de sessão - Extensões de consulta convenientes: endpoints de consulta por nome e em lote ### Internacionalização Inclui 10 idiomas: Chinês simplificado, Chinês tradicional, Chinês (Huaxia), Inglês, Russo, Alemão, Francês, Italiano, Japonês e Coreano. Os pacotes de idioma são em formato JSON, com suporte a sobrescrita externa e mesclagem profunda. ## Integração com clientes Usando um launcher como HMCL que suporta Yggdrasil personalizado como exemplo: 1. Nas configurações de "Conta" ou "Método de login" do launcher, selecione "Yggdrasil personalizado / Login externo" 2. Preencha o endereço do servidor de autenticação com o endereço raiz da API (por exemplo, `https://example.com`, ou `http://<IP>:35577` para conexão direta) 3. O nome de usuário é o nome do personagem, e a senha é o Token Yggdrasil desse personagem ## Pilha tecnológica | Componente | Tecnologia | |------|------| | Linguagem | Java 25 | | Framework web | Javalin | | Conexão com banco de dados | Pool HikariCP | | Banco de dados | SQLite / MySQL / PostgreSQL | | Criptografia | Bouncy Castle (Argon2, Ed448, RSA) | | E-mail | Eclipse Angus Mail | | Logs | Logback + SLF4J | | Serialização | Jackson | | Ferramenta de build | Maven | ## Licença Este projeto é licenciado sob a GNU Affero General Public License v3.0.