def getConfiguration(configPath = None):
    """
        Reading the configuration file to look for where the different gates are running.
        
        :return: A json containing the information stored in the .cfg file.
    """
    if configPath == None:
        # If a current.cfg has not been found, creating it by copying from default
        configPath = getConfigPath("browser.cfg")

    # Checking if the configuration file exists
    if not os.path.exists(configPath):
        try:
            # Copy the data from the default folder
            defaultConfigPath = getConfigPath(os.path.join("default", "browser.cfg"))
     
            with open(configPath, "w") as oF:
                with open(defaultConfigPath) as iF:
                    cont = iF.read()
                    oF.write(cont)    
                                                
        except Exception, e:
            errMsg = "ERROR. No configuration file could be found and the default file was not found either. You might need to reset it manually."
            raise Exception( errMsg + " " + str(e))      

    try:
        # Reading the configuration file
        config = ConfigParser.ConfigParser()
        config.read(configPath)

        info = {}

        # Iterating through all the sections, which contain the platforms
        for section in config.sections():
            current = {}
            # Iterating through parametgers
            for (param, value) in config.items(section):
                current[param] = value
                
            # Loading the configuration in the info dictionary
            info[section] = current
            
    except Exception, e:
        errMsg = "ERROR. Something happened when processing the Configuration file (some kind of malform?). Check it before running it again."
        raise Exception( errMsg + " " + str(e))      

    return info