package com.aizuda.easyManagerTool.service.docker.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.aizuda.easy.security.domain.Rep;
import com.aizuda.easy.security.domain.Req;
import com.aizuda.easyManagerTool.config.socket.SocketSend;
import com.aizuda.easyManagerTool.domain.dto.PageDTO;
import com.aizuda.easyManagerTool.domain.dto.dbc.db.ForwardInfo;
import com.aizuda.easyManagerTool.domain.dto.docker.*;
import com.aizuda.easyManagerTool.domain.dto.monitor.MonitorEditDTO;
import com.aizuda.easyManagerTool.domain.dto.socket.SocketMessageDTO;
import com.aizuda.easyManagerTool.domain.dto.terminal.SSHInfoDTO;
import com.aizuda.easyManagerTool.domain.entity.docker.DockerListEntity;
import com.aizuda.easyManagerTool.domain.entity.monitor.MonitorUrlEntity;
import com.aizuda.easyManagerTool.domain.vo.PageVO;
import com.aizuda.easyManagerTool.domain.vo.docker.*;
import com.aizuda.easyManagerTool.domain.vo.server.ServerCompleteVO;
import com.aizuda.easyManagerTool.domain.vo.setting.SettingUserVO;
import com.aizuda.easyManagerTool.domain.vo.socket.SocketMessageVO;
import com.aizuda.easyManagerTool.mapper.docker.DockerConfigMapper;
import com.aizuda.easyManagerTool.mapper.docker.DockerListMapper;
import com.aizuda.easyManagerTool.mapper.server.ServerMapper;
import com.aizuda.easyManagerTool.service.docker.DockerListServer;
import com.aizuda.easyManagerTool.service.monitor.MonitorDataService;
import com.aizuda.easyManagerTool.service.socket.SocketEventService;
import com.aizuda.easyManagerTool.service.socket.impl.SocketSessionManager;
import com.aizuda.easyManagerTool.service.terminal.ScriptService;
import com.aizuda.easyManagerTool.service.terminal.impl.TerminalSessionManager;
import com.aizuda.easyManagerTool.util.AssertUtil;
import com.aizuda.easyManagerTool.util.SSHManagerUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.command.*;
import com.github.dockerjava.api.exception.ConflictException;
import com.github.dockerjava.api.model.*;
import com.github.dockerjava.core.DefaultDockerClientConfig;
import com.github.dockerjava.core.DockerClientConfig;
import com.github.dockerjava.core.DockerClientImpl;
import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
import com.github.dockerjava.transport.DockerHttpClient;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Service;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
@Slf4j
@Service(value = "docker")
public class DockerListServerImpl extends ServiceImpl<DockerListMapper, DockerListEntity> implements DockerListServer, CommandLineRunner, SocketEventService {
@Resource
private DockerListMapper dockerListMapper;
@Resource
private DockerConfigMapper dockerConfigMapper;
@Resource
private ScriptService scriptService;
@Resource
private ServerMapper serverMapper;
@Value("${server.port}")
private String port;
@Value("${config.intranet-ip}")
private String intranetIp;
@Resource
MonitorDataService monitorDataService;
@Override
public Rep<PageVO<DockerListVO>> find(Req<PageDTO<DockerListEntity>, SettingUserVO> req) {
PageDTO<DockerListEntity> pageDTO = req.getData();
DockerListEntity data = pageDTO.getData();
Page<DockerListEntity> page = new Page<DockerListEntity>(pageDTO.getCurrent(), pageDTO.getSize());
// 查询 唯一条件是要根据 权限查询
IPage<DockerListVO> dockerListVOIPage = dockerListMapper.find(page, ObjectUtil.isEmpty(data)? new DockerListEntity():data);
// 从缓存查询
dockerListVOIPage.getRecords().parallelStream().forEach(item ->{
DockerManagerVO dockerManagerVO = DockerManager.get(item.getId());
if(ObjectUtil.isEmpty(dockerManagerVO) || !dockerManagerVO.isState()){
return;
}
item.setState(dockerManagerVO.isState());
item.setServerCpu(dockerManagerVO.getInfo().getNCPU());
item.setServerMemory(dockerManagerVO.getInfo().getMemTotal());
item.setDockerRootDir(dockerManagerVO.getInfo().getDockerRootDir());
item.setImageNum(dockerManagerVO.getImages().size());
item.setContainerNum(dockerManagerVO.getInfo().getContainers());
item.setNetworkNum(dockerManagerVO.getNetworks().size());
item.setVolumeNum(dockerManagerVO.getVolumes().getVolumes().size());
});
List<DockerListVO> sort = CollUtil.sort(dockerListVOIPage.getRecords(), Comparator.comparing(DockerListVO::getState).reversed());
PageVO<DockerListVO> pageVO = new PageVO<DockerListVO>(pageDTO)
.setTotal(dockerListVOIPage.getTotal())
.setRecords(sort);
return Rep.ok(pageVO);
}
@Override
public Rep<DockerListVO> edit(Req<DockerListEntity, SettingUserVO> req) {
DockerListEntity data = req.getData();
if(CollUtil.isEmpty(data.getServerIds())){
return Rep.error(500,"请选择服务器");
}
if(!data.getListSsh()){
AssertUtil.objIsNull(data.getListPort(), "请填写tcp端口");
}
// 查询重复
List<DockerListEntity> dockerListEntities = dockerListMapper.selectByServerIds(data.getServerIds());
if(CollUtil.isNotEmpty(dockerListEntities)){
return Rep.error(500,"请勿重复添加");
}
List<DockerListEntity> collect = data.getServerIds().stream().map(i -> {
DockerListEntity dockerListEntity = BeanUtil.copyProperties(data,DockerListEntity.class);
dockerListEntity.setServerId(i);
dockerListEntity.setTenantId(req.getData().getTenantId());
dockerListEntity.setCreateTime(new Date());
dockerListEntity.setUpdateTime(new Date());
return dockerListEntity;
}).collect(Collectors.toList());
// 通知更新
saveOrUpdateBatch(collect);
init();
return Rep.ok();
}
@Override
public Rep<DockerListVO> del(Req<DockerListEntity, SettingUserVO> req) {
DockerListEntity data = req.getData();
AssertUtil.objIsNull(data.getId(),"数据错误");
dockerListMapper.deleteById(data.getId());
DockerManager.del(data.getId());
return Rep.ok();
}
@Override
public void refresh() {
DockerManager.getList().parallelStream().forEach(i -> {
i.refresh();
});
}
@Override
public Rep<List<Image>> imageList(Req<DockerListImageDTO, SettingUserVO> req) {
DockerListImageDTO data = req.getData();
AssertUtil.objIsNull(data.getId(),"数据错误");
DockerManagerVO dockerManagerVO = DockerManager.get(data.getId());
dockerManagerVO.refresh();
return Rep.ok(dockerManagerVO.getImages());
}
@Override
public Rep<List<Image>> imageDel(Req<DockerListImageDTO, SettingUserVO> req) {
DockerListImageDTO data = req.getData();
AssertUtil.objIsNull
没有合适的资源?快使用搜索试试~ 我知道了~
Easy-Manager-Tool 集成各类工具的核心使用方法,去繁就简,打造集成化程度高且专业的开、测、维一体化管理工具
共363个文件
java:291个
xml:24个
png:24个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 125 浏览量
2024-04-06
09:36:43
上传
评论
收藏 5.34MB ZIP 举报
温馨提示
Easy-Manager-Tool 的诞生是为了解决软件行业众多参与者使用种类繁多的工具问题,想象做为一个后端开发者,尤其是中小型公司的开发者,您可能不止需要会idea为您写业务代码,可能还需要下载Navicat、Redis、Kafka等等众多工具来管理项目中所用到的中间件,包括运维还需要使用ssh、sftp、jenkins、docker等。Easy-Manager-Tool 集成各类工具的核心使用方法,去繁就简,打造集成化程度高且专业的开、测、维一体化管理工具。
资源推荐
资源详情
资源评论
收起资源包目录
Easy-Manager-Tool 集成各类工具的核心使用方法,去繁就简,打造集成化程度高且专业的开、测、维一体化管理工具 (363个子文件)
index.26e34b32.css 992KB
Dockerfile 602B
.gitignore 337B
index.html 665B
favicon.ico 66KB
DockerListServerImpl.java 38KB
Tuple25.java 18KB
DockerCloudServiceImpl.java 17KB
MonitorDataServiceImpl.java 17KB
MonitorServiceImpl.java 14KB
SettingRechargeServiceImpl.java 14KB
SettingUserServiceImpl.java 12KB
ServerScriptServiceImpl.java 11KB
RemotePartServiceImpl.java 10KB
SSHServiceImpl.java 9KB
MonitorDataIndexServiceImpl.java 9KB
SFTPServiceImpl.java 9KB
JdbcUtils.java 9KB
ServerServiceImpl.java 8KB
SSHManagerUtil.java 8KB
IDriverManager.java 7KB
XFAiGPTServiceImpl.java 6KB
DockerListController.java 6KB
SettingRoleServiceImpl.java 6KB
WebSocketStreamListener.java 5KB
MonitorDataController.java 5KB
MonitorAlarmServiceImpl.java 5KB
GPTChartServiceImpl.java 5KB
DBServiceImpl.java 5KB
Tuple5.java 4KB
DockerRegistryAPI.java 4KB
JdbcJarUtils.java 4KB
StringUtils.java 4KB
Tuple4.java 4KB
AlarmMailService.java 4KB
TerminalSessionManager.java 4KB
AbstractSSHTemplate.java 4KB
AssertUtil.java 4KB
SettingTaskServiceImpl.java 4KB
OpenAiGPTServiceImpl.java 4KB
CiphertextTypeHandler.java 4KB
PublicController.java 3KB
MybatisConfig.java 3KB
DockerMonitorServiceImpl.java 3KB
SocketSessionManager.java 3KB
JacksonTypeHandler.java 3KB
MonitorListManagerService.java 3KB
Tuple3.java 3KB
RenewalHandler.java 3KB
DataTypeEnum.java 3KB
AbstractTerminalTemplate.java 3KB
SocketEventStrategy.java 3KB
MonitorScreenServiceImpl.java 3KB
DBController.java 3KB
DockerCloudController.java 3KB
DockerListServer.java 3KB
MonitorListManager.java 3KB
ServerScriptController.java 3KB
SettingUserController.java 3KB
WebMvcConfig.java 3KB
Tuple2.java 3KB
AlarmDDService.java 2KB
SettingAlarmServiceImpl.java 2KB
APIHttpTemplate.java 2KB
GlobalExceptionConfig.java 2KB
ServerGroupServiceImpl.java 2KB
DashboardServiceImpl.java 2KB
ServerSettingStrategy.java 2KB
WebSSHSocketHandler.java 2KB
ServerLogServiceImpl.java 2KB
DBDriverServiceImpl.java 2KB
ServerTypeServiceImpl.java 2KB
GPTSettingServiceImpl.java 2KB
ServerProxyServiceImpl.java 2KB
StringBufferListener.java 2KB
SettingRechargeController.java 2KB
ServerPKServiceImpl.java 2KB
AlarmStrategy.java 2KB
GPTChartController.java 2KB
ServerController.java 2KB
DBPropertiesServiceImpl.java 2KB
SettingRoleController.java 2KB
Tuple1.java 2KB
TerminalController.java 2KB
WebSocketInterceptor.java 2KB
DBTypeServiceImpl.java 2KB
ServerMapper.java 2KB
Tuple.java 2KB
MonitorScreenController.java 2KB
PackageAspect.java 2KB
DockerCloudService.java 2KB
ServerSettingController.java 2KB
SettingAlarmEntity.java 2KB
MonitorDataIndexMapper.java 1KB
SettingUserMapper.java 1KB
MonitorDataService.java 1KB
DockerManagerVO.java 1KB
ServerScriptService.java 1KB
GPTSettingEntity.java 1KB
MonitorDataIndexService.java 1KB
共 363 条
- 1
- 2
- 3
- 4
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6732
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功