| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | windows: fix nit build failurev0.4.2 | dilluti0n | 2026-02-16 | 1 | -3/+3 |
| | | |||||
| * | Bump version to 0.4.2 | dilluti0n | 2026-02-16 | 3 | -8/+14 |
| | | |||||
| * | docs: CHANGELOG: update | dilluti0n | 2026-02-16 | 1 | -1/+2 |
| | | |||||
| * | linux: add TODO on daemonize | dilluti0n | 2026-02-16 | 1 | -0/+1 |
| | | |||||
| * | opt: decouple set_opt() from logging | dilluti0n | 2026-02-16 | 4 | -18/+36 |
| | | | | | | | | | | | | | | | | | | | | | | | set_opt() was logging each option as it set them, which created a tight coupling between option initialization and log output timing. This was particularly problematic for daemon mode: daemonize must happen after set_opt() (to know whether -D was passed) but before logging (so output goes to the log file, not stdout). Split into set_opt() -> InitializedOpts and InitializedOpts::log(), using a typestate pattern to enforce at compile time that log() cannot be called before set_opt(). This lets each platform's bootstrap() handle daemonization between the two steps: let initialized = opt.set_opt()?; platform::bootstrap()?; // daemonize here if needed initialized.log(); // now safe to log Also: - Move daemonize_1() into platform::bootstrap() on both platforms - Make daemonize_1() / service_main() private to their platform modules - Fix the long-standing TODO about using log_println in daemonize() | ||||
| * | linux: fix log file truncated when daemonize fails | dilluti0n | 2026-02-16 | 1 | -3/+7 |
| | | | | | | | | | | 1. open without O_APPEND (offset = 0) and O_TRUNC (original bug) 2. dup file descripter with .try_clone() and feed it to daemonize 3. truncate file with .set_len(0) on child after daemonize.start() succed Fixes: https://github.com/dilluti0n/dpibreak/issues/17 | ||||
| * | Merge branch 'fix/pid-file-open-fail-EACCES' | dilluti0n | 2026-02-16 | 4 | -11/+28 |
| |\ | |||||
| | * | docs: CHANGELOG: update | dilluti0n | 2026-02-16 | 1 | -0/+4 |
| | | | |||||
| | * | linux: exit if not root | dilluti0n | 2026-02-16 | 2 | -2/+10 |
| | | | |||||
| | * | linux: repurpose bootstrap to do things before requiring cleanup | dilluti0n | 2026-02-16 | 2 | -7/+11 |
| | | | |||||
| | * | linux: modify PID_FILE and log path | dilluti0n | 2026-02-16 | 1 | -2/+3 |
| |/ | | | | Fixes: https://github.com/dilluti0n/dpibreak/issues/16 | ||||
| * | docs: CHANGELOG: sync with release note | dilluti0n | 2026-02-15 | 1 | -3/+2 |
| | | |||||
| * | Bump version to 0.4.1v0.4.1 | dilluti0n | 2026-02-15 | 3 | -2/+11 |
| | | |||||
| * | Merge branch 'fix/nft-flush-startup' | dilluti0n | 2026-02-15 | 3 | -11/+42 |
| |\ | | | | | | | | | | | | | Fixes: #13 Link: https://github.com/dilluti0n/dpibreak/issues/13 Fixes: #6 Link: https://github.com/dilluti0n/dpibreak/issues/6 | ||||
| | * | linux: add PID file locking for single instance enforcement | dilluti0n | 2026-02-15 | 1 | -6/+24 |
| | | | | | | | | | | | Prevent multiple non-daemon dpibreak instances using flock(). Show existing PID on conflict and maintain lock until process termination. | ||||
| | * | linux: extract PID_FILE constant for reuse | dilluti0n | 2026-02-15 | 2 | -6/+6 |
| | | | |||||
| | * | Consolidate setup logic into run() | dilluti0n | 2026-02-15 | 3 | -3/+16 |
| |/ | | | | | | | | | | | The bootstrap/run separation was unnecessary. Move all initialization (cleanup + nftables setup): into run() and skip bootstrap in daemon mode. We repurpose the bootstrap() function to only run in non-daemon mode for future foreground-only initialization. - Add OPT_DAEMON option to detect daemon mode - Move cleanup() and install_rules() from bootstrap() to run() - Make bootstrap() a no-op (only called in non-daemon mode) | ||||
| * | ci: move download artifacts before making release note | dilluti0n | 2026-02-15 | 1 | -12/+12 |
| | | | | | so download link and buildinfo can be generated. | ||||
| * | ci: fix release cannot find download artifactsv0.4.0 | dilluti0n | 2026-02-15 | 1 | -12/+12 |
| | | |||||
| * | docs: CHANGELOG: unwrap lines to single-line entries | dilluti0n | 2026-02-15 | 1 | -21/+9 |
| | | | | | | GitHub Release notes treat newlines as <br>, causing mid-sentence line breaks in rendered release notes. | ||||
| * | ci: add checkout to read CHANGELOG.md on release | dilluti0n | 2026-02-15 | 1 | -1/+3 |
| | | |||||
| * | ci: pass --no-verify to cargo publish | dilluti0n | 2026-02-15 | 1 | -1/+1 |
| | | | | | | | build.rs writes dpibreak.1 outside OUT_DIR, which is safe for cargo install but fails publish verification. --no-verify skips this check without affecting end users. | ||||
| * | Bump version to 0.4.0 | dilluti0n | 2026-02-15 | 3 | -43/+55 |
| | | |||||
| * | build: update CHANGELOG path on build.ps1 | dilluti0n | 2026-02-15 | 1 | -1/+1 |
| | | | | | since Windows cannot resolve symlink | ||||
| * | ci: release: parse release note from CHANGELOG.md | dilluti0n | 2026-02-15 | 1 | -8/+5 |
| | | | | | * Remove generate release note from github api | ||||
| * | docs: CHANGELOG: add release dates | dilluti0n | 2026-02-15 | 1 | -13/+13 |
| | | | | | | | Got dates from: gh release list --json tagName,publishedAt -q '.[] | "\(.tagName) \(.publishedAt | split("T")[0])"' | ||||
| * | docs: CHANGELOG: migrate to markdown format | dilluti0n | 2026-02-15 | 1 | -40/+64 |
| | | |||||
| * | docs: CHANGELOG: move to CHANGELOG.md | dilluti0n | 2026-02-15 | 2 | -40/+41 |
| | | |||||
| * | Merge branch 'feat/daemonize' | dilluti0n | 2026-02-15 | 12 | -111/+362 |
| |\ | |||||
| | * | windows: bats: add useful prompts on service_*.bat | dilluti0n | 2026-02-15 | 2 | -10/+28 |
| | | | |||||
| | * | docs: README: update | dilluti0n | 2026-02-15 | 1 | -29/+31 |
| | | | |||||
| | * | docs: dpibreak.1: add -D, --daemon | dilluti0n | 2026-02-15 | 2 | -0/+35 |
| | | | |||||
| | * | docs: WINDOWS_GUIDE: add korean translation | dilluti0n | 2026-02-15 | 1 | -5/+24 |
| | | | |||||
| | * | docs: WINDOWS_GUIDE: add service install instruction | dilluti0n | 2026-02-15 | 1 | -6/+14 |
| | | | |||||
| | * | windows: bats: add service_*.bat to install/remove windows service | dilluti0n | 2026-02-15 | 2 | -0/+31 |
| | | | | | | | | | | | Closes: #11 Link: https://github.com/dilluti0n/dpibreak/issues/11 | ||||
| | * | opt: refactor to detach parse_args and set_opt | dilluti0n | 2026-02-15 | 3 | -88/+112 |
| | | | |||||
| | * | windows: implement windows service | dilluti0n | 2026-02-15 | 3 | -3/+53 |
| | | | | | | | | | | | | | | | | | | | Revert lock_handle() send_to_raw cannot get a mutex since lock is not released per iteration. commit e08b57d281d8368dc02f06e3b6cd43edf88b2438 | ||||
| | * | linux: implement daemonize | dilluti0n | 2026-02-15 | 5 | -11/+57 |
| | | | | | | | | | | | Closes: #2 Link: https://github.com/dilluti0n/dpibreak/issues/2 | ||||
| | * | opt: add option -D, --daemon | dilluti0n | 2026-02-14 | 1 | -0/+18 |
| |/ | |||||
| * | ci: automatically add dpibreak.1.md on commit | dilluti0n | 2026-02-03 | 1 | -0/+1 |
| | | |||||
| * | docs: dpibreak.1: fix typo | dilluti0n | 2026-02-03 | 2 | -10/+10 |
| | | |||||
| * | ci: version control git pre-commit hook | dilluti0n | 2026-02-03 | 1 | -0/+14 |
| | | | | | | This can be used via git config core.hooksPath .hooks | ||||
| * | build: always rerun; for winres | dilluti0n | 2026-02-03 | 1 | -4/+0 |
| | | |||||
| * | build: preprocess version of dpibreak.1 | dilluti0n | 2026-02-03 | 3 | -2/+17 |
| | | |||||
| * | docs: dpibreak.1: remove from version control | dilluti0n | 2026-02-03 | 2 | -196/+1 |
| | | | | | It is now generated by build.rs and dpibreak.1.in | ||||
| * | build: preprocess DEFAULT_* on dpibreak.1.in from build.rs | dilluti0n | 2026-02-03 | 4 | -3/+254 |
| | | |||||
| * | docs: dpibreak.1: fix typo | dilluti0n | 2026-02-03 | 2 | -18/+20 |
| | | |||||
| * | docs: README: clean verbose feature description | dilluti0n | 2026-02-01 | 1 | -5/+2 |
| | | |||||
| * | docs: CHANGELOG: update | dilluti0n | 2026-02-01 | 1 | -1/+2 |
| | | |||||
| * | Bump version to 0.3.0v0.3.0 | dilluti0n | 2026-02-01 | 4 | -23/+25 |
| | | | | | Closes: https://github.com/dilluti0n/dpibreak/issues/12 | ||||
