mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 06:05:24 +00:00
feat: harden plugin api for separate repos, signed updates and generic external login
This commit is contained in:
1 parent
fb9c168b6b
commit
80944301dd
310 files changed
+6577
-4927
No files matched your search
@@ -82,12 +82,12 @@
|
||||
"termix": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"description": "Display string only. Never enforced."
|
||||
"description": "Semver range of Termix releases the plugin runs on, e.g. \">=2.9.0\"."
|
||||
},
|
||||
"api": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9]+$",
|
||||
"description": "Plugin SDK major version. The real compatibility gate."
|
||||
"minLength": 1,
|
||||
"description": "Semver range of the plugin API it needs, e.g. \"1\" or \"^1.2\"."
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -115,6 +115,8 @@
|
||||
"notify:send",
|
||||
"audit:read",
|
||||
"desktop:window",
|
||||
"users:impersonate",
|
||||
"db:core-refs",
|
||||
"hosts:read",
|
||||
"db:own",
|
||||
"kv:own",
|
||||
@@ -290,7 +292,9 @@
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z][a-z0-9-]{0,31}$",
|
||||
"not": { "enum": ["ssh"] }
|
||||
"not": {
|
||||
"enum": ["ssh"]
|
||||
}
|
||||
},
|
||||
"credentialFields": {
|
||||
"type": "array",
|
||||
@@ -311,7 +315,9 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"secret": { "type": "boolean" }
|
||||
"secret": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -323,7 +329,9 @@
|
||||
"hostLoginFallback": {
|
||||
"type": "array",
|
||||
"uniqueItems": true,
|
||||
"items": { "enum": ["username", "password"] }
|
||||
"items": {
|
||||
"enum": ["username", "password"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -352,17 +360,28 @@
|
||||
"type": "object",
|
||||
"propertyNames": {
|
||||
"pattern": "^[a-zA-Z][a-zA-Z0-9]{0,31}$",
|
||||
"not": { "const": "type" }
|
||||
"not": {
|
||||
"const": "type"
|
||||
}
|
||||
},
|
||||
"additionalProperties": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["type"],
|
||||
"properties": {
|
||||
"type": { "enum": ["string", "boolean"] },
|
||||
"required": { "type": "boolean" },
|
||||
"pattern": { "type": "string" },
|
||||
"maxLength": { "type": "integer", "minimum": 1 },
|
||||
"type": {
|
||||
"enum": ["string", "boolean"]
|
||||
},
|
||||
"required": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"pattern": {
|
||||
"type": "string"
|
||||
},
|
||||
"maxLength": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"syncEntity": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-zA-Z][a-zA-Z0-9]*$"
|
||||
@@ -894,6 +913,15 @@
|
||||
"ownerOnly": {
|
||||
"type": "boolean",
|
||||
"description": "Only the host's owner may change it."
|
||||
},
|
||||
"secretKeys": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"description": "JSON fields only: keys inside the stored object that hold secrets."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -962,7 +990,9 @@
|
||||
"type": "string",
|
||||
"pattern": "^(/[A-Za-z0-9_.-]+)+$"
|
||||
},
|
||||
"status": { "enum": [307, 308] }
|
||||
"status": {
|
||||
"enum": [307, 308]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1041,6 +1071,16 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"uses": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"uniqueItems": true,
|
||||
"description": "Other plugins' action, slot and extension point ids this plugin calls, fills or extends.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)+$"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user