#!/usr/bin/env python

# -*- coding: UTF-8 -*-

import urllib2
import urllib
import random
import hashlib
import cgitb
import cgi
import webbrowser
import time
import datetime
from array import array

#Enable Debugging
#cgitb.enable()

#print "Content-Type: text/plain;charset=utf-8"
#print
print "Content-Type: text/html"
print

# Variables
urlAPIstr ='http://joinme.mckendree.edu/bigbluebutton/api/'

# Random Number for use as UserID
numberGen1 = random.randrange(1000, 9999)
numberGen2 = random.randrange(1000, 9999)
userID = numberGen1 + numberGen2 / 2 * numberGen2

# Create instance of FieldStorage to retrieve Bb UserName and Role 
form = cgi.FieldStorage() 

# Get DisplayName from FieldStorage and Format
display_name = form.getvalue('uid')
MarkPos = display_name.find('?')
DisplayNameSpaces = display_name[4:MarkPos]
DisplayName4Hash = DisplayNameSpaces.replace(' ','')   #UserName format for Hash
DisplayName4Login = DisplayNameSpaces.replace(' ','+') #UserName format for Login
MeetingIDpos = display_name.find('meetingID=')
MeetingID = display_name[MeetingIDpos+10:]
MeetingID = MeetingID.replace(' ','+')
#print MeetingID

# Get User Role from Bb URL String
RolePos = display_name.find('role=')
UserRole = display_name[RolePos + 5: MeetingIDpos -1]
#print UserRole

###Create Meeting Room
HASHstr =  'createname=' + MeetingID + '&meetingID=' + MeetingID + '&moderatorPW=' + DisplayName4Hash + '&attendeePW=128ty7ea86e01a76513a867523d86q9876'
createRoomURLHash = hashlib.sha1(HASHstr).hexdigest()
CreateRoomURL = urlAPIstr + 'create?name=' + MeetingID + '&meetingID=' + MeetingID + '&moderatorPW=' + DisplayName4Hash + '&attendeePW=12&checksum=' + createRoomURLHash
#print CreateRoomURL
#print '<a href=' + CreateRoomURL + '>Create Meeting</a>'

###Join Meeting Room as Moderator 
HASHstrJoin =  'joinmeetingID=' + MeetingID + '&password=' + DisplayName4Hash + '&fullName=' + DisplayName4Login + '&userID='+ str(userID) + '8ty7ea86e01a76513a867523d86q9876'
joinMeetingModHash = hashlib.sha1(HASHstrJoin).hexdigest()
joinMeetingModURL = urlAPIstr + 'join?meetingID=' + MeetingID + '&password=' + DisplayName4Hash + '&fullName=' + DisplayName4Login + '&userID=' + str(userID) + '&checksum=' + joinMeetingModHash
#print joinMeetingModURL

##$Join Meeting as Student
HASHstrJoinAttendee =  'joinmeetingID=' + MeetingID + '&password=12&fullName=' + DisplayName4Login + '&userID='+ str(userID) + '8ty7ea86e01a76513a867523d86q9876'
joinMeetingAttendHash = hashlib.sha1(HASHstrJoinAttendee).hexdigest()
joinMeetingAttendURL = urlAPIstr + 'join?meetingID=' + MeetingID + '&password=12&fullName=' + DisplayName4Login + '&userID=' + str(userID) + '&checksum=' + joinMeetingAttendHash
#print joinMeetingAttendURL

if UserRole != 'STUDENT':
	url = CreateRoomURL	
	req = urllib2.Request(url)
	response = urllib2.urlopen(req)
	the_page = response.read()

	#log = open("/var/www/bigbluebutton-default/SessionLog.txt", 'a')
	#print MeetingID + ' ' + DisplayName4Login
	#log.close()



	filehandle = urllib.urlopen(joinMeetingModURL)
        for lines in filehandle.readlines():
                meetingResponse = lines
		print meetingResponse
        filehandle.close()
	
	
	if not 'FAILED' in meetingResponse:
		print 'Content-Type: text/html'
		print 'Location: %s' % joinMeetingModURL
       		print # HTTP says you have to have a blank line between headers and content
       		print '<html>'
       		print '  <head>'
       		print '    <meta http-equiv="refresh" content="0;url=%s" />' % joinMeetingModURL
       		print '    <title>McK Virtual Meeting</title>'
       		print '  </head>'
       		print '  <body>'
       		print '    Redirecting... <a href="%s">Click here if you are not redirected</a>' % joinMeetingModURL
       		print '  </body>'
       		print '</html>'
	else:	
		print 'Content-Type: text/html'
        	print 'Location: %s' % joinMeetingAttendURL
        	print # HTTP says you have to have a blank line between headers and content
        	print '<html>'
        	print '  <head>'
        	print '    <meta http-equiv="refresh" content="0;url=%s" />' % joinMeetingAttendURL
        	print '    <title>McK Virtual Meeting</title>'
        	print '  </head>'
        	print '  <body>'
        	print '    Redirecting... <a href="%s">Click here if you are not redirected</a>' % joinMeetingAttendURL
        	print '  </body>'
        	print '</html>'


if UserRole == 'STUDENT':
	
	filehandle = urllib.urlopen(joinMeetingAttendURL)
	for lines in filehandle.readlines():
		meetingResponse = lines
	filehandle.close()

	if not  'FAILED' in meetingResponse:
		print 'Content-Type: text/html'
        	print 'Location: %s' % joinMeetingAttendURL
        	print # HTTP says you have to have a blank line between headers and content
        	print '<html>'
        	print '  <head>'
        	print '    <meta http-equiv="refresh" content="0;url=%s" />' % joinMeetingAttendURL
        	print '    <title>McK Virtual Meeting</title>'
        	print '  </head>'
        	print '  <body>'
        	print '    Redirecting... <a href="%s">Click here if you are not redirected</a>' % joinMeetingAttendURL
       		print '  </body>'
	        print '</html>'
	else:
		print 'Content-Type: text/html'
                print 'Location: %s' % 'MeetingNotAvailable.htm'
                print # HTTP says you have to have a blank line between headers and content
                print '<html>'
                print '  <head>'
                print '    <meta http-equiv="refresh" content="0;url=%s" />' % 'MeetingNotAvailable.htm'
                print '    <title>McK Virtual Meeting</title>'
                print '  </head>'
                print '  <body>'
                print '    Redirecting... <a href="%s">Click here if you are not redirected</a>' % 'MeetingNotAvailable.htm'
                print '  </body>'
                print '</html>'







