We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Store verify-ssl option in conan.conf after conan config install
Only the custom user args are stored in conan.conf, and it would make sense to store the verify-ssl argument too, to make ``conan config install`` complete.

cc/ @danimtb 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `conans/client/conf/config_installer.py`
Content:
```
1 import os
2 import shutil
3 
4 from six.moves.urllib.parse import urlparse
5 
6 from conans import load
7 from conans.client import tools
8 from conans.client.remote_registry import load_registry_txt
9 from conans.client.tools import Git
10 from conans.client.tools.files import unzip
11 from conans.errors import ConanException
12 from conans.util.files import mkdir, rmdir, walk
13 
14 
15 def _hide_password(resource):
16     """
17     Hide password from url/file path
18 
19     :param resource: string with url or file path
20     :return: resource with hidden password if present
21     """
22     password = urlparse(resource).password
23     return resource.replace(password, "<hidden>") if password else resource
24 
25 
26 def _handle_remotes(client_cache, remote_file):
27     # FIXME: Should we encourage to pass the remotes in json?
28     remotes, _ = load_registry_txt(load(remote_file))
29     registry = client_cache.registry
30     registry.remotes.define(remotes)
31 
32 
33 def _handle_profiles(source_folder, target_folder, output):
34     mkdir(target_folder)
35     for root, _, files in walk(source_folder):
36         relative_path = os.path.relpath(root, source_folder)
37         if relative_path == ".":
38             relative_path = ""
39         for f in files:
40             profile = os.path.join(relative_path, f)
41             output.info("  - %s" % profile)
42             shutil.copy(os.path.join(root, f), os.path.join(target_folder, profile))
43 
44 
45 def _process_git_repo(repo_url, client_cache, output, tmp_folder, verify_ssl, args=None):
46     output.info("Trying to clone repo: %s" % repo_url)
47 
48     with tools.chdir(tmp_folder):
49         try:
50             args = args or ""
51             git = Git(verify_ssl=verify_ssl, output=output)
52             git.clone(repo_url, args=args)
53             output.info("Repo cloned!")
54         except Exception as e:
55             raise ConanException("Can't clone repo: %s" % str(e))
56     _process_folder(tmp_folder, client_cache, output)
57 
58 
59 def _process_zip_file(zippath, client_cache, output, tmp_folder, remove=False):
60     unzip(zippath, tmp_folder, output=output)
61     if remove:
62         os.unlink(zippath)
63     _process_folder(tmp_folder, client_cache, output)
64 
65 
66 def _handle_conan_conf(current_conan_conf, new_conan_conf_path):
67     current_conan_conf.read(new_conan_conf_path)
68     with open(current_conan_conf.filename, "w") as f:
69         current_conan_conf.write(f)
70 
71 
72 def _process_folder(folder, client_cache, output):
73     for root, dirs, files in walk(folder):
74         for f in files:
75             if f == "settings.yml":
76                 output.info("Installing settings.yml")
77                 settings_path = client_cache.settings_path
78                 shutil.copy(os.path.join(root, f), settings_path)
79             elif f == "conan.conf":
80                 output.info("Processing conan.conf")
81                 conan_conf = client_cache.conan_config
82                 _handle_conan_conf(conan_conf, os.path.join(root, f))
83             elif f == "remotes.txt":
84                 output.info("Defining remotes from remotes.txt")
85                 _handle_remotes(client_cache, os.path.join(root, f))
86             else:
87                 relpath = os.path.relpath(root, folder)
88                 target_folder = os.path.join(client_cache.conan_folder, relpath)
89                 mkdir(target_folder)
90                 output.info("Copying file %s to %s" % (f, target_folder))
91                 shutil.copy(os.path.join(root, f), target_folder)
92         for d in dirs:
93             if d == "profiles":
94                 output.info("Installing profiles:")
95                 profiles_path = client_cache.profiles_path
96                 _handle_profiles(os.path.join(root, d), profiles_path, output)
97                 break
98         dirs[:] = [d for d in dirs if d not in ("profiles", ".git")]
99 
100 
101 def _process_download(item, client_cache, output, tmp_folder, verify_ssl, requester):
102     output.info("Trying to download  %s" % _hide_password(item))
103     zippath = os.path.join(tmp_folder, "config.zip")
104     try:
105         tools.download(item, zippath, out=output, verify=verify_ssl, requester=requester)
106         _process_zip_file(zippath, client_cache, output, tmp_folder, remove=True)
107     except Exception as e:
108         raise ConanException("Error while installing config from %s\n%s" % (item, str(e)))
109 
110 
111 def configuration_install(path_or_url, client_cache, output, verify_ssl, requester,
112                           config_type=None, args=None):
113     if path_or_url is None:
114         try:
115             item = client_cache.conan_config.get_item("general.config_install")
116             _config_type, path_or_url, _args = _process_config_install_item(item)
117         except ConanException:
118             raise ConanException("Called config install without arguments and "
119                                  "'general.config_install' not defined in conan.conf")
120     else:
121         _config_type, path_or_url, _args = _process_config_install_item(path_or_url)
122 
123     config_type = config_type or _config_type
124     args = args or _args
125 
126     if os.path.exists(path_or_url):
127         path_or_url = os.path.abspath(path_or_url)
128 
129     tmp_folder = os.path.join(client_cache.conan_folder, "tmp_config_install")
130     # necessary for Mac OSX, where the temp folders in /var/ are symlinks to /private/var/
131     tmp_folder = os.path.realpath(tmp_folder)
132     mkdir(tmp_folder)
133     try:
134 
135         if config_type == "git":
136             _process_git_repo(path_or_url, client_cache, output, tmp_folder, verify_ssl, args)
137         elif config_type == "dir":
138             args = None
139             _process_folder(path_or_url, client_cache, output)
140         elif config_type == "file":
141             args = None
142             _process_zip_file(path_or_url, client_cache, output, tmp_folder)
143         elif config_type == "url":
144             args = None
145             _process_download(path_or_url, client_cache, output, tmp_folder, verify_ssl,
146                               requester=requester)
147         else:
148             raise ConanException("Unable to process config install: %s" % path_or_url)
149     finally:
150         if config_type is not None and path_or_url is not None:
151             value = "%s:[%s, %s]" % (config_type, path_or_url, args)
152             client_cache.conan_config.set_item("general.config_install", value)
153         rmdir(tmp_folder)
154 
155 
156 def _process_config_install_item(item):
157     """
158     Processes a config_install item and outputs a tuple with the configuration type, the path/url
159     and additional args
160 
161     :param item: config_install item value from conan.conf with a simple path/url or a string
162     following this pattern: "<config_type>:[<path_or_url>, <args>]"
163     :return: configuration source type (git, url, dir or file), path to file/dir or git/http url and
164     additional arguments
165     """
166     config_type, path_or_url, args = None, None, None
167     if not item.startswith(("git:", "dir:", "url:", "file:")):
168         path_or_url = item
169         if path_or_url.endswith(".git"):
170             config_type = "git"
171         elif os.path.isdir(path_or_url):
172             config_type = "dir"
173         elif os.path.isfile(path_or_url):
174             config_type = "file"
175         elif path_or_url.startswith("http"):
176             config_type = "url"
177         else:
178             raise ConanException("Unable to process config install: %s" % path_or_url)
179     else:
180         config_type, rest = item.split(":", 1)
181         path_or_url, args = [item.strip() for item in rest[1:-1].rstrip().split(",", 1)]
182         args = None if "none" in args.lower() else args
183     return config_type, path_or_url, args
184
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/conans/client/conf/config_installer.py b/conans/client/conf/config_installer.py
--- a/conans/client/conf/config_installer.py
+++ b/conans/client/conf/config_installer.py
@@ -114,14 +114,15 @@
     if path_or_url is None:
         try:
             item = client_cache.conan_config.get_item("general.config_install")
-            _config_type, path_or_url, _args = _process_config_install_item(item)
+            _config_type, path_or_url, _verify_ssl, _args = _process_config_install_item(item)
         except ConanException:
             raise ConanException("Called config install without arguments and "
                                  "'general.config_install' not defined in conan.conf")
     else:
-        _config_type, path_or_url, _args = _process_config_install_item(path_or_url)
+        _config_type, path_or_url, _verify_ssl, _args = _process_config_install_item(path_or_url)
 
     config_type = config_type or _config_type
+    verify_ssl = verify_ssl or _verify_ssl
     args = args or _args
 
     if os.path.exists(path_or_url):
@@ -149,7 +150,7 @@
             raise ConanException("Unable to process config install: %s" % path_or_url)
     finally:
         if config_type is not None and path_or_url is not None:
-            value = "%s:[%s, %s]" % (config_type, path_or_url, args)
+            value = "%s, %s, %s, %s" % (config_type, path_or_url, verify_ssl, args)
             client_cache.conan_config.set_item("general.config_install", value)
         rmdir(tmp_folder)
 
@@ -164,8 +165,8 @@
     :return: configuration source type (git, url, dir or file), path to file/dir or git/http url and
     additional arguments
     """
-    config_type, path_or_url, args = None, None, None
-    if not item.startswith(("git:", "dir:", "url:", "file:")):
+    config_type, path_or_url, verify_ssl, args = None, None, None, None
+    if not item.startswith(("git,", "dir,", "url,", "file,")):
         path_or_url = item
         if path_or_url.endswith(".git"):
             config_type = "git"
@@ -178,7 +179,7 @@
         else:
             raise ConanException("Unable to process config install: %s" % path_or_url)
     else:
-        config_type, rest = item.split(":", 1)
-        path_or_url, args = [item.strip() for item in rest[1:-1].rstrip().split(",", 1)]
+        config_type, path_or_url, verify_ssl, args = [r.strip() for r in item.split(",")]
+        verify_ssl = "true" in verify_ssl.lower()
         args = None if "none" in args.lower() else args
-    return config_type, path_or_url, args
+    return config_type, path_or_url, verify_ssl, args

{"golden_diff": "diff --git a/conans/client/conf/config_installer.py b/conans/client/conf/config_installer.py\n--- a/conans/client/conf/config_installer.py\n+++ b/conans/client/conf/config_installer.py\n@@ -114,14 +114,15 @@\n     if path_or_url is None:\n         try:\n             item = client_cache.conan_config.get_item(\"general.config_install\")\n-            _config_type, path_or_url, _args = _process_config_install_item(item)\n+            _config_type, path_or_url, _verify_ssl, _args = _process_config_install_item(item)\n         except ConanException:\n             raise ConanException(\"Called config install without arguments and \"\n                                  \"'general.config_install' not defined in conan.conf\")\n     else:\n-        _config_type, path_or_url, _args = _process_config_install_item(path_or_url)\n+        _config_type, path_or_url, _verify_ssl, _args = _process_config_install_item(path_or_url)\n \n     config_type = config_type or _config_type\n+    verify_ssl = verify_ssl or _verify_ssl\n     args = args or _args\n \n     if os.path.exists(path_or_url):\n@@ -149,7 +150,7 @@\n             raise ConanException(\"Unable to process config install: %s\" % path_or_url)\n     finally:\n         if config_type is not None and path_or_url is not None:\n-            value = \"%s:[%s, %s]\" % (config_type, path_or_url, args)\n+            value = \"%s, %s, %s, %s\" % (config_type, path_or_url, verify_ssl, args)\n             client_cache.conan_config.set_item(\"general.config_install\", value)\n         rmdir(tmp_folder)\n \n@@ -164,8 +165,8 @@\n     :return: configuration source type (git, url, dir or file), path to file/dir or git/http url and\n     additional arguments\n     \"\"\"\n-    config_type, path_or_url, args = None, None, None\n-    if not item.startswith((\"git:\", \"dir:\", \"url:\", \"file:\")):\n+    config_type, path_or_url, verify_ssl, args = None, None, None, None\n+    if not item.startswith((\"git,\", \"dir,\", \"url,\", \"file,\")):\n         path_or_url = item\n         if path_or_url.endswith(\".git\"):\n             config_type = \"git\"\n@@ -178,7 +179,7 @@\n         else:\n             raise ConanException(\"Unable to process config install: %s\" % path_or_url)\n     else:\n-        config_type, rest = item.split(\":\", 1)\n-        path_or_url, args = [item.strip() for item in rest[1:-1].rstrip().split(\",\", 1)]\n+        config_type, path_or_url, verify_ssl, args = [r.strip() for r in item.split(\",\")]\n+        verify_ssl = \"true\" in verify_ssl.lower()\n         args = None if \"none\" in args.lower() else args\n-    return config_type, path_or_url, args\n+    return config_type, path_or_url, verify_ssl, args\n", "issue": "Store verify-ssl option in conan.conf after conan config install\nOnly the custom user args are stored in conan.conf, and it would make sense to store the verify-ssl argument too, to make ``conan config install`` complete.\r\n\r\ncc/ @danimtb \n", "before_files": [{"content": "import os\nimport shutil\n\nfrom six.moves.urllib.parse import urlparse\n\nfrom conans import load\nfrom conans.client import tools\nfrom conans.client.remote_registry import load_registry_txt\nfrom conans.client.tools import Git\nfrom conans.client.tools.files import unzip\nfrom conans.errors import ConanException\nfrom conans.util.files import mkdir, rmdir, walk\n\n\ndef _hide_password(resource):\n    \"\"\"\n    Hide password from url/file path\n\n    :param resource: string with url or file path\n    :return: resource with hidden password if present\n    \"\"\"\n    password = urlparse(resource).password\n    return resource.replace(password, \"<hidden>\") if password else resource\n\n\ndef _handle_remotes(client_cache, remote_file):\n    # FIXME: Should we encourage to pass the remotes in json?\n    remotes, _ = load_registry_txt(load(remote_file))\n    registry = client_cache.registry\n    registry.remotes.define(remotes)\n\n\ndef _handle_profiles(source_folder, target_folder, output):\n    mkdir(target_folder)\n    for root, _, files in walk(source_folder):\n        relative_path = os.path.relpath(root, source_folder)\n        if relative_path == \".\":\n            relative_path = \"\"\n        for f in files:\n            profile = os.path.join(relative_path, f)\n            output.info(\"  - %s\" % profile)\n            shutil.copy(os.path.join(root, f), os.path.join(target_folder, profile))\n\n\ndef _process_git_repo(repo_url, client_cache, output, tmp_folder, verify_ssl, args=None):\n    output.info(\"Trying to clone repo: %s\" % repo_url)\n\n    with tools.chdir(tmp_folder):\n        try:\n            args = args or \"\"\n            git = Git(verify_ssl=verify_ssl, output=output)\n            git.clone(repo_url, args=args)\n            output.info(\"Repo cloned!\")\n        except Exception as e:\n            raise ConanException(\"Can't clone repo: %s\" % str(e))\n    _process_folder(tmp_folder, client_cache, output)\n\n\ndef _process_zip_file(zippath, client_cache, output, tmp_folder, remove=False):\n    unzip(zippath, tmp_folder, output=output)\n    if remove:\n        os.unlink(zippath)\n    _process_folder(tmp_folder, client_cache, output)\n\n\ndef _handle_conan_conf(current_conan_conf, new_conan_conf_path):\n    current_conan_conf.read(new_conan_conf_path)\n    with open(current_conan_conf.filename, \"w\") as f:\n        current_conan_conf.write(f)\n\n\ndef _process_folder(folder, client_cache, output):\n    for root, dirs, files in walk(folder):\n        for f in files:\n            if f == \"settings.yml\":\n                output.info(\"Installing settings.yml\")\n                settings_path = client_cache.settings_path\n                shutil.copy(os.path.join(root, f), settings_path)\n            elif f == \"conan.conf\":\n                output.info(\"Processing conan.conf\")\n                conan_conf = client_cache.conan_config\n                _handle_conan_conf(conan_conf, os.path.join(root, f))\n            elif f == \"remotes.txt\":\n                output.info(\"Defining remotes from remotes.txt\")\n                _handle_remotes(client_cache, os.path.join(root, f))\n            else:\n                relpath = os.path.relpath(root, folder)\n                target_folder = os.path.join(client_cache.conan_folder, relpath)\n                mkdir(target_folder)\n                output.info(\"Copying file %s to %s\" % (f, target_folder))\n                shutil.copy(os.path.join(root, f), target_folder)\n        for d in dirs:\n            if d == \"profiles\":\n                output.info(\"Installing profiles:\")\n                profiles_path = client_cache.profiles_path\n                _handle_profiles(os.path.join(root, d), profiles_path, output)\n                break\n        dirs[:] = [d for d in dirs if d not in (\"profiles\", \".git\")]\n\n\ndef _process_download(item, client_cache, output, tmp_folder, verify_ssl, requester):\n    output.info(\"Trying to download  %s\" % _hide_password(item))\n    zippath = os.path.join(tmp_folder, \"config.zip\")\n    try:\n        tools.download(item, zippath, out=output, verify=verify_ssl, requester=requester)\n        _process_zip_file(zippath, client_cache, output, tmp_folder, remove=True)\n    except Exception as e:\n        raise ConanException(\"Error while installing config from %s\\n%s\" % (item, str(e)))\n\n\ndef configuration_install(path_or_url, client_cache, output, verify_ssl, requester,\n                          config_type=None, args=None):\n    if path_or_url is None:\n        try:\n            item = client_cache.conan_config.get_item(\"general.config_install\")\n            _config_type, path_or_url, _args = _process_config_install_item(item)\n        except ConanException:\n            raise ConanException(\"Called config install without arguments and \"\n                                 \"'general.config_install' not defined in conan.conf\")\n    else:\n        _config_type, path_or_url, _args = _process_config_install_item(path_or_url)\n\n    config_type = config_type or _config_type\n    args = args or _args\n\n    if os.path.exists(path_or_url):\n        path_or_url = os.path.abspath(path_or_url)\n\n    tmp_folder = os.path.join(client_cache.conan_folder, \"tmp_config_install\")\n    # necessary for Mac OSX, where the temp folders in /var/ are symlinks to /private/var/\n    tmp_folder = os.path.realpath(tmp_folder)\n    mkdir(tmp_folder)\n    try:\n\n        if config_type == \"git\":\n            _process_git_repo(path_or_url, client_cache, output, tmp_folder, verify_ssl, args)\n        elif config_type == \"dir\":\n            args = None\n            _process_folder(path_or_url, client_cache, output)\n        elif config_type == \"file\":\n            args = None\n            _process_zip_file(path_or_url, client_cache, output, tmp_folder)\n        elif config_type == \"url\":\n            args = None\n            _process_download(path_or_url, client_cache, output, tmp_folder, verify_ssl,\n                              requester=requester)\n        else:\n            raise ConanException(\"Unable to process config install: %s\" % path_or_url)\n    finally:\n        if config_type is not None and path_or_url is not None:\n            value = \"%s:[%s, %s]\" % (config_type, path_or_url, args)\n            client_cache.conan_config.set_item(\"general.config_install\", value)\n        rmdir(tmp_folder)\n\n\ndef _process_config_install_item(item):\n    \"\"\"\n    Processes a config_install item and outputs a tuple with the configuration type, the path/url\n    and additional args\n\n    :param item: config_install item value from conan.conf with a simple path/url or a string\n    following this pattern: \"<config_type>:[<path_or_url>, <args>]\"\n    :return: configuration source type (git, url, dir or file), path to file/dir or git/http url and\n    additional arguments\n    \"\"\"\n    config_type, path_or_url, args = None, None, None\n    if not item.startswith((\"git:\", \"dir:\", \"url:\", \"file:\")):\n        path_or_url = item\n        if path_or_url.endswith(\".git\"):\n            config_type = \"git\"\n        elif os.path.isdir(path_or_url):\n            config_type = \"dir\"\n        elif os.path.isfile(path_or_url):\n            config_type = \"file\"\n        elif path_or_url.startswith(\"http\"):\n            config_type = \"url\"\n        else:\n            raise ConanException(\"Unable to process config install: %s\" % path_or_url)\n    else:\n        config_type, rest = item.split(\":\", 1)\n        path_or_url, args = [item.strip() for item in rest[1:-1].rstrip().split(\",\", 1)]\n        args = None if \"none\" in args.lower() else args\n    return config_type, path_or_url, args\n", "path": "conans/client/conf/config_installer.py"}], "after_files": [{"content": "import os\nimport shutil\nimport subprocess\n\nfrom six.moves.urllib.parse import urlparse\n\nfrom conans import load\nfrom conans.client import tools\nfrom conans.client.remote_registry import load_registry_txt\nfrom conans.client.tools import Git\nfrom conans.client.tools.files import unzip\nfrom conans.errors import ConanException\nfrom conans.util.files import mkdir, rmdir, walk\n\n\ndef _hide_password(resource):\n    \"\"\"\n    Hide password from url/file path\n\n    :param resource: string with url or file path\n    :return: resource with hidden password if present\n    \"\"\"\n    password = urlparse(resource).password\n    return resource.replace(password, \"<hidden>\") if password else resource\n\n\ndef _handle_remotes(client_cache, remote_file):\n    # FIXME: Should we encourage to pass the remotes in json?\n    remotes, _ = load_registry_txt(load(remote_file))\n    registry = client_cache.registry\n    registry.remotes.define(remotes)\n\n\ndef _handle_profiles(source_folder, target_folder, output):\n    mkdir(target_folder)\n    for root, _, files in walk(source_folder):\n        relative_path = os.path.relpath(root, source_folder)\n        if relative_path == \".\":\n            relative_path = \"\"\n        for f in files:\n            profile = os.path.join(relative_path, f)\n            output.info(\"  - %s\" % profile)\n            shutil.copy(os.path.join(root, f), os.path.join(target_folder, profile))\n\n\ndef _process_git_repo(repo_url, client_cache, output, tmp_folder, verify_ssl, args=None):\n    output.info(\"Trying to clone repo: %s\" % repo_url)\n\n    with tools.chdir(tmp_folder):\n        try:\n            args = args or \"\"\n            git = Git(verify_ssl=verify_ssl, output=output)\n            git.clone(repo_url, args=args)\n            output.info(\"Repo cloned!\")\n        except Exception as e:\n            raise ConanException(\"Can't clone repo: %s\" % str(e))\n    _process_folder(tmp_folder, client_cache, output)\n\n\ndef _process_zip_file(zippath, client_cache, output, tmp_folder, remove=False):\n    unzip(zippath, tmp_folder, output=output)\n    if remove:\n        os.unlink(zippath)\n    _process_folder(tmp_folder, client_cache, output)\n\n\ndef _handle_conan_conf(current_conan_conf, new_conan_conf_path):\n    current_conan_conf.read(new_conan_conf_path)\n    with open(current_conan_conf.filename, \"w\") as f:\n        current_conan_conf.write(f)\n\n\ndef _process_folder(folder, client_cache, output):\n    for root, dirs, files in walk(folder):\n        for f in files:\n            if f == \"settings.yml\":\n                output.info(\"Installing settings.yml\")\n                settings_path = client_cache.settings_path\n                shutil.copy(os.path.join(root, f), settings_path)\n            elif f == \"conan.conf\":\n                output.info(\"Processing conan.conf\")\n                conan_conf = client_cache.conan_config\n                _handle_conan_conf(conan_conf, os.path.join(root, f))\n            elif f == \"remotes.txt\":\n                output.info(\"Defining remotes from remotes.txt\")\n                _handle_remotes(client_cache, os.path.join(root, f))\n            else:\n                relpath = os.path.relpath(root, folder)\n                target_folder = os.path.join(client_cache.conan_folder, relpath)\n                mkdir(target_folder)\n                output.info(\"Copying file %s to %s\" % (f, target_folder))\n                shutil.copy(os.path.join(root, f), target_folder)\n        for d in dirs:\n            if d == \"profiles\":\n                output.info(\"Installing profiles:\")\n                profiles_path = client_cache.profiles_path\n                _handle_profiles(os.path.join(root, d), profiles_path, output)\n                break\n        dirs[:] = [d for d in dirs if d not in (\"profiles\", \".git\")]\n\n\ndef _process_download(item, client_cache, output, tmp_folder, verify_ssl, requester):\n    output.info(\"Trying to download  %s\" % _hide_password(item))\n    zippath = os.path.join(tmp_folder, \"config.zip\")\n    try:\n        tools.download(item, zippath, out=output, verify=verify_ssl, requester=requester)\n        _process_zip_file(zippath, client_cache, output, tmp_folder, remove=True)\n    except Exception as e:\n        raise ConanException(\"Error while installing config from %s\\n%s\" % (item, str(e)))\n\n\ndef configuration_install(path_or_url, client_cache, output, verify_ssl, requester,\n                          config_type=None, args=None):\n    if path_or_url is None:\n        try:\n            item = client_cache.conan_config.get_item(\"general.config_install\")\n            _config_type, path_or_url, _verify_ssl, _args = _process_config_install_item(item)\n        except ConanException:\n            raise ConanException(\"Called config install without arguments and \"\n                                 \"'general.config_install' not defined in conan.conf\")\n    else:\n        _config_type, path_or_url, _verify_ssl, _args = _process_config_install_item(path_or_url)\n\n    config_type = config_type or _config_type\n    verify_ssl = verify_ssl or _verify_ssl\n    args = args or _args\n\n    if os.path.exists(path_or_url):\n        path_or_url = os.path.abspath(path_or_url)\n\n    tmp_folder = os.path.join(client_cache.conan_folder, \"tmp_config_install\")\n    # necessary for Mac OSX, where the temp folders in /var/ are symlinks to /private/var/\n    tmp_folder = os.path.realpath(tmp_folder)\n    mkdir(tmp_folder)\n    try:\n\n        if config_type == \"git\":\n            _process_git_repo(path_or_url, client_cache, output, tmp_folder, verify_ssl, args)\n        elif config_type == \"dir\":\n            args = None\n            _process_folder(path_or_url, client_cache, output)\n        elif config_type == \"file\":\n            args = None\n            _process_zip_file(path_or_url, client_cache, output, tmp_folder)\n        elif config_type == \"url\":\n            args = None\n            _process_download(path_or_url, client_cache, output, tmp_folder, verify_ssl,\n                              requester=requester)\n        else:\n            raise ConanException(\"Unable to process config install: %s\" % path_or_url)\n    finally:\n        if config_type is not None and path_or_url is not None:\n            value = \"%s, %s, %s, %s\" % (config_type, path_or_url, verify_ssl, args)\n            client_cache.conan_config.set_item(\"general.config_install\", value)\n        rmdir(tmp_folder)\n\n\ndef _process_config_install_item(item):\n    \"\"\"\n    Processes a config_install item and outputs a tuple with the configuration type, the path/url\n    and additional args\n\n    :param item: config_install item value from conan.conf with a simple path/url or a string\n    following this pattern: \"<config_type>:[<path_or_url>, <args>]\"\n    :return: configuration source type (git, url, dir or file), path to file/dir or git/http url and\n    additional arguments\n    \"\"\"\n    config_type, path_or_url, verify_ssl, args = None, None, None, None\n    if not item.startswith((\"git,\", \"dir,\", \"url,\", \"file,\")):\n        path_or_url = item\n        if path_or_url.endswith(\".git\"):\n            config_type = \"git\"\n        elif os.path.isdir(path_or_url):\n            config_type = \"dir\"\n        elif os.path.isfile(path_or_url):\n            config_type = \"file\"\n        elif path_or_url.startswith(\"http\"):\n            config_type = \"url\"\n        else:\n            raise ConanException(\"Unable to process config install: %s\" % path_or_url)\n    else:\n        config_type, path_or_url, verify_ssl, args = [r.strip() for r in item.split(\",\")]\n        verify_ssl = \"true\" in verify_ssl.lower()\n        args = None if \"none\" in args.lower() else args\n    return config_type, path_or_url, verify_ssl, args\n", "path": "conans/client/conf/config_installer.py"}]}