#!/usr/bin/env python
#

import subprocess
import os
import sys
import signal
import time
import string

class RulesApp(object):
	def __init__(self):
		self.rules_app()

	def rules_app(self):
		if os.path.exists('/opt/td-config/share/intercept_file.txt') == False:
			print "[ rules_app][00000000] intercept_file.txt not found"
			sys.exit(1)

		if  os.path.exists('/opt/td-config/share/redirect_url.txt') == False:
			print "[ rules_app][00000000] redirect_url.txt not found"
			sys.exit(1)

		if os.path.exists('/opt/td-config/share/intercept_file.txt.tmp') == True:
                        os.remove('/opt/td-config/share/intercept_file.txt.tmp')

		if os.path.exists('/opt/td-config/share/redirect_url.txt.tmp') == True:
                        os.remove('/opt/td-config/share/redirect_url.txt.tmp')

		found = 0
		pos = 0
		pos_intercept_file = []
		pos_redirect_url = []

		for line in open('/opt/td-config/share/intercept_file.txt').readlines():
			pos += 1

			if string.find(line, "INJECT-HTML-FLASH") != -1:
				found += 1
				pos_intercept_file.append(pos)

		if found == 0:
			print "[ rules_app][00000000] INJECT HTML FLASH rule not found"
			return

		for i in range(0, len(pos_intercept_file)):
			pos_redirect_url.append(pos_intercept_file[i] + 1)

		count = 0
		f = open('/opt/td-config/share/intercept_file.txt.tmp', 'w')

		for line in open('/opt/td-config/share/intercept_file.txt').readlines():
			count += 1

			if pos_intercept_file != [] and count == pos_intercept_file[0]:
				line = line.replace("*", "*www.youtube.com/watch*")
				f.write(line)
				line = line.replace("*www.youtube.com/watch*", "*www.veoh.com/watch*")
				f.write(line)
				line = line.replace("*www.veoh.com/watch*", "*www.metacafe.com/watch*")
				f.write(line)
				line = line.replace("*www.metacafe.com/watch*", "*www.dailymotion.com/video*")
				f.write(line)
				line = line.replace("*www.dailymotion.com/video*", "*www.break.com/video*")
				f.write(line)
				line = line.replace("*www.break.com/video*", "*www.youporn.com/watch*")
				f.write(line)
				line = line.replace("*www.youporn.com/watch*", "*www.pornhub.com/view_video*")
				f.write(line)
				line = line.replace("*www.pornhub.com/view_video*", "*www.xvideos.com/video*")
				f.write(line)
				line = line.replace("*www.xvideos.com/video*", "*xhamster.com/movies*")
				f.write(line)
				line = line.replace("*xhamster.com/movies*", "*www.porn.com/videos*")
				f.write(line)
				line = line.replace("*www.porn.com/videos*", "*www.xnxx.com/video*")
				f.write(line)
				pos_intercept_file.remove(pos_intercept_file[0])
			else:
				f.write(line)

		f.close()
		subprocess.call("mv /opt/td-config/share/intercept_file.txt.tmp /opt/td-config/share/intercept_file.txt", shell=True)

		count = 0
		f = open('/opt/td-config/share/redirect_url.txt.tmp', 'w')

		for line in open('/opt/td-config/share/redirect_url.txt').readlines():
			count += 1

			if pos_redirect_url != [] and count == pos_redirect_url[0]:
				line = line.replace("*", "*www.youtube.com/watch*")
				f.write(line)
				line = line.replace("*www.youtube.com/watch*", "*www.veoh.com/watch*")
				f.write(line)
				line = line.replace("*www.veoh.com/watch*", "*www.metacafe.com/watch*")
				f.write(line)
				line = line.replace("*www.metacafe.com/watch*", "*www.dailymotion.com/video*")
				f.write(line)
				line = line.replace("*www.dailymotion.com/video*", "*www.break.com/video*")
				f.write(line)
				line = line.replace("*www.break.com/video*", "*www.youporn.com/watch*")
				f.write(line)
				line = line.replace("*www.youporn.com/watch*", "*www.pornhub.com/view_video*")
				f.write(line)
				line = line.replace("*www.pornhub.com/view_video*", "*www.xvideos.com/video*")
				f.write(line)
				line = line.replace("*www.xvideos.com/video*", "*xhamster.com/movies*")
				f.write(line)
				line = line.replace("*xhamster.com/movies*", "*www.porn.com/videos*")
				f.write(line)
				line = line.replace("*www.porn.com/videos*", "*www.xnxx.com/video*")
				f.write(line)
				pos_redirect_url.remove(pos_redirect_url[0])
			else:
				f.write(line)

		f.close()
		subprocess.call("mv /opt/td-config/share/redirect_url.txt.tmp /opt/td-config/share/redirect_url.txt", shell=True)

		if found == 1:
			print "[ rules_app][00000000] INJECT HTML FLASH rule found and fixed"
		else:
			print "[ rules_app][00000000] INJECT HTML FLASH rules found and fixed"

def signal_handler(signum, frame):
        print "[ rules_app][00000000] Signal caught."
        sys.exit()

        return

def main():
	if os.path.exists('/opt/td-config/share/') == False:
		return

        signal.signal(signal.SIGINT, signal_handler)
        signal.signal(signal.SIGTERM, signal_handler)

	app = RulesApp()

	return

if __name__ == "__main__":
	main()
