123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- # -*- coding: utf-8 -*-
- # @Time : 2021/05/06
- # @Author : ricky
- # @File : druidencrypt.py
- # @Software: vscode
- """druid秘钥生成界面
- 这里是执行jar命令生成的
- """
- import wx
- import subprocess
- import pyperclip
- import ui.druid.druid_encrypt_dialog as dialog
- from utils import pathutil
- def show_message(message):
- """统一显示对话框
- 根据传入对话框内容显示对话框
- 参数:
- message (str): 对话框内容
- """
- wx.MessageDialog(None, message, '操作提醒', wx.OK).ShowModal()
- class DruidEncrypt(dialog.DruidEncryptDialog):
- def __init__(self, parent):
- dialog.DruidEncryptDialog.__init__(self, parent)
- self.m_text_ctrl_original_password.SetHint('请输入原始密码(最长不超过32位)')
- self.Centre()
- def OnClickEventGenerate(self, event):
- """生成按钮事件"""
- # 校验原始密码是否输入
- original_password = self.m_text_ctrl_original_password.GetValue()
- if len(original_password) == 0:
- show_message('请输入原始密码')
- self.m_text_ctrl_original_password.SetFocus()
- return
- # 测试是否安装java环境
- subp = subprocess.Popen('java -version',
- shell=True,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT)
- out = subp.stdout.readlines()
- if (str(out[0]).find('java version') == -1):
- show_message('检查到您电脑上没有安装jdk,请安装jdk并且配置环境变量')
- return
- # 执行秘钥生成的命令
- jar_file = pathutil.resource_path('libs/jar/druid-1.2.4.jar')
- original_password = self.m_text_ctrl_original_password.GetValue()
- cmd = 'java -cp ' + jar_file + ' com.alibaba.druid.filter.config.ConfigTools ' + original_password
- subp = subprocess.Popen(cmd,
- shell=True,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT,
- encoding='gbk')
- out = subp.stdout.readlines()
- if (out[0].find('错误') > -1):
- show_message(','.join(out))
- return
- # 绑定值
- self.m_text_ctrl_private_key.SetValue(out[0].replace(
- '\n', '').split('privateKey:')[1])
- self.m_text_ctrl_public_key.SetValue(out[1].replace(
- '\n', '').split('publicKey:')[1])
- self.m_text_ctrl_encrypt_password.SetValue(out[2].replace(
- '\n', '').split('password:')[1])
- def OnClickEventPrivateKeyCopy(self, event):
- """复制私钥按钮事件"""
- text = self.m_text_ctrl_private_key.GetValue()
- if len(text) > 0:
- pyperclip.copy(text)
- show_message('私钥已复制到剪切板')
- else:
- show_message('请生成秘钥')
- def OnClickEventPublicKeyCopy(self, event):
- """复制公钥按钮事件"""
- text = self.m_text_ctrl_public_key.GetValue()
- if len(text) > 0:
- pyperclip.copy(text)
- show_message('公钥已复制到剪切板')
- else:
- show_message('请生成秘钥')
- def OnClickEventEncryptPasswordCopy(self, event):
- """复制密码按钮事件"""
- text = self.m_text_ctrl_encrypt_password.GetValue()
- if len(text) > 0:
- pyperclip.copy(text)
- show_message('密码已复制到剪切板')
- else:
- show_message('请生成密码')
- def OnClickEventClear(self, event):
- """清空按钮事件"""
- self.m_text_ctrl_original_password.SetValue('')
- self.m_text_ctrl_original_password.SetFocus()
- self.m_text_ctrl_private_key.SetValue('')
- self.m_text_ctrl_public_key.SetValue('')
- self.m_text_ctrl_encrypt_password.SetValue('')
|