From dd819dafc90596efbff829a8ea16ff0c6708dde5 Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Sat, 15 Jan 2022 23:33:05 +0100 Subject: [PATCH] Add pg binary mode --- SynchRoGazer.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/SynchRoGazer.go b/SynchRoGazer.go index 5aad92b..1a4dbd9 100644 --- a/SynchRoGazer.go +++ b/SynchRoGazer.go @@ -79,12 +79,25 @@ func PrintHashFileResult(result *HashFileResult, format string, settings Postgre func PostgresHashFileResult(result *HashFileResult, settings PostgresSettings) { var err error var rows *sql.Rows - switch settings.Mode { - case "insert": - rows, err = settings.Handle.Query(fmt.Sprintf("INSERT INTO %s (%s, %s, %s) VALUES ($1, $2, $3);", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.PathRow), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row)), result.Path, result.MD5, result.SHA256) - case "update": - rows, err = settings.Handle.Query(fmt.Sprintf("UPDATE %s SET %s = $2, %s = $3 WHERE %s = $1;", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row), pq.QuoteIdentifier(settings.PathRow)), result.Path, result.MD5, result.SHA256) + + if settings.Binary { + h_md5, _ := hex.DecodeString(result.MD5) + h_sha256, _ := hex.DecodeString(result.SHA256) + switch settings.Mode { + case "insert": + rows, err = settings.Handle.Query(fmt.Sprintf("INSERT INTO %s (%s, %s, %s) VALUES ($1, $2, $3);", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.PathRow), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row)), result.Path, h_md5, h_sha256) + case "update": + rows, err = settings.Handle.Query(fmt.Sprintf("UPDATE %s SET %s = $2, %s = $3 WHERE %s = $1;", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row), pq.QuoteIdentifier(settings.PathRow)), result.Path, h_md5, h_sha256) + } + } else { + switch settings.Mode { + case "insert": + rows, err = settings.Handle.Query(fmt.Sprintf("INSERT INTO %s (%s, %s, %s) VALUES ($1, $2, $3);", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.PathRow), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row)), result.Path, result.MD5, result.SHA256) + case "update": + rows, err = settings.Handle.Query(fmt.Sprintf("UPDATE %s SET %s = $2, %s = $3 WHERE %s = $1;", pq.QuoteIdentifier(settings.Table), pq.QuoteIdentifier(settings.MD5Row), pq.QuoteIdentifier(settings.SHA256Row), pq.QuoteIdentifier(settings.PathRow)), result.Path, result.MD5, result.SHA256) + } } + if err != nil { fmt.Fprintln(os.Stderr, result.Path, "SQL Error: ", err) } @@ -96,6 +109,7 @@ func PostgresHashFileResult(result *HashFileResult, settings PostgresSettings) { type PostgresSettings struct { Handle *sql.DB ConnStr string + Binary bool Mode string Table string PathRow string @@ -114,6 +128,7 @@ func main() { outputFormat := flag.String("format", "text", "Output formats. Allowed: text, json, postgres") pgConnStr := flag.String("pg_connstr", "", "Postgres connection string for postgres output format") + pgBinary := flag.Bool("pg_binary", false, "Postgres binary hash mode") pgMode := flag.String("pg_mode", "insert", "Postgres output mode, insert or update") pgTable := flag.String("pg_table", "files", "Postgres output table") pgPathRow := flag.String("pg_row_path", "path", "Postgres output row: path") @@ -125,6 +140,7 @@ func main() { pgSettings := PostgresSettings{ nil, *pgConnStr, + *pgBinary, *pgMode, *pgTable, *pgPathRow,