1
0
Преглед на файлове

fix: 邮件配置密码加密

chenjianhua преди 7 месеца
родител
ревизия
9b7d350550

+ 3 - 3
service-manage/src/main/java/com/simuwang/manage/api/email/EmailConfigController.java

@@ -96,12 +96,12 @@ public class EmailConfigController{
 
     /**
      * 批量删除邮箱配置
-     * @param idListVO
+     * @param idVO
      * @return
      */
     @RequestMapping("delete-email-config")
-    public boolean deleteEmailConfig(@RequestBody IdListVO idListVO){
-        emailConfigService.deleteEmailConfig(idListVO.getIdList());
+    public boolean deleteEmailConfig(@RequestBody IdVO idVO){
+        emailConfigService.deleteEmailConfig(idVO.getId());
         return true;
     }
 

+ 1 - 1
service-manage/src/main/java/com/simuwang/manage/service/EmailConfigService.java

@@ -24,7 +24,7 @@ public interface EmailConfigService {
 
     ResultVo connectTest(MailboxInfoVO mailboxInfoVO);
 
-    void deleteEmailConfig(List<Integer> id);
+    void deleteEmailConfig(Integer id);
 
     boolean checkEmailUnique(String email);
 

+ 23 - 9
service-manage/src/main/java/com/simuwang/manage/service/impl/EmailConfigServiceImpl.java

@@ -33,6 +33,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -112,9 +113,14 @@ public class EmailConfigServiceImpl implements EmailConfigService {
         ResultVo vo = new ResultVo(ResultCode.CONNECT_SUCCESS);
         MailboxInfoDTO mailboxInfoDTO = new MailboxInfoDTO();
         mailboxInfoDTO.setAccount(mailboxInfoVO.getEmail());
-        String publicKey = this.properties.getSecurityRsa().getPublicKey();
-        String password = new RSA(null, publicKey).decryptStr(mailboxInfoVO.getPassword(), KeyType.PublicKey);
-        mailboxInfoDTO.setPassword(password);
+        try{
+            String publicKey = this.properties.getSecurityRsa().getPublicKey();
+            String privateKey = this.properties.getSecurityRsa().getPrivateKey();
+            String password = new RSA(privateKey, publicKey).decryptStr(mailboxInfoVO.getPassword(), KeyType.PrivateKey);
+            mailboxInfoDTO.setPassword(password);
+        }catch (Exception e){
+            logger.error(e.getMessage(),e);
+        }
         mailboxInfoDTO.setPort(mailboxInfoVO.getPort());
         mailboxInfoDTO.setHost(mailboxInfoVO.getServer());
         mailboxInfoDTO.setProtocol(mailboxInfoVO.getProtocol());
@@ -135,12 +141,12 @@ public class EmailConfigServiceImpl implements EmailConfigService {
         return vo;
     }
     @Override
-    public void deleteEmailConfig(List<Integer> idList) {
+    public void deleteEmailConfig(Integer id) {
         //删除定时任务
-        for(Integer id : idList){
-            MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
-            QuartzUtils.deleteScheduleJob(scheduler,mailboxInfoDO.getEmail(),groupName);
-        }
+        MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
+        QuartzUtils.deleteScheduleJob(scheduler,mailboxInfoDO.getEmail(),groupName);
+        List<Integer> idList = new ArrayList<>();
+        idList.add(id);
         emailConfigMapper.deleteEmailConfigByIds(idList);
     }
     @Override
@@ -213,7 +219,15 @@ public class EmailConfigServiceImpl implements EmailConfigService {
         MailboxInfoDO mailboxInfoDO = emailConfigMapper.searchEmailConfigById(id);
         MailboxInfoDTO mailboxInfoDTO = new MailboxInfoDTO();
         mailboxInfoDTO.setAccount(mailboxInfoDO.getEmail());
-        mailboxInfoDTO.setPassword(mailboxInfoDO.getPassword());
+        String password = mailboxInfoDO.getPassword();
+        try{
+            String publicKey = this.properties.getSecurityRsa().getPublicKey();
+            String privateKey = this.properties.getSecurityRsa().getPrivateKey();
+            password = new RSA(privateKey, publicKey).decryptStr(password, KeyType.PrivateKey);
+        }catch (Exception e){
+            logger.error(e.getMessage(),e);
+        }
+        mailboxInfoDTO.setPassword(password);
         mailboxInfoDTO.setPort(mailboxInfoDO.getPort());
         mailboxInfoDTO.setHost(mailboxInfoDO.getServer());
         mailboxInfoDTO.setProtocol(mailboxInfoDO.getProtocol());

+ 12 - 0
service-manage/src/main/java/com/simuwang/manage/task/ParseSchedulerTask.java

@@ -1,10 +1,13 @@
 package com.simuwang.manage.task;
 
 import ch.qos.logback.core.util.StringUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import cn.hutool.crypto.asymmetric.RSA;
 import com.alibaba.fastjson2.JSON;
 import com.simuwang.base.common.enums.EmailCron;
 import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.common.util.QuartzUtils;
+import com.simuwang.base.config.DaqProperties;
 import com.simuwang.base.pojo.dos.MailboxInfoDO;
 import com.simuwang.base.pojo.dto.MailboxInfoDTO;
 import com.simuwang.daq.service.EmailParseApiService;
@@ -34,6 +37,8 @@ public class ParseSchedulerTask  extends QuartzJobBean {
     private EmailParseApiService emailParseApiService;
     @Autowired
     private EmailConfigService emailConfigService;
+    @Autowired
+    private DaqProperties properties;
     private static final Logger log = LoggerFactory.getLogger(ParseSchedulerTask.class);
     @Override
     protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
@@ -46,6 +51,13 @@ public class ParseSchedulerTask  extends QuartzJobBean {
         String password = jobDataMap.get("password").toString();
         MailboxInfoDTO paramDTO = new MailboxInfoDTO();
         paramDTO.setAccount(account);
+        try{
+            String publicKey = this.properties.getSecurityRsa().getPublicKey();
+            String privateKey = this.properties.getSecurityRsa().getPrivateKey();
+            password = new RSA(privateKey, publicKey).decryptStr(password, KeyType.PrivateKey);
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+        }
         paramDTO.setPassword(password);
         paramDTO.setPort(port);
         paramDTO.setHost(host);