Commit Graph

  • cbfd26c139
    feat: add cmd/smbtest for debugging smb connection issues feat-add-cmd-smbtest AJ ONeal 2026-01-13 02:23:23 -07:00
  • 950aea9eeb
    feat: add cmd/form2mail using formmailer/ipcohort/geoip/gitshallow feat-net-ipcohort AJ ONeal 2026-04-20 22:09:11 -06:00
  • 0d4bce8a38
    refactor(formmailer): use geoip instead of iploc for country check AJ ONeal 2026-04-20 20:35:18 -06:00
  • ee67cf05bc
    test(dataset): update loader signatures to func(ctx) (*T, error) AJ ONeal 2026-04-20 20:09:36 -06:00
  • 0d9df94a24
    test(gitshallow): regression test for upstream force-push recovery AJ ONeal 2026-04-20 20:05:52 -06:00
  • da2b230bc3
    refactor(dataset)!: plumb ctx into loader callbacks AJ ONeal 2026-04-20 20:02:48 -06:00
  • 06e6cfa211
    fix(formmailer): cap request body with MaxBytesReader AJ ONeal 2026-04-20 20:02:41 -06:00
  • b77872623a
    feat(formmailer)!: replace FormFields struct with ordered []Field AJ ONeal 2026-04-20 19:45:53 -06:00
  • f972d6f117
    refactor(formmailer): use *dataset.View directly, tighter timeouts AJ ONeal 2026-04-20 19:36:51 -06:00
  • b23610fdf1
    refactor(formmailer): production-readiness + dataset.View compatibility AJ ONeal 2026-04-20 19:32:40 -06:00
  • b40abe0a06
    feat(check-ip): --async-load flag for non-blocking server startup AJ ONeal 2026-04-20 19:26:32 -06:00
  • 1c99c8b831
    feat(check-ip): add /healthz + http.Server timeouts AJ ONeal 2026-04-20 19:26:27 -06:00
  • bcda75d673
    feat(dataset): close-on-swap, AddInitial, LoadedAt, Loaded AJ ONeal 2026-04-20 19:26:15 -06:00
  • 46b31b75c2
    style: format entry counts with comma thousands separators AJ ONeal 2026-04-20 19:15:47 -06:00
  • 8ebc571928
    refactor: apply check-ip CLI conventions to sibling cmds AJ ONeal 2026-04-20 19:13:47 -06:00
  • a181133c2f
    style(check-ip): blank line between stderr loading output and results AJ ONeal 2026-04-20 17:37:50 -06:00
  • e3973b240e
    feat(check-ip): print 'Loading X...' before each stage starts AJ ONeal 2026-04-20 17:37:01 -06:00
  • 36b015f84a
    feat(check-ip): print stage timings to stderr AJ ONeal 2026-04-20 17:36:21 -06:00
  • c99cd3a2b8
    refactor: default cache to ~/.cache on all platforms AJ ONeal 2026-04-20 17:33:31 -06:00
  • 5e6688c2a9
    feat(gitshallow): add MaxAge gate via FETCH_HEAD mtime AJ ONeal 2026-04-20 17:28:53 -06:00
  • 631f32cf95
    fix(gitshallow): mirror upstream with fetch+reset instead of pull --ff-only AJ ONeal 2026-04-20 17:23:53 -06:00
  • 8f40bbf110
    feat(geoip): Open falls back to lex-latest <edition>_*.tar.gz AJ ONeal 2026-04-20 17:14:11 -06:00
  • e594f2503c
    refactor(geoip): cache tarballs as <edition>_LATEST.tar.gz AJ ONeal 2026-04-20 17:13:41 -06:00
  • 5fc032dc56
    docs(check-ip): keep --geoip-conf flag help concise AJ ONeal 2026-04-20 17:10:00 -06:00
  • 0c509fb563
    docs: note GeoLite2 free signup in check-ip and geoip.Conf AJ ONeal 2026-04-20 17:07:22 -06:00
  • f293f86b16
    feat(check-ip): add --whitelist override, require GeoIP.conf AJ ONeal 2026-04-20 17:05:55 -06:00
  • 159cf2d4d3
    refactor(httpcache): sentinel errors for Fetch failure modes AJ ONeal 2026-04-20 17:01:04 -06:00
  • ba64018838
    fix(httpcache): propagate sidecar write errors from Fetch AJ ONeal 2026-04-20 17:00:22 -06:00
  • f75d5c489a
    refactor(httpcache): use http.Header instead of AuthHeader/AuthValue AJ ONeal 2026-04-20 16:55:15 -06:00
  • 4753888402
    refactor(geoip): ParseConf takes a string, not a file path AJ ONeal 2026-04-20 16:53:17 -06:00
  • e329c0f86b
    refactor(dataset): rename Group to Set, accept variadic fetchers AJ ONeal 2026-04-20 16:50:33 -06:00
  • 01158aee55
    revert: inline geoip sync instead of IPCheck.Sync method AJ ONeal 2026-04-20 16:43:38 -06:00
  • 0c95156d4c
    refactor(check-ip): add IPCheck.Sync for geoip, reuse for tick AJ ONeal 2026-04-20 16:42:54 -06:00
  • b9295608db
    feat(check-ip): accept IP args, require --serve or args AJ ONeal 2026-04-20 16:40:56 -06:00
  • 6bcb493d02
    refactor(check-ip): manage geoip via dataset.Group AJ ONeal 2026-04-20 16:38:40 -06:00
  • 35046bb17a
    refactor(check-ip): rename ConfPath, resolve GeoIP conf + basic-auth early AJ ONeal 2026-04-20 16:35:32 -06:00
  • 56a150826e
    refactor: geoip opens tar.gz in place, no Transform, no intermediate mmdb AJ ONeal 2026-04-20 16:27:32 -06:00
  • cb39f30d91
    refactor(geoip,check-ip): inline literal mmdb filenames AJ ONeal 2026-04-20 16:13:30 -06:00
  • 359b740cec
    refactor(geoip): Open takes dir, derives canonical edition paths AJ ONeal 2026-04-20 16:12:46 -06:00
  • 9b92136f91
    refactor(geoip,check-ip): lift download/refresh out of geoip into cmd AJ ONeal 2026-04-20 16:10:51 -06:00
  • d8b6638d97
    refactor(check-ip): defer signal ctx + Tick until server starts AJ ONeal 2026-04-20 16:04:23 -06:00
  • 7aa4493cb0
    refactor(check-ip): IPCheck struct holds flag config + handler method AJ ONeal 2026-04-20 16:02:55 -06:00
  • 0c281a494b
    fix(check-ip): explicit error handling for UserCacheDir + geo.Close AJ ONeal 2026-04-20 15:58:08 -06:00
  • b61ca0aa94
    refactor(check-ip): collapse remaining server indirection AJ ONeal 2026-04-20 15:57:48 -06:00
  • a84116f806
    refactor: strip all optional/nil-guard plumbing from check-ip + geoip AJ ONeal 2026-04-20 15:55:55 -06:00
  • cdce7da04c
    refactor(check-ip): simplify to 4 flags, push MkdirAll into libs AJ ONeal 2026-04-20 15:51:46 -06:00
  • 3b5812ffcd
    feat(dataset): add PollFiles fetcher for local-file sources AJ ONeal 2026-04-20 15:39:23 -06:00
  • 7b798a739a
    refactor(check-ip): split server into server.go, linearize main.go AJ ONeal 2026-04-20 15:36:02 -06:00
  • 786463cecd
    refactor(dataset): Tick takes an onError callback, no more stderr AJ ONeal 2026-04-20 14:19:26 -06:00
  • 912e1179d4
    feat(check-ip): --format pretty|json, move rendering out of geoip AJ ONeal 2026-04-20 14:18:39 -06:00
  • a3d657ec61
    fix(check-ip): create cache dir before httpcache writes into it AJ ONeal 2026-04-20 14:15:52 -06:00
  • 82f0b53ba3
    feat(check-ip): add --serve HTTP mode to exercise dataset.Tick AJ ONeal 2026-04-20 14:10:29 -06:00
  • 11743c9a10
    feat(sync/dataset): minimal group/view/fetcher for hot-swap refresh AJ ONeal 2026-04-20 13:33:05 -06:00
  • 01a9185c03
    refactor: delete net/dataset package AJ ONeal 2026-04-20 13:22:08 -06:00
  • 5985ea5e2d
    refactor(geoip): drop dataset dep, become barebones load/open/get AJ ONeal 2026-04-20 13:20:34 -06:00
  • 990b9e430c
    refactor(check-ip): drop dataset pkg, inline atomic-swap + ticker AJ ONeal 2026-04-20 13:16:47 -06:00
  • 9e9bd98540
    refactor(check-ip): factor source selection, keep demo of all three backends AJ ONeal 2026-04-20 13:05:37 -06:00
  • bf4cba6fb5
    feat: add bitwireGitURL const, show default URL in --git flag help AJ ONeal 2026-04-20 12:55:08 -06:00
  • 8c9924e559
    refactor: check-ip uses CheckIPConfig struct + flag.FlagSet, adds -V/help AJ ONeal 2026-04-20 12:54:13 -06:00
  • f5f992ae94
    refactor: move geoip setup into geoip.OpenDatabases, remove cmd/check-ip/geo.go AJ ONeal 2026-04-20 12:51:50 -06:00
  • 994d91b2bf
    refactor: dataset.Add returns *Dataset, no View; main uses Group for all cases AJ ONeal 2026-04-20 12:48:38 -06:00
  • cc945b0c09
    refactor: dataset.Sync() = fetch+conditional-swap, no public Swap() AJ ONeal 2026-04-20 12:46:02 -06:00
  • 03ea6934e9
    refactor: HTTP datasets are independent, no Group; Group only for shared git repo AJ ONeal 2026-04-20 12:41:07 -06:00
  • 7b71dec445
    feat: gitshallow.File for per-file path/open/sync; use in check-ip git case AJ ONeal 2026-04-20 12:39:24 -06:00
  • 6b420badbc
    refactor: merge blacklist.go into main.go via dataset.MultiSyncer AJ ONeal 2026-04-20 12:23:13 -06:00
  • 3ac9683015
    style: use blacklist/whitelist (industry standard) AJ ONeal 2026-04-20 12:20:59 -06:00
  • e1108f3de7
    fix: explicit path flags for blocklist; auto-discover GeoIP.conf AJ ONeal 2026-04-20 12:18:33 -06:00
  • ddd0986e20
    refactor: push complexity into packages; main.go is orchestration only AJ ONeal 2026-04-20 12:15:14 -06:00
  • 3e48e0a863
    fix: check-ip fails on startup if data cannot be downloaded AJ ONeal 2026-04-20 12:08:03 -06:00
  • 34a54c2d66
    refactor: multi-module workspace + dataset owns Syncer interface AJ ONeal 2026-04-20 11:22:01 -06:00
  • 225faec549
    fix: FormFields defaults to GravityForms-compatible input_N names AJ ONeal 2026-04-20 11:02:46 -06:00
  • d57c810c2e
    feat: add net/formmailer with updated paradigms AJ ONeal 2026-04-20 11:01:15 -06:00
  • b2eb5aef9a
    fix: skip redundant pull when another caller just synced under the lock AJ ONeal 2026-04-20 10:15:53 -06:00
  • bd62122ac8
    feat: default cache dirs; test both inbound files AJ ONeal 2026-04-20 10:11:49 -06:00
  • d24a34e0e5
    test: strengthen gitshallow integration tests to assert updated=false on re-pull AJ ONeal 2026-04-20 10:07:06 -06:00
  • 297fba10f5
    feat: persist ETag/Last-Modified to sidecar file; add integration tests AJ ONeal 2026-04-20 10:04:56 -06:00
  • 344246362f
    test: add integration tests for httpcache and gitshallow AJ ONeal 2026-04-20 10:01:57 -06:00
  • 4e8321af97
    fix: restore auth stripping on redirect, keyed off AuthHeader AJ ONeal 2026-04-20 09:59:27 -06:00
  • 3feb248ce1
    refactor: replace Username/Password with AuthHeader/AuthValue in httpcache AJ ONeal 2026-04-20 09:58:08 -06:00
  • d0a5e0a9d2
    fix: split connection and download timeouts in httpcache AJ ONeal 2026-04-20 09:56:24 -06:00
  • 86ffa2fb23
    chore: remove IPv6 special-casing (YAGNI) AJ ONeal 2026-04-20 09:54:04 -06:00
  • ad5d696ce6
    refactor: dataset.Add returns View[T] instead of Dataset[T] AJ ONeal 2026-04-20 09:50:48 -06:00
  • 896031b6a8
    fix: idiomatic Go cleanup across net packages AJ ONeal 2026-04-20 09:47:50 -06:00
  • 410b52f72c
    test: ipcohort + dataset; fix ParseIPv4 panic on IPv6 AJ ONeal 2026-04-20 09:36:13 -06:00
  • aeb94fc26b
    fix: remove double-fetch, add httpcache.NopSyncer, drop Sources.Init AJ ONeal 2026-04-20 09:31:58 -06:00
  • 673d084bd2
    refactor: dataset uses closure Loader + Close callback; check-ip uses Dataset/Group AJ ONeal 2026-04-20 09:28:20 -06:00
  • 7c0cd26da1
    refactor: GCInterval replaces LightGC; Sync/Init drop lightGC param AJ ONeal 2026-04-20 09:24:51 -06:00
  • 10c4b6dbc3
    feat: add net/dataset — generic Syncer→atomic.Pointer with Dataset and Group AJ ONeal 2026-04-20 09:23:14 -06:00
  • 105e99532d
    refactor: Syncer interface, zero-length guard, Sources uses []Syncer AJ ONeal 2026-04-20 09:22:16 -06:00
  • 2abdc1c229
    feat: geoip.ParseConf, geoip-update uses it, check-ip auto-downloads+hot-swaps GeoIP AJ ONeal 2026-04-20 00:38:54 -06:00
  • 52f422ec93
    feat: httpcache auth+rate-limit, geoip via httpcache, rename cmd to check-ip AJ ONeal 2026-04-20 00:31:49 -06:00
  • e29c294a75
    docs: add MaxMind DB binary format spec to net/geoip AJ ONeal 2026-04-20 00:23:49 -06:00
  • da33660c7c
    feat: add net/geoip for MaxMind GeoLite2 database downloads AJ ONeal 2026-04-20 00:21:31 -06:00
  • 8c578ee0c6
    docs: update ipcohort README with git and HTTP periodic-update examples AJ ONeal 2026-04-19 23:42:06 -06:00
  • 4895553a91
    refactor: move atomic swaps and polling loop into main AJ ONeal 2026-04-19 23:36:38 -06:00
  • e2236aa09b
    refactor: remove callbacks from gitshallow and httpcache AJ ONeal 2026-04-19 23:30:30 -06:00
  • 5f48a9beaa
    feat: ipcohort filter with inbound/outbound/whitelist cohorts AJ ONeal 2026-04-19 23:17:12 -06:00
  • ff224c5bb1
    feat: support split single_ips/networks files; ipcohort.LoadFiles variadic AJ ONeal 2026-04-19 23:01:51 -06:00
  • a9adc3dc18
    feat: add net/httpcache; wire git+http+file into Blacklist AJ ONeal 2026-04-19 22:57:36 -06:00
  • 4b0f943bd7
    feat: add Blacklist type to check-ip-blacklist to test ergonomics AJ ONeal 2026-04-19 22:55:39 -06:00