//--------------------------------------------------------------------------- #include #pragma hdrstop #include "WebActivationTempKey_F.h" #include "common.h" #include "Define.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "RzButton" #pragma link "RzLabel" #pragma resource "*.dfm" //--------------------------------------------------------------------------- #define IDS_KEY_SUCCESS StringTable[0] #define IDS_DEFICIENT_PARAM StringTable[1] #define IDS_INVALID_USETERM StringTable[2] #define IDS_INVALID_EMAIL StringTable[3] #define IDS_UNREGISTERD_EMAIL StringTable[4] #define IDS_INVALID_KEY StringTable[5] #define IDS_ACTIVATION_SUCCESS StringTable[6] #define IDS_ACTIVATION_CANCLE StringTable[7] #define IDS_ACTIVATION_EXIT StringTable[8] #define IDS_ACTVFORM_CAPTION StringTable[9] #define IDS_ACTVFORM_USERNAME StringTable[10] #define IDS_ACTVFORM_EMAIL StringTable[11] #define IDS_ACTVFORM_COMPANY StringTable[12] #define IDS_ACTVFORM_GROUP StringTable[13] #define IDS_ACTVFORM_DURATION StringTable[14] #define IDS_ACTVFORM_GETAKEY StringTable[15] #define IDS_ACTVFORM_INPUTAKEY StringTable[16] #define IDS_ACTVFORM_ACTIVATE StringTable[17] #define IDS_TEMPFORM_CAPTION StringTable[18] #define IDS_NOT_APPOINTED_TIME StringTable[19] #define IDS_CONFIRM_CAPTION StringTable[20] #define IDS_REMEMBER_ME StringTable[21] #define IDS_UNIT_DAY StringTable[22] #define IDS_CONFIRM_QUESTION StringTable[23] #define IDS_NET_WARNING_CAPTION StringTable[24] #define IDS_NET_WARNING_MESSAGE StringTable[25] #define IDS_OFFLINE_MESSAGE StringTable[26] #define IDS_NET_WARNING_OK StringTable[27] //--------------------------------------------------------------------------- TTempKeyDialogForm *TempKeyDialogForm; //--------------------------------------------------------------------------- __fastcall TTempKeyDialogForm::TTempKeyDialogForm(TComponent* Owner) : TForm(Owner) { DefaultSet(); LoadFromMainRegIniFile(); StringTable.Create(DirectoryBin, Language, "WebActivation"); MACaddress = GetMACaddress(); if (_tcscmp(MACaddress.c_str(), _T("000000000000"))) LogForAdd = new ActvLog(Application); } //--------------------------------------------------------------------------- void __fastcall TTempKeyDialogForm::FormCreate(TObject *Sender) { imgBackground->Picture->LoadFromFile(DirectoryBin + "\\tempkey.bmp"); if (!_tcscmp(MACaddress.c_str(), _T("000000000000"))) { lbeSerialNumber->Visible = false; inpAkey->Visible = false; rzbtnEnterKey->Visible = false; Caption = IDS_NET_WARNING_CAPTION; rzlbNotice->Caption = IDS_NET_WARNING_MESSAGE; rzbtnOK->Caption = IDS_NET_WARNING_OK; Height = 208; Width = 376; rzbtnOK->Visible = true; rzbtnOK->Default = true; None_Query = true; } else { Caption = IDS_TEMPFORM_CAPTION; rzlbNotice->Caption = IDS_OFFLINE_MESSAGE; lbeSerialNumber->Text = MACaddress; inpAkey->EditLabel->Caption = IDS_ACTVFORM_INPUTAKEY; rzbtnEnterKey->Caption = IDS_ACTVFORM_ACTIVATE; None_Query = false; } } //--------------------------------------------------------------------------- void __fastcall TTempKeyDialogForm::FormCloseQuery(TObject *Sender, bool &CanClose) { if (None_Query) { CanClose = true; return; } int YesOrNo; if (ModalResult == mrOk) { CanClose = true; return; } YesOrNo = Application->MessageBox(IDS_ACTIVATION_EXIT.c_str(), IDS_ACTIVATION_CANCLE.c_str(), MB_YESNO); CanClose = (YesOrNo == IDYES); } //--------------------------------------------------------------------------- void __fastcall TTempKeyDialogForm::rzbtnEnterKeyClick(TObject *Sender) { String key, Unhashed; String mac, pcode; String keyBTime, strkeyBTime; // Begin Time »ç¿ë ¿¹Á¤ ½Ã°¢ (¹ß±Þ½Ã °áÁ¤) String useTime; SYSTEMTIME sysLTime; // system Local Time ½ÇÁ¦ »ç¿ë ½ÃÀÛ ½Ã°¢ String strsysLTime; int dTime; // ½Ã°£ Â÷(ºÐ) TDateTime dtkeyBT, dtsysLT; key = inpAkey->Text; Unhashed = keyHash(key); // [ Unhashed key ] // MACaddress(8) + UseTime(4) + BeginTime(12) + Program&Version(5) mac = Unhashed.SubString(1, 4); // DC37 pcode = Unhashed.SubString(21, 5); // **012 keyBTime = Unhashed.SubString(9, 12); // YYMMDDhhmmss useTime = Unhashed.SubString(5, 4); // **10 (´ÜÀ§ : day) // remove * character from the start of the string (ÇÁ·Î±×·¥&¹öÀü , »ç¿ë½Ã°£) while(pcode.c_str()[0] == '*') { pcode = pcode.SubString(2, pcode.Length() - 1); } while(useTime.c_str()[0] == '*') { useTime = useTime.SubString(2, useTime.Length() - 1); } // MAC address & ÇÁ·Î±×·¥ ¹× ¹öÀü °Ë»ç if (!(mac == MACaddress.SubString(1, 4)) || !(pcode == PRG_VSN)) { // MAC address & ÇÁ·Î±×·¥ ¹× ¹öÀü °Ë»ç Application->MessageBox(IDS_INVALID_KEY.c_str(), _T("FAIL"), MB_OK); return; } // ¿¹Á¤½Ã°¢°ú ½Ç»ç¿ë½ÃÀ۽𢠰£ Â÷ÀÌ ±¸Çϱâ À§ÇØ TDateTimeÀ¸·Î º¯È¯ strkeyBTime = "20" + keyBTime.SubString(1, 2) + "-"; strkeyBTime += keyBTime.SubString(3, 2) + "-"; strkeyBTime += keyBTime.SubString(5, 2) + " "; strkeyBTime += keyBTime.SubString(7, 2) + ":"; strkeyBTime += keyBTime.SubString(9, 2) + ":"; strkeyBTime += keyBTime.SubString(11, 2); GetLocalTime(&sysLTime); strsysLTime.sprintf(_T("%d-%02d-%02d %02d:%02d:%02d"), sysLTime.wYear, sysLTime.wMonth, sysLTime.wDay, sysLTime.wHour, sysLTime.wMinute, sysLTime.wSecond); dtkeyBT = StrToDateTime(strkeyBTime); dtsysLT = StrToDateTime(strsysLTime); dTime = MinutesBetween(dtkeyBT, dtsysLT); // »ç¿ë ½ÃÀÛ ½Ã°¢ ÀÏÄ¡ ¿©ºÎ °Ë»ç if (dTime > 20) { Application->MessageBox(IDS_NOT_APPOINTED_TIME.c_str(), _T("FAIL"), MB_OK); return; } int sec_useTime; sec_useTime = useTime.ToInt() * 24 * 3600; if (LogForAdd) LogForAdd->AddLog(sec_useTime); Application->MessageBox(IDS_ACTIVATION_SUCCESS.c_str(), _T("SUCCESS"), MB_OK); ModalResult = mrOk; } //--------------------------------------------------------------------------- void __fastcall TTempKeyDialogForm::FormDestroy(TObject *Sender) { if (LogForAdd) { delete LogForAdd; LogForAdd = NULL; } } //--------------------------------------------------------------------------- void __fastcall TTempKeyDialogForm::rzbtnOKClick(TObject *Sender) { Close(); } //---------------------------------------------------------------------------