83 lines
2.9 KiB
Python
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") |