22b1415b43
probe_target() unconditionally ran mkdir(parents=True) on TARGET_DIR. When TARGET_DIR sits under an unmounted FUSE drive, this materialized the mount root (e.g. ~/pCloudDrive) as a plain local directory, occupying the mountpoint and blocking the pCloud client from ever mounting. Add optional mount_root config key (env COE_MIRROR_MOUNT_ROOT). When set, probe_target requires the path to be a live mountpoint and TARGET_DIR to be under it before any mkdir; otherwise it returns False and the run queues to pending. Unset preserves prior behavior for local targets.
2.9 KiB
2.9 KiB
coe-mirror notes
- Created: 2026-06-11. Purpose: autonomous mirroring of Nightmare_Eclipse repos from Church of Malware to local pCloud storage.
- Source API: Forgejo public REST at
git.churchofmalware.org, no auth needed. - Owner being mirrored:
Nightmare_Eclipse(8 active repos as of creation). - Destination:
~/pCloudDrive/Hacking/Nightmare_Eclipse/. - Schedule: 00:00 + 12:00 daily, catch-up on boot via Persistent timer + OnBootSec.
- Design rationale:
- FUSE-safe placement uses
shutil.copy2 + size verify + unlink, notos.rename, to handle pCloud FUSE semantics. - pCloud daemon auto-start was rejected — no user unit exists; DISPLAY=:0 spawning is unreliable. Tool relies on Persistent timer + pending-flush for recovery.
commit.shais NOT in the repo-list API response — two-call approach (list, then per-repo branch) is retained.
- FUSE-safe placement uses
- DevTrack: Not created at creation time (oraculo offline, Tailscale last seen 2d ago, carbon roaming off home LAN). Add a
coe-mirrorproject + item retroactively when oraculo returns. - Matrix notification: Stub-only at creation time, Matrix server down. Real implementation deferred until home Matrix server is back.
2026-06-14 — Matrix notification swap
- Replaced
notify()stub with real Synapse send. Targets General room (!MBpPtYlQYMcngtpvJt:m.mealeyfamily.com). - Auth: password login via
MATRIX_USER+MATRIX_PASSWORDfrom Infisicalmatrix/at refresh time. Token cache at~/.local/share/coe-mirror/matrix-token.json(chmod 0600), refreshed when <30 min left or on 401. - Non-fatal failures — Matrix outage does not break the mirror.
- Env overrides:
COE_MIRROR_MATRIX_ROOM,COE_MIRROR_MATRIX_HOMESERVER. - Pre-deploy step: invite
@intel-bot:m.mealeyfamily.comto General once Synapse is back. Without joined membership, sends will 403. - DevTrack: #1172.
2026-07-10 — mount_root guard (phantom pCloudDrive fix)
- Bug:
probe_target()didTARGET_DIR.mkdir(parents=True, exist_ok=True)unconditionally. When pCloud FUSE was unmounted, this created~/pCloudDrive/...as plain LOCAL dirs, occupying the mountpoint and blocking the pCloud client from mounting. Live state on carbon confirmed:~/pCloudDrivewas a plain dir, not a mountpoint, with 22 stray zips inside. - Fix: new optional config key
mount_root(envCOE_MIRROR_MOUNT_ROOT). When set,probe_target()requiresos.path.ismount(mount_root)AND thatTARGET_DIRis undermount_rootbefore any mkdir; otherwise returns False (queues to pending). Never creates the mount root. Empty/unset = old behavior (local targets like~/coe-mirror). - Local config sets
mount_root = "~/pCloudDrive". - Recovery run: stopped/masked timer, staged the 22 zips aside, removed the local
~/pCloudDrive, relaunched pCloud, verified mountpoint, moved zips onto the live mount, unmasked timer. - DevTrack: #1307.