diff --git a/mayfly_go_web/src/views/ops/db/DbList.vue b/mayfly_go_web/src/views/ops/db/DbList.vue
index 28c92316..4d19fbeb 100644
--- a/mayfly_go_web/src/views/ops/db/DbList.vue
+++ b/mayfly_go_web/src/views/ops/db/DbList.vue
@@ -56,10 +56,10 @@
{{ `${data.host}:${data.port}` }}
-
-
+
+
- 查看
+ 库操作
@@ -80,16 +80,28 @@
-
-
- 详情
- SQL执行记录
-
+
+ SQL记录
-
- 编辑
- 导出
+
+
+
+ 更多
+
+
+
+
+
+
+ 详情
+
+ 编辑
+
+ 导出
+
+
+
@@ -204,14 +216,12 @@ const columns = ref([
TableColumn.new('host', 'ip:port').isSlot().setAddWidth(40),
TableColumn.new('username', 'username'),
TableColumn.new('name', '名称'),
- TableColumn.new('database', '数据库').isSlot().setMinWidth(70),
TableColumn.new('remark', '备注'),
- TableColumn.new('more', '更多').isSlot().setMinWidth(180).fixedRight(),
]);
// 该用户拥有的的操作列按钮权限
const actionBtns = hasPerms([perms.base, perms.saveDb]);
-const actionColumn = TableColumn.new('action', '操作').isSlot().setMinWidth(150).fixedRight().alignCenter();
+const actionColumn = TableColumn.new('action', '操作').isSlot().setMinWidth(220).fixedRight().alignCenter();
const pageTableRef: any = ref(null);
@@ -338,6 +348,24 @@ const getInstances = async (instanceName = '') => {
}
};
+const handleMoreActionCommand = (commond: any) => {
+ const data = commond.data;
+ const type = commond.type;
+ switch (type) {
+ case 'detail': {
+ showInfo(data);
+ return;
+ }
+ case 'edit': {
+ editDb(data);
+ return;
+ }
+ case 'dumpDb': {
+ onDumpDbs(data);
+ }
+ }
+};
+
const editDb = async (data: any) => {
if (!data) {
state.dbEditDialog.data = null;
@@ -452,4 +480,12 @@ const filterSchema = () => {
}
};
-
+
diff --git a/mayfly_go_web/src/views/ops/db/InstanceEdit.vue b/mayfly_go_web/src/views/ops/db/InstanceEdit.vue
index f4eb15fc..1090c3b3 100644
--- a/mayfly_go_web/src/views/ops/db/InstanceEdit.vue
+++ b/mayfly_go_web/src/views/ops/db/InstanceEdit.vue
@@ -40,7 +40,7 @@
-
+
diff --git a/mayfly_go_web/src/views/ops/db/InstanceList.vue b/mayfly_go_web/src/views/ops/db/InstanceList.vue
index 74edec62..063c557c 100644
--- a/mayfly_go_web/src/views/ops/db/InstanceList.vue
+++ b/mayfly_go_web/src/views/ops/db/InstanceList.vue
@@ -20,11 +20,8 @@
>
-
- 详情
-
-
+ 详情
编辑
@@ -81,11 +78,11 @@ const queryConfig = [TableQuery.text('name', '名称')];
const columns = ref([
TableColumn.new('name', '名称'),
- TableColumn.new('host', 'host:port').setFormatFunc((data: any, _prop: string) => `${data.host}:${data.port}`),
TableColumn.new('type', '类型'),
+ TableColumn.new('host', 'host:port').setFormatFunc((data: any) => `${data.host}:${data.port}`),
TableColumn.new('username', '用户名'),
+ TableColumn.new('params', '连接参数'),
TableColumn.new('remark', '备注'),
- TableColumn.new('more', '更多').isSlot().setMinWidth(50).fixedRight(),
]);
// 该用户拥有的的操作列按钮权限
@@ -173,7 +170,9 @@ const deleteInstance = async () => {
await dbApi.deleteInstance.request({ id: state.selectionData.map((x: any) => x.id).join(',') });
ElMessage.success('删除成功');
search();
- } catch (err) {}
+ } catch (err) {
+ //
+ }
};
diff --git a/mayfly_go_web/src/views/ops/mongo/MongoList.vue b/mayfly_go_web/src/views/ops/mongo/MongoList.vue
index 89196a5f..e5efade4 100644
--- a/mayfly_go_web/src/views/ops/mongo/MongoList.vue
+++ b/mayfly_go_web/src/views/ops/mongo/MongoList.vue
@@ -74,7 +74,7 @@ const columns = ref([
TableColumn.new('uri', '连接uri'),
TableColumn.new('createTime', '创建时间').isTime(),
TableColumn.new('creator', '创建人'),
- TableColumn.new('action', '操作').isSlot().setMinWidth(145).fixedRight().alignCenter(),
+ TableColumn.new('action', '操作').isSlot().setMinWidth(170).fixedRight().alignCenter(),
]);
const state = reactive({
@@ -126,7 +126,9 @@ const deleteMongo = async () => {
await mongoApi.deleteMongo.request({ id: state.selectionData.map((x: any) => x.id).join(',') });
ElMessage.success('删除成功');
search();
- } catch (err) {}
+ } catch (err) {
+ //
+ }
};
const search = async () => {
diff --git a/mayfly_go_web/src/views/ops/redis/RedisList.vue b/mayfly_go_web/src/views/ops/redis/RedisList.vue
index 3936709c..a8a3e8fb 100644
--- a/mayfly_go_web/src/views/ops/redis/RedisList.vue
+++ b/mayfly_go_web/src/views/ops/redis/RedisList.vue
@@ -31,14 +31,11 @@
-
- 详情
-
+
单机信息
集群信息
-
-
+ 详情
编辑
@@ -183,8 +180,7 @@ const columns = ref([
TableColumn.new('host', 'host:port'),
TableColumn.new('mode', 'mode'),
TableColumn.new('remark', '备注'),
- TableColumn.new('more', '更多').isSlot().setMinWidth(155).fixedRight(),
- TableColumn.new('action', '操作').isSlot().setMinWidth(65).fixedRight().alignCenter(),
+ TableColumn.new('action', '操作').isSlot().setMinWidth(200).fixedRight().alignCenter(),
]);
const state = reactive({
@@ -246,7 +242,9 @@ const deleteRedis = async () => {
await redisApi.delRedis.request({ id: state.selectionData.map((x: any) => x.id).join(',') });
ElMessage.success('删除成功');
search();
- } catch (err) {}
+ } catch (err) {
+ //
+ }
};
const showInfoDialog = async (redis: any) => {
diff --git a/server/go.mod b/server/go.mod
index 148f7d44..0684bcc9 100644
--- a/server/go.mod
+++ b/server/go.mod
@@ -12,7 +12,7 @@ require (
github.com/go-playground/universal-translator v0.18.1
github.com/go-playground/validator/v10 v10.14.0
github.com/go-sql-driver/mysql v1.7.1
- github.com/golang-jwt/jwt/v5 v5.0.0
+ github.com/golang-jwt/jwt/v5 v5.1.0
github.com/gorilla/websocket v1.5.0
github.com/kanzihuang/vitess/go/vt/sqlparser v0.0.0-20231018071450-ac8d9f0167e9
github.com/lib/pq v1.10.9
@@ -25,8 +25,8 @@ require (
github.com/robfig/cron/v3 v3.0.1 // 定时任务
github.com/stretchr/testify v1.8.4
go.mongodb.org/mongo-driver v1.12.1 // mongo
- golang.org/x/crypto v0.14.0 // ssh
- golang.org/x/oauth2 v0.13.0
+ golang.org/x/crypto v0.15.0 // ssh
+ golang.org/x/oauth2 v0.14.0
gopkg.in/yaml.v3 v3.0.1
// gorm
gorm.io/driver/mysql v1.5.2
@@ -77,10 +77,10 @@ require (
golang.org/x/arch v0.3.0 // indirect
golang.org/x/exp v0.0.0-20230519143937-03e91628a987 // indirect
golang.org/x/image v0.0.0-20220302094943-723b81ca9867 // indirect
- golang.org/x/net v0.16.0 // indirect
+ golang.org/x/net v0.18.0 // indirect
golang.org/x/sync v0.1.0 // indirect
- golang.org/x/sys v0.13.0 // indirect
- golang.org/x/text v0.13.0 // indirect
+ golang.org/x/sys v0.14.0 // indirect
+ golang.org/x/text v0.14.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20230131230820-1c016267d619 // indirect
google.golang.org/grpc v1.52.3 // indirect
diff --git a/server/internal/db/api/db_sql_exec.go b/server/internal/db/api/db_sql_exec.go
index 83cf0f75..cb77a710 100644
--- a/server/internal/db/api/db_sql_exec.go
+++ b/server/internal/db/api/db_sql_exec.go
@@ -14,7 +14,6 @@ type DbSqlExec struct {
func (d *DbSqlExec) DbSqlExecs(rc *req.Ctx) {
queryCond, page := ginx.BindQueryAndPage(rc.GinCtx, new(entity.DbSqlExecQuery))
- queryCond.CreatorId = rc.GetLoginAccount().Id
res, err := d.DbSqlExecApp.GetPageList(queryCond, page, new([]entity.DbSqlExec))
biz.ErrIsNil(err)
rc.ResData = res
diff --git a/server/internal/machine/mcm/client.go b/server/internal/machine/mcm/client.go
index 00ea8ca9..00cd9698 100644
--- a/server/internal/machine/mcm/client.go
+++ b/server/internal/machine/mcm/client.go
@@ -46,7 +46,8 @@ func (c *Cli) GetSession() (*ssh.Session, error) {
if err != nil {
// 获取session失败,则关闭cli,重试
DeleteCli(c.Info.Id)
- return nil, errorx.NewBiz("请重试...")
+ logx.Errorf("获取机器客户端session失败: %s", err.Error())
+ return nil, errorx.NewBiz("获取会话失败, 请重试...")
}
return session, nil
}
@@ -69,11 +70,15 @@ func (c *Cli) Run(shell string) (string, error) {
// 获取机器的所有状态信息
func (c *Cli) GetAllStats() *Stats {
- res, _ := c.Run(StatsShell)
- infos := strings.Split(res, "-----")
stats := new(Stats)
+ res, err := c.Run(StatsShell)
+ if err != nil {
+ logx.Errorf("执行机器[id=%d, name=%s]运行状态信息脚本失败: %s", c.Info.Id, c.Info.Name, err.Error())
+ return stats
+ }
+
+ infos := strings.Split(res, "-----")
if len(infos) < 8 {
- logx.Warnf("获取机器[id=%d, name=%s]的状态信息失败", c.Info.Id, c.Info.Name)
return stats
}
getUptime(infos[0], stats)