# -*- coding: utf-8 -*-
import os
import sys
import subprocess
import platform
import json
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
#from tornado.web import url
from tornado.options import define, options
define("port", default=8000, help="run on the given port",
type=int)
# http://192.168.10.15:8000
class IndexHandler(tornado.web.RequestHandler):
def get(self):
print("IndexHandler:get")
self.write("Hello World")
# URLパス変数
# http://192.168.10.15:8000/test1/hoge
class Test1Handler(tornado.web.RequestHandler):
def get(self, file):
print("file={}
len={}".format(file, len(file)))
execPath=os.path.join(os.environ.get("HOME"), file)
print("test1
execPath={}".format(execPath))
if
(os.path.exists(execPath)):
if (os.access(execPath, os.X_OK)):
print("{} is Executable".format(execPath))
version = platform.python_version_tuple()
print("version={} major={} minor={}".format(version,
version[0], version[1]))
# for python2
if (version[0] == "2"):
res = subprocess.check_output([execPath])
# for python3
if (version[0] == "3"):
proc = subprocess.run([execPath], encoding='utf-8',
stdout=subprocess.PIPE)
res = proc.stdout
print('STDOUT: {}'.format(res))
responce = {"result": "OK"}
else:
print("{} is Not Executable".format(execPath))
responce = {"result": "FAIL"}
else:
print("{} is Not Found".format(execPath))
responce = {"result": "FAIL"}
self.write(json.dumps(responce))
# URLパラメータ
# http://192.168.10.15:8000/test2?path=hoge
class Test2Handler(tornado.web.RequestHandler):
def get(self):
file =
self.get_argument('path', None)
cmd =
self.get_argument('cmd', None)
gpio =
self.get_argument('gpio', None)
print("test2
file={}".format(file))
execPath=os.path.join(os.environ.get("HOME"), file)
print("test2
execPath={}".format(execPath))
if
(os.path.exists(execPath)):
if (os.access(execPath, os.X_OK)):
if (cmd != None and gpio != None):
print("{} is Executable".format(execPath))
print("cmd={} gpio={}".format(cmd, gpio))
version = platform.python_version_tuple()
print("version={} major={} minor={}".format(version,
version[0], version[1]))
# for python2
if (version[0] == "2"):
res = subprocess.check_output([execPath, cmd, gpio])
# for python3
if (version[0] == "3"):
proc = subprocess.run([execPath, cmd, gpio],
encoding='utf-8', stdout=subprocess.PIPE)
res = proc.stdout
print('STDOUT: {}'.format(res))
responce = {"result": "OK"}
else:
print("cmd & gpio Not set")
responce = {"result": "FAIL"}
else:
print("{} is Not Executable".format(execPath))
responce = {"result": "FAIL"}
else:
print("{} is Not Found".format(execPath))
responce = {"result": "FAIL"}
self.write(json.dumps(responce))
'''
def make_app():
return tornado.web.Application([
(r"/",
IndexHandler),
(r"/test1/(.*)", Test1Handler),
(r"/test2",
Test2Handler),
],debug=True,)
'''
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(
handlers=[
(r"/", IndexHandler),
(r"/test1/(.*)", Test1Handler),
(r"/test2", Test2Handler),
],debug=True
)
http_server =
tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.current().sta
|