X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=make-secnet-sites;h=a84479ca0ce2fc41939d0c73d3e50721aa57bbb0;hb=49b56eafcd147185c28848a7c04e31a32c49a82e;hp=d9ed821dd0db152d00889d8af06e6ef072a980d4;hpb=965556e1ce11f279ee4b74801063009c8deeefed;p=secnet.git diff --git a/make-secnet-sites b/make-secnet-sites index d9ed821..a84479c 100755 --- a/make-secnet-sites +++ b/make-secnet-sites @@ -293,34 +293,34 @@ class PkmElide(PkmBase): class OpBase(): # Base case is reading a sites file from self.inputfilee. # And writing a sites file to self.sitesfile. + def positional_args(self, av): + if len(av.arg)>3: + print("Too many arguments") + sys.exit(1) + (self.inputfile, self.outputfile) = (av.arg + [None]*2)[0:2] def read_in(self): if self.inputfile is None: self.inputlines = pfile("stdin",sys.stdin.readlines()) else: self.inputlines = pfilepath(self.inputfile) def write_out(self): - if self.sitesfile is None: + if self.outputfile is None: f=sys.stdout else: - f=open(self.sitesfile+"-tmp",'w') + f=open(self.outputfile+"-tmp",'w') f.write("# sites file autogenerated by make-secnet-sites\n") self.write_out_heading(f) f.write("# use make-secnet-sites to turn this file into a\n") f.write("# valid /etc/secnet/sites.conf file\n\n") self.write_out_contents(f) f.write("# end of sites file\n") - if self.sitesfile is not None: + if self.outputfile is not None: f.close() - os.rename(self.sitesfile+"-tmp",self.sitesfile) + os.rename(self.outputfile+"-tmp",self.outputfile) class OpConf(OpBase): opts = ['--conf'] help = 'sites.conf generation mode (default)' - def positional_args(self, av): - if len(av.arg)>3: - print("Too many arguments") - sys.exit(1) - (self.inputfile, self.outputfile) = (av.arg + [None]*2)[0:2] def check_group(self,group,w): pass def write_out(self): if self.outputfile is None: @@ -332,6 +332,19 @@ class OpConf(OpBase): if self.outputfile is not None: os.rename(tmp_outputfile,self.outputfile) +class OpFilter(OpBase): + opts = ['--filter'] + help = 'sites file filtering mode' + def positional_arXgs(self, av): + if len(av.arg)!=1: + print("Too many arguments") + (self.inputfile,) = (av.arg + [None])[0:1] + self.outputfile = None + def write_out_heading(self,f): + f.write("# --filter --output-version=%d\n"%output_version) + def write_out_contents(self,f): + for i in self.inputlines: f.write(i) + class OpUserv(OpBase): opts = ['--userv','-u'] help = 'userv service fragment update mode' @@ -340,7 +353,7 @@ class OpUserv(OpBase): print("Wrong number of arguments") sys.exit(1) (self.header, self.groupfiledir, - self.sitesfile, self.group) = av.arg + self.outputfile, self.group) = av.arg self.group = Tainted(self.group,0,'command line') # untrusted argument from caller if "USERV_USER" not in os.environ: @@ -408,6 +421,7 @@ def parse_args(): fn=(lambda v,ns,*x: setattr(ns,'opmode',how)), help=how().help) add_opmode(OpConf) + add_opmode(OpFilter) add_opmode(OpUserv) ap.add_argument('--conf-key-prefix', action=ActionNoYes, default=True,