PHP Classes
Icontem

File: app/class.license.gen.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Oliver Lillie  >  PADL (PHP Application Distribution License System)  >  app/class.license.gen.php  
File: app/class.license.gen.php
Role: Class source
Content type: text/plain
Description: Subclass Source
Class: PADL (PHP Application Distribution License System)
Generate PHP application license keys
 

Contents

Class file image Download
<?php

    
/**
    * Project:        Distrubution License Class
    * File:            class.license.gen.php
    *
    * Copyright (C) 2005 Oliver Lillie
    * 
    * This program is free software; you can redistribute it and/or modify it 
    * under the terms of the GNU General Public License as published by  the Free 
    * Software Foundation; either version 2 of the License, or (at your option) 
    * any later version.
    *
    * This program is distributed in the hope that it will be useful, but 
    * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
    * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
    * for more details.
    *
    * You should have received a copy of the GNU General Public License along 
    * with this program; if not, write to the Free Software Foundation, Inc., 
    * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    
    *
    * @link http://www.buggedcom.co.uk/
    * @link http://www.phpclasses.org/browse/package/2298.html
    * @author Oliver Lillie, buggedcom <publicmail at buggedcom dot co dot uk>
    * @version 0.5
    * @history---------------------------------------------
    * see CHANGELOG
    */
    
    
