mirror of
https://github.com/jumpserver/lina.git
synced 2026-01-15 14:24:39 +00:00
replay storage update (#36)
This commit is contained in:
@@ -56,3 +56,10 @@ export function TestReplayStorage(id) {
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export function getReplayStorage(id) {
|
||||
return request({
|
||||
url: `/api/v1/terminal/replay-storages/${id}/`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ const cn = {
|
||||
'PlatformUpdate': '更新系统平台',
|
||||
'CommandFilterCreate': '创建命令过滤器',
|
||||
'CommandFilterUpdate': '更新命令过滤器',
|
||||
'CreateReplyStorage': '创建录像存储'
|
||||
'CreateReplayStorage': '创建录像存储'
|
||||
},
|
||||
// 用户模块翻译
|
||||
users: {
|
||||
|
||||
@@ -315,7 +315,7 @@ const en = {
|
||||
'replayStorage': 'Replay Storage',
|
||||
'storage': 'Storage',
|
||||
'test': 'Test',
|
||||
'createReplyStorage': 'Create replay storage',
|
||||
'createReplayStorage': 'Create replay storage',
|
||||
'endPoint': 'Endpoint',
|
||||
'bucket': 'Bucket',
|
||||
'type': 'Type',
|
||||
|
||||
@@ -419,9 +419,9 @@ export const constantRoutes = [
|
||||
},
|
||||
{
|
||||
path: 'replay-storage/create',
|
||||
name: 'CreateReplyStorage',
|
||||
component: () => import('@/views/sessions/ReplyStorageCreate'),
|
||||
meta: { title: 'CreateReplyStorage' },
|
||||
name: 'CreateReplayStorage',
|
||||
component: () => import('@/views/sessions/ReplayStorageCreate'),
|
||||
meta: { title: 'CreateReplayStorage' },
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
@@ -430,6 +430,13 @@ export const constantRoutes = [
|
||||
component: () => import('@/views/sessions/CommandStorageCreate'),
|
||||
meta: { title: 'CreateCommandStorage' },
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: 'replay-storage/:id/update',
|
||||
name: 'ReplayStorageUpdate',
|
||||
component: () => import('@/views/sessions/ReplayStorageUpdate'),
|
||||
meta: { title: 'ReplayStorageUpdate' },
|
||||
hidden: true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -100,7 +100,7 @@ export default {
|
||||
return value
|
||||
},
|
||||
createEsMeta(value) {
|
||||
const host_array = value.hosts.split(',')
|
||||
const host_array = value.hosts.split(',').map(item => (item.trim()))
|
||||
return {
|
||||
name: value.name,
|
||||
type: 'es',
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
export default {
|
||||
name: 'ReplyStorageCreate',
|
||||
name: 'ReplayStorageCreate',
|
||||
components: {
|
||||
GenericCreateUpdatePage
|
||||
},
|
||||
@@ -173,8 +173,7 @@ export default {
|
||||
endpoint_suffix: 'core.chinacloudapi.cn'
|
||||
},
|
||||
fields: [
|
||||
[this.$t('sessions.createReplyStorage'),
|
||||
['name', 'type', 'container_name', 'account_name', 'account_key', 'endpoint_suffix', 'comment']]
|
||||
['', ['name', 'type', 'container_name', 'account_name', 'account_key', 'endpoint_suffix', 'comment']]
|
||||
],
|
||||
fieldsMeta: {
|
||||
name: {
|
||||
396
src/views/sessions/ReplayStorageUpdate.vue
Normal file
396
src/views/sessions/ReplayStorageUpdate.vue
Normal file
@@ -0,0 +1,396 @@
|
||||
<template>
|
||||
<div v-if="!loading">
|
||||
<GenericCreateUpdatePage :fields="selectFields" :url="url" :update-success-next-route="updateSuccessUrl" :clean-form-value="cleanFormValue" :object="formData" :fields-meta="selectedFieldsMeta" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import GenericCreateUpdatePage from '@/layout/components/GenericCreateUpdatePage'
|
||||
import { getReplayStorage } from '@/api/sessions'
|
||||
export default {
|
||||
name: 'ReplayStorageUpdate',
|
||||
components: {
|
||||
GenericCreateUpdatePage
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
updateSuccessUrl: { name: 'Storage' },
|
||||
replayData: {},
|
||||
formData: {
|
||||
type: '',
|
||||
name: '',
|
||||
comment: ''
|
||||
},
|
||||
url: '/api/v1/terminal/replay-storages/',
|
||||
s3: {
|
||||
fields: [
|
||||
['', ['name', 'type', 'bucket', 'access_key', 'secret_key', 'endpoint', 'comment']]
|
||||
],
|
||||
fieldsMeta: {
|
||||
name: {
|
||||
label: this.$t('sessions.name')
|
||||
},
|
||||
comment: {
|
||||
label: this.$t('sessions.comment')
|
||||
},
|
||||
type: {
|
||||
label: this.$t('sessions.type'),
|
||||
disabled: true,
|
||||
rules: [
|
||||
{ required: true }
|
||||
]
|
||||
},
|
||||
bucket: {
|
||||
label: this.$t('sessions.bucket')
|
||||
},
|
||||
access_key: {
|
||||
label: 'Access key'
|
||||
},
|
||||
secret_key: {
|
||||
label: 'Secret key'
|
||||
},
|
||||
endpoint: {
|
||||
label: this.$t('sessions.endPoint')
|
||||
}
|
||||
}
|
||||
},
|
||||
ceph: {
|
||||
fields: [
|
||||
['', ['name', 'type', 'bucket', 'access_key', 'secret_key', 'endpoint', 'comment']]
|
||||
],
|
||||
fieldsMeta: {
|
||||
name: {
|
||||
label: this.$t('sessions.name')
|
||||
},
|
||||
comment: {
|
||||
label: this.$t('sessions.comment')
|
||||
},
|
||||
type: {
|
||||
label: this.$t('sessions.type'),
|
||||
disabled: true,
|
||||
rules: [
|
||||
{ required: true }
|
||||
]
|
||||
},
|
||||
bucket: {
|
||||
label: this.$t('sessions.bucket')
|
||||
},
|
||||
access_key: {
|
||||
label: 'Access key'
|
||||
},
|
||||
secret_key: {
|
||||
label: 'Secret key'
|
||||
},
|
||||
endpoint: {
|
||||
label: this.$t('sessions.endPoint')
|
||||
}
|
||||
}
|
||||
},
|
||||
swift: {
|
||||
fields: [
|
||||
['', ['name', 'type', 'bucket', 'access_key', 'secret_key', 'region', 'endpoint', 'protocol', 'comment']]
|
||||
],
|
||||
fieldsMeta: {
|
||||
name: {
|
||||
label: this.$t('sessions.name')
|
||||
},
|
||||
comment: {
|
||||
label: this.$t('sessions.comment')
|
||||
},
|
||||
type: {
|
||||
label: this.$t('sessions.type'),
|
||||
disabled: true,
|
||||
rules: [
|
||||
{ required: true }
|
||||
]
|
||||
},
|
||||
bucket: {
|
||||
label: this.$t('sessions.bucket')
|
||||
},
|
||||
access_key: {
|
||||
label: 'Access key'
|
||||
},
|
||||
secret_key: {
|
||||
label: 'Secret key'
|
||||
},
|
||||
region: {
|
||||
label: this.$t('sessions.region')
|
||||
},
|
||||
endpoint: {
|
||||
label: this.$t('sessions.endPoint')
|
||||
},
|
||||
protocol: {
|
||||
label: this.$t('sessions.protocol'),
|
||||
type: 'select',
|
||||
options: [
|
||||
{ label: 'http', value: 'http' },
|
||||
{ label: 'https', value: 'https' }
|
||||
],
|
||||
rules: [
|
||||
{ required: true }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
oss: {
|
||||
fields: [
|
||||
['', ['name', 'type', 'bucket', 'access_key', 'secret_key', 'endpoint', 'comment']]
|
||||
],
|
||||
fieldsMeta: {
|
||||
name: {
|
||||
label: this.$t('sessions.name')
|
||||
},
|
||||
comment: {
|
||||
label: this.$t('sessions.comment')
|
||||
},
|
||||
type: {
|
||||
label: this.$t('sessions.type'),
|
||||
disabled: true,
|
||||
rules: [
|
||||
{ required: true }
|
||||
]
|
||||
},
|
||||
bucket: {
|
||||
label: this.$t('sessions.bucket')
|
||||
},
|
||||
access_key: {
|
||||
label: 'Access key'
|
||||
},
|
||||
secret_key: {
|
||||
label: 'Secret key'
|
||||
},
|
||||
endpoint: {
|
||||
label: this.$t('sessions.endPoint')
|
||||
}
|
||||
}
|
||||
},
|
||||
azure: {
|
||||
initial: {
|
||||
type: 'azure',
|
||||
endpoint_suffix: 'core.chinacloudapi.cn'
|
||||
},
|
||||
fields: [
|
||||
['', ['name', 'type', 'container_name', 'account_name', 'account_key', 'endpoint_suffix', 'comment']]
|
||||
],
|
||||
fieldsMeta: {
|
||||
name: {
|
||||
label: this.$t('sessions.name')
|
||||
},
|
||||
comment: {
|
||||
label: this.$t('sessions.comment')
|
||||
},
|
||||
type: {
|
||||
label: this.$t('sessions.type'),
|
||||
disabled: true,
|
||||
rules: [
|
||||
{ required: true }
|
||||
]
|
||||
},
|
||||
container_name: {
|
||||
label: this.$t('sessions.containerName')
|
||||
},
|
||||
account_name: {
|
||||
label: this.$t('sessions.accountName')
|
||||
},
|
||||
account_key: {
|
||||
label: this.$t('sessions.accountKey')
|
||||
},
|
||||
endpoint_suffix: {
|
||||
label: this.$t('sessions.endpointSuffix'),
|
||||
type: 'select',
|
||||
options: [
|
||||
{ label: 'core.chinacloudapi.cn', value: 'core.chinacloudapi.cn' },
|
||||
{ label: 'core.windows.net', value: 'core.windows.net' }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
selectFields() {
|
||||
return this.renderReplayStorage.fields
|
||||
},
|
||||
selectedFieldsMeta() {
|
||||
return this.renderReplayStorage.fieldsMeta
|
||||
},
|
||||
renderReplayStorage() {
|
||||
switch (this.formData.type.toLowerCase()) {
|
||||
case 's3':
|
||||
return this.s3
|
||||
case 'ceph':
|
||||
return this.ceph
|
||||
case 'swift':
|
||||
return this.swift
|
||||
case 'oss':
|
||||
return this.oss
|
||||
case 'azure':
|
||||
return this.azure
|
||||
default:
|
||||
return this.s3
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
getReplayStorage(this.$route.params.id).then(data => {
|
||||
this.replayData = data
|
||||
console.log(data)
|
||||
this.formData = this.convertMataToForm(this.replayData)
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
convertMataToForm(replayData) {
|
||||
switch (replayData.type.toLowerCase()) {
|
||||
case 's3':
|
||||
return this.s3MetaToForm(replayData)
|
||||
case 'ceph':
|
||||
return this.cephMetaToForm(replayData)
|
||||
case 'swift':
|
||||
return this.swiftMetaToForm(replayData)
|
||||
case 'oss':
|
||||
return this.ossMetaForm(replayData)
|
||||
case 'azure':
|
||||
return this.azureMetaForm(replayData)
|
||||
default:
|
||||
return {}
|
||||
}
|
||||
},
|
||||
s3MetaToForm(replayData) {
|
||||
return {
|
||||
name: replayData.name,
|
||||
type: 's3',
|
||||
comment: replayData.comment,
|
||||
bucket: replayData.meta.BUCKET,
|
||||
endpoint: replayData.meta.ENDPOINT
|
||||
}
|
||||
},
|
||||
cephMetaToForm(replayData) {
|
||||
return {
|
||||
name: replayData.name,
|
||||
type: 'ceph',
|
||||
comment: replayData.comment,
|
||||
bucket: replayData.meta.BUCKET,
|
||||
endpoint: replayData.meta.ENDPOINT
|
||||
}
|
||||
},
|
||||
swiftMetaToForm(replayData) {
|
||||
return {
|
||||
name: replayData.name,
|
||||
type: 'swift',
|
||||
comment: replayData.comment,
|
||||
bucket: replayData.meta.BUCKET,
|
||||
region: replayData.meta.REGION,
|
||||
endpoint: replayData.meta.ENDPOINT,
|
||||
protocol: replayData.meta.PROTOCOL
|
||||
}
|
||||
},
|
||||
ossMetaForm(replayData) {
|
||||
return {
|
||||
name: replayData.name,
|
||||
type: 'oss',
|
||||
comment: replayData.comment,
|
||||
bucket: replayData.meta.BUCKET,
|
||||
endpoint: replayData.meta.ENDPOINT
|
||||
}
|
||||
},
|
||||
azureMetaForm(replayData) {
|
||||
return {
|
||||
name: replayData.name,
|
||||
type: 'azure',
|
||||
comment: replayData.comment,
|
||||
container_name: replayData.meta.CONTAINER_NAME,
|
||||
account_name: replayData.meta.ACCOUNT_NAME,
|
||||
endpoint_suffix: replayData.meta.ENDPOINT_SUFFIX
|
||||
}
|
||||
},
|
||||
cleanFormValue(value) {
|
||||
switch (value.type.toLowerCase()) {
|
||||
case 's3':
|
||||
return this.createS3Meta(value)
|
||||
case 'ceph':
|
||||
return this.createCephMeta(value)
|
||||
case 'swift':
|
||||
return this.createSwiftMeta(value)
|
||||
case 'oss':
|
||||
return this.createOSSMeta(value)
|
||||
case 'azure':
|
||||
return this.createAzureMeta(value)
|
||||
}
|
||||
return value
|
||||
},
|
||||
createS3Meta(value) {
|
||||
return {
|
||||
name: value.name,
|
||||
type: 's3',
|
||||
comment: value.comment,
|
||||
meta: {
|
||||
s3_bucket: value.bucket,
|
||||
s3_access_key: value.access_key,
|
||||
s3_secret_key: value.secret_key,
|
||||
s3_endpoint: value.endpoint
|
||||
}
|
||||
}
|
||||
},
|
||||
createCephMeta(value) {
|
||||
return {
|
||||
name: value.name,
|
||||
type: 'ceph',
|
||||
comment: value.comment,
|
||||
meta: {
|
||||
ceph_bucket: value.bucket,
|
||||
ceph_access_key: value.access_key,
|
||||
ceph_secret_key: value.secret_key,
|
||||
ceph_endpoint: value.endpoint
|
||||
}
|
||||
}
|
||||
},
|
||||
createSwiftMeta(value) {
|
||||
return {
|
||||
name: value.name,
|
||||
type: 'swift',
|
||||
comment: value.comment,
|
||||
meta: {
|
||||
swift_bucket: value.bucket,
|
||||
swift_access_key: value.access_key,
|
||||
swift_secret_key: value.secret_key,
|
||||
swift_region: value.region,
|
||||
swift_endpoint: value.endpoint,
|
||||
swift_protocol: value.protocol
|
||||
}
|
||||
}
|
||||
},
|
||||
createOSSMeta(value) {
|
||||
return {
|
||||
name: value.name,
|
||||
type: 'oss',
|
||||
comment: value.comment,
|
||||
meta: {
|
||||
oss_bucket: value.bucket,
|
||||
oss_access_key: value.access_key,
|
||||
oss_secret_key: value.secret_key,
|
||||
oss_endpoint: value.endpoint
|
||||
}
|
||||
}
|
||||
},
|
||||
createAzureMeta(value) {
|
||||
return {
|
||||
name: value.name,
|
||||
type: 'azure',
|
||||
comment: value.comment,
|
||||
meta: {
|
||||
azure_container_name: value.container_name,
|
||||
azure_account_name: value.account_name,
|
||||
azure_account_key: value.account_key,
|
||||
azure_endpoint_suffix: value.endpoint_suffix
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -97,6 +97,9 @@ export default {
|
||||
actions: {
|
||||
prop: 'id',
|
||||
actions: {
|
||||
onUpdate: function({ row, col }) {
|
||||
this.$router.push({ name: 'ReplayStorageUpdate', params: { id: row.id }})
|
||||
},
|
||||
canUpdate: function(row, cellValue) {
|
||||
return (row.name !== 'default' && row.name !== 'null')
|
||||
},
|
||||
@@ -202,19 +205,19 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
createS3() {
|
||||
this.$router.push({ name: 'CreateReplyStorage', query: { type: 's3' }})
|
||||
this.$router.push({ name: 'CreateReplayStorage', query: { type: 's3' }})
|
||||
},
|
||||
createCeph() {
|
||||
this.$router.push({ name: 'CreateReplyStorage', query: { type: 'ceph' }})
|
||||
this.$router.push({ name: 'CreateReplayStorage', query: { type: 'ceph' }})
|
||||
},
|
||||
createSwift() {
|
||||
this.$router.push({ name: 'CreateReplyStorage', query: { type: 'swift' }})
|
||||
this.$router.push({ name: 'CreateReplayStorage', query: { type: 'swift' }})
|
||||
},
|
||||
createOSS() {
|
||||
this.$router.push({ name: 'CreateReplyStorage', query: { type: 'oss' }})
|
||||
this.$router.push({ name: 'CreateReplayStorage', query: { type: 'oss' }})
|
||||
},
|
||||
createAzure() {
|
||||
this.$router.push({ name: 'CreateReplyStorage', query: { type: 'azure' }})
|
||||
this.$router.push({ name: 'CreateReplayStorage', query: { type: 'azure' }})
|
||||
},
|
||||
createEs() {
|
||||
this.$router.push({ name: 'CreateCommandStorage', query: { type: 'es' }})
|
||||
|
||||
Reference in New Issue
Block a user