• 30-09-2014, 11:06:37
    #1
    Merhabalar,
    WHMCS Licensing Addon modülünün kullanımı hakkında bilgi arıyorum.
    Örnek olarak whmcs lisans modülünü kullanacağım. Lisans satın alındığında normal olarak müşteri lisans kodunu görecek. Bu lisans kodunu lisansli_dosya.php dosyasına yazacak. Lisans aktifse sayfa açılacak. Aktif değilse açılmayacak.

    Bununla ilgili bir iki örnek kod gösterebilecek arkadaş varmı? Teşekkürler.
  • 30-09-2014, 12:03:53
    #2
    Üyeliği durduruldu
    if ($results['status'] == 'Active') {
    
    Kodlarınız
    
    }
    <?php 
    
    if (!file_exists( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'lisans.php' )) {
    		exit( 'lisans.php dosyası bulunamadı. (' . php_sapi_name(  ) . ')' . ( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'lisans.php' ) );
    	}
    
    	require( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'lisans.php' );
    	$licensekey = $whmcs_licensekey;
    	$localkey = whmcs_getlocalkey(  );
    	$whmcsurl = 'http://www.domainadi.com';
    	$licensing_secret_key = '123456789asd';
    	$check_token = time(  ) . md5( mt_rand( 1000000000, 9999999999 ) . $licensekey );
    	$checkdate = date( 'Ymd' );
    	$usersip = (isset( $_SERVER['SERVER_ADDR'] ) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR']);
    	$localkeydays = 1;
    	$allowcheckfaildays = 1;
    	$localkeyvalid = false;
    
    	if ($localkey) {
    		$localkey = str_replace( '', '', $localkey );
    		$localdata = substr( $localkey, 0, strlen( $localkey ) - 32 );
    		$md5hash = substr( $localkey, strlen( $localkey ) - 32 );
    
    		if ($md5hash == md5( $localdata . $licensing_secret_key )) {
    			$localdata = strrev( $localdata );
    			$md5hash = substr( $localdata, 0, 32 );
    			$localdata = substr( $localdata, 32 );
    			$localdata = base64_decode( $localdata );
    			$localkeyresults = unserialize( $localdata );
    			$originalcheckdate = $localkeyresults['checkdate'];
    
    			if ($md5hash == md5( $originalcheckdate . $licensing_secret_key )) {
    				$localexpiry = date( 'Ymd', mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - $localkeydays, date( 'Y' ) ) );
    
    				if ($localexpiry < $originalcheckdate) {
    					$localkeyvalid = true;
    					$results = $localkeyresults;
    					$validdomains = explode( ',', $results['validdomain'] );
    
    					if (!in_array( $_SERVER['SERVER_NAME'], $validdomains )) {
    						$localkeyvalid = false;
    						$localkeyresults['status'] = 'Invalid';
    						$results = array(  );
    					}
    
    					$validips = explode( ',', $results['validip'] );
    
    					if (!in_array( $usersip, $validips )) {
    						$localkeyvalid = false;
    						$localkeyresults['status'] = 'Invalid';
    						$results = array(  );
    					}
    
    
    					if ($results['validdirectory'] != dirname( __FILE__ )) {
    						$localkeyvalid = false;
    						$localkeyresults['status'] = 'Invalid';
    						$results = array(  );
    					}
    				}
    			}
    		}
    	}
    
    
    	if (!$localkeyvalid) {
    		$postfields['licensekey'] = $licensekey;
    		$postfields['domain'] = $_SERVER['SERVER_NAME'];
    		$postfields['ip'] = $usersip;
    		$postfields['dir'] = dirname( __FILE__ );
    
    		if ($check_token) {
    			$postfields['check_token'] = $check_token;
    		}
    
    
    		if (function_exists( 'curl_exec' )) {
    			$ch = curl_init(  );
    			curl_setopt( $ch, CURLOPT_URL, $whmcsurl . 'modules/servers/licensing/verify.php' );
    			curl_setopt( $ch, CURLOPT_POST, 1 );
    			curl_setopt( $ch, CURLOPT_POSTFIELDS, $postfields );
    			curl_setopt( $ch, CURLOPT_TIMEOUT, 30 );
    			curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    			$data = curl_exec( $ch );
    			curl_close( $ch );
    		}
    		else {
    			$fp = fsockopen( $whmcsurl, 80, $errno, $errstr, 5 );
    
    			if ($fp) {
    				$querystring = '';
    				foreach ($postfields as $k => $v) {
    					$querystring .= '' . $k . '=' . urlencode( $v ) . '&';
    				}
    
    				$header = 'POST ' . $whmcsurl . 'modules/servers/licensing/verify.php HTTP/1.0
    ';
    				$header .= 'Host: ' . $whmcsurl . '
    ';
    				$header .= 'Content-type: application/x-www-form-urlencoded
    ';
    				$header .= 'Content-length: ' . @strlen( $querystring ) . '
    ';
    				$header .= 'Connection: close
    
    ';
    				$header .= $querystring;
    				$data = '';
    				@stream_set_timeout( $fp, 20 );
    				@fputs( $fp, $header );
    				$status = @socket_get_status( $fp );
    
    				while (( !@feof( $fp ) && $status )) {
    					$data .= @fgets( $fp, 1024 );
    					$status = @socket_get_status( $fp );
    				}
    
    				@fclose( $fp );
    			}
    		}
    
    
    		if (!$data) {
    			$localexpiry = date( 'Ymd', mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - ( $localkeydays + $allowcheckfaildays ), date( 'Y' ) ) );
    
    			if ($localexpiry < $originalcheckdate) {
    				$results = $localkeyresults;
    			}
    			else {
    				$results['status'] = 'Invalid';
    				$results['description'] = 'Remote Check Failed';
    				$lerror = 'License Invalid: ' . $results['description'];
    				return false;
    			}
    		}
    
    		preg_match_all( '/<(.*?)>([^<]+)<\/\1>/i', $data, $matches );
    		$results = array(  );
    		foreach ($matches[1] as $k => $v) {
    			$results[$v] = $matches[2][$k];
    		}
    
    
    		if ($results['md5hash']) {
    			if ($results['md5hash'] != md5( $licensing_secret_key . $check_token )) {
    				$results['status'] = 'Invalid';
    				$results['description'] = 'MD5 Checksum Verification Failed';
    				$lerror = 'License Invalid: ' . $results['description'];
    				return false;
    			}
    		}
    
    
    		if ($results['status'] == 'Active') {
    			$results['checkdate'] = $checkdate;
    			$data_encoded = serialize( $results );
    			$data_encoded = base64_encode( $data_encoded );
    			$data_encoded = md5( $checkdate . $licensing_secret_key ) . $data_encoded;
    			$data_encoded = strrev( $data_encoded );
    			$data_encoded = $data_encoded . md5( $data_encoded . $licensing_secret_key );
    			$data_encoded = wordwrap( $data_encoded, 80, '', true );
    			$results['localkey'] = $data_encoded;
    		}
    
    		$results['remotecheck'] = true;
    	}
    
    	unset( $postfields );
    	unset( $data );
    	unset( $matches );
    	unset( $whmcsurl );
    	unset( $licensing_secret_key );
    	unset( $checkdate );
    	unset( $usersip );
    	unset( $localkeydays );
    	unset( $allowcheckfaildays );
    	unset( $md5hash );
    
    	if (( isset( $results['localkey'] ) && $results['localkey'] != '' )) {
    		whmcs_savelocalkey( $results['localkey'] );
    	}
    
    
    	if ($results['status'] == 'Active') {
    		return true;
    	}
    
    
    	if ($results['status'] == 'Invalid') {
    		$lerror = 'Lisansınız Geçersiz.';
    		return null;
    	}
    
    
    	if ($results['status'] == 'Expired') {
    		$lerror = 'Lisans Süreniz Doldu.';
    		return null;
    	}
    
    
    	if ($results['status'] == 'Suspended') {
    		$lerror = 'Lisansınız Askıya Alındı.';
    		return null;
    	}
    lisans.php dosyası

    <?php
    $whmcs_licensekey="xxxxxxxxxxxxxxxxxxxx";
    
    ?>
  • 30-09-2014, 14:46:28
    #3
    Fatal error: Call to undefined function whmcs_getlocalkey() in /home/xxxxx/public_html/1/index.php on line 9

    $localkey = whmcs_getlocalkey( );

    hatası veriyor
  • 01-10-2014, 00:53:58
    #4
    Üyeliği durduruldu
    Biraz araştırmacı olun lütfen. Herşeyi devletten beklemeyin.
  • 01-10-2014, 21:56:08
    #5
    bu fonksiyonu bulamadım hiç bir yerde. Yardım etmişsiniz bari yarım bırakmayın.
    whmcs_getlocalkey( ) bu fonksiyonun içeriği ne?
  • 01-10-2014, 22:19:19
    #6
    Üyeliği durduruldu
    Selamlar,

    FTP'den addons/servers/licensing klasörüne girerseniz,

    Orada example gibisinden bir dosya olacaktır, onun içine açarsanız onun içinde lisans sisteminin kodları yazmaktadır. Biraz ingilizceniz varsa sistemin kullanımı içinde yazmaktadır.
  • 02-10-2014, 16:29:13
    #7
    Allied adlı üyeden alıntı: mesajı görüntüle
    Biraz araştırmacı olun lütfen. Herşeyi devletten beklemeyin.
    Hala araştırıyorum..

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 16:29:13 -->-> Daha önceki mesaj 14:56:53 --

    furkanturkyilma adlı üyeden alıntı: mesajı görüntüle
    Selamlar,

    FTP'den addons/servers/licensing klasörüne girerseniz,

    Orada example gibisinden bir dosya olacaktır, onun içine açarsanız onun içinde lisans sisteminin kodları yazmaktadır. Biraz ingilizceniz varsa sistemin kullanımı içinde yazmaktadır.
    Aaşağıdaki $localkey example örnek dosyadakinin aynısı. Bu değeri nerden nasıl oluşturuyor. Yoksa localkey sabitmidir.

    $localkey = '9tjIxIzNwgDMwIjI6gjOztjIlRXYkt2Ylh2YioTO6M3OicmbpNnblNWasx1cyVmdyV2ccNXZsVHZv1GX
    zNWbodHXlNmc192czNWbodHXzN2bkRHacBFUNFEWcNHduVWb1N2bExFd0FWTcNnclNXVcpzQioDM4ozc
    7ISey9GdjVmcpRGZpxWY2JiO0EjOztjIx4CMuAjL3ITMioTO6M3OiAXaklGbhZnI6cjOztjI0N3boxWY
    j9Gbuc3d3xCdz9GasF2YvxmI6MjM6M3Oi4Wah12bkRWasFmdioTMxozc7ISeshGdu9WTiozN6M3OiUGb
    jl3Yn5WasxWaiJiOyEjOztjI3ATL4ATL4ADMyIiOwEjOztjIlRXYkVWdkRHel5mI6ETM6M3OicDMtcDM
    tgDMwIjI6ATM6M3OiUGdhR2ZlJnI6cjOztjIlNXYlxEI5xGa052bNByUD1ESXJiO5EjOztjIl1WYuR3Y
    1R2byBnI6ETM6M3OicjI6EjOztjIklGdjVHZvJHcioTO6M3Oi02bj5ycj1Ga3BEd0FWbioDNxozc7ICb
    pFWblJiO1ozc7IyUD1ESXBCd0FWTioDMxozc7ISZtFmbkVmclR3cpdWZyJiO0EjOztjIlZXa0NWQiojN
    6M3OiMXd0FGdzJiO2ozc7pjMxoTY8baca0885830a33725148e94e693f3f073294c0558d38e31f844
    c5e399e3c16a';
  • 02-10-2014, 16:40:16
    #8
    Üyeliği durduruldu
    adalim adlı üyeden alıntı: mesajı görüntüle
    Hala araştırıyorum..

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 16:29:13 -->-> Daha önceki mesaj 14:56:53 --



    Aaşağıdaki $localkey example örnek dosyadakinin aynısı. Bu değeri nerden nasıl oluşturuyor. Yoksa localkey sabitmidir.

    $localkey = '9tjIxIzNwgDMwIjI6gjOztjIlRXYkt2Ylh2YioTO6M3OicmbpNnblNWasx1cyVmdyV2ccNXZsVHZv1GX
    zNWbodHXlNmc192czNWbodHXzN2bkRHacBFUNFEWcNHduVWb1N2bExFd0FWTcNnclNXVcpzQioDM4ozc
    7ISey9GdjVmcpRGZpxWY2JiO0EjOztjIx4CMuAjL3ITMioTO6M3OiAXaklGbhZnI6cjOztjI0N3boxWY
    j9Gbuc3d3xCdz9GasF2YvxmI6MjM6M3Oi4Wah12bkRWasFmdioTMxozc7ISeshGdu9WTiozN6M3OiUGb
    jl3Yn5WasxWaiJiOyEjOztjI3ATL4ATL4ADMyIiOwEjOztjIlRXYkVWdkRHel5mI6ETM6M3OicDMtcDM
    tgDMwIjI6ATM6M3OiUGdhR2ZlJnI6cjOztjIlNXYlxEI5xGa052bNByUD1ESXJiO5EjOztjIl1WYuR3Y
    1R2byBnI6ETM6M3OicjI6EjOztjIklGdjVHZvJHcioTO6M3Oi02bj5ycj1Ga3BEd0FWbioDNxozc7ICb
    pFWblJiO1ozc7IyUD1ESXBCd0FWTioDMxozc7ISZtFmbkVmclR3cpdWZyJiO0EjOztjIlZXa0NWQiojN
    6M3OiMXd0FGdzJiO2ozc7pjMxoTY8baca0885830a33725148e94e693f3f073294c0558d38e31f844
    c5e399e3c16a';
    Bildiğim kadarıyla, örneğin siteniz kapandı ve lisans sisteminize erişim sağlanamıyor. Sonrasında eğer lisans sistemi girilen kodu doğrularsa sistem size bir local key veriyor orada büyük ihtimalle işte kaç günde bir kontrol edilsin vs gibisinden bir değişken görmüşsünüzdür. O değişkenin içeriğine göre içine bir tarih giriyor ve o tarihten o tarihe kadar localkey sayesinde lisans sistemi kontrol yapmıyor. Örneğin localkey in süresi bitti ve yeniden doğrulama yapıcak onun için tekrar orada fail bilmem gibisinden bir değişken var o değişkende hata aldıktan sonra sistem kaç gün sonra deneme yapsın diye. Benim bildiğim bu, anladıklarım bu daha doğrusu. Ama farklı bir amacı varsa bizide bilgilendirsin.
  • 02-10-2014, 17:15:54
    #9
    Anlattıkların doğru. Fakat sunucunun localkey oluşturması olayında tıkandık. Nasıl, nereye key oluşturuyor bulamadım.