]> Sergey Matveev's repositories - tofuproxy.git/blobdiff - fifos/warcs.go
Various refactoring
[tofuproxy.git] / fifos / warcs.go
index 6d38700b2817385883d509c51c8cc816b581df34..4f7dcc209d471ed7e94422d71a84403024225141 100644 (file)
@@ -1,5 +1,6 @@
 /*
-tofuproxy -- flexible HTTP/WARC proxy with TLS certificates management
+tofuproxy -- flexible HTTP/HTTPS proxy, TLS terminator, X.509 TOFU
+             manager, WARC/geminispace browser
 Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
@@ -18,7 +19,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 package fifos
 
 import (
-       "bufio"
        "fmt"
        "log"
        "os"
@@ -34,7 +34,10 @@ func listWARCs(p string) {
                }
                warc.WARCsM.RLock()
                for warcPath, uris := range warc.WARCs {
-                       fmt.Fprintf(fd, "%s\t%d\n", warcPath, len(uris))
+                       fmt.Fprintf(
+                               fd, "%s\t%d\t%d\n",
+                               warcPath, len(uris), len(warc.WARCs[warcPath]),
+                       )
                }
                warc.WARCsM.RUnlock()
                fd.Close()
@@ -43,22 +46,9 @@ func listWARCs(p string) {
 
 func addWARC(p string) {
        for {
-               fd, err := os.OpenFile(p, os.O_RDONLY, os.FileMode(0666))
-               if err != nil {
-                       log.Fatalln(err)
-               }
-               var warcPaths []string
-               scanner := bufio.NewScanner(fd)
-               for scanner.Scan() {
-                       t := scanner.Text()
-                       if len(t) > 0 {
-                               warcPaths = append(warcPaths, t)
-                       }
-               }
-               fd.Close()
-               for _, warcPath := range warcPaths {
+               for _, warcPath := range readLinesFromFIFO(p) {
                        if warcPath == "SAVE" {
-                               if err = warc.SaveIndexes(); err != nil {
+                               if err := warc.SaveIndexes(); err != nil {
                                        log.Printf("%s: can not save index %s: %+v\n", p, warcPath, err)
                                }
                                continue
@@ -67,12 +57,16 @@ func addWARC(p string) {
                                continue
                        }
                        log.Printf("%s: adding WARC %s\n", p, warcPath)
-                       err = warc.Add(warcPath)
-                       if err != nil {
+                       if err := warc.Add(warcPath); err != nil {
                                log.Printf("%s: can not open %s: %+v\n", p, warcPath, err)
                                break
                        }
-                       log.Printf("%s: %s: added %d URIs\n", p, warcPath, len(warc.WARCs[warcPath]))
+                       log.Printf(
+                               "%s: %s: added %d URIs %d segments\n",
+                               p, warcPath,
+                               len(warc.WARCs[warcPath]),
+                               len(warc.WARCsOffsets[warcPath]),
+                       )
                }
        }
 }