[1 - limit_time + libserverkey] Novaline altyapı kullanılmayan kodları kaldırma serisi.

Kaptan Yosun

Moderatör
Moderatör
Geliştirici
Yardımsever Üye
Mesaj
1.025
Çözümler
35
Beğeni
1.077
Puan
1.339
Ticaret Puanı
0
Pek çok sitede paylaşılmış olsa da hepsi mainline için. Novaline'da fazla / eksik kodlar olabiliyor. Kendim sıfırdan altyapı hazırlarken bu kodları kaldıracağım ve kaldırırken de Novaline için bu kılavuzu yazacağım. O yüzden konuyu takip ederseniz zamanla yeni kod kaldırma kılavuzları eklediğimi görebilirsiniz. Kılavuz bittiğinde altyapınızı pek çok ölü kod ve sistemden arındırabilirsiniz. Başlayalım...

(!!) = novaline'da bu dosya/kod yok ama yine de emin olmak için aratın

1- Limit_time + Libserverkey: Ymir'in server lisans kontrolü.

Server/db/src

Server/db/src/clientmanagerlogin.cpp içinde
aratın ve silin:
Genişlet Daralt Kopyala
#ifdef ENABLE_LIMIT_TIME
    static int s_updateCount = 0;
    static int s_curTime = time(0);
    if (s_updateCount > 100)
    {
        s_curTime = time(0);
        s_updateCount = 0;
    }
    ++s_updateCount;

    if (s_curTime >= GLOBAL_LIMIT_TIME)
    {
        sys_err("Server life time expired.");
        exit(0);
        return;
    }
#endif

Server/game/src klasöründen check_server.cpp(!!) + check_server.h + limit_time.h + update_limit_time.py silin.

Server/Makefile içinde
aratın ve silin:
Genişlet Daralt Kopyala
    $(MAKE) -C $@/src limit_time
aratın ve silin:
Genişlet Daralt Kopyala
    $(MAKE) -C game/src limit_time
aratın ve silin:
Genişlet Daralt Kopyala
 libserverkey
aratın ve silin:
Genişlet Daralt Kopyala
libserverkey: .
    @touch $@/Depend
    $(MAKE) -C $@ dep
    $(MAKE) -C $@ clean
    $(MAKE) -C $@
aratın ve silin:
Genişlet Daralt Kopyala
libserverkey: .
    @touch $@/Depend
    $(MAKE) -C $@ dep
    $(MAKE) -C $@ clean
    $(MAKE) -C $@
aratın ve silin:
Genişlet Daralt Kopyala
    $(MAKE) -C libserverkey clean

Server/game/src/Makefile içinde
aratın ve silin:
Genişlet Daralt Kopyala
limit_time:
    @echo update limit time
    @python update_limit_time.py
aratın ve silin:
Genişlet Daralt Kopyala
INCDIR += -I../../libserverkey
aratın ve silin:
Genişlet Daralt Kopyala
 -L../../libserverkey
aratın ve silin:
Genişlet Daralt Kopyala
 -lserverkey
aratın ve silin(!!):
Genişlet Daralt Kopyala
 check_server.cpp

Server/game/src/desc.cpp içinde
aratın ve silin:
Genişlet Daralt Kopyala
#ifdef ENABLE_LIMIT_TIME
    if ((unsigned)get_global_time() >= GLOBAL_LIMIT_TIME)
    {
        sys_err("Server life time expired.");
        extern void ClearAdminPages();
        ClearAdminPages();
        exit(1);
    }
#endif

Server/game/src/config.cpp içinde
aratın ve silin:
Genişlet Daralt Kopyala
#include "check_server.h"
aratın ve silin:
Genişlet Daralt Kopyala
        TOKEN("server_key")
        {
            CCheckServer::Instance().AddServerKey(value_string);
            continue;
        }

Server/game/src/input.cpp içinde
aratın ve silin:
Genişlet Daralt Kopyala
#include "check_server.h"
aratın ve silin:
Genişlet Daralt Kopyala
#ifndef __WIN32__
    #include "limit_time.h"
#endif
aratın ve silin:
Genişlet Daralt Kopyala
#ifdef ENABLE_LIMIT_TIME
    //if (!CCheckServer::Instance().IsValid())
    //{
    //    ClearAdminPages();
    //    return;
    //}
