rscder-pub/rscder/gui/keygen.py
2022-05-12 20:39:32 +08:00

83 lines
2.9 KiB
Python

from PyQt5.QtWidgets import QDialog, QLineEdit, QDateTimeEdit, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QTextEdit, QFileDialog, QMessageBox
from PyQt5 import QtCore
from PyQt5.QtGui import QIcon
from rscder.utils.license import LicenseHelper
import re
class LicenseGen(QDialog):
def __init__(self, parent = None, flags = QtCore.Qt.WindowFlags() ) -> None:
super().__init__(parent, flags)
self.setWindowTitle("License Generator")
self.setWindowIcon(QIcon(':/icons/logo.png'))
mac_address_label = QLabel("MAC Address:")
self.mac_address_text = QLineEdit()
hbox1 = QHBoxLayout()
hbox1.addWidget(mac_address_label)
hbox1.addWidget(self.mac_address_text)
end_date_label = QLabel("End Date:")
self.end_date_text = QDateTimeEdit()
hbox2 = QHBoxLayout()
hbox2.addWidget(end_date_label)
hbox2.addWidget(self.end_date_text)
self.license_file_path_text = QLineEdit()
self.license_file_path_text.setReadOnly(True)
btn_open = QPushButton("Open")
btn_open.clicked.connect(self.open_file)
hbox3 = QHBoxLayout()
hbox3.addWidget(btn_open)
hbox3.addWidget(self.license_file_path_text)
# hbox3.addWidget(btn_open)
self.btn_generate = QPushButton("Generate")
self.btn_generate.clicked.connect(self.generate_license)
self.btn_cancel = QPushButton("Cancel")
self.btn_cancel.clicked.connect(self.reject)
hbox4 = QHBoxLayout()
hbox4.addWidget(self.btn_generate, alignment = QtCore.Qt.AlignRight, stretch= 0)
hbox4.addWidget(self.btn_cancel, alignment = QtCore.Qt.AlignRight, stretch= 0)
vbox = QVBoxLayout()
vbox.addLayout(hbox1)
vbox.addLayout(hbox2)
vbox.addLayout(hbox3)
vbox.addLayout(hbox4)
self.setLayout(vbox)
def open_file(self) -> None:
file_path, _ = QFileDialog.getSaveFileName(self, "Save License File", "", "License Files (*.lic)")
if file_path:
self.license_file_path_text.setText(file_path)
def isValidMac(self,mac):
if re.match(r"^\s*([0-9a-fA-F]{2,2}:){5,5}[0-9a-fA-F]{2,2}\s*$", mac):
return True
return False
def generate_license(self) -> None:
if self.mac_address_text.text() and self.license_file_path_text.text() and \
self.end_date_text.dateTime().isValid():
if not self.isValidMac(self.mac_address_text.text()):
QMessageBox.warning(self, "Warning", "Invalid MAC Address")
end_date = self.end_date_text.dateTime().toPyDateTime().strftime("%Y-%m-%d %H:%M:%S")
lic = LicenseHelper().generate_license(end_date, self.mac_address_text.text())
with open(self.license_file_path_text.text(), 'w') as f:
f.write(lic[::-1])
QMessageBox.information(self, "Information", "License Generated")