#!/usr/bin/python
# -*- coding: utf-8 -*-

import urllib2
import urllib
import re
import time
import binascii
import base64
import sys

from Plugin import Plugin
from time import time

class RSDF(Plugin):
    
    def __init__(self, parent):
        Plugin.__init__(self, parent)
        self.plugin_name = "RSDF"
        self.plugin_pattern = r".*\.rsdf"
        self.plugin_type = "container"
        self.plugin_config = {}
        pluginProp = {}
        pluginProp ['name'] = "RSDF"
        pluginProp ['version'] = "0.1"
        pluginProp ['format'] = "*.py"
        pluginProp ['description'] = """RSDF Plugin"""
        pluginProp ['author'] = "RaNaN"
        pluginProp ['author_email'] = "RaNaN@pyload.org"
        self.pluginProp = pluginProp
        self.parent = parent
        self.multi_dl = True
        self.links = []
        
    def file_exists(self):
        """ returns True or False 
        """
        return True

    def get_file_url(self):
        """ returns the absolute downloadable filepath
        """
        return self.parent.url
    
    def __call__(self):
        return self.plugin_name

    def proceed(self, url, location):
        try:
            from Crypto.Cipher import AES
            
            infile = url.replace("\n","")
            Key = binascii.unhexlify('8C35192D964DC3182C6F84F3252239EB4A320D2500000000')
    
            IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF')
            IV_Cipher = AES.new(Key,AES.MODE_ECB)
            IV = IV_Cipher.encrypt(IV)
    
            obj = AES.new(Key,AES.MODE_CFB,IV)
    
            rsdf = open(infile,'r')
    
            data = rsdf.read()
            data = binascii.unhexlify(''.join(data.split()))
            data = data.splitlines()
    
            for link in data:
                link = base64.b64decode(link)
                link = obj.decrypt(link)
                decryptedUrl = link.replace('CCF: ','')
                self.links.append(decryptedUrl)
    
            rsdf.close()
            print self.links
        
        except:
            print "Kein Crypto installiert, RSDF Plugin kann nicht genutzt werden"