scripts/gestion/gen_confs/ipset.py
Nicolas Dandrimont 55ebe3cfc4 [ipset] stfu
darcs-hash:20110804014053-ffbb2-02e453aae35c8f791bcf3a2cac8b3689949ae63f.gz
2011-08-04 03:40:53 +02:00

78 lines
2 KiB
Python
Executable file

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# The authors of this code are
#
# Permission to use, copy, and modify this software with or without fee
# is hereby granted, provided that this entire notice is included in
# all source code copies of any software which is or includes a copy or
# modification of this software.
#
# THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRSS OR
# IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY
# REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
# MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
# PURPOSE.
import sys
sys.path.append('/usr/scripts/gestion')
sys.path.append('/usr/scripts/lc_ldap')
import commands
import lock
import lc_ldap
import config
import secrets
class IpsetError(Exception):
# Gestion des erreurs d'ipset
def __init__(self,cmd,err_code,output):
self.cmd=cmd
self.err_code=err_code
self.output=output
def __str__(self):
return "%s\n status : %s\n %s" % (self.cmd,self.err_code,self.output)
class Ipset(object):
ipset="/usr/sbin/ipset"
def __init__(self,set,type,typeopt=''):
self.set=set
self.type=type
self.typeopt=typeopt
def call(self,cmd,arg=''):
"""Appel système à ipset"""
cmd_line="%s %s %s %s" % (self.ipset,cmd,self.set,arg)
status,output=commands.getstatusoutput(cmd_line)
if status:
raise IpsetError(cmd_line,status,output)
return output
def create(self,opt=''):
self.call("-N","%s %s" % (self.type, self.typeopt))
def add(self,arg):
self.call("-A",arg)
def list(self):
output=self.call("-L").splitlines()
list=[]
for line in output[6:]:
if line=='Bindings:':
break
list.append(line)
return list
def delete(self,ip):
"""Delete an IP"""
self.call("-D",ip)
def flush(self):
self.call("-F")
def destroy(self):
self.call("-X")