// tofuproxy -- flexible HTTP/HTTPS proxy, TLS terminator, X.509 TOFU // manager, WARC/geminispace browser // Copyright (C) 2021-2024 Sergey Matveev // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, version 3 of the License. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . package fifos import ( "log" "os" "time" "go.cypherpunks.su/tai64n/v3" ) var ( NoTAI bool LogCert = make(chan string) LogDANE = make(chan string) LogErr = make(chan string) LogHTTPAuth = make(chan string) LogNonOK = make(chan string) LogOK = make(chan string) LogRedir = make(chan string) LogReq = make(chan string) LogTLS = make(chan string) LogTLSAuth = make(chan string) LogVarious = make(chan string) LogWARC = make(chan string) ) func logger(c chan string, p string) { tai := new(tai64n.TAI64N) for { fd, err := os.OpenFile(p, os.O_WRONLY|os.O_APPEND, os.FileMode(0o666)) if err != nil { log.Fatalln(err) } for s := range c { if NoTAI { _, err = fd.WriteString(s + "\n") } else { tai.FromTime(time.Now()) _, err = fd.WriteString(tai64n.Encode(tai[:]) + " " + s + "\n") } if err != nil { break } } fd.Close() } }