Пример #1
0
    def do_list(self, args):
        """ show all avaliable templates from github """
        if not path.isfile(self.save_path):
            print(
                display_messages(
                    "can't find downloaded file: {}".format(self.save_path), error=True
                )
            )
            return

        config = SettingsINI(self.config_file_ini)

        plugins_installed = self.config_default.get_all_childname("plugins")

        self.plugins_remote = {}
        for plugin in config.get_all_childname("plugins"):
            self.plugins_remote[plugin] = {}
            for info in config.get_all_childname("info_{}".format(plugin)):
                self.plugins_remote[plugin][info] = config.get(
                    "info_{}".format(plugin), info
                )

            self.plugins_remote[plugin]["installed"] = (
                setcolor("True", color="green")
                if plugin in plugins_installed
                else setcolor("False", color="red")
            )

        self.table_output = []
        for plugin in self.plugins_remote:
            self.table_output.append(
                [
                    self.plugins_remote[plugin]["name"],
                    self.plugins_remote[plugin]["author"],
                    self.plugins_remote[plugin]["installed"],
                    self.plugins_remote[plugin]["preview"],
                ]
            )
        if len(self.table_output) > 0:
            print(
                display_messages(
                    "Available Customs CaptiveFlask:", info=True, sublime=True
                )
            )
            display_tabulate(self.table_headers, self.table_output)
Пример #2
0
    def installPluginByName(self, plugin_name):
        print(
            display_messages(
                "Install plugin:: {}".format(
                    setcolor(plugin_name, color="yellow")),
                info=True,
                sublime=True,
            ))
        source = "{}/plugins/{}.py".format(self.extracted_filepath,
                                           plugin_name)
        destination = "{}/{}.py".format(self.captiveflask_path, plugin_name)
        dest = copyfile(source, destination)
        print(
            display_messages("copy content file to {}".format(dest),
                             info=True))

        folder_plugin = "{}/templates/{}".format(self.extracted_filepath,
                                                 plugin_name)
        copy_tree(folder_plugin, "config/templates/{}".format(plugin_name))
        print(
            display_messages(
                "copy content directory to {}".format(
                    "config/templates/{}".format(plugin_name)),
                info=True,
            ))

        self.config_default.set("plugins", plugin_name, False)
        config = SettingsINI(self.config_file_ini)
        if config.get_all_childname("set_{}".format(plugin_name)) != []:
            for language in config.get_all_childname(
                    "set_{}".format(plugin_name)):
                self.config_default.set("set_{}".format(plugin_name), language,
                                        False)
            self.config_default.set("set_{}".format(plugin_name), "Default",
                                    True)

        print(
            display_messages(
                "plugin install {}".format(setcolor("sucessful",
                                                    color="green")),
                info=True,
            ))
class TestConfigPumpkinProxy(unittest.TestCase):
    def test_config_key_set(self):
        self.config = SettingsINI(C.CONFIG_PP_INI)
        self.result = "http://example.com/foo.js"
        self.value = self.config.get("set_js_inject", "url")
        self.assertEqual(self.result, self.value)

    def test_get_all_configkey_list(self):
        self.config = SettingsINI(C.CONFIG_PP_INI)
        self.result = ["url"]
        self.value = self.config.get_all_childname("set_js_inject")
        self.assertEqual(self.result, self.value)
Пример #4
0
    def test_read_config_SettingsINI(self):
        config_file_ini = (tempfile.gettempdir() +
                           "/extra-captiveflask-master/config.ini")
        config = SettingsINI(config_file_ini)

        result = {
            "example": {
                "author": "mh4x0f",
                "description": "Example is a simple portal default page",
                "preview": "https://i.imgur.com/G0wtAme.png",
                "name": "example",
                "version": "1.0",
            }
        }
        plugins = {}
        for plugin in config.get_all_childname("plugins"):
            plugins[plugin] = {}
            for info in config.get_all_childname("info_{}".format(plugin)):
                plugins[plugin][info] = config.get("info_{}".format(plugin),
                                                   info)
        for plugin in plugins:
            print(plugin)

        self.assertEqual(result["example"], plugins["example"])
Пример #5
0
class SettingsPluginsResource(Resource):
    config = None
    key_name = "plugins"

    def create_config(self, plugin_id):
        plugin_settings_ini = C.ALL_CONFIGSINI.get(plugin_id)
        if plugin_settings_ini is None:
            return
        self.config = SettingsINI(plugin_settings_ini)

    @token_required
    def get(self, plugin_id=None):
        self.create_config(plugin_id)

        if self.config is None:
            return exception(
                "Cannot found plugin {} ini file.".format(plugin_id), code=400)
        data = {}

        for key in self.config.get_all_childname(self.key_name):
            data[key] = self.config.get(self.key_name, key)
            for sub_key in self.config.get_all_childname("set_{}".format(key)):
                if "set_{}".format(key) in list(data.keys()):
                    data["set_{}".format(key)].append({
                        sub_key:
                        self.config.get("set_{}".format(key), sub_key)
                    })
                else:
                    data["set_{}".format(key)] = []
                    data["set_{}".format(key)].append({
                        sub_key:
                        self.config.get("set_{}".format(key), sub_key)
                    })

        return jsonify(data)

    @token_required
    def post(self, plugin_id=None):
        data = request.get_json(force=True)
        self.create_config(plugin_id)
        if self.config is None:
            return exception(
                "Cannot found plugin {} ini file.".format(plugin_id), code=400)
        for key, value in data.items():
            if str(key).startswith("set_"):
                for item in value:
                    for sub_key, sub_value in item.items():
                        if not sub_key in self.config.get_all_childname(key):
                            return exception(
                                "Cannot found that attribute {} on {}!".format(
                                    sub_key, key),
                                code=400,
                            )
                        self.config.set(key, sub_key, sub_value)
            else:
                if not key in self.config.get_all_childname(self.key_name):
                    return exception(
                        "Cannot found that attribute {} on {}!".format(
                            key, self.key_name),
                        code=400,
                    )
                self.config.set(self.key_name, key, value)
        return jsonify(data)