#endif

aratın ve silin(!!):
Genişlet Daralt Kopyala
    extern bool Metin2Server_IsInvalid();

aratın ve silin(!!):
Genişlet Daralt Kopyala
    if (Metin2Server_IsInvalid())
    {
        extern bool g_bShutdown;
        g_bShutdown = true;
        ClearAdminPages();
    }

Server/game/src/input_auth.cpp içinde
aratın ve silin:
Genişlet Daralt Kopyala
#include "check_server.h"
aratın ve silin:
Genişlet Daralt Kopyala
#ifndef __WIN32__
    #include "limit_time.h"
#endif
aratın ve silin:
Genişlet Daralt Kopyala
#ifdef ENABLE_LIMIT_TIME
    //if (!CCheckServer::Instance().IsValid())
    //{
    //    extern void ClearAdminPages();
    //    ClearAdminPages();
    //    exit(1);
    //    return;
    //}
#endif
aratın ve silin:
Genişlet Daralt Kopyala
#ifdef ENABLE_LIMIT_TIME
    //if (!CCheckServer::Instance().IsValid())
    //{
    //    extern void ClearAdminPages();
    //    ClearAdminPages();
    //    exit(1);
    //    return;
    //}
#endif
aratın ve silin(!!):
Genişlet Daralt Kopyala
    Metin2Server_IsInvalid();
    extern bool Metin2Server_IsInvalid();
aratın ve silin(!!):
Genişlet Daralt Kopyala
    if (Metin2Server_IsInvalid())
    {
        extern void ClearAdminPages();
        ClearAdminPages();
        exit(1);
        return;
    }

Server/game/src/main.cpp içinde
aratın ve silin:
Genişlet Daralt Kopyala
#ifndef __WIN32__
    #include "limit_time.h"
#endif
aratın ve silin:
Genişlet Daralt Kopyala
#ifdef ENABLE_LIMIT_TIME
        if ((unsigned)get_global_time() >= GLOBAL_LIMIT_TIME)
        {
            sys_err("Server life time expired.");
            g_bShutdown = true;
        }
#endif
aratın ve silin:
Genişlet Daralt Kopyala
#ifdef ENABLE_LIMIT_TIME
    if ((unsigned)get_global_time() >= GLOBAL_LIMIT_TIME)
    {
        sys_err("Server life time expired.");
        return 0;
    }
#endif
aratın ve silin:
Genişlet Daralt Kopyala
//// 윈도우에서 테스트할 때는 항상 서버키 체크
//#ifdef _WIN32
    #define _USE_SERVER_KEY_
//#endif
#include "check_server.h"
aratın ve silin:
Genişlet Daralt Kopyala
    CCheckServer checkServer;
aratın ve silin(!!):
Genişlet Daralt Kopyala
Metin2Server_IsInvalid
static bool g_isInvalidServer = false;
aratın ve silin(!!):
Genişlet Daralt Kopyala
    bool Metin2Server_IsInvalid()
    {
        return g_isInvalidServer;
    }
aratın ve silin:
Genişlet Daralt Kopyala
//void Metin2Server_Check()
//{
// 더 이상 사용안하는 서버 유효 체크 by chrislee
//
//    if (LC_IsEurope() || test_server)
//        return;
//    static const size_t CheckServerListSize = 1;
//    static const char* CheckServerList[] = { "202.31.178.251"};
//    static const int CheckServerPort = 7120;
//
//    socket_t sockConnector = INVALID_SOCKET;
//
//    for (size_t i = 0 ; i < CheckServerListSize ; i++)
//    {
//        sockConnector = socket_connect( CheckServerList[i], CheckServerPort );
//
//        if (0 < sockConnector)
//            break;
//    }
//
//    if (0 > sockConnector)
//    {
//        if (true != LC_IsEurope()) // 유럽은 접속을 하지 못하면 인증된 것으로 간주
//            g_isInvalidServer = true;
//
//        return;
//    }
//
//    char buf[256] = { 0, };
//
//    socket_read(sockConnector, buf, sizeof(buf) - 1);
//
//    sys_log(0, "recv[%s]", buf);
//   
//    if (strncmp(buf, "OK", 2) == 0)
//        g_isInvalidServer = false;
//    else if (strncmp(buf, "CK", 2) == 0)
//        g_isInvalidServer = true;
//
//    socket_close(sockConnector);
//}
aratın ve silin:
Genişlet Daralt Kopyala
        if (!CCheckServer::Instance().CheckIP(g_szPublicIP)) {
            char pszRevision[128] = "I don't care";   
#ifdef _WIN32
            fprintf(stderr, "[main] Check IP failed\n");
#else
            strncpy (pszRevision,  __SVN_VERSION__, sizeof(pszRevision));
#endif
            LogManager::Instance().InvalidServerLog(LC_GetLocalType(), g_szPublicIP, pszRevision);
        }
