Exemple #1
0
    def post(self):
        """ create a new push task for a decoded video in queue to be worked off (only available for PRO clients) """
        """ retrieve client role """
        AuthUser = g.get('clientrole')
        if AuthUser is None:
            api.abort(401, __class__._responses['post'][401])

        if AuthUser != 'PRO':
            api.abort(403, __class__._responses['post'][403])
        """ parse request data and use model attribute info"""
        requestbody = request.json
        log.debug(requestbody)
        """ further validations:
            test connection to ftp destination server
        """
        validftp, validftpmessage = test_ftpconnection(
            requestbody['Server'], requestbody['Port'], requestbody['User'],
            requestbody['Password'], requestbody['ServerPath'])
        if not validftp:
            log.error(validftpmessage)
            api.abort(
                403,
                __class__._responses['post'][403] + ': ' + validftpmessage)
        """ create jobchain DownloadMessage -----------------------------------------------------------------"""
        Content = {}
        for key, value in requestbody.items():
            if key in video.keys():
                Content[video[key].attribute] = value

        message = PushVideoMessage(**Content)
        """ update otrkey filename as output """
        message.otrkeyfile = os.path.splitext(
            os.path.basename(message.sourcelink))[0]
        message.videofile = os.path.splitext(
            os.path.basename(message.otrkeyfile))[0]
        """ put download queue message """
        message = queue.put(message)
        if message is None:
            api.abort(403, __class__._responses['post'][403])
        """ prepare return data """
        message.otrpassword = '******'
        message.password = '******'
        """ add history entry """
        recording = db.get(
            Recording(PartitionKey='top', RowKey=str(data['epgid'])))
        AddHistory(g.user, message.id, 'torrent', recording.Id,
                   recording.beginn, recording.sender, recording.titel,
                   recording.genre, recording.previewimagelink,
                   data['resolution'], message.sourcefile, request.remote_addr,
                   request.user_agent.platform, request.user_agent.browser,
                   request.user_agent.version, request.user_agent.language)

        return message, 200
Exemple #2
0
def PushVideo(epgid, resolution, sourcefile, sourcelink, user: User):
    """ create a push queue message for torrent push """
    ErrorMessage = ''
    job = None
    """ further validations:
        test connection to ftp destination server
    """
    validftp, validftpmessage = test_ftpconnection(user.Server, user.Port,
                                                   user.FtpUser,
                                                   user.FtpPassword,
                                                   user.ServerPath)
    if not validftp:
        log.error(validftpmessage)
        ErrorMessage = validftpmessage

    else:
        """ init a PushMessage instance and put it into queue """
        """ update otrkey filename as output """
        otrkeyfile = os.path.splitext(os.path.basename(sourcelink))[0]
        videofile = os.path.splitext(os.path.basename(otrkeyfile))[0]

        job = queue.put(
            PushVideoMessage(epgid=epgid,
                             resolution=resolution,
                             sourcefile=sourcefile,
                             sourcelink=sourcelink,
                             protocol=user.Protocol,
                             server=user.Server,
                             port=user.Port,
                             user=user.FtpUser,
                             password=user.FtpPassword,
                             destpath=user.ServerPath,
                             otrkeyfile=otrkeyfile,
                             videofile=videofile,
                             otruser=user.OtrUser,
                             otrpassword=user.OtrPassword,
                             usecutlist=user.UseCutlist,
                             usesubfolder=user.UseSubfolder))

        if job is None:
            ErrorMessage = 'Fehler beim Erstellen der Push Aufgabe'

        else:
            """ success """
            log.debug('mesage input: {!s}, {!s}, {!s}'.format(
                job.getmessage(), job.id, job.insertion_time))

    return job, ErrorMessage
Exemple #3
0
    def post(self):
        """ create push job in queue for torrent/video file """
        """ parse request data and use model attribute info"""
        data = request.json
        log.debug(data)

        for key, value in push.items():
            if key in data:
                data[value.attribute] = data.pop(key)
        """ further validations:
            test connection to ftp destination server
        """
        validftp, validftpmessage = test_ftpconnection(data['server'],
                                                       data['port'],
                                                       data['user'],
                                                       data['password'],
                                                       data['destpath'])
        if not validftp:
            log.error(validftpmessage)
            api.abort(
                403,
                __class__._responses['post'][403] + ': ' + validftpmessage)
        """ init a PushMessage instance and put it into queue """
        message = PushMessage(**data)
        message = queue.put(message)
        if message is None:
            api.abort(403, __class__._responses['post'][403])
        """ return message """
        message.password = '******'
        """ add history """
        recording = db.get(
            Recording(PartitionKey='top', RowKey=str(data['epgid'])))
        AddHistory(g.user, message.id, 'torrent', recording.Id,
                   recording.beginn, recording.sender, recording.titel,
                   recording.genre, recording.previewimagelink,
                   data['resolution'], message.sourcefile, request.remote_addr,
                   request.user_agent.platform, request.user_agent.browser,
                   request.user_agent.version, request.user_agent.language)

        log.debug('mesage input: {!s}, {!s}, {!s}'.format(
            message.getmessage(), message.id, message.insertion_time))
        return message, 200
