mirror of
https://github.com/bunkerity/bunkerweb
synced 2026-05-24 09:28:37 +00:00
start handling plugin svg and actions
This commit is contained in:
parent
9fbf8d4a6e
commit
c31ada6849
10 changed files with 4290 additions and 36 deletions
|
|
@ -36,17 +36,19 @@ onMounted(() => {
|
|||
<template>
|
||||
<span :id="icon.id" class="sr-only">{{ $t("icons_core_desc") }}</span>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
data-svg="core"
|
||||
role="img"
|
||||
:class="[props.iconClass, props.iconColor]"
|
||||
:aria-labelledby="icon.id"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
class="size-6"
|
||||
>
|
||||
<path d="M16.5 7.5h-9v9h9v-9Z" />
|
||||
<path
|
||||
d="m11.645 20.91-.007-.003-.022-.012a15.247 15.247 0 0 1-.383-.218 25.18 25.18 0 0 1-4.244-3.17C4.688 15.36 2.25 12.174 2.25 8.25 2.25 5.322 4.714 3 7.688 3A5.5 5.5 0 0 1 12 5.052 5.5 5.5 0 0 1 16.313 3c2.973 0 5.437 2.322 5.437 5.25 0 3.925-2.438 7.111-4.739 9.256a25.175 25.175 0 0 1-4.244 3.17 15.247 15.247 0 0 1-.383.219l-.022.012-.007.004-.003.001a.752.752 0 0 1-.704 0l-.003-.001Z"
|
||||
fill-rule="evenodd"
|
||||
d="M8.25 2.25A.75.75 0 0 1 9 3v.75h2.25V3a.75.75 0 0 1 1.5 0v.75H15V3a.75.75 0 0 1 1.5 0v.75h.75a3 3 0 0 1 3 3v.75H21A.75.75 0 0 1 21 9h-.75v2.25H21a.75.75 0 0 1 0 1.5h-.75V15H21a.75.75 0 0 1 0 1.5h-.75v.75a3 3 0 0 1-3 3h-.75V21a.75.75 0 0 1-1.5 0v-.75h-2.25V21a.75.75 0 0 1-1.5 0v-.75H9V21a.75.75 0 0 1-1.5 0v-.75h-.75a3 3 0 0 1-3-3v-.75H3A.75.75 0 0 1 3 15h.75v-2.25H3a.75.75 0 0 1 0-1.5h.75V9H3a.75.75 0 0 1 0-1.5h.75v-.75a3 3 0 0 1 3-3h.75V3a.75.75 0 0 1 .75-.75ZM6 6.75A.75.75 0 0 1 6.75 6h10.5a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75H6.75a.75.75 0 0 1-.75-.75V6.75Z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
|
|
|
|||
42
vuejs/client/src/components/Icons/Lock.vue
Normal file
42
vuejs/client/src/components/Icons/Lock.vue
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<script setup>
|
||||
/**
|
||||
@name Icons/Lock.vue
|
||||
@description This component is a svg icon representing lock.
|
||||
@example
|
||||
{
|
||||
iconColor: 'info',
|
||||
}
|
||||
@param {string} [iconClass=""]
|
||||
@param {string} [iconColor="info"] - The color of the icon between some tailwind css available colors (purple, green, red, orange, blue, yellow, gray, dark, amber, emerald, teal, indigo, cyan, sky, pink...). Darker colors are also available using the base color and adding '-darker' (e.g. 'red-darker').
|
||||
*/
|
||||
|
||||
const props = defineProps({
|
||||
iconClass: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: "default-svg",
|
||||
},
|
||||
iconColor: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: "orange",
|
||||
},
|
||||
});
|
||||
</script>
|
||||
<template>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
data-svg="lock"
|
||||
role="img"
|
||||
aria-hidden="true"
|
||||
:class="[props.iconClass, props.iconColor]"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M12 1.5a5.25 5.25 0 0 0-5.25 5.25v3a3 3 0 0 0-3 3v6.75a3 3 0 0 0 3 3h10.5a3 3 0 0 0 3-3v-6.75a3 3 0 0 0-3-3v-3c0-2.9-2.35-5.25-5.25-5.25Zm3.75 8.25v-3a3.75 3.75 0 1 0-7.5 0v3h7.5Z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
42
vuejs/client/src/components/Icons/Trash.vue
Normal file
42
vuejs/client/src/components/Icons/Trash.vue
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<script setup>
|
||||
/**
|
||||
@name Icons/Trash.vue
|
||||
@description This component is a svg icon representing trash.
|
||||
@example
|
||||
{
|
||||
iconColor: 'info',
|
||||
}
|
||||
@param {string} [iconClass=""]
|
||||
@param {string} [iconColor="info"] - The color of the icon between some tailwind css available colors (purple, green, red, orange, blue, yellow, gray, dark, amber, emerald, teal, indigo, cyan, sky, pink...). Darker colors are also available using the base color and adding '-darker' (e.g. 'red-darker').
|
||||
*/
|
||||
|
||||
const props = defineProps({
|
||||
iconClass: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: "default-svg",
|
||||
},
|
||||
iconColor: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: "orange",
|
||||
},
|
||||
});
|
||||
</script>
|
||||
<template>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
data-svg="trash"
|
||||
role="img"
|
||||
aria-hidden="true"
|
||||
:class="[props.iconClass, props.iconColor]"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M16.5 4.478v.227a48.816 48.816 0 0 1 3.878.512.75.75 0 1 1-.256 1.478l-.209-.035-1.005 13.07a3 3 0 0 1-2.991 2.77H8.084a3 3 0 0 1-2.991-2.77L4.087 6.66l-.209.035a.75.75 0 0 1-.256-1.478A48.567 48.567 0 0 1 7.5 4.705v-.227c0-1.564 1.213-2.9 2.816-2.951a52.662 52.662 0 0 1 3.369 0c1.603.051 2.815 1.387 2.815 2.951Zm-6.136-1.452a51.196 51.196 0 0 1 3.273 0C14.39 3.05 15 3.684 15 4.478v.113a49.488 49.488 0 0 0-6 0v-.113c0-.794.609-1.428 1.364-1.452Zm-.355 5.945a.75.75 0 1 0-1.5.058l.347 9a.75.75 0 1 0 1.499-.058l-.346-9Zm5.48.058a.75.75 0 1 0-1.498-.058l-.347 9a.75.75 0 0 0 1.5.058l.345-9Z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<script setup>
|
||||
import { defineProps, computed, reactive } from "vue";
|
||||
import { defineProps, computed, reactive, onMounted } from "vue";
|
||||
import Flex from "@components/Widget/Flex.vue";
|
||||
import PopoverGroup from "@components/Widget/PopoverGroup.vue";
|
||||
import Text from "@components/Widget/Text.vue";
|
||||
|
|
@ -14,6 +14,10 @@ import Grid from "@components/Widget/Grid.vue";
|
|||
details : [{
|
||||
text: "name",
|
||||
disabled : false,
|
||||
attrs: {
|
||||
id: "id",
|
||||
value: "value",
|
||||
},
|
||||
popovers: [
|
||||
{
|
||||
text: "This is a popover text",
|
||||
|
|
@ -27,7 +31,7 @@ import Grid from "@components/Widget/Grid.vue";
|
|||
},
|
||||
],
|
||||
}]
|
||||
@param {string} details - List of details item that contains a text and a list of popovers. We can also add a disabled key to disable the item.
|
||||
@param {string} details - List of details item that contains a text, disabled state, attrs and list of popovers. We can also add a disabled key to disable the item.
|
||||
@param {array} [filters=[]] - List of filters to apply on the list of items.
|
||||
@param {columns} [columns={pc: 4, tablet: 6, mobile: 12}] - Determine the position of the items in the grid system.
|
||||
*/
|
||||
|
|
@ -69,12 +73,13 @@ const data = reactive({
|
|||
/>
|
||||
<ul v-if="data.format" :class="['list-details-container']">
|
||||
<li
|
||||
v-for="item in data.format"
|
||||
v-for="(item, id) in data.format"
|
||||
:class="[
|
||||
'list-details-item',
|
||||
gridClass,
|
||||
item.disabled ? 'disabled' : 'enabled',
|
||||
]"
|
||||
v-bind="item.attrs || {}"
|
||||
>
|
||||
<Flex :flexClass="'justify-between items-center'">
|
||||
<Text :tag="'p'" :text="item.text" />
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ import Globe from "@components/Icons/Globe.vue";
|
|||
import Info from "@components/Icons/Info.vue";
|
||||
import Redirect from "@components/Icons/Redirect.vue";
|
||||
import External from "@components/Icons/External.vue";
|
||||
import Trash from "@components/Icons/Trash.vue";
|
||||
import Lock from "@components/Icons/Lock.vue";
|
||||
|
||||
import { computed } from "vue";
|
||||
|
||||
|
|
@ -111,6 +113,16 @@ const iconClass = computed(() => {
|
|||
:iconClass="iconClass"
|
||||
:iconColor="iconColor"
|
||||
/>
|
||||
<Trash
|
||||
v-if="props.iconName === 'trash'"
|
||||
:iconClass="iconClass"
|
||||
:iconColor="iconColor"
|
||||
/>
|
||||
<Lock
|
||||
v-if="props.iconName === 'lock'"
|
||||
:iconClass="iconClass"
|
||||
:iconColor="iconColor"
|
||||
/>
|
||||
<Crown
|
||||
v-if="props.iconName === 'crown'"
|
||||
:iconClass="iconClass"
|
||||
|
|
|
|||
|
|
@ -201,12 +201,13 @@
|
|||
"jobs_table_success" : "Success",
|
||||
"jobs_table_last_run_date" : "Last run date",
|
||||
"jobs_table_cache_downloadable" : "Cache (downloadable)",
|
||||
"plugins_pro_plugin": "Pro plugin",
|
||||
"plugins_core_plugin": "Core plugin",
|
||||
"plugins_external_plugin": "External plugin",
|
||||
"plugins_redirect_page": "Redirect to plugin page",
|
||||
"plugins_pro_plugin_desc": "Pro plugin",
|
||||
"plugins_core_plugin_desc": "Core plugin",
|
||||
"plugins_external_plugin_desc": "External plugin",
|
||||
"plugins_redirect_page_desc": "Redirect to plugin page",
|
||||
"plugins_search": "Search plugin",
|
||||
"plugins_search_desc": "Search the plugin by his name",
|
||||
"plugins_type": "Plugin type",
|
||||
"plugins_type_desc": "Only show plugins of the chosen type"
|
||||
"plugins_type_desc": "Only show plugins of the chosen type",
|
||||
"plugins_delete_desc": "Delete plugin"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ onBeforeMount(() => {
|
|||
const builder = [
|
||||
{
|
||||
type: "card",
|
||||
containerColumns: { pc: 12, tablet: 12, mobile: 12 },
|
||||
widgets: [
|
||||
{
|
||||
type: "Title",
|
||||
|
|
@ -47,10 +46,10 @@ const builder = [
|
|||
value: "",
|
||||
keys: ["text"],
|
||||
field: {
|
||||
id: `filter-plugin-name`,
|
||||
id: "filter-plugin-name",
|
||||
value: "",
|
||||
type: "text",
|
||||
name: `filter-plugin-name`,
|
||||
name: "filter-plugin-name",
|
||||
containerClass: "setting",
|
||||
label: "plugins_search",
|
||||
placeholder: "inp_keyword",
|
||||
|
|
@ -63,7 +62,11 @@ const builder = [
|
|||
svgSize: "sm",
|
||||
},
|
||||
],
|
||||
columns: { pc: 3, tablet: 4, mobile: 12 },
|
||||
columns: {
|
||||
pc: 3,
|
||||
tablet: 4,
|
||||
mobile: 12,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -73,10 +76,10 @@ const builder = [
|
|||
value: "all",
|
||||
keys: ["type"],
|
||||
field: {
|
||||
id: `filter-plugin-type`,
|
||||
id: "filter-plugin-type",
|
||||
value: "all",
|
||||
values: ["all", "pro", "core", "external"],
|
||||
name: `filter-plugin-type`,
|
||||
name: "filter-plugin-type",
|
||||
onlyDown: true,
|
||||
label: "plugins_type",
|
||||
containerClass: "setting",
|
||||
|
|
@ -89,52 +92,487 @@ const builder = [
|
|||
svgSize: "sm",
|
||||
},
|
||||
],
|
||||
columns: { pc: 3, tablet: 4, mobile: 12 },
|
||||
columns: {
|
||||
pc: 3,
|
||||
tablet: 4,
|
||||
mobile: 12,
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
columns: { pc: 4, tablet: 6, mobile: 12 },
|
||||
details: [
|
||||
{
|
||||
text: "Pro",
|
||||
text: "General",
|
||||
type: "pro",
|
||||
attrs: {
|
||||
"data-plugin-id": "general",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: true,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_pro_plugin",
|
||||
text: "plugins_pro_plugin_desc",
|
||||
iconName: "crown",
|
||||
iconColor: "amber",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Core",
|
||||
text: "Antibot",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "antibot",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_core_plugin",
|
||||
iconName: "core",
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Auth basic",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "authbasic",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Backup",
|
||||
type: "pro",
|
||||
attrs: {
|
||||
"data-plugin-id": "backup",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: true,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
{
|
||||
text: "plugins_pro_plugin_desc",
|
||||
iconName: "crown",
|
||||
iconColor: "amber",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Bad behavior",
|
||||
type: "external",
|
||||
attrs: {
|
||||
"data-plugin-id": "badbehavior",
|
||||
"data-plugin-delete": "true",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
{
|
||||
text: "plugins_delete_desc",
|
||||
iconName: "trash",
|
||||
iconColor: "red",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "external",
|
||||
type: "external",
|
||||
text: "Blacklist",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "blacklist",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page",
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "info",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Brotli",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "brotli",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "BunkerNet",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "bunkernet",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_external_plugin",
|
||||
iconName: "external",
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "CORS",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "cors",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Client cache",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "clientcache",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Country",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "country",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Custom HTTPS certificate",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "customcert",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "DB",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "db",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "DNSBL",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "dnsbl",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Errors",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "errors",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Greylist",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "greylist",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Gzip",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "gzip",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "HTML injection",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "inject",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Headers",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "headers",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Jobs",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "jobs",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Let's Encrypt",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "letsencrypt",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Limit",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "limit",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Metrics",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "metrics",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Miscellaneous",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "misc",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "ModSecurity",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "modsecurity",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "PHP",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "php",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Pro",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "pro",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Real IP",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "realip",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Redirect",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "redirect",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Redis",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "redis",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Reverse proxy",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "reverseproxy",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Reverse scan",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "reversescan",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "Self-signed certificate",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "selfsigned",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Sessions",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "sessions",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "UI",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "ui",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [],
|
||||
},
|
||||
{
|
||||
text: "Whitelist",
|
||||
type: "core",
|
||||
attrs: {
|
||||
"data-plugin-id": "whitelist",
|
||||
"data-plugin-delete": "false",
|
||||
},
|
||||
disabled: false,
|
||||
popovers: [
|
||||
{
|
||||
text: "plugins_redirect_page_desc",
|
||||
iconName: "redirect",
|
||||
iconColor: "blue",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
columns: {
|
||||
pc: 4,
|
||||
tablet: 6,
|
||||
mobile: 12,
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
|
|
|
|||
|
|
@ -429,9 +429,11 @@ def job_builder(jobs):
|
|||
}
|
||||
]
|
||||
|
||||
# store on a file
|
||||
with open("jobs.json", "w") as f:
|
||||
json.dump(builder, f, indent=4)
|
||||
return builder
|
||||
|
||||
|
||||
job_builder(jobs)
|
||||
output = job_builder(jobs)
|
||||
|
||||
# store on a file
|
||||
with open("jobs.json", "w") as f:
|
||||
json.dump(output, f, indent=4)
|
||||
|
|
|
|||
3147
vuejs/tests/plugins.py
Normal file
3147
vuejs/tests/plugins.py
Normal file
File diff suppressed because it is too large
Load diff
563
vuejs/tests/plugins_page.json
Normal file
563
vuejs/tests/plugins_page.json
Normal file
|
|
@ -0,0 +1,563 @@
|
|||
[
|
||||
{
|
||||
"type": "card",
|
||||
"widgets": [
|
||||
{
|
||||
"type": "Title",
|
||||
"data": {
|
||||
"title": "dashboard_plugins",
|
||||
"type": "card"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ListDetails",
|
||||
"data": {
|
||||
"filters": [
|
||||
{
|
||||
"filter": "default",
|
||||
"filterName": "keyword",
|
||||
"type": "keyword",
|
||||
"value": "",
|
||||
"keys": [
|
||||
"text"
|
||||
],
|
||||
"field": {
|
||||
"id": "filter-plugin-name",
|
||||
"value": "",
|
||||
"type": "text",
|
||||
"name": "filter-plugin-name",
|
||||
"containerClass": "setting",
|
||||
"label": "plugins_search",
|
||||
"placeholder": "inp_keyword",
|
||||
"isClipboard": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_search_desc",
|
||||
"iconName": "info",
|
||||
"iconColor": "info",
|
||||
"svgSize": "sm"
|
||||
}
|
||||
],
|
||||
"columns": {
|
||||
"pc": 3,
|
||||
"tablet": 4,
|
||||
"mobile": 12
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"filter": "default",
|
||||
"filterName": "type",
|
||||
"type": "select",
|
||||
"value": "all",
|
||||
"keys": [
|
||||
"type"
|
||||
],
|
||||
"field": {
|
||||
"id": "filter-plugin-type",
|
||||
"value": "all",
|
||||
"values": [
|
||||
"all",
|
||||
"pro",
|
||||
"core",
|
||||
"external"
|
||||
],
|
||||
"name": "filter-plugin-type",
|
||||
"onlyDown": true,
|
||||
"label": "plugins_type",
|
||||
"containerClass": "setting",
|
||||
"maxBtnChars": 24,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_type_desc",
|
||||
"iconName": "info",
|
||||
"iconColor": "info",
|
||||
"svgSize": "sm"
|
||||
}
|
||||
],
|
||||
"columns": {
|
||||
"pc": 3,
|
||||
"tablet": 4,
|
||||
"mobile": 12
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"details": [
|
||||
{
|
||||
"text": "General",
|
||||
"type": "pro",
|
||||
"attrs": {
|
||||
"data-plugin-id": "general",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": true,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_pro_plugin_desc",
|
||||
"iconName": "crown",
|
||||
"iconColor": "amber"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Antibot",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "antibot",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Auth basic",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "authbasic",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Backup",
|
||||
"type": "pro",
|
||||
"attrs": {
|
||||
"data-plugin-id": "backup",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": true,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
},
|
||||
{
|
||||
"text": "plugins_pro_plugin_desc",
|
||||
"iconName": "crown",
|
||||
"iconColor": "amber"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Bad behavior",
|
||||
"type": "external",
|
||||
"attrs": {
|
||||
"data-plugin-id": "badbehavior",
|
||||
"data-plugin-delete": "true"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
},
|
||||
{
|
||||
"text": "plugins_delete_desc",
|
||||
"iconName": "trash",
|
||||
"iconColor": "red"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Blacklist",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "blacklist",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Brotli",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "brotli",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "BunkerNet",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "bunkernet",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "CORS",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "cors",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Client cache",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "clientcache",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Country",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "country",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Custom HTTPS certificate",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "customcert",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "DB",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "db",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "DNSBL",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "dnsbl",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Errors",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "errors",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Greylist",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "greylist",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Gzip",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "gzip",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "HTML injection",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "inject",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Headers",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "headers",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Jobs",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "jobs",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Let's Encrypt",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "letsencrypt",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Limit",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "limit",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Metrics",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "metrics",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Miscellaneous",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "misc",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "ModSecurity",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "modsecurity",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "PHP",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "php",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Pro",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "pro",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Real IP",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "realip",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Redirect",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "redirect",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Redis",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "redis",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Reverse proxy",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "reverseproxy",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Reverse scan",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "reversescan",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "Self-signed certificate",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "selfsigned",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Sessions",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "sessions",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "UI",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "ui",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": []
|
||||
},
|
||||
{
|
||||
"text": "Whitelist",
|
||||
"type": "core",
|
||||
"attrs": {
|
||||
"data-plugin-id": "whitelist",
|
||||
"data-plugin-delete": "false"
|
||||
},
|
||||
"disabled": false,
|
||||
"popovers": [
|
||||
{
|
||||
"text": "plugins_redirect_page_desc",
|
||||
"iconName": "redirect",
|
||||
"iconColor": "blue"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"columns": {
|
||||
"pc": 4,
|
||||
"tablet": 6,
|
||||
"mobile": 12
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
Loading…
Reference in a new issue