Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    Regular Coder
    Join Date
    Jul 2008
    Posts
    150
    Thanks
    24
    Thanked 0 Times in 0 Posts

    help me to edit this iono class please

    hello guys,
    i am trying to use iono licensing system in one script of mine http://www.olate.co.uk . so i got the script and the class which i have to include into my script .

    but the class include 3 functions and i lost my concentration cause of it beside my head gonna explosion now , lool

    so please i wanna change the class shape of that code to try to hide it inside my codes , iam trying for 3 days until now and i faild to remove the calss with the function beside getting the licence code works .

    so here is the class code and please help me to remove the class and the function to getting the code works directly without function or classes


    PHP Code:

    <?php

    class iono_keys
    {
        
    /**
        * @var string The user's license key
        * @access private
        */
        
    var $license_key;

        
    /**
        * @var string The iono root site location
        * @access private
        */
        
    var $home_url_site 'localhost';

        
    /**
        * @var int The iono root site location port for access
        * @access private
        */
        
    var $home_url_port 80;

        
    /**
        * @var string The iono location
        * @access private
        */
        
    var $home_url_iono '/path/remote.php';

        
    /**
        * @var string The location of the key file to use
        * @access private
        */
        
    var $key_location;

        
    /**
        * @var string Remote Authentication String from your iono installation
        * @access private
        */
        
    var $remote_auth;

        
    /**
        * @var int The maximum age of the key file before it is regenerated (seconds)
        * @access private
        */
        
    var $key_age;

        
    /**
        * @var array The data stored in the key
        * @access private
        */
        
    var $key_data;

        
    /**
        * @var int Current timestamp. Needs to be constant throughout class so is set here
        * @access private
        */
        
    var $now;

        
    /**
        * @var int The result of the key actions
        * @access public
        */
        
    var $result;

        
    /**
        * Sets the class vars and then checks the key file.
        * @param string $license_key The user's license key
        * @param string $remote_auth The remote authorisation string from iono settings
        * @param string $key_location The location of the key file to use
        * @param int $key_age The maximum age of the key file before it is regenerated (seconds) default 15 days (1296000)
        */
        
    function iono_keys($license_key$remote_auth$key_location 'key.php'$key_age 1296000)
        {
            
    // Set the class vars
            
    $this->license_key $license_key;
            
    $this->remote_auth $remote_auth;
            
    $this->key_location =  $key_location;
            
    $this->key_age =  $key_age;
            
    $this->now time();

            if (empty(
    $license_key))
            {
                
    $this->result 4;
                return 
    false;
            }

            if (empty(
    $remote_auth))
            {
                
    $this->result 4;
                return 
    false;
            }

            
    // Does the key exist? If not, then we need to create it. Else read it.
            
    if (file_exists($this->key_location))
            {
                
    $this->result $this->read_key();
            }
            else
            {
                
    $this->result $this->generate_key();

                if (empty(
    $this->result))
                {
                    
    $this->result $this->read_key();
                }
            }

            unset(
    $this->remote_auth);

            return 
    true;
        }

        
    /**
        * Gets the license details form the iono server and writes to the key file
        *
        * Responses:
        * - 8: License disabled
        * - 9: License suspended
        * - 5: License expired
        * - 10: Unable to open file for writing
        * - 11: Unable to write to file
        * - 12: Unable to communicate with iono
        * @return int Response code
        * @access private
        */
        
    function generate_key()
        {
            
    // Build request
            
    $request 'remote=licenses&type=5&license_key='.urlencode(base64_encode($this->license_key));
            
    $request .= '&host_ip='.urlencode(base64_encode($_SERVER['SERVER_ADDR'])).'&host_name='.urlencode(base64_encode($_SERVER['SERVER_NAME']));
            
    $request .= '&hash='.urlencode(base64_encode(md5($request)));

            
    $request $this->home_url_iono.'?'.$request;

            
    // Build HTTP header
            
    $header  "GET $request HTTP/1.0\r\nHost: $this->home_url_site\r\nConnection: Close\r\nUser-Agent: iono (www.olate.co.uk/iono)\r\n";
            
    $header .= "\r\n\r\n";

            
    // Contact license server
            
    $fpointer = @fsockopen($this->home_url_site$this->home_url_port$errno$errstr5);
            
    $return '';
            if (
    $fpointer)
            {
                @
    fwrite($fpointer$header);
                while(!@
    feof($fpointer))
                {
                    
    $return .= @fread($fpointer1024);
                }
                @
    fclose($fpointer);
            }
            else
            {
                return 
    12;
            }

            
    // Get rid of HTTP headers
            
    $content explode("\r\n\r\n"$return);
            
    $content explode($content[0], $return);

            
    //echo $content[1];
            //exit;

            // Split up the content
            
    $string urldecode($content[1]);

            
    //$string = '1|key|' .(time()+2000) .'|localhost|127.0.0.1';

            
    $exploded explode('|'$string);

            switch (
    $exploded[0]) // If we have an inactive license, return the status code
            
    {
                case 
    0// Disabled
                    
    return 8;
                    break;
                case 
    2// Suspended
                    
    return 9;
                    break;
                case 
    3// Expired
                    
    return 5;
                    break;
                case 
    10// Invalid key
                    
    return 4;
                    break;
            }

            
    $data['license_key'] = $exploded[1];
            
    $data['expiry']    = $exploded[2];
            
    $data['hostname'] = $exploded[3];
            
    $data['ip']    = $exploded[4];
            
    $data['timestamp'] = $this->now;

            
    // On first generation the hostname and IP will be blank
            // So set to current values
            
    if (empty($data['hostname']))
            {
                
    $data['hostname'] = $_SERVER['SERVER_NAME'];
            }

            if (empty(
    $data['ip']))
            {
                
    $data['ip'] = $_SERVER['SERVER_ADDR'];
            }

            
    $data_encoded serialize($data);
            
    $data_encoded base64_encode($data_encoded);
            
    $data_encoded md5($this->now.$this->remote_auth).$data_encoded;
            
    $data_encoded strrev($data_encoded);
            
    $data_encoded_hash sha1($data_encoded.$this->remote_auth);

            
    $fp fopen($this->key_location'w');
            if (
    $fp)
            {
                
    $fp_write fwrite($fpwordwrap($data_encoded.$data_encoded_hash40"\n"true));

                if (!
    $fp_write)
                {
                    return 
    11// Unable to write to file
                
    }

                
    fclose($fp);
            }
            else
            {
                return 
    10// Unable to open file for writing
            
    }
        }

    /**
        * Read the key file and then return a response code
        *
        * Responses:
        * - 0: Unable to read key
        * - 1: Everything is OK
        * - 2: SHA1 hash incorrect (key may have been tampered with)
        * - 3: MD5 hash incorrect (key may have been tampered with)
        * - 4: License key does not match key string in key file
        * - 5: License has expired
        * - 6: Host name does not match key file
        * - 7: IP does not match key file
        * @return int Response code
        * @access private
        */
        
    function read_key()
        {
            
    $key file_get_contents($this->key_location);

            if (
    $key !== false)
            {
                
    $key str_replace("\n"''$key); // Remove the line breaks from the key string

                // Split out SHA1 hash from the key data
                
    $key_string substr($key0strlen($key)-40);
                
    $key_sha_hash substr($keystrlen($key)-40, (strlen($key)));

                if (
    sha1($key_string.$this->remote_auth) == $key_sha_hash// Compare SHA1 hash to the key data
                
    {
                    
    $key strrev($key_string); // Back the right way around

                    
    $key_hash substr($key032); // Get the MD5 hash of the data from the string
                    
    $key_data substr($key32); // Get the data from the string

                    
    $key_data base64_decode($key_data);
                    
    $key_data unserialize($key_data);

                    if (
    md5($key_data['timestamp'].$this->remote_auth) == $key_hash// Check the MD5 hash
                    
    {
                        
    // Is it more than $this->key_age seconds old?
                        
    if (($this->now $key_data['timestamp']) >= $this->key_age)
                        {
                            
    unlink($this->key_location);

                            
    $this->result $this->generate_key();

                            if (empty(
    $this->result))
                            {
                                
    $this->result $this->read_key();
                            }

                            return 
    1// Have to return here because there is a 1 second delay due to the nature of time()
                        
    }
                        else
                        {
                            
    $this->key_data $key_data;

                            if (
    $key_data['license_key'] != $this->license_key)
                            {
                                return 
    4// License key does not match key string in key file
                            
    }

                            if (
    $key_data['expiry'] <= $this->now && $key_data['expiry'] != 1)
                            {
                                return 
    5// License key does not match key string in key file
                            
    }

                            
    // Do we have multiple hostnames?
                            
    if (substr_count($key_data['hostname'], ',') == 0)
                            { 
    // No
                                
    if ($key_data['hostname'] != $_SERVER['SERVER_NAME'] && !empty($key_data['hostname']))
                                {
                                    return 
    6// Host name does not match key file
                                
    }
                            }
                            else
                            { 
    // Yes
                                
    $hostnames explode(','$key_data['hostname']);

                                if (!
    in_array($_SERVER['SERVER_NAME'], $hostnames))
                                {
                                    return 
    6// Host name is not in key file
                                
    }
                            }

                            
    // Do we have multiple IPs?
                            
    if (substr_count($key_data['ip'], ',') == 0)
                            { 
    // No
                                
    if ($key_data['ip'] != $_SERVER['SERVER_ADDR'] && !empty($key_data['ip']))
                                {
                                    return 
    7// IP does not match key file
                                
    }
                            }
                            else
                            { 
    // yes
                                
    $ips explode(','$key_data['ip']);

                                if (!
    in_array($_SERVER['SERVER_ADDR'], $ips))
                                {
                                    return 
    7// IP is not in key file
                                
    }
                            }

                            return 
    1;
                        }
                    }
                    else
                    {
                        return 
    3// MD5 hash incorrect (key may have been tampered with)
                    
    }
                }
                else
                {
                    return 
    2// SHA1 hash incorrect (key may have been tampered with)
                
    }
            }
            else
            {
                return 
    0;
            }
        }

        
    /**
        * Returns array of key data
        *
        * @return array Array of data in the key file
        */
        
    function get_data()
        {
            return 
    $this->key_data;
        }
    }



















    $key_string ' put the licence code here ';
    $remote_auth ' put your auth code here  ';
    $key_location 'key/key.php';
    $key_age 60// 1 moment

    $licensing = new iono_keys($key_string$remote_auth$key_location$key_age);

    switch (
    $licensing->result)
    {
        case 
    0:
            die(
    'Unable to read key');
            break;
        case 
    1:
            
    // Everything is fine so we don't need to do anything
            
    break;
        case 
    2:
            die(
    'SHA1 hash incorrect');
            break;
        case 
    3:
            die(
    'MD5 hash incorrect');
            break;
        case 
    4:
            die(
    'License key does not match key string in key file');
            break;
        case 
    5:
            die(
    'License has expired');
            break;
        case 
    6:
            die(
    'Host name does not match key file');
            break;
        case 
    7:
            die(
    'IP does not match key file');
            break;
        case 
    8:
            die(
    'License disabled');
            break;
        case 
    9:
            die(
    'License suspended');
            break;
        case 
    10:
            die(
    'Unable to open file for writing');
            break;
        case 
    11:
            die(
    'Unable to write to file');
            break;
        case 
    12:
            die(
    'Unable to communicate with iono');
            break;
    }
    ?>
    thanks
    Last edited by crazy.works; 03-06-2009 at 01:35 AM.

  • #2
    New to the CF scene
    Join Date
    Jul 2009
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    php licensing

    Have you noticed that iono support discontinued? It will close down soon and you need to migare to somewhere else. Have you ever tried PHPLicengine? I like its interface and support. It worth to try for a while.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •