123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- from pathlib import Path
- from flask import request, Flask
- from flask_cors import CORS
- from datetime import datetime
- import pyodbc
- import subprocess
- app = Flask(__name__)
- # cors = CORS(app, resources={r"/*": {"origins": "http://localhost:4200/"}})
- CORS(app)
- path = Path('C:/GAPS/GCStarter/batch')
- path2 = Path('C:/GAPS/Portal/Tasks')
- @app.route('/', methods=['GET', 'POST'])
- def main():
- if request.args.get('valid') != '1':
- return "Funktioniert!"
- if request.args.get('gchr') is not None:
- return gchr()
- log = request.args.get('log')
- if log is not None:
- return logs(log)
- filename = request.args.get('batch', 'GCStarter.bat')
- return batch(filename)
- @app.route('/gchr/', methods=['POST'])
- def gchr():
- dsn = request.form.get('dsn')
- query = request.form.get('query')
- if dsn is None or query is None:
- return 'Fehler: fehlende Parameter'
- return fetch_query_as_csv(dsn[5:], query)
- def fetch_query_as_csv(dsn, query):
- try:
- conn = pyodbc.connect(dsn)
- cursor = conn.cursor()
- cursor.execute(query)
- return "\n".join([";".join(row) for row in cursor.fetchall()])
- except pyodbc.InterfaceError as e:
- print(e.args[1])
- return e.args[1], 422
- @app.route('/logs/<log>')
- def logs(log):
- logfile = path.joinpath('logs/' + log)
- if not logfile.exists():
- return f"Fehler: Datei '{log}' unbekannt"
- with open(logfile, 'r') as f:
- return f.read()
- @app.route('/batch/<filename>')
- def batch(filename):
- cmd = path.joinpath(filename)
- if not cmd.exists():
- cmd = path2.joinpath(filename)
- if not cmd.exists():
- return f"Fehler: Datei '{filename}' unbekannt"
- log = filename[:-4] + '_' + datetime.now().strftime('%Y%m%d_%H%M%S') + '.log'
- logfile = path.joinpath('logs/' + log)
- with open(logfile, 'wb') as stream:
- if filename != 'GCStarter.bat':
- stream.write(b'Starte Prozess...')
- subprocess.Popen(f'C:\\Windows\\System32\\cmd.exe /C "{cmd} & echo Prozess beendet. & echo [.]" ', stdout=stream, stderr=stream)
- # p.wait()
- return log
- if __name__ == '__main__':
- app.run(host='0.0.0.0', port='8091')
|