|
|
@@ -12,11 +12,13 @@ import win32service
|
|
|
import servicemanager
|
|
|
import win32serviceutil
|
|
|
|
|
|
-from flask import Flask,request
|
|
|
+from flask import Flask,request,make_response,jsonify
|
|
|
+from flask_cors import *
|
|
|
|
|
|
from tornado.ioloop import IOLoop
|
|
|
from tornado.wsgi import WSGIContainer
|
|
|
from tornado.httpserver import HTTPServer
|
|
|
+from threading import Thread
|
|
|
|
|
|
#from parsedocx import DocxConverter,QuestionsParser
|
|
|
|
|
|
@@ -25,6 +27,19 @@ import json,uuid
|
|
|
from bs4 import BeautifulSoup
|
|
|
from win32com.client import Dispatch,DispatchEx
|
|
|
import pythoncom
|
|
|
+from twainscan import get_source_names,start_scan
|
|
|
+
|
|
|
+app = Flask(__name__)
|
|
|
+CORS(app,supports_credentials=True)
|
|
|
+root = "c:\\AppData\\say365"
|
|
|
+xlog = logging.getLogger('[PythonService]')
|
|
|
+handler = logging.FileHandler(os.path.join(root, "service.log"))
|
|
|
+
|
|
|
+formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
|
|
|
+handler.setFormatter(formatter)
|
|
|
+
|
|
|
+xlog.addHandler(handler)
|
|
|
+xlog.setLevel(logging.INFO)
|
|
|
|
|
|
|
|
|
class DocxConverter(object):
|
|
|
@@ -130,20 +145,7 @@ class QuestionsParser(object):
|
|
|
qno = re.search(r"\d+",tgtext.split(u"、")[0]).group()
|
|
|
return qno
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-app = Flask(__name__)
|
|
|
-root = "c:\\AppData\\say365"
|
|
|
-xlog = logging.getLogger('[PythonService]')
|
|
|
-handler = logging.FileHandler(os.path.join(root, "service.log"))
|
|
|
-
|
|
|
-formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
|
|
|
-handler.setFormatter(formatter)
|
|
|
-
|
|
|
-xlog.addHandler(handler)
|
|
|
-xlog.setLevel(logging.INFO)
|
|
|
-
|
|
|
-@app.route('/parsedocx',methods=["POST"])
|
|
|
+@app.route('/parsedocx.aspx',methods=["POST"])
|
|
|
def parsedocx():
|
|
|
"""
|
|
|
"""
|
|
|
@@ -167,12 +169,32 @@ def parsedocx():
|
|
|
except Exception as e:
|
|
|
xlog.error(e)
|
|
|
return str(e)
|
|
|
+
|
|
|
+@app.route('/xscanSourceList.aspx',methods=["GET"])
|
|
|
+def xscanSourceList():
|
|
|
+ """
|
|
|
+ """
|
|
|
+ snames = get_source_names()
|
|
|
+ res = make_response(jsonify(snames))
|
|
|
+ return res
|
|
|
+
|
|
|
+@app.route('/xscanAction.aspx',methods=["GET"])
|
|
|
+def xscanAction():
|
|
|
+ """
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ t = Thread(target = start_scan)
|
|
|
+ t.start()
|
|
|
+ return "success"
|
|
|
+ except Exception as e:
|
|
|
+ xlog.error(e)
|
|
|
+ return str(e)
|
|
|
|
|
|
|
|
|
def main():
|
|
|
#app.run(host='0.0.0.0', port=8002, debug=True)
|
|
|
s = HTTPServer(WSGIContainer(app))
|
|
|
- s.listen(8002)
|
|
|
+ s.listen(19882)
|
|
|
IOLoop.current().start()
|
|
|
|
|
|
class XsacnService(win32serviceutil.ServiceFramework):
|
|
|
@@ -215,7 +237,7 @@ class XsacnService(win32serviceutil.ServiceFramework):
|
|
|
while self.isAlive:
|
|
|
self.logger.info("服务正在运行...")
|
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
|
- result = sock.connect_ex(('127.0.0.1', 8002)) # 嗅探网址是否可以访问,成功返回0,出错返回错误码
|
|
|
+ result = sock.connect_ex(('127.0.0.1', 19882)) # 嗅探网址是否可以访问,成功返回0,出错返回错误码
|
|
|
if result != 0:
|
|
|
# Python3.8的asyncio改变了循环方式,因为这种方式在windows上不支持相应的add_reader APIs,就会抛出NotImplementedError错误。
|
|
|
# 因此加入下面两行代码
|
|
|
@@ -228,7 +250,7 @@ class XsacnService(win32serviceutil.ServiceFramework):
|
|
|
def main(self):
|
|
|
#app.run(host='0.0.0.0', port=8002, debug=True)
|
|
|
s = HTTPServer(WSGIContainer(app))
|
|
|
- s.listen(8002)
|
|
|
+ s.listen(19882)
|
|
|
IOLoop.current().start()
|
|
|
|
|
|
def SvcStop(self):
|
|
|
@@ -240,15 +262,15 @@ class XsacnService(win32serviceutil.ServiceFramework):
|
|
|
|
|
|
|
|
|
if __name__=='__main__':
|
|
|
- if len(sys.argv) == 1:
|
|
|
- try:
|
|
|
- evtsrc_dll = os.path.abspath(servicemanager.__file__)
|
|
|
- servicemanager.PrepareToHostSingle(XsacnService)
|
|
|
- servicemanager.Initialize('XsacnService', evtsrc_dll)
|
|
|
- servicemanager.StartServiceCtrlDispatcher()
|
|
|
- except win32service.error, details:
|
|
|
- if details[0] == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
|
|
|
- win32serviceutil.usage()
|
|
|
- else:
|
|
|
- win32serviceutil.HandleCommandLine(XsacnService)
|
|
|
- #main()
|
|
|
+ #if len(sys.argv) == 1:
|
|
|
+ # try:
|
|
|
+ # evtsrc_dll = os.path.abspath(servicemanager.__file__)
|
|
|
+ # servicemanager.PrepareToHostSingle(XsacnService)
|
|
|
+ # servicemanager.Initialize('XsacnService', evtsrc_dll)
|
|
|
+ # servicemanager.StartServiceCtrlDispatcher()
|
|
|
+ # except win32service.error, details:
|
|
|
+ # if details[0] == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
|
|
|
+ # win32serviceutil.usage()
|
|
|
+ #else:
|
|
|
+ # win32serviceutil.HandleCommandLine(XsacnService)
|
|
|
+ main()
|