-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.py
83 lines (71 loc) · 2.98 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from datetime import datetime
from flask import Flask, render_template, make_response, request, redirect, url_for
import config
import ssm
from model import db, SSMAgentList
app = config.create_app()
@app.route('/')
def startup():
return listDetails()
@app.route('/list', methods=['GET'])
def listDetails():
try:
response = ssm.setup()
#response = ssm.setupDummy()
try:
for each in response:
record = SSMAgentList.query.filter_by(instance_id = each['instance_id']).first()
if(record):
continue
ssm_Obj = SSMAgentList(profile=each['profile'],
instance_id=each['instance_id'],
platform=each['platform'],
tag_name=each['tag_name'],
connect_port="not connected",
updated_time=datetime.now()
)
db.session.add(ssm_Obj)
db.session.commit()
except:
pass
except:
return make_response("Something went wrong! Try again!. Refer to the console log for error details")
column_names = ['profile', 'instance_id', 'platform', 'tag_name', 'connect_port']
return render_template('record.html', records=response, colnames=column_names)
@app.route('/update', methods=['GET'])
def update():
try:
id = request.args['id']
port = request.args['connect_port']
#query from db now...
record = SSMAgentList.query.filter_by(instance_id=id).first()
record.connect_port = port
record.updated_time = datetime.now()
db.session.add(record)
db.session.commit()
response = []
for each in SSMAgentList.query.all():
response.append(each.to_json())
except Exception as e:
print(e)
return make_response("Something went wrong! Try again!. Refer to the console log for error details")
column_names = ['profile', 'instance_id', 'platform', 'tag_name', 'connect_port']
return render_template('record.html', records=response, colnames=column_names)
@app.route('/connect', methods=['GET', 'POST'])
def connect():
print("connect pressed")
id = request.args['instance_id']
platform = request.args['platform']
profile = request.args['profile']
try:
execution_result = ssm.executeSSM(id, platform, profile)
#execution_result = '1000'
except:
return make_response("Something went wrong! Try again!. Refer to the console log for error details")
return redirect(url_for('update', connect_port=execution_result, id=id))
# return "The tunnel to server "+id +" is open on port " + str(execution_result)+ ". Press back to go back to previous page.."
@app.route('/disconnect', methods=['GET', 'POST'])
def disconnect():
print("disconnect pressed")
if __name__ == '__main__':
app.run(debug=True)