FrmMainF.cpp.~69~ 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "EncryptionF.h"
  4. #include <inifiles.hpp>
  5. #pragma hdrstop
  6. #include "FrmMainF.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. #pragma link "cxContainer"
  10. #pragma link "cxControls"
  11. #pragma link "cxEdit"
  12. #pragma link "cxGraphics"
  13. #pragma link "cxLookAndFeelPainters"
  14. #pragma link "cxLookAndFeels"
  15. #pragma link "cxMaskEdit"
  16. #pragma link "cxSpinEdit"
  17. #pragma link "cxTextEdit"
  18. #pragma link "dxSkinBlack"
  19. #pragma link "dxSkinMcSkin"
  20. #pragma link "dxSkinsCore"
  21. #pragma link "cxButtons"
  22. #pragma link "cxDropDownEdit"
  23. #pragma resource "*.dfm"
  24. TFrmMain *FrmMain;
  25. //---------------------------------------------------------------------------
  26. __fastcall TFrmMain::TFrmMain(TComponent* Owner)
  27. : TForm(Owner)
  28. {
  29. String FAppDir = ExtractFilePath(Application->ExeName);
  30. ConfigFileName = FAppDir + "\\License\\AipApiLicense.ini";
  31. CboLoginType->ItemIndex = -1;
  32. LoadConfig();
  33. }
  34. //---------------------------------------------------------------------------
  35. void __fastcall TFrmMain::LoadConfig()
  36. {
  37. TIniFile *pIniFile = NULL;
  38. pIniFile = new TIniFile(ConfigFileName);
  39. try
  40. {
  41. ApplicationName = pIniFile->ReadString("License", "ApplicationName", "");
  42. ApplicationVersion = pIniFile->ReadString("License", "ApplicationVersion", "");
  43. Domain = pIniFile->ReadString("License", "Domain", "");
  44. MipDataPath = pIniFile->ReadString("License", "MipDataPath", "");
  45. TenantId = pIniFile->ReadString("License", "TenantId", "");
  46. ClientId = pIniFile->ReadString("License", "ClientId", "");
  47. EMail = pIniFile->ReadString("License", "EMail", "");
  48. LoginType = pIniFile->ReadString("License", "LoginType", "1").ToIntDef(1);
  49. SecretValue = pIniFile->ReadString("License", "SecretValue", "");
  50. Thumbprint = pIniFile->ReadString("License", "Thumbprint", "");
  51. }
  52. __finally
  53. {
  54. if (pIniFile) delete pIniFile;
  55. pIniFile = NULL;
  56. }
  57. EdAppName->Text = ApplicationName;
  58. EdAppVersion->Text = ApplicationVersion;
  59. EdDomain->Text = Domain;
  60. EdMipDataPath->Text = MipDataPath;
  61. EdTenantId->Text = TenantId;
  62. EdClientId->Text = ClientId;
  63. EdEmail->Text = EMail;
  64. CboLoginType->ItemIndex = LoginType-1;
  65. EdSecretValue->Text = SecretValue;
  66. EdThumbPrint->Text = Thumbprint;
  67. }
  68. //---------------------------------------------------------------------------
  69. void __fastcall TFrmMain::SaveConfig()
  70. {
  71. TIniFile *pIniFile = NULL;
  72. pIniFile = new TIniFile(ConfigFileName);
  73. try
  74. {
  75. pIniFile->WriteString("License", "ApplicationName", ApplicationName);
  76. pIniFile->WriteString("License", "ApplicationVersion", ApplicationVersion);
  77. pIniFile->WriteString("License", "Domain", Domain);
  78. pIniFile->WriteString("License", "MipDataPath", MipDataPath);
  79. pIniFile->WriteString("License", "TenantId", TenantId);
  80. pIniFile->WriteString("License", "ClientId", ClientId);
  81. pIniFile->WriteString("License", "EMail", EMail);
  82. pIniFile->WriteString("License", "LoginType", String(LoginType+1));
  83. pIniFile->WriteString("License", "SecretValue", SecretValue);
  84. pIniFile->WriteString("License", "Thumbprint", Thumbprint);
  85. }
  86. __finally
  87. {
  88. if (pIniFile) delete pIniFile;
  89. pIniFile = NULL;
  90. }
  91. Application->NormalizeTopMosts();
  92. Application->MessageBox(L"AIP API 라이센스 정보를 저장하였습니다.\r\nAIP API Service 프로그램이 실행 중이면 프로그램을 재기동 하여야 설정 정보가 반영됩니다.",
  93. L"AIP API License File Save",
  94. MB_OK|MB_ICONINFORMATION);
  95. Application->RestoreTopMosts();
  96. }
  97. //---------------------------------------------------------------------------
  98. void __fastcall TFrmMain::BtnSaveClick(TObject *Sender)
  99. {
  100. #if 0
  101. GUID guid;
  102. CoCreateGuid(&guid);
  103. //UUID uuid;
  104. //UuidCreateSequential(&uuid);
  105. String product = "AIP Gateway";
  106. String serialId = GUIDToString(guid);
  107. serialId = StringReplace(serialId, "{", "", TReplaceFlags() << rfReplaceAll);
  108. serialId = StringReplace(serialId, "}", "", TReplaceFlags() << rfReplaceAll);
  109. String issueDay = Now().FormatString("YYYY-MM-DD");
  110. String licensee = txtHostName->Text.Trim();
  111. String edition = cboProductType->ItemIndex == 0 ? "standard" : "enterprise";
  112. String type = cboLicenseType->ItemIndex == 0 ? "demo" : "product";
  113. String accounts = String((int)seLicenseCnt->Value);
  114. String identifiedHost = txtHostName->Text.Trim();
  115. AnsiString encKey = product.UpperCase() + "hanteinfo12#$!" + serialId.LowerCase() + issueDay + edition.UpperCase() + type.LowerCase() + AnsiString((int)seLicenseCnt->Value + 10000) + identifiedHost.LowerCase();
  116. String signature = ITSSHA256_Encrpyt(encKey);;
  117. String demoDuration = String((int)seDemoDuration->Value);
  118. moLicenseXml->Lines->Add("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
  119. moLicenseXml->Lines->Add("<aip_license>");
  120. moLicenseXml->Lines->Add(" <license version=\"1.0\">");
  121. moLicenseXml->Lines->Add(" <product version=\"2\">" + product + "</product>");
  122. moLicenseXml->Lines->Add(" <serialId>" + serialId + "</serialId>");
  123. moLicenseXml->Lines->Add(" <issueDay>" + issueDay + "</issueDay>");
  124. //moLicenseXml->Lines->Add(" <licensee>" + licensee + "</licensee>");
  125. moLicenseXml->Lines->Add(" <edition>" + edition + "</edition>");
  126. moLicenseXml->Lines->Add(" <type>" + type + "</type>");
  127. moLicenseXml->Lines->Add(" <accounts>" + accounts + "</accounts>");
  128. moLicenseXml->Lines->Add(" <identifiedHost>" + identifiedHost + "</identifiedHost>");
  129. moLicenseXml->Lines->Add(" <signature>" + signature + "</signature>");
  130. if (type == "demo") {
  131. moLicenseXml->Lines->Add(" <demoDuration>" + demoDuration + "</demoDuration>");
  132. }
  133. moLicenseXml->Lines->Add(" </license>");
  134. moLicenseXml->Lines->Add("</aip_license>");
  135. moLicenseXml->Lines->Add("");
  136. #endif
  137. }
  138. //---------------------------------------------------------------------------
  139. void __fastcall TFrmMain::CboLoginTypePropertiesChange(TObject *Sender)
  140. {
  141. if (CboLoginType->ItemIndex == 0) {
  142. LblHint->Caption = "Secret Value 값을 설정하세요.";
  143. }
  144. else if (CboLoginType->ItemIndex == 1) {
  145. LblHint->Caption = "Certificate's thumbprint 값을 설정하세요.";
  146. }
  147. else {
  148. LblHint->Caption = "Login Type 을 선택하세요.";
  149. }
  150. }
  151. //---------------------------------------------------------------------------
  152. void __fastcall TFrmMain::ChkViewClick(TObject *Sender)
  153. {
  154. EdSecretValue->Properties->PasswordChar = ChkView->Checked ? wchar_t("*") : wchar_t("#0");
  155. }
  156. //---------------------------------------------------------------------------