Beispiel #1
0
def getDBConnection(settings):
    try:
        db = dbConnection(settings)
        db.connect()
    except Exception as e:
        print("heree")
        return False
    return db
Beispiel #2
0
    def importPhotos(self, settings):
        while True:
            dbConn = dbConnection(settings)
            dbConn.connect()
            #Logging Variables
            photosImported = 0
            duplicatesSkipped = 0
            invalidFiles = 0
            filesToImport = self.collectFilesToImport()
            if not filesToImport:
                time.sleep(10)
                continue

            #Get existing hashes to check for duplicates
            hashes = dbConn.getAllExistingHashes()

            progressCount = 1
            #Loop through all supported files
            for currentPhotoPath in filesToImport:
                #print("Processing file {} of {}".format(progressCount, len(filesToImport)))
                progressCount += 1
                try:
                    hashes = self.importPhoto(dbConn, currentPhotoPath, None,
                                              hashes)
                    photosImported += 1
                except ImportErrorDuplicate:
                    duplicatesSkipped += 1
                except ImportErrorPhotoInvalid:
                    invalidFiles += 1

            if photosImported != 0:
                psLogger.info("Imported {} photos".format(photosImported))
            if duplicatesSkipped != 0:
                psLogger.debug(
                    "Skipped {} duplicates".format(duplicatesSkipped))
            if invalidFiles != 0:
                psLogger.info("Skipped {} invalid files".format(invalidFiles))

            time.sleep(10)
Beispiel #3
0
    def run(self):

        psLogger.info('Starting PhotoShare')

        VERSION = self.settings.get('MAIN', 'version')
        ENDIAN = self.settings.get('MAIN', 'endian')
        self.port = self.settings.get('Network', 'port')
        self.host = self.settings.get('Network', 'host')
        BUFFER_SIZE = int(self.settings.get('Network', 'buffersize'))

        #UBUNTU FAILS HERE

        #Connect to DB host with provided username and password
        #Create database and tables if first run of app
        try:
            dbConn = dbConnection(self.settings)
            dbConn.connect()
            psLogger.info("Connected to DB")
            self.fileHandler = FileHandler(self.settings.get('DIR', 'photos'),
                                           self.settings.get('DIR', 'import'),
                                           self.settings.get('DIR', 'tmp'))
            # if self.settings.getboolean('MAIN', 'firstRun'):
            #         #fileHandler.createDirectories()
            #         dbConn.createDatabase()
            #         dbConn.createUserTable()
            #         dbConn.createPhotoTable()
            #         dbConn.createAlbumTable()
            #         dbConn.createPhotoAlbumsTable()
            #         dbConn.createIPAddressTable()
            #         dbConn.insertUser(User())
            #         createAnother = input("Create another user: y/n? ")
            #         while createAnother is "y":
            #                 dbConn.insertUser(User())
            #                 createAnother = input("Create another user: y/n?")
            #         self.finishFirstRun(self.settings)
        except configparser.Error as e:
            psLogger.error("Settings malformed: " + e.message)
            self.stop()
            return
        except pymysql.err.Error as e:
            self.stop()
            return
        except LibraryPathNotEmptyError:
            psLogger.error("Library folder is not empty")
            self.stop()
            return

        self.connection = ServerConnection(VERSION, ENDIAN, self.port,
                                           self.host)
        self.connection.BUFFER_SIZE = BUFFER_SIZE
        if self.connection.prepareConnection() is False:
            self.stop()
            return

        psLogger.info("Starting import background task")
        importThread = threading.Thread(target=self.fileHandler.importPhotos,
                                        args=[self.settings],
                                        daemon=True)
        importThread.start()

        self.msgFactory = PSMsgFactory(VERSION, ENDIAN)
        while True:
            #photoshare.timerCheckpoint("Creating socket")
            psLogger.info("Waiting for connection...")

            connectionSuccess = self.connection.processNewConnection()
            if self.isIPBanned(dbConn, self.connection.getClientAddress()):
                psLogger.info("Banned IP: {}".format(
                    self.connection.getClientAddress()))
                self.connection.close()
                continue
            if connectionSuccess is False:
                dbConn.ipFailedAttempt(self.connection.getClientAddress())
                self.connection.close()
                continue

            q = queue.Queue()
            with self.lock:
                self.sendQueues[self.connection.getClientSocket().fileno()] = q
            recv_thread = threading.Thread(target=self.clientConnected,
                                           args=[self.connection, dbConn],
                                           daemon=True)
            send_thread = threading.Thread(target=self.handleClientSend,
                                           args=[self.connection, q],
                                           daemon=True)
            recv_thread.start()
            send_thread.start()
def test_DBConnectionInit(validSettings):
    assert dbConnection(validSettings) is not None
def validDBConnection(validSettings):
    return dbConnection(validSettings)