Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Bom esse codigo não protege você de ataques DoS, ele simplesmente salvar tudo se internet cai, codigo simples mais ajuda um pouco, "sei que é ruim pra ca*****, seu ot cai e os jogadores fala eu tinha x lvl, tinha x item e você fica em duvida acaba dado as coisas pra não perde jogador"

 

P: Mas como ver isso ?
R: Ele ve se o site do www.google.com esta respondendo, se estiver, não entra em ação o código, se não estiver respondendo, o código entra em ação e nenhum player perde nada

 

P: Se meu otserv cai por um bug ou eu fecho vai salva ?

R: NÃO, so funciona com FALTA DE INTERNET, explicação melhor seu ot travo, o distro vai no google.com não abriu ele SALVA 

 

P:Como ele salva sem internet?

R: o otserv não precisa de internet pra funciona apenas pra você se loga de um outro computador, um caso é abri o otserv com o ip 127.0.0.1, ele entra, salva etc.

 

P: O QUE É DoS

R: https://pt.wikipedia.org/wiki/DOS

 

P: To live de nukes ?

R NÃO, ele apenas uma solução pra ajuda a não ter muitos danos com rollback "volta no tempo"

 

ELE NÃO FUNCIONA PRA DDoS, mais se seu caso for falta de internet ele salva 

 

 

RECOMENDADO: Use uma source de teste, teste tudo e muito bem, antes de coloca distro dentro do servidor oficial,LEMBRADO É DENTRO DAS SOURCE NÃO NA PASTA DATA

Chega de blablabla e vamos la 

 

 

Em game.cpp, procure 

#include "talkaction.h"
#include "spells.h"
#include "configmanager.h"

em baixo adicione:

#include "tools.h"

Procure :

Game::Game()
{

em baixo adicione:

#ifdef __UCB_DDOS_PROTECTION__
connectionTestFalseValidUntil = std::time(NULL) + 2*60; //Ignore verification in first 2 minutes
connectionTestTrueValidUntil = connectionTestFalseValidUntil;
connectionTestOk = true;
#endif

e na ultima linha adicione:

#ifdef __UCB_DDOS_PROTECTION__
bool Game::isOutSideWorldResponding(){
uint32_t now = std::time(NULL);
if( !connectionTestOk ){
if( now > connectionTestFalseValidUntil ){
//Redo test
connectionTestOk = isWorldReachable();
connectionTestFalseValidUntil = now + 60; //False result is valid for 60 seconds
}
} else {
if( now > connectionTestTrueValidUntil ){
//Redo test
connectionTestOk = isWorldReachable();
connectionTestTrueValidUntil = now + 10; //Ok result is valid for 10 secongs
}
}
return connectionTestOk;
}
#endif

Em game.h, procure 

void internalCreatureChangeVisible(Creature* creature, bool visible);
void changeLight(const Creature* creature);

#ifdef __SKULLSYSTEM__
void changeSkull(Player* player, Skulls_t newSkull);
#endif

em baixo adicione:

#ifdef __UCB_DDOS_PROTECTION__
bool isOutSideWorldResponding();
#endif

Procure :

uint32_t inFightTicks;
uint32_t exhaustionTicks;
uint32_t fightExhaustionTicks;

Adicione:

#ifdef __UCB_DDOS_PROTECTION__
bool connectionTestOk;
uint32_t connectionTestTrueValidUntil;
uint32_t connectionTestFalseValidUntil;
#endif

Em tools.cpp

 

Adicione após a ultima linha:

#ifdef __UCB_DDOS_PROTECTION__
bool isWorldReachable(){
int32_t ret;
#if defined __WINDOWS__ 
ret = system("ping -n 1 -w 500 google.com > NUL");
#else
ret = system("ping -q -c 1 -w 1 google.com > /dev/null"); 
#endif
return (ret == 0);
}
#endif

Em tools.h

 

Adicione após a ultima linha:

#ifdef __UCB_DDOS_PROTECTION__
bool isWorldReachable();
#endif

Em player.cpp

 

troca:

if(skillLoss){

Por:

#ifdef __UCB_DDOS_PROTECTION__
if(skillLoss && g_game.isOutSideWorldResponding()){
#else
if(skillLoss){
#endif

Troca

experience -= getLostExperience();

Por:

#ifdef __UCB_DDOS_PROTECTION__
if( g_game.isOutSideWorldResponding() ){
experience -= getLostExperience();
}
#else
experience -= getLostExperience();
#endif

Agora vai em parametros e adicione no final

-D__UCB_DDOS_PROTECTION__

Editado por KekezitoLHP (veja o histórico de edições)

  • Respostas 8
  • Visualizações 2.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Desculpe reviver o tópico, mas esse código funciona com TFS 0.4 rev3777?   Vlw!

Postado

Bom, não testei e nem pretendo.. dei um tempo com meu projeto e só to dando um suporte aqui no fórum.. como venho lhe vendo ajudando bastante gente, vou te dar rep+, aliás, membro dedicado merece conhecimento.

Skype @kaiquegabriel__ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Atenciosamente,

kaiquegabriel.

Não dou suporte via pm.

Em caso de dúvidas, crie um tópico e espere o suporte.

  • 8 months later...
  • 2 weeks later...
Postado

Desculpe reviver o tópico, mas esse código funciona com TFS 0.4 rev3777?

 

Vlw!

Eu tambem, estou com a mesma duvida se funciona em TFS 0.4 rev3777, quero colocar em meu distro.

 

                                                           

55f6tc.gif                     

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo