O servidor de login, realiza a autenticação do usuário e a entrega dos dados dos servidores para o cliente.
Arquivos
Logs, a pasta de informações dos acontecimentos do servidor.
Elysium.dll, biblioteca de classes de Logs, Service e Configurações dos arquivos.
checksum.lua, a lista de checksum que o servidor deve verifica na hora do login.
geoip.lua, lista de bloqueio de países.
GeoIPCountryWhois.csv, lista de endereço IP com seus respectivos países.
KopiLua.dll, lua wrapper para C#.
Lidgren.Network.dll, biblioteca de conexão UDP.
LoginConfig.txt, configurações do servidor de login.
MySql.Data.dll, biblioteca de dados para mysql.
NLua.dll, biblioteca para lua, scripting.
Arquivo de configuração
O arquivo de configuração está em unicode, permitindo a inserção de caracteres de outros idiomas.
ID, número de identificação do servidor. Quando o login faz a conexão com o world server, o ID é enviado pois o servidor de login fica como um 'jogador normal' na conexão, uma vez que o world server tem um jogador com o ID 0, ele é desconectado.
Discovery, campo de descoberta de conexão, ele precisa ser o mesmo em todos os servidores e cliente. Ele é a identificação na rede.
MaximumConnections, quantidade máxima de conexões.
Logs, 1 ativa e 0 desativa a função de logs.
Sleep, valor do sleep (em milésimos de segundos) usado no Loop do servidor. Quando o valor é 0, o servidor usa o máximo de processamento. Portanto, 1 é o valor ideal, mas nada impede que outros valores sejam usados.
CheckVersion, verificação da versão do cliente, o valor 0 desativa a função.
GeoIp, 1 ativa e 0 desativa a função. Permite o bloqueio de países por endereço IP.
CheckSum, 1 ativa e 0 desativa a função. Verifica o checksum enviado pelo cliente no momento de login.
MySQL_IP, ip do banco de dados mysql.
MySQL_Port, porta do banco de dados mysql.
MySQL_User, nome de usuário.
MySQL_Pass, senha de usuário.
MySQL_DB, nome do banco de dados.
Configuração do WorldServer
1_Enabled, o valor 1 ativa enquanto 0 desativa o servidor.
1_WorldServerIP, ip do servidor que é enviado ao cliente.
1_Name, nome do servidor.
1_Status, status do worldserver. (informações como capacidade e outros)
1_Region, região ou país.
1_WorldServerLocalIP, ip de conexão local.
1_WorldServerPort, porta de conexão.
Atualmente, o servidor de login tem suporte para 5 servidores world.
Eles estão ativos por padrão para testes mas, caso tenha algum projeto, mantenha os que não são usados, desativados. Cada servidor world é distinto, ou seja, não há conexão com os demais.
Demonstração de todos os servidores ativos
Bloqueando um país
Deve-se ativar o sistema geoip no arquivo de configurações.
Abra o arquivo geoip.lua com seu editor de texto preferido e adicione ao arquivo, o seguinte comando: AddCountry("Código do País");
Verficando valores checksum
Deve-se ativar o sistema de checksum no arquivo de configurações.
Os valores checksum são enviados quando o usuário faz acesso ao sistema. No momento, apenas o checksum do executável é verificado.
O parametro versão, refere-se a versão do executável que o cliente possuí que corresponde ao número de versão no arquivo de configuração.
Desde modo, é possível verificar a integridade de alguns arquivos importantes do cliente. Mas, também, é possível burla-lá.
O processo de autenticação do usuário
O servidor de login é a porta de entrada para o restante dos servidores. Qualquer conexão em outro servidor que não tenha passado por ele antes, será aceita e depois de alguns segundos, desconectada e retirada da lista.
Quando a conexão é estabelecida entre o cliente e o servidor de login, o servidor gera um código hexadecimal a partir da conexão, popularmente conhecido por HexID. Se a autenticação do usário é feita, o HexID é enviado para o cliente e também, é enviado a lista dos servidores.
No momento que o cliente escolhe o servidor a partir da lista, o servidor de login envia o HexID para o servidor world escolhido pelo cliente.
E também, é realizada a conexão entre o cliente e o servidor world escolhido, após isso, o cliente envia o HexID o servidor world.
Se o HexID enviado pelo cliente não for o mesmo que o enviado pelo servidor de login, o usuário é desconectado. O tempo de vida de um HexID enviado pelo servidor de login, é de 10 segundos. Dentro desse tempo, se nenhum cliente aparecer para a confirmação, o HexID enviado pelo servidor é removido da lista.
Junto com o HexID, outros dados do usuário também são enviados. As informações são transferidas para continuar o processo de login.
Banco de dados
O servidor de login é independente dos outros servidores e tem o próprio banco de dados que SOMENTE é compartilhado pelo site do projeto.
Tabela account
pin, senha de alguns dígitos para ter acesso aos personagens, somente é usada no servidor world.
cash, moeda, dinheiro em espécie do servidor.
No campo password é usado o hash SHA256.
language_id, id do idioma de todo o sistema. (site e jogo)
logged_in, o valor 1 indica que o usuário está conectado, 0 desconectado. (atualmente, sem importância, já que a verificação ocorre só no sistema)
access_level, nível de acesso ao sistema, definido pelo usuário do projeto.
active, o valor 1 indica que a conta foi confirmada e está ativa para uso.
Tabela account_ban
Quando o tempo de ban é expirado, apenas o campo expired é alterado para 1.
Os dados não são removidos da tabela para alguma consulta futura.
Tabela account_service
O usuário pode ter mais de um serviço ativo na conta.
Quando o tempo do serviço é expirado, apenas o campo expired é alterado para 1.
Os dados não são removidos da tabela para alguma consulta futura.
Tabela banned_ip
Quando o tempo do ban é expirado, as informações são removidas da tabela.
A informação só será removida da tabela, quando algum usuário com o IP que está no campo, realizar o login.
Arquivos
Logs, a pasta de informações dos acontecimentos do servidor.
Elysium.dll, biblioteca de classes de Logs, Service e Configurações dos arquivos.
checksum.lua, a lista de checksum que o servidor deve verifica na hora do login.
geoip.lua, lista de bloqueio de países.
GeoIPCountryWhois.csv, lista de endereço IP com seus respectivos países.
KopiLua.dll, lua wrapper para C#.
Lidgren.Network.dll, biblioteca de conexão UDP.
LoginConfig.txt, configurações do servidor de login.
MySql.Data.dll, biblioteca de dados para mysql.
NLua.dll, biblioteca para lua, scripting.
Arquivo de configuração
O arquivo de configuração está em unicode, permitindo a inserção de caracteres de outros idiomas.
ID, número de identificação do servidor. Quando o login faz a conexão com o world server, o ID é enviado pois o servidor de login fica como um 'jogador normal' na conexão, uma vez que o world server tem um jogador com o ID 0, ele é desconectado.
Discovery, campo de descoberta de conexão, ele precisa ser o mesmo em todos os servidores e cliente. Ele é a identificação na rede.
MaximumConnections, quantidade máxima de conexões.
Logs, 1 ativa e 0 desativa a função de logs.
Sleep, valor do sleep (em milésimos de segundos) usado no Loop do servidor. Quando o valor é 0, o servidor usa o máximo de processamento. Portanto, 1 é o valor ideal, mas nada impede que outros valores sejam usados.
CheckVersion, verificação da versão do cliente, o valor 0 desativa a função.
GeoIp, 1 ativa e 0 desativa a função. Permite o bloqueio de países por endereço IP.
CheckSum, 1 ativa e 0 desativa a função. Verifica o checksum enviado pelo cliente no momento de login.
MySQL_IP, ip do banco de dados mysql.
MySQL_Port, porta do banco de dados mysql.
MySQL_User, nome de usuário.
MySQL_Pass, senha de usuário.
MySQL_DB, nome do banco de dados.
Configuração do WorldServer
1_Enabled, o valor 1 ativa enquanto 0 desativa o servidor.
1_WorldServerIP, ip do servidor que é enviado ao cliente.
1_Name, nome do servidor.
1_Status, status do worldserver. (informações como capacidade e outros)
1_Region, região ou país.
1_WorldServerLocalIP, ip de conexão local.
1_WorldServerPort, porta de conexão.
Atualmente, o servidor de login tem suporte para 5 servidores world.
Eles estão ativos por padrão para testes mas, caso tenha algum projeto, mantenha os que não são usados, desativados. Cada servidor world é distinto, ou seja, não há conexão com os demais.
Demonstração de todos os servidores ativos
Bloqueando um país
Deve-se ativar o sistema geoip no arquivo de configurações.
Abra o arquivo geoip.lua com seu editor de texto preferido e adicione ao arquivo, o seguinte comando: AddCountry("Código do País");
Verficando valores checksum
Deve-se ativar o sistema de checksum no arquivo de configurações.
Os valores checksum são enviados quando o usuário faz acesso ao sistema. No momento, apenas o checksum do executável é verificado.
O parametro versão, refere-se a versão do executável que o cliente possuí que corresponde ao número de versão no arquivo de configuração.
Desde modo, é possível verificar a integridade de alguns arquivos importantes do cliente. Mas, também, é possível burla-lá.
O processo de autenticação do usuário
O servidor de login é a porta de entrada para o restante dos servidores. Qualquer conexão em outro servidor que não tenha passado por ele antes, será aceita e depois de alguns segundos, desconectada e retirada da lista.
Quando a conexão é estabelecida entre o cliente e o servidor de login, o servidor gera um código hexadecimal a partir da conexão, popularmente conhecido por HexID. Se a autenticação do usário é feita, o HexID é enviado para o cliente e também, é enviado a lista dos servidores.
No momento que o cliente escolhe o servidor a partir da lista, o servidor de login envia o HexID para o servidor world escolhido pelo cliente.
E também, é realizada a conexão entre o cliente e o servidor world escolhido, após isso, o cliente envia o HexID o servidor world.
Se o HexID enviado pelo cliente não for o mesmo que o enviado pelo servidor de login, o usuário é desconectado. O tempo de vida de um HexID enviado pelo servidor de login, é de 10 segundos. Dentro desse tempo, se nenhum cliente aparecer para a confirmação, o HexID enviado pelo servidor é removido da lista.
Junto com o HexID, outros dados do usuário também são enviados. As informações são transferidas para continuar o processo de login.
Banco de dados
O servidor de login é independente dos outros servidores e tem o próprio banco de dados que SOMENTE é compartilhado pelo site do projeto.
Tabela account
pin, senha de alguns dígitos para ter acesso aos personagens, somente é usada no servidor world.
cash, moeda, dinheiro em espécie do servidor.
No campo password é usado o hash SHA256.
language_id, id do idioma de todo o sistema. (site e jogo)
logged_in, o valor 1 indica que o usuário está conectado, 0 desconectado. (atualmente, sem importância, já que a verificação ocorre só no sistema)
access_level, nível de acesso ao sistema, definido pelo usuário do projeto.
active, o valor 1 indica que a conta foi confirmada e está ativa para uso.
Tabela account_ban
Quando o tempo de ban é expirado, apenas o campo expired é alterado para 1.
Os dados não são removidos da tabela para alguma consulta futura.
Tabela account_service
O usuário pode ter mais de um serviço ativo na conta.
Quando o tempo do serviço é expirado, apenas o campo expired é alterado para 1.
Os dados não são removidos da tabela para alguma consulta futura.
Tabela banned_ip
Quando o tempo do ban é expirado, as informações são removidas da tabela.
A informação só será removida da tabela, quando algum usuário com o IP que está no campo, realizar o login.