Exemple #4
0
def PushTorrent(epgid, resolution, sourcefile, sourcelink, user: User):
    """ create a push queue message for torrent push """
    ErrorMessage = ''
    job = None
    """ further validations:
        test connection to ftp destination server
    """
    validftp, validftpmessage = test_ftpconnection(user.Server, user.Port,
                                                   user.FtpUser,
                                                   user.FtpPassword,
                                                   user.ServerPath)
    if not validftp:
        log.error(validftpmessage)
        ErrorMessage = validftpmessage

    else:
        """ init a PushMessage instance and put it into queue """
        job = queue.put(
            PushMessage(epgid=epgid,
                        resolution=resolution,
                        sourcefile=sourcefile,
                        sourcelink=sourcelink,
                        protocol=user.Protocol,
                        server=user.Server,
                        port=user.Port,
                        user=user.FtpUser,
                        password=user.FtpPassword,
                        destpath=user.ServerPath))

        if job is None:
            ErrorMessage = 'Fehler beim Erstellen der Push Aufgabe'

        else:
            """ success """
            log.debug('mesage input: {!s}, {!s}, {!s}'.format(
                job.getmessage(), job.id, job.insertion_time))

    return job, ErrorMessage
Exemple #5
0
def settings():
    """ validate settings form  at POST request """
    """ get request data """
    form = Settings()
    """ init values in get method """
    if form.validate_on_submit() or form.is_submitted():
        """ save form data to userprofile """
        if (g.user.PushVideo != form.PushVideo.data):
            g.user.PushVideo = form.PushVideo.data

        if (g.user.OtrUser != form.OtrUser.data):
            g.user.OtrUser = form.OtrUser.data

        if (g.user.UseCutlist != form.UseCutlist.data):
            g.user.UseCutlist = form.UseCutlist.data

        if (g.user.Protocol != form.Protocol.data):
            g.user.Protocol = form.Protocol.data
            g.user.FtpConnectionChecked = False

        if (g.user.Server != form.Server.data):
            g.user.Server = form.Server.data
            g.user.FtpConnectionChecked = False

        if (g.user.Port != form.Port.data):
            g.user.Port = form.Port.data
            g.user.FtpConnectionChecked = False

        if (g.user.FtpUser != form.FtpUser.data):
            g.user.FtpUser = form.FtpUser.data
            g.user.FtpConnectionChecked = False

        if (g.user.ServerPath != form.ServerPath.data):
            g.user.ServerPath = form.ServerPath.data
            g.user.FtpConnectionChecked = False

        if (form.OtrPassword.data not in [
                '*****'
        ]) and (g.user.OtrPassword != form.OtrPassword.data):
            g.user.OtrPassword = form.OtrPassword.data

        if (form.FtpPassword.data not in [
                '*****'
        ]) and (g.user.FtpPassword != form.FtpPassword.data):
            g.user.FtpPassword = form.FtpPassword.data
            g.user.FtpConnectionChecked = False

        if (g.user.EMailEndpoint != form.EMailEndpoint.data):
            g.user.EMailEndpoint = form.EMailEndpoint.data
        """ check ftp Connection """
        if not g.user.FtpConnectionChecked:
            g.user.FtpConnectionChecked, validftpmessage = test_ftpconnection(
                g.user.Server, g.user.Port, g.user.FtpUser, g.user.FtpPassword,
                g.user.ServerPath)

            if not g.user.FtpConnectionChecked:
                log.error(validftpmessage)
        """ check otr credentials """
        if not g.user.OtrCredentialsChecked:
            pass
        """ update user """
        g.user.updated = datetime.now()
        db.insert(g.user)

    else:
        form.PushVideo.data = g.user.PushVideo
        form.OtrUser.data = g.user.OtrUser

        if g.user.OtrPassword != '':
            form.OtrPassword.data = '*****'
        else:
            form.OtrPassword.data = ''

        form.UseCutlist.data = g.user.UseCutlist
        form.Protocol.data = g.user.Protocol
        form.Server.data = g.user.Server
        form.Port.data = g.user.Port
        form.FtpUser.data = g.user.FtpUser

        if g.user.FtpPassword != '':
            form.FtpPassword.data = '*****'
        else:
            form.FtpPassword.data = ''

        form.ServerPath.data = g.user.ServerPath

        form.EMailEndpoint.data = g.user.EMailEndpoint
    """ return """
    pathtemplate = g.platform + '/' + 'settings.html'
    return render_template(pathtemplate,
                           title='Einstellungen',
                           pagetitle='settings',
                           form=form,
                           User=g.user,
                           message=g.message)