@defer.inlineCallbacks
    def write(self, entry):

        if entry["eventid"] == 'cowrie.session.connect':
            r = yield self.db.runQuery(
                "SELECT `id` FROM `sensors` WHERE `ip` = ?", (self.sensor,))
            if r and r[0][0]:
                sensorid = r[0][0]
            else:
                yield self.db.runQuery(
                    'INSERT INTO `sensors` (`ip`) VALUES (?)', (self.sensor,))
                r = yield self.db.runQuery('SELECT LAST_INSERT_ROWID()')
                sensorid = int(r[0][0])
            self.simpleQuery(
                "INSERT INTO `sessions` (`id`, `starttime`, `sensor`, `ip`)"
                +  " VALUES (?, ?, ?, ?)",
                (entry["session"], entry["timestamp"],
                    sensorid, entry["src_ip"]))

        elif entry["eventid"] == 'cowrie.login.success':
            self.simpleQuery('INSERT INTO `auth` (`session`, `success`' + \
                ', `username`, `password`, `timestamp`)' + \
                ' VALUES (?, ?, ?, ?, ?)',
                (entry["session"], 1, entry['username'], entry['password'],
                entry["timestamp"]))

        elif entry["eventid"] == 'cowrie.login.failed':
            self.simpleQuery('INSERT INTO `auth` (`session`, `success`' + \
                ', `username`, `password`, `timestamp`)' + \
                ' VALUES (?, ?, ?, ?, ?)',
                (entry["session"], 0, entry['username'], entry['password'],
                entry["timestamp"]))

        elif entry["eventid"] == 'cowrie.command.success':
            print str(entry)
            self.simpleQuery('INSERT INTO `input`' + \
                ' (`session`, `timestamp`, `success`, `input`)' + \
                ' VALUES (?, ?, ?, ?)',
                (entry["session"], entry["timestamp"],
                1, entry["input"]))

        elif entry["eventid"] == 'cowrie.command.failed':
            self.simpleQuery('INSERT INTO `input`' + \
                ' (`session`, `timestamp`, `success`, `input`)' + \
                ' VALUES (?, ?, ?, ?)',
                (entry["session"], entry["timestamp"],
                0, entry["input"]))

        elif entry["eventid"] == 'cowrie.session.file_download':
            self.simpleQuery('INSERT INTO `downloads`' + \
                ' (`session`, `timestamp`, `url`, `outfile`, `shasum`)' + \
                ' VALUES (?, ?, ?, ?, ?)',
                (entry["session"], entry["timestamp"],
                entry['url'], entry['outfile'], entry['shasum']))

        elif entry["eventid"] == 'cowrie.session.file_download':
            self.simpleQuery('INSERT INTO `input`' + \
                ' (`session`, `timestamp`, `realm`, `input`)' + \
                ' VALUES (?, ?, ?, ?)',
                (entry["session"], entry["timestamp"],
                entry["realm"], entry["input"]))

        elif entry["eventid"] == 'cowrie.client.version':
            r = yield self.db.runQuery(
                'SELECT `id` FROM `clients` WHERE `version` = ?', \
                (entry['version'],))
            if r and r[0][0]:
                id = int(r[0][0])
            else:
                yield self.db.runQuery(
                    'INSERT INTO `clients` (`version`) VALUES (?)', \
                    (entry['version'],))
                r = yield self.db.runQuery('SELECT LAST_INSERT_ROWID()')
                id = int(r[0][0])
            self.simpleQuery(
                'UPDATE `sessions` SET `client` = ? WHERE `id` = ?',
                (id, entry["session"]))

        elif entry["eventid"] == 'cowrie.client.size':
            self.simpleQuery(
                'UPDATE `sessions` SET `termsize` = ? WHERE `id` = ?',
                ('%sx%s' % (entry['width'], entry['height']),
                    entry["session"]))

        elif entry["eventid"] == 'cowrie.session.closed':
            self.simpleQuery(
                'UPDATE `sessions` SET `endtime` = ?' + \
                ' WHERE `id` = ?', (entry["timestamp"], entry["session"]))

        elif entry["eventid"] == 'cowrie.log.closed':
            self.simpleQuery(
                'INSERT INTO `ttylog` (`session`, `ttylog`, `size`) VALUES (?, ?, ?)',
                (entry["session"], entry["ttylog"], entry["size"]))

        elif entry["eventid"] == 'cowrie.client.fingerprint':
            self.simpleQuery(
                'INSERT INTO `keyfingerprints` (`session`, `username`, `fingerprint`) VALUES (?, ?, ?)',
                (entry["session"], entry["username"], entry["fingerprint"]))
Decorator to skip execution of a transform if value is cached.
dataset/ETHPy150Open cowrie/cowrie/cowrie/output/sqlite.py/Output.write--crossover with--dataset/ETHPy150Open GoogleCloudPlatform/DataflowPythonSDK/google/cloud/dataflow/runners/direct_runner.py/DirectPipelineRunner.skip_if_cached