feat: 导出udm-auth未加密数据
This commit is contained in:
@@ -202,6 +202,7 @@ INSERT INTO "sys_menu" VALUES (1145, 'menu.common.ftp', 2096, 1, '', '', '1', '1
|
||||
INSERT INTO "sys_menu" VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
INSERT INTO "sys_menu" VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
INSERT INTO "sys_menu" VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
INSERT INTO "sys_menu" VALUES (1149, 'menu.neData.udmAuth.exportDec', 2000, 7, '', '', '1', '1', 'B', '1', '1', 'neData:udm-auth:export-dec', '#', '0', 'supervisor', 1757671977637, 'supervisor', 1757671977637, '');
|
||||
INSERT INTO "sys_menu" VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||
INSERT INTO "sys_menu" VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||
INSERT INTO "sys_menu" VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||
|
||||
@@ -201,6 +201,7 @@ REPLACE INTO "sys_menu" VALUES (1145, 'menu.common.ftp', 2096, 1, '', '', '1', '
|
||||
REPLACE INTO "sys_menu" VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
REPLACE INTO "sys_menu" VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
REPLACE INTO "sys_menu" VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
REPLACE INTO "sys_menu" VALUES (1149, 'menu.neData.udmAuth.exportDec', 2000, 7, '', '', '1', '1', 'B', '1', '1', 'neData:udm-auth:export-dec', '#', '0', 'supervisor', 1757671977637, 'supervisor', 1757671977637, '');
|
||||
REPLACE INTO "sys_menu" VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||
REPLACE INTO "sys_menu" VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||
REPLACE INTO "sys_menu" VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588, 'system', 1728641403588, '');
|
||||
|
||||
@@ -205,6 +205,7 @@ INSERT INTO `sys_menu` VALUES (1145, 'menu.common.ftp', 2096, 1, '', '', '1', '1
|
||||
INSERT INTO `sys_menu` VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
INSERT INTO `sys_menu` VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
INSERT INTO `sys_menu` VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
INSERT INTO `sys_menu` VALUES (1149, 'menu.neData.udmAuth.exportDec', 2000, 7, '', '', '1', '1', 'B', '1', '1', 'neData:udm-auth:export-dec', '#', '0', 'supervisor', 1757671977637, 'supervisor', 1757671977637, '');
|
||||
INSERT INTO `sys_menu` VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||
INSERT INTO `sys_menu` VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||
INSERT INTO `sys_menu` VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||
|
||||
@@ -227,6 +227,7 @@ REPLACE INTO `sys_menu` VALUES (1145, 'menu.common.ftp', 2096, 1, '', '', '1', '
|
||||
REPLACE INTO `sys_menu` VALUES (1146, 'menu.common.ftpSync', 2096, 2, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:ftpSync', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
REPLACE INTO `sys_menu` VALUES (1147, 'menu.common.download', 2096, 3, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:download', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
REPLACE INTO `sys_menu` VALUES (1148, 'menu.common.delete', 2096, 4, '', '', '1', '1', 'B', '1', '1', 'ne-data:backup-data:delete', '#', '0', 'supervisor', 1757673844822, 'supervisor', 1757673844822, '');
|
||||
REPLACE INTO `sys_menu` VALUES (1149, 'menu.neData.udmAuth.exportDec', 2000, 7, '', '', '1', '1', 'B', '1', '1', 'neData:udm-auth:export-dec', '#', '0', 'supervisor', 1757671977637, 'supervisor', 1757671977637, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2000, 'menu.neData.udmAuth', 5, 1, 'udm-auth', 'neData/udm-auth/index', '1', '1', 'M', '1', '1', 'udm#auth:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2001, 'menu.neData.udmSub', 5, 3, 'udm-sub', 'neData/udm-sub/index', '1', '1', 'M', '1', '1', 'udm#sub:index', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||
REPLACE INTO `sys_menu` VALUES (2002, 'menu.neData.udmVOIP', 5, 5, 'udm-voip', 'neData/udm-voip/index', '1', '0', 'M', '1', '1', 'udm#voip:list', 'icon-xiangmuchengyuan', '0', 'system', 1728641403588,'system', 1728641403588, '');
|
||||
|
||||
@@ -2,7 +2,9 @@ package controller
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -653,3 +655,77 @@ func (s *UDMAuthController) Import(c *gin.Context) {
|
||||
}
|
||||
c.JSON(200, resp.OkMsg(resultMsg))
|
||||
}
|
||||
|
||||
// UDM鉴权用户导出解密数据
|
||||
//
|
||||
// GET /export-dec
|
||||
//
|
||||
// @Tags network_data/udm/auth
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param data body object true "Request Param"
|
||||
// @Success 200 {object} object "Response Results"
|
||||
// @Security TokenAuth
|
||||
// @Summary UDM Authenticated User Export Decrypted Data
|
||||
// @Description UDM Authenticated User Export Decrypted Data
|
||||
// @Router /neData/udm/auth/export-dec [get]
|
||||
func (s *UDMAuthController) ExportDec(c *gin.Context) {
|
||||
// 查询结果,根据查询条件结果,单页最大值限制
|
||||
neId := c.Query("neId")
|
||||
if neId == "" {
|
||||
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId is empty"))
|
||||
return
|
||||
}
|
||||
|
||||
// 网元主机的Telnet客户端
|
||||
telnetClient, err := s.neInfoService.NeRunTelnetClient("UDM", neId, 1)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer telnetClient.Close()
|
||||
|
||||
// 发送MML
|
||||
// 导出解密的ki和opc 需要执行 dec authdat:imsi=all
|
||||
// 生成文件 /user/local/etc/udm/authdata.txt
|
||||
cmd := "dec authdat:imsi=all"
|
||||
data, err := telnet.ConvertToStr(telnetClient, cmd)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
// 命令ok时
|
||||
if strings.Contains(data, "ok") {
|
||||
// 网元主机的SSH客户端
|
||||
sshClient, err := s.neInfoService.NeRunSSHClient("UDM", neId)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer sshClient.Close()
|
||||
// 网元主机的SSH客户端进行文件传输
|
||||
sftpClient, err := sshClient.NewClientSFTP()
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer sftpClient.Close()
|
||||
|
||||
// 复制到本地
|
||||
nePath := "/usr/local/etc/udm/authdata.txt"
|
||||
localFilePath := filepath.Join("/tmp/omc/pull", filepath.Base(nePath))
|
||||
if runtime.GOOS == "windows" {
|
||||
localFilePath = fmt.Sprintf("C:%s", localFilePath)
|
||||
}
|
||||
if err = sftpClient.CopyFileRemoteToLocal(nePath, localFilePath); err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
sshClient.RunCMD(fmt.Sprintf("sudo rm -rf %s", nePath))
|
||||
defer os.Remove(localFilePath)
|
||||
c.FileAttachment(localFilePath, filepath.Base(nePath))
|
||||
return
|
||||
}
|
||||
c.JSON(200, resp.ErrMsg("unexpected result"))
|
||||
}
|
||||
|
||||
@@ -380,6 +380,11 @@ func Setup(router *gin.Engine) {
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.udmAuth", collectlogs.BUSINESS_TYPE_IMPORT)),
|
||||
controller.NewUDMAuth.Import,
|
||||
)
|
||||
udmAuthGroup.GET("/export-dec",
|
||||
middleware.AuthorizeUser(map[string][]string{"hasPerms": {"neData:udm-auth:export-dec"}}),
|
||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.udmAuth", collectlogs.BUSINESS_TYPE_EXPORT)),
|
||||
controller.NewUDMAuth.ExportDec,
|
||||
)
|
||||
}
|
||||
|
||||
// 网元UDM 签约用户信息
|
||||
|
||||
Reference in New Issue
Block a user