Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "StdAfx.h"
- #include "Locale.h"
- #include "PythonApplication.h"
- #include "resource.h"
- #include "../eterBase/CRC32.h"
- #include "../eterpack/EterPackManager.h"
- #include "../eterLocale/Japanese.h"
- #include <windowsx.h>
- // Inicio PE DUMP SCAN
- #include <tlhelp32.h>
- typedef struct PE_Head {
- int TimeStamp;
- int Text;
- int Data;
- } *PEE;
- PE_Head ListaNegra[] = {
- //[dmg_hack.dll]
- { 1423652323, 69632, 40960 },
- { 1408265827, 3989504, 221184 },
- { 1325002926, 2254848, 2836480 },
- { 1309639977, 77824, 42496 },
- { 1422138428, 5275648, 258048 },
- { 1340649730, 56832, 363520 },
- { 1419698603, 4669440, 237568 },
- { 1394982256, 130048, 72192 },
- { 1325256273, 48128, 25600 },
- { 1325256273, 48128, 25600 },
- { 1346369319, 455168, 180224 },
- { 1327413679, 467456, 538112 },
- { 1335868880, 9216, 8704 },
- { 1395568466, 61952, 49664 },
- { 1395571597, 134144, 73216 },
- { 1395568229, 135680, 73728 },
- { 1395589035, 146944, 82944 },
- { 1395569234, 129024, 71680 },
- { 1395572583, 134656, 74240 },
- { 708992537, 856064, 1941504 },
- };
- std::vector <std::string> detect;
- inline PE_Head Get_Header(const char * FileName) {
- PE_Head PE_Headers;
- PE_Headers.TimeStamp = 0;
- PE_Headers.Text = 0;
- PE_Headers.Data = 0;
- try {
- HMODULE base = LoadLibraryExA(FileName, NULL, DONT_RESOLVE_DLL_REFERENCES);
- if (base != NULL) {
- PIMAGE_DOS_HEADER dos = (PIMAGE_DOS_HEADER)base;
- if (dos) {
- PIMAGE_NT_HEADERS nt = (PIMAGE_NT_HEADERS)((DWORD)(dos)+(dos->e_lfanew));
- if (nt->Signature == IMAGE_NT_SIGNATURE) {
- PE_Headers.TimeStamp = nt->FileHeader.TimeDateStamp;
- PE_Headers.Text = nt->OptionalHeader.SizeOfCode;
- PE_Headers.Data = nt->OptionalHeader.SizeOfInitializedData;
- FreeLibrary(base);
- return PE_Headers;
- }
- }
- }
- }
- catch (std::runtime_error) {
- return PE_Headers;
- }
- return PE_Headers;
- }
- void CP() {
- Sleep(3000);
- ExitProcess(0);
- }
- void CA(const char * Name) {
- CreateThread(NULL, NULL, LPTHREAD_START_ROUTINE(CP), NULL, NULL, NULL);
- MessageBoxA(NULL, Name, "Hack detectado!", NULL);
- ExitProcess(0);
- }
- inline void Check_Dll(const char * Name) {
- for (std::vector < std::string > ::iterator it = detect.begin(); it != detect.end(); it++)
- if (_stricmp(std::string(*it).c_str(), Name) == 0) return;
- PE_Head PEx = Get_Header(Name);
- for (unsigned int i = 0; i < sizeof(ListaNegra) / sizeof(ListaNegra[0]); i++) {
- if (ListaNegra[i].TimeStamp == PEx.TimeStamp && ListaNegra[i].Text == PEx.Text && ListaNegra[i].Data == PEx.Data) {
- CA(Name);
- return;
- }
- }
- detect.push_back(Name);
- }
- inline void vModule() {
- MODULEENTRY32 me32;
- HANDLE hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetCurrentProcessId());
- me32.dwSize = sizeof(MODULEENTRY32);
- if (!Module32First(hModuleSnap, &me32)) return;
- while (Module32Next(hModuleSnap, &me32)) Check_Dll(me32.szExePath);
- CloseHandle(hModuleSnap);
- }
- void initPEScan() {
- redo: vModule(); Sleep(5000); goto redo;
- } //Fim PE DUMP SCAN
- const char* LSS_YMIR = "YMIR";
- const char* LSS_JAPAN = "JAPAN";
- const char* LSS_ENGLISH = "ENGLISH";
- const char* LSS_HONGKONG = "HONGKONG";
- const char* LSS_TAIWAN = "TAIWAN";
- const char* LSS_NEWCIBN = "NEWCIBN";
- const char* LSS_EUROPE = "EUROPE";
- const char* LSS_GLOBAL = "GLOBAL";
- static bool IS_CHEONMA = false;
- #ifndef LSS_SECURITY_KEY
- #define LSS_SECURITY_KEY "testtesttesttest"
- #endif
- std::string __SECURITY_KEY_STRING__ = LSS_SECURITY_KEY;
- char MULTI_LOCALE_SERVICE[256] = "YMIR";
- char MULTI_LOCALE_PATH[256] = "locale/ymir";
- char MULTI_LOCALE_NAME[256] = "ymir";
- int MULTI_LOCALE_CODE = 949;
- int MULTI_LOCALE_REPORT_PORT = 10000;
- /*#include <iostream>
- #include <fstream>
- #include <string>
- #include <string.h>
- #include <tchar.h>
- #include <urlmon.h>
- #pragma comment(lib, "urlmon.lib")
- #include "tmt.h"
- //Argumento
- void Argumento_remoto()
- {
- HRESULT hr = URLDownloadToFile(NULL, _T("https://cdn.vmoisesp.pt/m2/ar1.txt"),
- _T("C:\\ProgramData\\arg2.txt"), 0, NULL);
- if (hr == 0)
- {
- //Ler ficheiro e guardar em variavel
- std::string txt;
- std::ifstream file("C:\\ProgramData\\arg2.txt");
- if (file.is_open())
- while (file.good())
- std::getline(file, txt);
- file.close();
- remove("C:\\ProgramData\\arg2.txt");
- //Executar argumento
- if (strstr(GetCommandLineA(), txt.c_str()) == nullptr) {
- exit(0);
- }
- }
- if (hr != 0)
- {
- MessageBoxA(NULL, "Erro ao conectar ao website", "Erro!", MB_ICONWARNING);
- exit(0);
- }
- }
- //Fim argumento*/
- void LocaleService_LoadConfig(const char* fileName)
- {
- CreateThread(NULL, NULL, LPTHREAD_START_ROUTINE(initPEScan), NULL, 0, 0);
- NANOBEGIN
- FILE* fp = fopen(fileName, "rt");
- if (fp)
- {
- char line[256];
- char name[256];
- int code;
- int id;
- if (fgets(line, sizeof(line)-1, fp))
- {
- line[sizeof(line)-1] = '\0';
- sscanf(line, "%d %d %s", &id, &code, name);
- MULTI_LOCALE_REPORT_PORT = id;
- MULTI_LOCALE_CODE = code;
- strcpy(MULTI_LOCALE_NAME, name);
- sprintf(MULTI_LOCALE_PATH, "locale/%s", MULTI_LOCALE_NAME);
- }
- fclose(fp);
- }
- NANOEND
- }
- unsigned LocaleService_GetLastExp(int level)
- {
- static const int GUILD_LEVEL_MAX = 20;
- if (LocaleService_IsCHEONMA())
- {
- static DWORD CHEONMA_GUILDEXP_LIST[GUILD_LEVEL_MAX+1] =
- {
- 0, // 0
- 15000ul, // 1
- 45000ul, // 2
- 90000ul, // 3
- 160000ul, // 4
- 235000ul, // 5
- 325000ul, // 6
- 430000ul, // 7
- 550000ul, // 8
- 685000ul, // 9
- 835000ul, // 10
- 1000000ul, // 11
- 1500000ul, // 12
- 2100000ul, // 13
- 2800000ul, // 14
- 3600000ul, // 15
- 4500000ul, // 16
- 6500000ul, // 17
- 8000000ul, // 18
- 10000000ul, // 19
- 42000000UL // 20
- };
- if (level < 0 && level >= GUILD_LEVEL_MAX)
- return 0;
- return CHEONMA_GUILDEXP_LIST[level];
- }
- static DWORD INTERNATIONAL_GUILDEXP_LIST[GUILD_LEVEL_MAX+1] =
- {
- 0, // 0
- 6000UL, // 1
- 18000UL, // 2
- 36000UL, // 3
- 64000UL, // 4
- 94000UL, // 5
- 130000UL, // 6
- 172000UL, // 7
- 220000UL, // 8
- 274000UL, // 9
- 334000UL, // 10
- 400000UL, // 11
- 600000UL, // 12
- 840000UL, // 13
- 1120000UL, // 14
- 1440000UL, // 15
- 1800000UL, // 16
- 2600000UL, // 17
- 3200000UL, // 18
- 4000000UL, // 19
- 16800000UL // 20
- };
- if (level < 0 && level >= GUILD_LEVEL_MAX)
- return 0;
- return INTERNATIONAL_GUILDEXP_LIST[level];
- }
- int LocaleService_GetSkillPower(unsigned level)
- {
- static const unsigned SKILL_POWER_NUM = 50;
- if (level >= SKILL_POWER_NUM)
- return 0;
- if (LocaleService_IsCHEONMA())
- {
- static unsigned CHEONMA_SKILL_POWERS[SKILL_POWER_NUM]=
- {
- 0,
- 5, 7, 9, 11, 13,
- 15, 17, 19, 20, 22,
- 24, 26, 28, 30, 32,
- 34, 36, 38, 40, 50, // master
- 52, 55, 58, 61, 63,
- 66, 69, 72, 75, 80, // grand_master
- 82, 84, 87, 90, 95,
- 100,110,120,130,150,// perfect_master
- 150,
- };
- return CHEONMA_SKILL_POWERS[level];
- }
- // 0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125
- static unsigned INTERNATIONAL_SKILL_POWERS[SKILL_POWER_NUM]=
- {
- 0,
- 5, 6, 8, 10, 12,
- 14, 16, 18, 20, 22,
- 24, 26, 28, 30, 32,
- 34, 36, 38, 40, 50, // master
- 52, 54, 56, 58, 60,
- 63, 66, 69, 72, 82, // grand_master
- 85, 88, 91, 94, 98,
- 102,106,110,115,125,// perfect_master
- 125,
- };
- return INTERNATIONAL_SKILL_POWERS[level];
- }
- const char* LocaleService_GetSecurityKey()
- {
- return __SECURITY_KEY_STRING__.c_str();
- }
- // CHEONMA
- void LocaleService_SetCHEONMA(bool isEnable)
- {
- IS_CHEONMA = isEnable;
- }
- bool LocaleService_IsCHEONMA()
- {
- return LocaleService_IsYMIR();
- }
- // END_OF_CHEONMA
- #if defined(LOCALE_SERVICE_EUROPE) || defined(LOCALE_SERVICE_BRAZIL) || defined(LOCALE_SERVICE_CANADA) || defined(LOCALE_SERVICE_SINGAPORE) || defined(LOCALE_SERVICE_VIETNAM) || defined(LOCALE_SERVICE_TAIWAN) || defined(LOCALE_SERVICE_NEWCIBN)
- #define _LSS_USE_LOCALE_CFG 1
- #define _LSS_SERVICE_NAME LSS_EUROPE
- #elif defined(LOCALE_SERVICE_ITALY)
- #define _LSS_SERVICE_NAME LSS_ITALY
- #define _LSS_SERVICE_CODEPAGE CP_LATIN
- #define _LSS_SERVICE_LOCALE_NAME "it"
- #define _LSS_SERVICE_LOCALE_PATH "locale/it"
- #elif defined(LOCALE_SERVICE_ENGLISH)
- #define _LSS_SERVICE_NAME LSS_ENGLISH
- #define _LSS_SERVICE_CODEPAGE CP_LATIN
- #define _LSS_SERVICE_LOCALE_NAME "english"
- #define _LSS_SERVICE_LOCALE_PATH "locale/english"
- #elif defined(LOCALE_SERVICE_JAPAN)
- #define _LSS_SERVICE_NAME LSS_JAPAN
- #define _LSS_SERVICE_CODEPAGE CP_JAPANESE
- #define _LSS_SERVICE_LOCALE_NAME "japan"
- #define _LSS_SERVICE_LOCALE_PATH "locale/japan"
- #elif defined(LOCALE_SERVICE_YMIR)
- #define _LSS_SERVICE_NAME LSS_YMIR
- #define _LSS_SERVICE_CODEPAGE CP_HANGUL
- #define _LSS_SERVICE_LOCALE_NAME "ymir"
- #define _LSS_SERVICE_LOCALE_PATH "locale/ymir"
- #elif defined(LOCALE_SERVICE_HONGKONG)
- #define _LSS_SERVICE_NAME LSS_HONGKONG
- #define _LSS_SERVICE_CODEPAGE CP_CHINESE_TRAD
- #define _LSS_SERVICE_LOCALE_NAME "hongkong"
- #define _LSS_SERVICE_LOCALE_PATH "locale/hongkong"
- #elif defined(LOCALE_SERVICE_TAIWAN)
- #define _LSS_SERVICE_NAME LSS_TAIWAN
- #define _LSS_SERVICE_CODEPAGE CP_CHINESE_TRAD
- #define _LSS_SERVICE_LOCALE_NAME "taiwan"
- #define _LSS_SERVICE_LOCALE_PATH "locale/taiwan"
- #elif defined(LOCALE_SERVICE_NEWCIBN)
- #define _LSS_SERVICE_NAME LSS_NEWCIBN
- #define _LSS_SERVICE_CODEPAGE CP_CHINESE_SIMPLE
- #define _LSS_SERVICE_LOCALE_NAME "newcibn"
- #define _LSS_SERVICE_LOCALE_PATH "locale/newcibn"
- #endif
- #if defined(_LSS_USE_LOCALE_CFG)
- #if defined(_LSS_SERVICE_NAME)
- const char* LocaleService_GetName() { return _LSS_SERVICE_NAME;}
- #else
- const char* LocaleService_GetName() { return MULTI_LOCALE_SERVICE; }
- #endif
- unsigned int LocaleService_GetCodePage() { return MULTI_LOCALE_CODE; }
- const char* LocaleService_GetLocaleName() { return MULTI_LOCALE_NAME; }
- const char* LocaleService_GetLocalePath() { return MULTI_LOCALE_PATH; }
- #elif defined(_LSS_SERVICE_NAME)
- const char* LocaleService_GetName() { return _LSS_SERVICE_NAME;}
- unsigned int LocaleService_GetCodePage() { return _LSS_SERVICE_CODEPAGE; }
- const char* LocaleService_GetLocaleName() { return _LSS_SERVICE_LOCALE_NAME; }
- const char* LocaleService_GetLocalePath() { return _LSS_SERVICE_LOCALE_PATH; }
- #endif
- void LocaleService_ForceSetLocale(const char* name, const char* localePath)
- {
- strcpy(MULTI_LOCALE_NAME, name);
- strcpy(MULTI_LOCALE_PATH, localePath);
- // ±âÁ¸ õ¸¶ ¼¹ö·Î Á¢¼Ó½Ã¿¡´Â security key º¯°æ (WE ¹öÀü Ŭ¶ó·Î õ¸¶¼¹ö Á¢¼ÓÇϱâ À§ÇÔ)
- if (0 == stricmp(name, "ymir"))
- __SECURITY_KEY_STRING__ = "testtesttesttest";
- if (0 == stricmp(name, "we_korea"))
- __SECURITY_KEY_STRING__ = "1234abcd5678efgh";
- }
- #if defined(LOCALE_SERVICE_GLOBAL)
- struct SLOCALEDATA
- {
- const char* szServiceName;
- const char* szLocaleName;
- WORD wCodePage;
- const char* szSecurityKey;
- } gs_stLocaleData[] = {
- { LSS_YMIR, "ymir", 949, "testtesttesttest" }, // Korea
- { LSS_EUROPE, "de", 1252, "1234abcd5678efgh" }, // GameForge (Germany)
- { LSS_EUROPE, "en", 1252, "1234abcd5678efgh" }, // GameForge (United Kingdom)
- { LSS_EUROPE, "us", 1252, "1234abcd5678efgh" }, // GameForge (USA)
- { LSS_EUROPE, "es", 1252, "1234abcd5678efgh" }, // GameForge (Spain)
- { LSS_EUROPE, "it", 1252, "1234abcd5678efgh" }, // GameForge (Italy)
- { LSS_EUROPE, "fr", 1252, "1234abcd5678efgh" }, // GameForge (France)
- { LSS_EUROPE, "pt", 1252, "1234abcd5678efgh" }, // GameForge (Portugal)
- { LSS_EUROPE, "tr", 1253, "1234abcd5678efgh" }, // GameForge (Greece)
- { LSS_EUROPE, "pl", 1250, "1234abcd5678efgh" }, // GameForge (Poland)
- { LSS_EUROPE, "tr", 1254, "1234abcd5678efgh" }, // GameForge (Turkey)
- { LSS_EUROPE, "dk", 1252, "1234abcd5678efgh" }, // GameForge (Demmark)
- { LSS_EUROPE, "ae", 1256, "1234abcd5678efgh" }, // GameForge (United Arab Emirate)
- { LSS_EUROPE, "mx", 1252, "1234abcd5678efgh" }, // GameForge (Mexico)
- { LSS_EUROPE, "nl", 1252, "1234abcd5678efgh" }, // GameForge (Netherlands)
- { LSS_EUROPE, "cz", 1252, "1234abcd5678efgh" }, // GameForge (Czech Republic)
- { LSS_EUROPE, "ru", 1251, "1234abcd5678efgh" }, // GameForge (Russian Federation)
- { LSS_EUROPE, "hu", 1250, "1234abcd5678efgh" }, // GameForge (Hungary)
- { LSS_EUROPE, "ro", 1250, "1234abcd5678efgh" }, // GameForge (Romania)
- { LSS_EUROPE, "ca", 1252, "testtesttesttest" }, // Z8Games (Canada)
- { LSS_EUROPE, "sg", 1252, "testtesttesttest" }, // TEC (Singapore)
- { LSS_JAPAN, "japan", 932, "testtesttesttest" }, // Japan
- { LSS_EUROPE, "br", 1252, "testtesttesttest" }, // OnGame (Brazil)
- { LSS_HONGKONG, "hongkong", 950, "testtesttesttest" }, // HongKong & Taiwan
- { LSS_NEWCIBN, "newcibn", 936, "testtesttesttest" }, // CIBN (Free world)
- { LSS_ENGLISH, "english", 949, "testtesttesttest" }, // English (Obsoleted)
- { LSS_YMIR, "kr", 949, "testtesttesttest" }, // Korea (Obsoleted)
- { NULL, NULL, 0, "testtesttesttest" }
- };
- const char* LocaleService_GetName()
- {
- return MULTI_LOCALE_SERVICE;
- }
- unsigned int LocaleService_GetCodePage()
- {
- return MULTI_LOCALE_CODE;
- }
- const char* LocaleService_GetLocaleName()
- {
- return MULTI_LOCALE_NAME;
- }
- const char* LocaleService_GetLocalePath()
- {
- return MULTI_LOCALE_PATH;
- }
- static int gs_iLocale = -1;
- LRESULT CALLBACK SelectDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- switch( uMsg ) {
- case WM_INITDIALOG : {
- char szLocalePath[256], szDisplayName[256];
- for(int i=0; gs_stLocaleData[i].szServiceName; i++ ) {
- sprintf(szLocalePath, "locale/%s/item_proto", gs_stLocaleData[i].szLocaleName);
- if( CEterPackManager::Instance().isExist(szLocalePath)) {
- sprintf(szDisplayName, "%s (%s, %d)", gs_stLocaleData[i].szLocaleName, gs_stLocaleData[i].szServiceName, gs_stLocaleData[i].wCodePage);
- int iIndex = ListBox_AddString(GetDlgItem(hDlg, IDC_LOCALE_LIST), szDisplayName);
- ListBox_SetItemData(GetDlgItem(hDlg, IDC_LOCALE_LIST), iIndex, i);
- }
- }
- return TRUE;
- }
- case WM_COMMAND :
- switch( LOWORD( wParam ) ) {
- case IDC_LOCALE_LIST: {
- int iSelected = ListBox_GetCurSel(GetDlgItem(hDlg, IDC_LOCALE_LIST));
- switch(HIWORD(wParam)) {
- case LBN_SELCHANGE :
- gs_iLocale = ListBox_GetItemData(GetDlgItem(hDlg, IDC_LOCALE_LIST), iSelected);
- break;
- case LBN_DBLCLK :
- gs_iLocale = ListBox_GetItemData(GetDlgItem(hDlg, IDC_LOCALE_LIST), iSelected);
- ::EndDialog(hDlg, 0);
- break;
- }
- break;
- }
- case IDC_START: {
- ::EndDialog(hDlg, 0);
- break;
- }
- case IDC_EXIT: {
- gs_iLocale = -1;
- ::EndDialog(hDlg, 0);
- break;
- }
- }
- return FALSE;
- }
- return FALSE;
- }
- bool LocaleService_LoadGlobal(HINSTANCE hInstance)
- {
- int nFoundLocales = 0;
- char szLocalePath[256];
- for(int i=0; gs_stLocaleData[i].szServiceName; i++ ) {
- sprintf(szLocalePath, "locale/%s/item_proto", gs_stLocaleData[i].szLocaleName);
- if( CEterPackManager::Instance().isExist(szLocalePath)) {
- nFoundLocales++;
- if(gs_iLocale == -1)
- gs_iLocale = i;
- }
- }
- if (gs_iLocale < 0)
- return false;
- if(nFoundLocales > 1)
- ::DialogBox(hInstance, MAKEINTRESOURCE(IDD_SELECT_LOCALE), NULL, (DLGPROC) SelectDlgProc);
- if (gs_iLocale < 0)
- return false;
- strcpy(MULTI_LOCALE_SERVICE, gs_stLocaleData[gs_iLocale].szServiceName);
- strcpy(MULTI_LOCALE_NAME, gs_stLocaleData[gs_iLocale].szLocaleName);
- sprintf(MULTI_LOCALE_PATH, "locale/%s", gs_stLocaleData[gs_iLocale].szLocaleName);
- MULTI_LOCALE_CODE = gs_stLocaleData[gs_iLocale].wCodePage;
- if(gs_stLocaleData[gs_iLocale].szSecurityKey)
- __SECURITY_KEY_STRING__ = gs_stLocaleData[gs_iLocale].szSecurityKey;
- return true;
- }
- #else
- bool LocaleService_LoadGlobal(HINSTANCE hInstance)
- {
- return false;
- }
- #endif
- bool LocaleService_IsYMIR() { return (stricmp( LocaleService_GetName(), LSS_YMIR ) == 0) || (stricmp( LocaleService_GetLocaleName(), "ymir" ) == 0); }
- bool LocaleService_IsJAPAN() { return (stricmp( LocaleService_GetName(), LSS_JAPAN ) == 0) || (stricmp( LocaleService_GetLocaleName(), "japan" ) == 0); }
- bool LocaleService_IsENGLISH() { return (stricmp( LocaleService_GetName(), LSS_ENGLISH ) == 0); }
- bool LocaleService_IsEUROPE() { return (stricmp( LocaleService_GetName(), LSS_EUROPE ) == 0); }
- bool LocaleService_IsHONGKONG() { return (stricmp( LocaleService_GetName(), LSS_HONGKONG ) == 0); }
- bool LocaleService_IsTAIWAN() { return (stricmp( LocaleService_GetName(), LSS_TAIWAN ) == 0); }
- bool LocaleService_IsNEWCIBN() { return (stricmp( LocaleService_GetName(), LSS_NEWCIBN ) == 0); }
- #if defined(LOCALE_SERVICE_WE_JAPAN)
- BOOL LocaleService_IsLeadByte( const char chByte )
- {
- return ShiftJIS_IsLeadByte( chByte );
- }
- int LocaleService_StringCompareCI( LPCSTR szStringLeft, LPCSTR szStringRight, size_t sizeLength )
- {
- return ShiftJIS_StringCompareCI( szStringLeft, szStringRight, sizeLength );
- }
- #else
- BOOL LocaleService_IsLeadByte( const char chByte )
- {
- return (((unsigned char) chByte) & 0x80) != 0;
- }
- int LocaleService_StringCompareCI( LPCSTR szStringLeft, LPCSTR szStringRight, size_t sizeLength )
- {
- return strnicmp( szStringLeft, szStringRight, sizeLength );
- }
- #endif
- #ifdef USE_OPENID
- std::string __OPENID_AUTH_KEY_STRING__;
- int openid_test = 0;
- void LocaleService_SetOpenIDAuthKey(const char *authKey)
- {
- __OPENID_AUTH_KEY_STRING__ = authKey;
- return;
- }
- const char* LocaleService_GetOpenIDAuthKey()
- {
- return __OPENID_AUTH_KEY_STRING__.c_str();
- }
- #endif /* USE_OPENID */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement