-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
109 lines (86 loc) · 3.37 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# coding:utf-8
import os, base64, hashlib
from flask import Flask, request, render_template, redirect, url_for, abort, make_response, send_from_directory
import MySQLdb.cursors
app = Flask(__name__)
def db_connect():
"""
DB接続して、MySQLコネクションオブジェクトを返す
:return: MySQLConnection
"""
host = os.getenv('MYSQL_DATABASE_HOST', 'database')
port = os.getenv('MYSQL_DATABASE_PORT', 3306)
user = os.getenv('MYSQL_DATABASE_USER', 'root')
passwd = os.getenv('MYSQL_DATABASE_PASSWORD', '')
db = os.getenv('MYSQL_DATABASE_DB', 'management_ipaddress')
request.db = MySQLdb.connect(**{
'host': host,
'port': port,
'user': user,
'passwd': passwd,
'db': db,
'charset': 'utf8mb4',
'cursorclass': MySQLdb.cursors.DictCursor,
})
return request.db
@app.route('/')
def redirect_login():
return redirect(url_for('login'))
@app.route('/login')
def login():
return render_template('login.html')
# セッション機能は作ってない
@app.route('/login', methods=['POST'] )
def login_post():
db = db_connect()
cur = db.cursor()
# loginする人
if request.form.getlist('login-submit'):
username = request.form['username']
encode_password = request.form['password'].encode('utf-8')
hash_password = hashlib.sha256(encode_password).hexdigest()
sql = 'SELECT * FROM users WHERE username = %s'
cur.execute(sql, (username,))
user = cur.fetchall()
if user and user[0]["password"] == hash_password:
return redirect(url_for('home'))
# registerする人
elif request.form.getlist('register-submit'):
username = request.form['username']
email = request.form['email']
password = request.form['password']
confirm = request.form['confirm-password']
if password != confirm:
return render_template('login.html')
encode_password = password.encode('utf-8')
hash_password = hashlib.sha256(encode_password).hexdigest()
sql = 'INSERT INTO users (username, password, email) VALUES (%s, %s, %s)'
cur.execute(sql, (username, hash_password, email))
db.commit()
cur.close()
db.close()
return redirect(url_for('home'))
return render_template('login.html')
@app.route('/main', methods=['GET', 'POST'])
def home():
if request.method == 'POST':
db = db_connect()
cur = db.cursor()
ipaddress = request.form['ipaddress']
subnet = request.form['subnet']
hostname = request.form['hostname']
fqdn = request.form['fqdn']
description = request.form['description']
sql = 'INSERT INTO ipaddress_list (ipaddress, subnet, hostname, fqdn, description, created_by) ' \
'VALUES (INET_ATON(%s), %s, %s, %s, %s, %s)'
cur.execute(sql, (ipaddress, subnet, hostname, fqdn, description, "fujiwara"))
db.commit()
cur.close()
db.close()
return redirect(url_for('home'))
cur = db_connect().cursor()
cur.execute("SELECT id, INET_NTOA(ipaddress), subnet, hostname, fqdn, description, created_by FROM ipaddress_list")
ipaddress_list = cur.fetchall()
return render_template('home.html', ipaddress_list=ipaddress_list)
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0')