X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/d300166d083192ef3d4242013adcef345b0126f3..fe789bea628b15229156c8a4272c2b6063c9b1a0:/src/plugins/webalizer.sml diff --git a/src/plugins/webalizer.sml b/src/plugins/webalizer.sml index d708dba..50ca6a9 100644 --- a/src/plugins/webalizer.sml +++ b/src/plugins/webalizer.sml @@ -32,7 +32,7 @@ val () = Apache.registerPre name = id ^ ".wbl"} in TextIO.output (fd, "LogFile\t"); - TextIO.output (fd, Apache.logDir {user = user, node = node, vhostId = hostname}); + TextIO.output (fd, Apache.realLogDir {user = user, node = node, vhostId = hostname}); TextIO.output (fd, "/access.log\nOutputDir\t"); TextIO.output (fd, Config.Webalizer.outputDir); TextIO.output (fd, "/"); @@ -71,42 +71,48 @@ val () = Slave.registerFileHandler (fn fs => in case OS.Path.splitBaseExt (#file spl) of {base, ext = SOME "wbl"} => - (case #action fs of - Slave.Delete => - (ignore (OS.Process.system (Config.rm - ^ " -f " - ^ Config.Webalizer.configDir - ^ "/" - ^ Slave.hostname () - ^ "/" - ^ base - ^ ".conf")); - ignore (OS.Process.system (Config.rm - ^ " -rf " - ^ Config.Webalizer.outputDir - ^ "/" - ^ Slave.hostname () - ^ "/" - ^ base))) - | _ => - (ignore (OS.Process.system (Config.cp - ^ " " - ^ #file fs - ^ " " - ^ Config.Webalizer.configDir - ^ "/" - ^ Slave.hostname () - ^ "/" - ^ base - ^ ".conf")); - let - val dir = Config.Webalizer.outputDir ^ "/" ^ Slave.hostname () ^ "/" ^ base - in - if Posix.FileSys.access (dir, []) then - () - else - OS.FileSys.mkDir dir - end)) + let + fun backupDir () = OS.Path.joinDirFile + {dir = Config.Webalizer.backupDir, + file = base} + in + case #action fs of + Slave.Delete _ => + (ignore (OS.Process.system (Config.rm + ^ " -f " + ^ Config.Webalizer.configDir + ^ "/" + ^ Slave.hostname () + ^ "/" + ^ base + ^ ".conf")); + Slave.moveDirCreate {from = Config.Webalizer.outputDir + ^ "/" + ^ Slave.hostname () + ^ "/" + ^ base, + to = backupDir ()}) + | _ => + (ignore (OS.Process.system (Config.cp + ^ " " + ^ #file fs + ^ " " + ^ Config.Webalizer.configDir + ^ "/" + ^ Slave.hostname () + ^ "/" + ^ base + ^ ".conf")); + let + val dir = Config.Webalizer.outputDir ^ "/" ^ Slave.hostname () ^ "/" ^ base + in + if Posix.FileSys.access (dir, []) then + () + else + Slave.moveDirCreate {from = backupDir (), + to = dir} + end) + end | _ => () end) @@ -118,6 +124,6 @@ val () = Domain.registerResetLocal (fn () => val () = Domain.registerDescriber (Domain.considerAll [Domain.Extension {extension = "wbl", - heading = fn host => "Webalizer config for " ^ host}]) + heading = fn host => "Webalizer config for " ^ host ^ ":"}]) end