A simple web portal for Linux iptables
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

60 linhas
1.7 KiB

#!/usr/bin/env python3
from flask import Flask, render_template, request, url_for
import logic
app = Flask(__name__)
@app.route('/remove', methods=['GET'])
def remove():
macs = logic.get_known_macs()
return render_template('remove.html', macs=macs)
@app.route('/removed', methods=['POST'])
def removed():
macs = request.form.getlist('mac')
print('Macs: {}'.format(macs))
for mac in macs:
logic.remove_mac_address(mac)
print('Removed {}'.format(mac))
return 'Success!'
@app.route('/', methods=['GET'])
def form():
macs = logic.get_unknown_macs()
return render_template('portal.html', macs=macs)
@app.route('/submit', methods=['POST'])
def submit():
macs = request.form.getlist('mac')
print('Macs: {}'.format(macs))
duration_type = request.form['duration_type']
print('Duration Type: {}'.format(duration_type))
comments = request.form.getlist('comment')
comments = [ c for c in comments if c ]
if len(macs) != len(comments):
return 'Some macs doesn\'t have their owners written!'
if duration_type == 'permanent':
expire = 'never'
else:
h = request.form['duration_h']
if not h:
h = 0
m = request.form['duration_m']
if not m:
m = 0
expire = 3600 * int(h) + 60 * int(m)
print('Duration: {}'.format(expire))
mac_comm = list(zip(macs, comments))
for mac in mac_comm:
logic.allow_mac_address(mac[0], expire, mac[1])
if expire == 'never':
print('Allowed {0} forever'.format(mac[0], expire))
else:
print('Allowed {0} for {1}h {2}m'.format(mac[0], h, m))
return 'Success!'
if __name__ == '__main__':
app.run(host="172.16.88.25", port="81")