#!/usr/bin/python
import os,urllib2,time,sys,zipfile;
from cStringIO import StringIO

NameProvider = "Mgg"
Dns = "http://isetting-mgg.ddns.net"
DirDw = "DownloadPluginAnonymous"
os.system("clear") 

class main():     
	
   
      def __init__(self):
          self.dirkey="/usr/keys/"
          self.namekey="key-%s"%NameProvider
          Structure = self._Version()	  
          if Structure:
            os.system("rm -fr /tmp/ReturnProcIpk*")
          self.url = "%s/%s/Anonymous-%s-%s.ipk"%(Dns,DirDw,NameProvider,Structure)	  
          self.urlMgg = "%s/%s/Mgg.py"%(Dns,DirDw)	
          self.urlConfigZip = "%s/%s/Config.zip"%(Dns,DirDw)	
		  
      def _Version(self):
          req = urllib2.Request("%s/%s/ScriptInstall/ReturnProcIpk.zip"%(Dns,DirDw))
          u = urllib2.urlopen(req,None,50)	
          f = open("/tmp/ReturnProcIpk.zip", 'wb')
          meta = u.info()
          file_size = int(meta.getheaders("Content-Length")[0])
          print ("Downloading: Version Processore Bytes: %s" % ( file_size))
          file_size_dl = 0
          block_sz = 8192
          while True:
            buffer = u.read(block_sz)
            if not buffer:
              break
            file_size_dl += len(buffer)
            f.write(buffer)
            status = r"%10d  [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
            status = status + chr(8)*(len(status)+1)
            print (status)
          f.close() 
          print ("")
          if os.path.exists('/tmp/ReturnProcIpk.zip'):
            zip_ref = zipfile.ZipFile("/tmp/ReturnProcIpk.zip", 'r')
            zip_ref.extractall("/tmp/")
            zip_ref.close()
            try:
              exec("from ReturnProcIpk.test import *")
              return test()
            except:
              return False
          else:
            return False
		  
      def _request2(self):	
          req = urllib2.Request(self.url) 
          u = urllib2.urlopen(req,None,50)	
          f = open("/tmp/plugin.ipk", 'wb')
          meta = u.info()
          file_size = int(meta.getheaders("Content-Length")[0])
          print ("Downloading: Anonymous Bytes: %s" % ( file_size))
          file_size_dl = 0
          block_sz = 8192
          while True:
            buffer = u.read(block_sz)
            if not buffer:
              break
            file_size_dl += len(buffer)
            f.write(buffer)
            status = r"%10d  [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
            status = status + chr(8)*(len(status)+1)
            print (status),
          f.close() 
          print ("")
          if os.path.exists('/tmp/plugin.ipk'):
            return True
          else:
            return False	
			
      def writekey(self,User,Password):
          f = open("%s%s"%(self.dirkey,self.namekey), 'wb')
          f.write("Anonymous = %s,%s"%(User,Password))		  
          f.close()	
          if os.path.exists("/tmp/Config.zip"):	
            zip_ref = zipfile.ZipFile("/tmp/Config.zip", 'r')
            zip_ref.extractall("/tmp/")
            zip_ref.close()	
            if os.path.exists("/tmp/Config"):	
              os.system("mv -f /tmp/Config /usr/lib/enigma2/python/Plugins/Extensions/Anonymous/")
          if os.path.exists("%s%s"%(self.dirkey,self.namekey)): 
            os.system("clear") 			
            print ("Riavvio Enigma2")			  
            time.sleep(2)		
            os.system("killall -9 enigma2") 	
			
      def User(self):
          os.system("clear")  	  
          print ("******* Anonymous by Anonymous *******")		
          self.Password("mgg_XUSERX")

			
      def Password(self,User):
          self.Download(User,"XPASSX")
			
      def Download(self,User = "",Password = ""):
          if User and Password:
            if self._request2():
              os.system("opkg remove Anonymous")	 			
              os.system("opkg install /tmp/plugin.ipk")	 
              os.system("rm -fr /tmp/plugin.ipk")			  
              if os.path.exists('/usr/lib/enigma2/python/Plugins/Extensions/Anonymous'):	
                self.writekey(User,Password)
              else:
                os.system("clear") 			
                print("Errore Installazione Anonymous!!!!")	
                time.sleep(2)		  
                sys.exit()			  
            else:
              os.system("clear") 			
              print("Errore download!!!!")	
              time.sleep(2)
              os.system("clear") 			  
              sys.exit()
x = main()	 
x.User()