Files
2025-02-07 19:13:59 +03:30

98 lines
2.9 KiB
Plaintext

/*
LicenceWebCheck.mqh
Copyright 2021, Orchard Forex
https://www.orchardforex.com
*/
#property copyright "Copyright 2013-2020, Orchard Forex"
#property link "https://www.orchardforex.com"
#property version "1.00"
// this is important for MT4
#property strict
#include "LicenceFileCheck.mqh"
class CLicenceWeb : public CLicenceFile {
protected:
string mAccount;
string mRegistration;
virtual bool LoadData( string &data );
virtual string LicencePath();
public:
CLicenceWeb( string productName, string productKey, string registration, long account = -1 );
~CLicenceWeb() {}
void SetRegistration();
void chekload1(string &dat1) {LoadData(dat1);}
};
CLicenceWeb::CLicenceWeb( string productName, string productKey, string registration, long account = -1 ) : CLicenceFile( productName, productKey ) {
mRegistration = registration;
if ( account < 0 ) {
account = AccountInfoInteger( ACCOUNT_LOGIN );
}
mAccount = string( account );
string data2;
chekload2(data2);
Print("data 2",data2);
}
void CLicenceWeb::SetRegistration() { mRegistration = Hash( mProductName + "_" + mAccount ); }
string CLicenceWeb::LicencePath() { return ( "Orchard\\Licence\\" + Hash( mProductName + "_" + mAccount ) + ".lic" ); }
bool CLicenceWeb::LoadData( string &data ) {
Print("load 01");
string headers = "";
char postData[];
char resultData[];
string resultHeaders;
int timeout = 5000; // 1 second, may be too short for a slow connection
string url = "https://raw.githubusercontent.com";
// string api = StringFormat( "https://drive.google.com/uc?id=%s&export=download", mRegistration );
// string api = StringFormat( "%s/OrchardForexTutorials/Licence/raw/main/%s.txt", url, mRegistration );
string api = StringFormat( "%s/amirghadiri1987/License/refs/heads/main/%s.lic", url, mRegistration );
Print("api ",api);
ResetLastError();
int response = WebRequest( "GET", api, headers, timeout, postData, resultData, resultHeaders );
int errorCode = GetLastError();
// Add this code to handle 303 redirect but it creates more problems
// if (response==303) {
// int locStart = StringFind(resultHeaders, "Location: ", 0)+10;
// int locEnd = StringFind(resultHeaders, "\r", locStart);
// api = StringSubstr(resultHeaders, locStart, locEnd-locStart);
// ResetLastError();
// response = WebRequest( "GET", api, headers, timeout, postData, resultData, resultHeaders );
// errorCode = GetLastError();
//}
data = CharArrayToString( resultData );
switch ( response ) {
case -1:
Print( "Error in WebRequest. Error code =", errorCode );
Print( "Add the address " + url + " in the list of allowed URLs" );
return false;
break;
case 200:
//--- Success
return true;
break;
default:
PrintFormat( "Unexpected response code %i", response );
return false;
break;
}
return false;
}