# coding=utf-8import pymysql
import os
classiptable_check:global db
global cursor
global ip_list
db = pymysql.connect("localhost","root","123","firewalld", charset='utf8')
cursor = db.cursor()
ip_list =[]def__init__(self):print("---"*20)defmysqlDb(self,sql):try:
cursor.execute(sql)
db.commit()except:
db.rollback()print("Update comm get some probelm.")defcursorDelete(self,row,ck):
ip = row[0]
port = row[1]
state = row[2]
ipId = row[3]
os.system("sed -i '/"+str(ip)+"\/24 --dport "+str(port)+" -j ACCEPT/d' iptables")
sql ="DELETE FROM iptable_manage WHERE id = '"+str(ipId)+"'"
ck.mysqlDb(sql)defcursorSelect(self):
sql ="SELECT ip,port,state,id as ipId FROM iptable_manage"try:
cursor.execute(sql)
results = cursor.fetchall()for row in results:
entity =[row[0],row[1],row[2],row[3]]
ip_list.append(entity)print("end:"+str(ip_list))except:print("Error: unable to fecth data")defaddIptable(self,row,ck):
ip = row[0]
port = row[1]
state = row[2]
ipId = row[3]
os.system("sed -i '/COMMIT/i\-A INPUT -p tcp -m state --state NEW -m tcp -s "+str(ip)+"/24 --dport "+str(port)+" -j ACCEPT' iptables")
sql ="UPDATE firewalld.iptable_manage SET state = '1' where id = "+str(ipId)
ck.mysqlDb(sql)defcursorChange(self):
ck = iptable_check()
ck.cursorSelect()for row in ip_list:if row[2]==0:
ck.addIptable(row,ck)elif row[2]==2:
ck.cursorDelete(row,ck)
ck = iptable_check()
ck.cursorChange()