This repository has been archived on 2021-09-15. You can view files and clone it, but cannot push or open issues or pull requests.
DUT2PTUT/superTornado.py

153 lines
4.8 KiB
Python
Raw Normal View History

2014-02-27 14:43:58 +00:00
import tornado.ioloop
import tornado.web
2014-02-27 15:55:33 +00:00
import tornado.httpserver
import tornado.websocket
2014-02-27 22:39:19 +00:00
import tornado.options
2014-02-28 05:55:36 +00:00
import time
2014-02-28 02:16:09 +00:00
import base64
import socket
2014-02-28 03:07:56 +00:00
from urllib import urlopen
2014-02-28 10:20:21 +00:00
2014-02-28 00:47:29 +00:00
from tornado.ioloop import PeriodicCallback
from session import *
2014-02-27 18:57:53 +00:00
from loadConf import *
2014-02-27 19:06:37 +00:00
from login import *
2014-02-28 10:20:21 +00:00
import os
dirname = os.path.dirname(__file__)
2014-02-27 14:43:58 +00:00
2014-02-27 18:55:43 +00:00
confAveug = False
2014-02-27 19:06:37 +00:00
ficLog = Login()
2014-02-27 21:45:07 +00:00
2014-02-28 03:41:59 +00:00
class BaseHandler(tornado.web.RequestHandler):
2014-02-27 22:12:23 +00:00
def get_current_user(self):
return self.get_secure_cookie("user")
2014-02-27 21:46:17 +00:00
2014-02-27 22:12:23 +00:00
class MainHandler(BaseHandler):
2014-02-27 15:06:38 +00:00
def get(self):
2014-02-28 10:03:03 +00:00
self.render("index.html")
def post(self):
2014-02-27 17:43:55 +00:00
iden = self.get_argument("id","")
mdp = self.get_argument("mdp","")
2014-02-27 19:06:37 +00:00
login = Login()
autorise = login.connexion(iden, mdp)
print 'maison = httplib.HTTPConnection("192.168.16.150", 80)'
2014-02-27 19:06:37 +00:00
if autorise == True:
2014-02-27 22:12:23 +00:00
self.set_secure_cookie("user", iden)
self.redirect("/video")
2014-02-27 19:10:46 +00:00
else:
print "->An unauthorized user try to access"
self.redirect("/unauthorized")
2014-02-27 16:56:39 +00:00
2014-02-27 22:12:23 +00:00
class VideoHandler(BaseHandler):
2014-02-27 19:53:48 +00:00
def get(self):
2014-02-27 22:12:23 +00:00
if not self.current_user :
self.redirect("/")
return
self.render("video.html")
class UnauthorizedHandler(BaseHandler):
def get(self):
2014-02-27 22:39:19 +00:00
self.render("illegal.html")
def post(self):
force = self.get_argument("illegalAccess","")
2014-02-27 22:44:32 +00:00
if force == "1" :
self.set_secure_cookie("user", "illegalUser")
2014-02-27 22:46:53 +00:00
self.redirect("/video")
else :
self.redirect("/")
2014-02-27 16:56:39 +00:00
class DisconnectionHandler(BaseHandler):
def post(self):
2014-02-28 04:10:28 +00:00
if not self.current_user :
2014-03-01 16:37:17 +00:00
self.close()
return
2014-02-28 06:58:57 +00:00
self.clear_cookie("user")
self.redirect("/")
2014-02-28 06:52:19 +00:00
class WSocketHandler(BaseHandler,tornado.websocket.WebSocketHandler):
2014-02-28 05:01:10 +00:00
def open(self) :
2014-02-28 06:52:19 +00:00
if not self.current_user :
self.close()
2014-02-28 06:52:19 +00:00
return
2014-02-28 05:01:10 +00:00
print "->Websocket opened"
2014-03-01 16:41:24 +00:00
if self.current_user == "illegalUser":
iden="IllegalUser"
ficLog.enregDansLog(iden,"Unauthorized user connection","IP TO DO")
if confAveug == True:
print '->Send audio alarm unauthorized user'
print 'maison.request("GET", "micom/say.php?source=toto&text=Connection%20a%20la%20camera%20non%20autorisee")'
else:
print '->Send visual alarm unauthorized user'
print 'maison.request("GET", "micom/lamp.php?room=salon1&order=1")'
else :
iden = self.current_user
ficLog.enregDansLog(iden,"Authorized user connection","IP TO DO")
if confAveug == True:
print '->Send audio alarm authorized user'
print 'maison.request("GET", "micom/say.php?source=toto&text=Connection%20a%20la%20camera%20autorisee")'
else:
print '->Send visual alarm authorized user'
print 'maison.request("GET", "micom/lamp.php?room=salon1&order=1")'
print "->Authorized user access"
2014-02-28 06:49:33 +00:00
def on_message(self,mesg):
print "->Data receive"
try :
socket.setdefaulttimeout(5)
2014-02-28 10:06:44 +00:00
f = urlopen('http://test:a@192.168.0.13/image.jpg?cidx=791836195')
2014-02-28 06:49:33 +00:00
data = f.read()
encoded = base64.b64encode(data)
self.write_message(encoded)
except Exception, e :
print e
self.write_message("error")
2014-02-28 05:02:35 +00:00
def on_close(self):
2014-02-28 05:01:10 +00:00
print "->Websocket closed"
2014-03-01 16:37:17 +00:00
if self.current_user == "illegalUser":
iden="IllegalUser"
ficLog.enregDansLog(iden,"Unauthorized user deconnection","IP TO DO")
else :
iden = self.current_user
ficLog.enregDansLog(iden,"Authorized user deconnection","IP TO DO")
if confAveug == True:
print '->Send audio alarm deconnection user'
print 'maison.request("GET", "micom/say.php?source=toto&text=Connection%20a%20la%20camera%20rompue")'
else:
print '->Send visual alarm deconnection user'
print 'maison.request("GET", "micom/lamp.php?room=salon1&order=0")'
print"->"+iden+" Deconnection"
2014-02-28 05:01:10 +00:00
2014-02-28 05:01:10 +00:00
2014-02-28 02:16:09 +00:00
2014-02-27 15:06:38 +00:00
application = tornado.web.Application([
(r"/", MainHandler),
2014-02-27 19:54:51 +00:00
(r"/video", VideoHandler),
(r"/unauthorized", UnauthorizedHandler),
(r"/disconnection", DisconnectionHandler),
2014-02-28 10:16:40 +00:00
(r"/socket", WSocketHandler),],
2014-02-28 10:20:21 +00:00
cookie_secret="1213215656")
2014-02-27 14:43:58 +00:00
2014-02-27 14:51:19 +00:00
if __name__ == "__main__":
2014-02-27 18:57:53 +00:00
hand = LoadConf()
2014-02-27 18:55:43 +00:00
confAveug = hand.estAveugle()
2014-02-27 18:56:31 +00:00
if confAveug == True:
print "->Blind unhabitant system configuration"
else :
print "->Not blind unhabitant system configuration"
2014-02-27 18:57:53 +00:00
2014-02-27 22:39:19 +00:00
tornado.options.parse_command_line()
2014-02-27 15:56:43 +00:00
http_server = tornado.httpserver.HTTPServer(application)
2014-02-27 15:53:58 +00:00
http_server.listen(80)
2014-02-27 15:06:38 +00:00
tornado.ioloop.IOLoop.instance().start()