多域名加密成txt上传oss

这是一个关于使用Log4j2、SpringBoot、MyBatis及Rsa加密技术进行动态域名管理的Java实现。博客详细介绍了如何通过动态域名Mapper接口查询域名,利用Rsa加密上传至远程服务器,并从服务器下载解密域名的流程。
@Log4j2
@Service
public class DynamicDomainServiceImpl extends AbstractServiceImpl<DynamicDomain, String> implements DynamicDomainService {

    @Autowired
    private DynamicDomainMapper dynamicDomainMapper;

    @Value("${domainTxtUploadUrl:null}")
    protected String domainTxtUploadUrl;

    @Value("${domainTxtUrl:null}")
    protected String domainTxtUrl;

    @Autowired
    RestTemplate restTemplate;

    public DynamicDomainServiceImpl(BaseDao<DynamicDomain, String> base) {
        super(base);
    }

    @Override
    public PageBO<DynamicDomain> findPage(DynamicDomain req) {
        PageBO<DynamicDomain> pageBO = new PageBO<>();
        Page page = PageHelper.startPage(req.getPage(), req.getLimit(), true);
        pageBO.setData(dynamicDomainMapper.findList(req));
        pageBO.setCount(page.getTotal());
        return pageBO;
    }

    @Override
    public void domainUpload(String token) throws Exception {
        List<DynamicDomain> DynamicDomain = dynamicDomainMapper.finddomain();
        StringBuilder domainStr = new StringBuilder();
        for (DynamicDomain dynamicDomain : DynamicDomain) {
            domainStr.append(dynamicDomain.getDomain()).append(",");
        }
        String domainStrFinal = domainStr.substring(0, domainStr.length() - 1);
        //Rsa加密
        String encryptData = RSACoder.encryptByPublicKey(domainStrFinal, AuthUtil.getSecurityKeyStr("secretkey/dynamicDomainPublicKey"));
        File file = new File("xx.txt");
        FileUtils.writeStringToFile(file, encryptData, StandardCharsets.UTF_8);

        //设置请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        headers.add("token", token);

        MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
        Resource resource = new FileSystemResource(file);
        form.add("file", resource);

        HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(form, headers);

        Map<String, Object> resultMap = restTemplate.postForObject(domainTxtUploadUrl, files, Map.class);
        log.warn(JsonUtil.object2Json(resultMap));
    }

    @Override
    public PageBO<DynamicDomain> domainDownload() throws Exception {
        List<DynamicDomain> dynamicDomains = new ArrayList<>();
        URL url = new URL(domainTxtUrl);
        URLConnection connection = url.openConnection();
        HttpURLConnection htCon = (HttpURLConnection) connection;
        int code = htCon.getResponseCode();
        if (code == HttpURLConnection.HTTP_OK) {
            BufferedReader in = new BufferedReader(new InputStreamReader(htCon.getInputStream()));
            String inputLine = in.readLine();
            //释放资源
            in.close();
            //Rsa解密
            String decryptData = RSACoder.decryptByPrivateKey(inputLine, AuthUtil.getSecurityKeyStr("secretkey/dynamicDomainPrivateKey"));
            String[] decryptDataList = decryptData.split(",");
            for (String decryptdata : decryptDataList) {
                DynamicDomain dynamicDomain = new DynamicDomain();
                dynamicDomain.setDomain(decryptdata);
                dynamicDomains.add(dynamicDomain);
            }
            PageBO<DynamicDomain> pageBO = new PageBO<>();
            pageBO.setData(dynamicDomains);
            return pageBO;
        }
        return null;
    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值