diff --git a/class/core/firewall_api.py b/class/core/firewall_api.py index 32145affb..08d8bf225 100755 --- a/class/core/firewall_api.py +++ b/class/core/firewall_api.py @@ -104,7 +104,7 @@ class firewall_api: if mw.M('firewall').where("port=?", (port,)).count() > 0: return mw.returnData(False, '您要放行的端口已存在,无需重复放行!') - msg = mw.getInfo('放行端口[{1}]成功', (port,)) + msg = mw.getInfo('放行端口[{1}][{2}]成功', (port, protocol,)) mw.writeLog("防火墙管理", msg) addtime = time.strftime('%Y-%m-%d %X', time.localtime()) mw.M('firewall').add('port,protocol,ps,addtime', @@ -144,25 +144,48 @@ class firewall_api: # 删除放行端口 def delAcceptPortApi(self): port = request.form.get('port', '').strip() + protocol = request.form.get('protocol', 'tcp').strip() sid = request.form.get('id', '').strip() mw_port = mw.readFile('data/port.pl') try: if(port == mw_port): return mw.returnJson(False, '失败,不能删除当前面板端口!') if self.__isUfw: - mw.execShell('ufw delete allow ' + port + '/tcp') + if protocol == 'tcp': + mw.execShell('ufw delete allow ' + port + '/tcp') + if protocol == 'udp': + mw.execShell('ufw delete allow ' + port + '/udp') + if protocol == 'tcp/udp': + mw.execShell('ufw delete allow ' + port + '/tcp') + mw.execShell('ufw delete allow ' + port + '/udp') elif self.__isFirewalld: port = port.replace(':', '-') - mw.execShell( - 'firewall-cmd --permanent --zone=public --remove-port=' + port + '/tcp') - mw.execShell( - 'firewall-cmd --permanent --zone=public --remove-port=' + port + '/udp') + if protocol == 'tcp': + mw.execShell( + 'firewall-cmd --permanent --zone=public --remove-port=' + port + '/tcp') + if protocol == 'udp': + mw.execShell( + 'firewall-cmd --permanent --zone=public --remove-port=' + port + '/udp') + if protocol == 'tcp/udp': + mw.execShell( + 'firewall-cmd --permanent --zone=public --remove-port=' + port + '/tcp') + mw.execShell( + 'firewall-cmd --permanent --zone=public --remove-port=' + port + '/udp') elif self.__isIptables: - mw.execShell( - 'iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport ' + port + ' -j ACCEPT') + if protocol == 'tcp': + mw.execShell( + 'iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport ' + port + ' -j ACCEPT') + if protocol == 'udp': + mw.execShell( + 'iptables -D INPUT -p udp -m state --state NEW -m udp --dport ' + port + ' -j ACCEPT') + if protocol == 'tcp/udp': + mw.execShell( + 'iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport ' + port + ' -j ACCEPT') + mw.execShell( + 'iptables -D INPUT -p udp -m state --state NEW -m udp --dport ' + port + ' -j ACCEPT') else: pass - msg = mw.getInfo('删除防火墙放行端口[{1}]成功!', (port,)) + msg = mw.getInfo('删除防火墙放行端口[{1}][{2}]成功!', (port, protocol,)) mw.writeLog("防火墙管理", msg) mw.M('firewall').where("id=?", (sid,)).delete()