aratın ve silin(!!):
Genişlet Daralt Kopyala
Metin2Server_Check();

Ve son olarak Server ana dizininden "libserverkey" klasörünü tamamen silebilirsiniz.
 
Son düzenleme:
Öncelikle emeğin için teşekkürler, fikir olarak gayet faydalı bir rehber konusu. Ancak günümüzde novaline kullanıcısı yok denecek kadar az. Belki de yoktur bile.
Sebebi ise biraz da tarihe dayanıyor. Yıllardır insanlar tamamen saf olması sebebiyle mainline ile başlayıp ilerledi, paylaşımların çoğu mainline için yapıldı. Novaline ise hem ufak tefek farklılıkları ile, hem de az tercih edilmesi sebebiyle mainline'ın gerisinde kaldı. Yani mainline, istisnalar dışında(marty vb.) bütün metin2 geliştiricilerinin anlaşabildiği ortak bir dil oldu diyebiliriz.

Geçmişte de novaline kullanmış biri olarak; bu güzel emeği novaline için harcama derim. Gereksiz kodların kaldırılması konusundaki paylaşımların hepsi mainline üzerine evet, ancak piyasada paylaşılmayan ve gereksiz olan daha bir çok kod var mainline da. Bunları tespit etmek çok daha iyi olur bence.
 
Öncelikle emeğin için teşekkürler, fikir olarak gayet faydalı bir rehber konusu. Ancak günümüzde novaline kullanıcısı yok denecek kadar az. Belki de yoktur bile.
Sebebi ise biraz da tarihe dayanıyor. Yıllardır insanlar tamamen saf olması sebebiyle mainline ile başlayıp ilerledi, paylaşımların çoğu mainline için yapıldı. Novaline ise hem ufak tefek farklılıkları ile, hem de az tercih edilmesi sebebiyle mainline'ın gerisinde kaldı. Yani mainline, istisnalar dışında(marty vb.) bütün metin2 geliştiricilerinin anlaşabildiği ortak bir dil oldu diyebiliriz.

Geçmişte de novaline kullanmış biri olarak; bu güzel emeği novaline için harcama derim. Gereksiz kodların kaldırılması konusundaki paylaşımların hepsi mainline üzerine evet, ancak piyasada paylaşılmayan ve gereksiz olan daha bir çok kod var mainline da. Bunları tespit etmek çok daha iyi olur bence.
Ben de bir düşünmedim değil aslında bu konuyu. Novaline'a sistem eklemek de biraz problem. Kod ayarlamaları gerekiyor çoğu zaman. Teşekkür ederim. Haklısınız sanırım mainline ile devam edebilirim.
 
Son düzenleme:
dediginiz herşeyi yaptim ama puttyden game src ye gmake -j6 yaptığımda

root@Altyapiserver:/home/novaline/Srcs/Server/game/src # gmake -j6
gmake: *** No rule to make target 'check_server.h', needed by 'OBJDIR/config.o'. Stop.
bu hatayı veriyor nasil cözebilirim
 
ve o objdir klasöürünü sildikten sonra

1706420046256.webp

gmake clean ve sonrası gmake -j20 yaptım ve olan bu hata ne olabilir
 
dediginiz herşeyi yaptim ama puttyden game src ye gmake -j6 yaptığımda

root@Altyapiserver:/home/novaline/Srcs/Server/game/src # gmake -j6
gmake: *** No rule to make target 'check_server.h', needed by 'OBJDIR/config.o'. Stop.
bu hatayı veriyor nasil cözebilirim
Önce gmake clean yapın sonra gmake dep ve ardından gmake -j6 yapın.
 
Geri
Üst