summaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAgeFilesLines
* docs: CHANGELOG: updatev0.4.3dilluti0n2026-02-161-2/+5
|
* windows: fix regression intorduced in b68753e8dilluti0n2026-02-161-5/+2
|
* Bump version to 0.4.3dilluti0n2026-02-163-6/+6
|
* Log version information on startupdilluti0n2026-02-161-0/+1
|
* docs: CHANGELOG: updatedilluti0n2026-02-161-0/+2
|
* log: add defensive error handling for local_timedilluti0n2026-02-161-1/+3
| | | | Fallback to zeroed timestamp when time()/localtime_r() fails.
* docs: CHANGELOG: updatedilluti0n2026-02-161-0/+3
|
* log: drop chrono, use localtime_r and GetLocalTime directlydilluti0n2026-02-163-113/+29
| | | | 24 KiB is precious :)
* docs: dpibreak.1: update pid/log file pathdilluti0n2026-02-162-5/+6
|
* log: print time with crate chronodilluti0n2026-02-163-1/+113
|
* ci: release: remove publish-crates-io deps to releasedilluti0n2026-02-161-1/+1
|
* ci: release: upload sha256sum.txt instead of *.sha256dilluti0n2026-02-161-1/+4
|
* docs: CHANGELOG: fix typodilluti0n2026-02-161-1/+1
|
* windows: fix nit build failurev0.4.2dilluti0n2026-02-161-3/+3
|
* Bump version to 0.4.2dilluti0n2026-02-163-8/+14
|
* docs: CHANGELOG: updatedilluti0n2026-02-161-1/+2
|
* linux: add TODO on daemonizedilluti0n2026-02-161-0/+1
|
* opt: decouple set_opt() from loggingdilluti0n2026-02-164-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 failsdilluti0n2026-02-161-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'dilluti0n2026-02-164-11/+28
|\
| * docs: CHANGELOG: updatedilluti0n2026-02-161-0/+4
| |
| * linux: exit if not rootdilluti0n2026-02-162-2/+10
| |
| * linux: repurpose bootstrap to do things before requiring cleanupdilluti0n2026-02-162-7/+11
| |
| * linux: modify PID_FILE and log pathdilluti0n2026-02-161-2/+3
|/ | | | Fixes: https://github.com/dilluti0n/dpibreak/issues/16
* docs: CHANGELOG: sync with release notedilluti0n2026-02-151-3/+2
|
* Bump version to 0.4.1v0.4.1dilluti0n2026-02-153-2/+11
|
* Merge branch 'fix/nft-flush-startup'dilluti0n2026-02-153-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 enforcementdilluti0n2026-02-151-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 reusedilluti0n2026-02-152-6/+6
| |
| * Consolidate setup logic into run()dilluti0n2026-02-153-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 notedilluti0n2026-02-151-12/+12
| | | | so download link and buildinfo can be generated.
* ci: fix release cannot find download artifactsv0.4.0dilluti0n2026-02-151-12/+12
|
* docs: CHANGELOG: unwrap lines to single-line entriesdilluti0n2026-02-151-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 releasedilluti0n2026-02-151-1/+3
|
* ci: pass --no-verify to cargo publishdilluti0n2026-02-151-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.0dilluti0n2026-02-153-43/+55
|
* build: update CHANGELOG path on build.ps1dilluti0n2026-02-151-1/+1
| | | | since Windows cannot resolve symlink
* ci: release: parse release note from CHANGELOG.mddilluti0n2026-02-151-8/+5
| | | | * Remove generate release note from github api
* docs: CHANGELOG: add release datesdilluti0n2026-02-151-13/+13
| | | | | | Got dates from: gh release list --json tagName,publishedAt -q '.[] | "\(.tagName) \(.publishedAt | split("T")[0])"'
* docs: CHANGELOG: migrate to markdown formatdilluti0n2026-02-151-40/+64
|
* docs: CHANGELOG: move to CHANGELOG.mddilluti0n2026-02-152-40/+41
|
* Merge branch 'feat/daemonize'dilluti0n2026-02-1512-111/+362
|\
| * windows: bats: add useful prompts on service_*.batdilluti0n2026-02-152-10/+28
| |
| * docs: README: updatedilluti0n2026-02-151-29/+31
| |
| * docs: dpibreak.1: add -D, --daemondilluti0n2026-02-152-0/+35
| |
| * docs: WINDOWS_GUIDE: add korean translationdilluti0n2026-02-151-5/+24
| |
| * docs: WINDOWS_GUIDE: add service install instructiondilluti0n2026-02-151-6/+14
| |
| * windows: bats: add service_*.bat to install/remove windows servicedilluti0n2026-02-152-0/+31
| | | | | | | | | | Closes: #11 Link: https://github.com/dilluti0n/dpibreak/issues/11
| * opt: refactor to detach parse_args and set_optdilluti0n2026-02-153-88/+112
| |
| * windows: implement windows servicedilluti0n2026-02-153-3/+53
| | | | | | | | | | | | | | | | | | Revert lock_handle() send_to_raw cannot get a mutex since lock is not released per iteration. commit e08b57d281d8368dc02f06e3b6cd43edf88b2438