class license_architect extends license_application {
    
        
/**
        * Constructor
        *
        * @access public 
        * @param $use_mcrypt boolean Determines if mcrypt encryption is used or 
        *         not (defaults to true, however if mcrypt is not available, it 
        *         is set to false) 
        * @param $use_time boolean Sets if time binding should be used in the 
        *         key (defaults to true) 
        * @param $use_server boolean Sets if server binding should be used in  
        *         the key (defaults to true) 
        * @param $allow_local boolean Sets if server binding is in use then  
        *         localhost servers are valid (defaults to false) 
        **/
        
function license_architect($license_path='license.dat'$use_mcrypt=true$use_time=true$use_server=true$allow_local=false)
        {
            
# check to see if the class has been secured
            
$this->_check_secure();
            
$this->license_application($license_path$use_mcrypt$use_time$use_server$allow_local);
        }
        
        
/**
        * writeKey
        *
        * writes the key 
        *
        * @access public 
        * @param $key string The key string
          * @return boolean Returns boolean on success
        **/
        
function writeKey($key)
        {
            
# check to see if the class has been secured
            
$this->_check_secure();
            
# open the key file for writeing and truncate
            
$h fopen($this->_LICENSE_PATH'w');
            
# if write fails return error
            
if(fwrite($h$key) === false) return false;
            
# close file
            
fclose($h);
            
# return key
            
return true;
        }
        
        
/**
        * register_install
        *
        * registers the install with the home server and if registration is 
        * excepted it then generates and installs the key.
        *
        * @access public 
        * @param $domain string the domain to register the license to
        * @param $start number  the start time of the license, can be either 
        *         the actuall time or the time span until the license is valid
        * @param $expire_in number/string number of seconds untill the license 
        *         expires after start, or 'NEVER' to never expire
        * @param $data array Array that contains the info to be validated
        * @param $dialhost string Host name of the server to be contacted
        * @param $dialpath string Path of the script for the data to be sent to
        * @param $dialport number Port Number to send the data through
          * @return string Returns the encrypted install validation
        **/
        
function register_install($domain$start$expire_in$data$dialhost$dialpath$dialport='80')
        {
            
# check to see if the class has been secured
            
$this->_check_secure();
            
# check if key is alread generated
            
if(@filesize($this->_LICENSE_PATH) > 4)    return array('RESULT'=>'KEY_EXISTS');
            
            
$data = array('DATA'=>$data);
            
            
# if the server matching is required then get the info
            
if($this->USE_SERVER)
            {
                
# evaluate the supplied domain against the collected ips
                
if(!$this->_compare_domain_ip($domain$this->_IPS)) return array('RESULT'=>'DOMAIN_IP_FAIL');
                
# check server uris
                
if(count($this->_SERVER_INFO) < $this->REQUIRED_URIS) return array('RESULT'=>'SERVER_FAIL');
                
                
$data['SERVER']['MAC']         = $this->_MAC;
                
$data['SERVER']['PATH']     = $this->_SERVER_INFO;
                
$data['SERVER']['IP']         = $this->_IPS;
                
$data['SERVER']['DOMAIN']     = $domain;

            }
            
            
# if use time restrictions
            
if($this->USE_TIME)
            {
                
$current                     time();
                
$start                        = ($current $start) ? $start $current+$start;
                
# set the dates
                
$data['DATE']['START']         = $start;
                if(
$expire_in == 'NEVER')
                {
                    
$data['DATE']['SPAN']     = '~';
                    
$data['DATE']['END']     = 'NEVER';
                }
                else
                {
                    
$data['DATE']['SPAN']     = $expire_in;
                    
$data['DATE']['END']     = $start+$expire_in;
                }
            }
            
            
# includethe id for requests
            
$data['ID'] = md5($this->ID2);

            
# post the data home
            
$data $this->_post_data($dialhost$dialpath$data$dialport);
            
# return the result and key if approved
            
return (empty($data['RESULT'])) ? array('RESULT'=>'SOCKET_FAILED') : $data;
        }

        
/**
        * generate
        *
        * generates the server key when the license class resides on the server
        *
        * @access public 
        * @param $domain string The domain to bind the license to.
        * @param $start number The number of seconds untill the key is valid
        *         if the value is 0 then the current value given by time() is 
        *         used as the start date.
        * @param $expire_in number The number of seconds the key will be valid 
        *         for (the default reverts to 31449600 - 1 year)
        * @param $other_array array An array that can contain any other data you
        *         want to store in the key
          * @return string key string
          * @return string     KEY_EXISTS            - key has already been written and thus can't write
          *                    DOMAIN_IP_FAIL         - means the domain name supplied doesn't match the corresponding ip
          *                    SERVER_FAIL         - enough server vars failed to be found
        **/
        
function generate($domain=''$start=0$expire_in=31449600$other_array=array())
        {
            
# check to see if the class has been secured
            
$this->_check_secure();
            
# check if key is alread generated
            
if(@filesize($this->_LICENSE_PATH) > 4)    return 'KEY_EXISTS';
            
# check if target exists
            
if(!@file_exists($this->_LICENSE_PATH) || !@is_file($this->_LICENSE_PATH)) return 'WRITE_TARGET_404';
            
# key file doesn't exist
            
if(!@is_writeable($this->_LICENSE_PATH)) return 'WRITE_TARGET_UNWRITEABLE';
            
            
# if the URIS returned are false it means that there has not been
            # enough unique data returned by the $_SERVER so cannot generate key
            
if($this->_SERVER_INFO !== false || !$this->USE_SERVER)
            {
                
# set the id
                
$DATA['ID']                 = md5($this->ID1);
                
                
# set server binds
                
if($this->USE_SERVER)
                {
                    
# evaluate the supplied domain against the collected ips
                    
if(!$this->_compare_domain_ip($domain$this->_IPS)) return 'DOMAIN_IP_FAIL';
                    
                    
# set the domain
                    
$DATA['SERVER']['DOMAIN']     = $domain;
                    
# set the mac id
                    
$DATA['SERVER']['MAC']         = $this->_MAC;
                    
# set the server arrays
                    
$DATA['SERVER']['PATH']     = $this->_SERVER_INFO;
                    
# set the ip arrays
                    
$DATA['SERVER']['IP']         = $this->_IPS;
                }
                
                
# set time binds
                
if($this->USE_TIME && !is_array($start))
                {
                    
$current                     time();
                    
$start                        = ($current $start) ? $start $current+$start;
                    
# set the dates
                    
$DATA['DATE']['START']         = $start;
                    
$DATA['DATE']['SPAN']         = $expire_in;
                    if(
$expire_in == 'NEVER')
                    {
                        
$DATA['DATE']['END']     = 'NEVER';
                    }
                    else
                    {
                        
$DATA['DATE']['END']     = $start+$expire_in;
                    }
                }
                
                
# if start is array then it is the other array and time binding is not in use
                # convert to other array
                
if(is_array($start))
                {
                    
$other_array $start;
                }
                
                
# set the server os
                
$other_array['_PHP_OS']      = PHP_OS;  
                
                
# set the server os
                
$other_array['_PHP_VERSION'] = PHP_VERSION;  

                
# merge the data with the other array
                
$DATA['DATA']                 = $other_array;

                
# encrypt the key
                
$key $this->_wrap_license($DATA);
                
                
# write the key
                
if(!$this->writeKey($key)) return 'WRITE_FAILED';
                
                
# return the key
                
return $key;
            }
            
# no key can be generated so returns false
            
return 'SERVER_FAIL';
            
        }
                
    }
    

?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products