Commit Graph

79 Commits

Author SHA1 Message Date
Mario Fetka
d223e8ef00 quota: split generic quota and nwquota files
All checks were successful
Source release / source-package (push) Successful in 1m4s
2026-06-11 14:23:47 +02:00
Mario Fetka
66cc0a81d7 quota: move nwquota backend into libnwfs
All checks were successful
Source release / source-package (push) Successful in 1m5s
2026-06-11 14:05:49 +02:00
Mario Fetka
6ffb42987c quota: remove obsolete nwquota experiments
All checks were successful
Source release / source-package (push) Successful in 1m8s
2026-06-11 13:31:55 +02:00
OpenAI
ee93656349 quota: precharge namespace creates for nwquota usage
All checks were successful
Source release / source-package (push) Successful in 59s
2026-06-11 12:27:40 +02:00
OpenAI
3455b3e7b2 quota: track nwquota usage like NetWare
All checks were successful
Source release / source-package (push) Successful in 1m7s
2026-06-11 12:13:35 +02:00
Mario Fetka
eb55c16620 quota: precheck first write for newly created files
All checks were successful
Source release / source-package (push) Successful in 1m0s
2026-06-11 11:15:02 +02:00
OpenAI
b743ebcb94 quota: enforce user restrictions on file growth
All checks were successful
Source release / source-package (push) Successful in 1m3s
2026-06-11 08:00:03 +02:00
OpenAI
b63aa71715 quota: auto-select linux or nwquota backend
All checks were successful
Source release / source-package (push) Successful in 1m3s
2026-06-11 07:20:49 +02:00
OpenAI
0764e7bf39 nwfs: split adapted namespace units
All checks were successful
Source release / source-package (push) Successful in 1m25s
2026-06-11 00:16:10 +02:00
OpenAI
832f2dc69a nwfs: import adapted namespace model
All checks were successful
Source release / source-package (push) Successful in 1m36s
2026-06-11 00:10:45 +02:00
OpenAI
c5dd6f08f0 nwfs: import adapted ZAS auth model
All checks were successful
Source release / source-package (push) Successful in 1m43s
2026-06-10 23:56:12 +02:00
OpenAI
bc6da83959 Wire mars metadata to NSS netware xattrs
All checks were successful
Source release / source-package (push) Successful in 1m2s
2026-06-10 16:45:57 +02:00
OpenAI
23fa433b80 Add initial libnwfs metadata xattr library
All checks were successful
Source release / source-package (push) Successful in 1m3s
2026-06-10 16:23:01 +02:00
Mario Fetka
65193c1330 Import remaining NSS headers and support sources
All checks were successful
Source release / source-package (push) Successful in 1m3s
Signed-off-by: Mario Fetka <mario.fetka@gmail.com>
2026-06-10 15:46:17 +02:00
Mario Fetka
e1a9347aab Import selected NSS sources for NetWare metadata work
All checks were successful
Source release / source-package (push) Successful in 1m8s
Signed-off-by: Mario Fetka <mario.fetka@gmail.com>
2026-06-10 13:40:40 +02:00
OpenAI Build Bot
fea0feda65 Match NICI handle width with FLAIM FLMUINT
All checks were successful
Source release / source-package (push) Successful in 1m2s
2026-06-05 21:09:11 +02:00
OpenAI Build Bot
ed44308820 Add NICI startup shutdown entry points
All checks were successful
Source release / source-package (push) Successful in 1m11s
2026-06-05 21:02:13 +02:00
OpenAI Build Bot
1f4c03e2f6 Implement nwssl NICI compatibility layer
All checks were successful
Source release / source-package (push) Successful in 1m13s
2026-06-05 20:55:57 +02:00
OpenAI Build Bot
8420f90e67 Keep OpenSSL compat headers under nwssl
All checks were successful
Source release / source-package (push) Successful in 1m0s
2026-06-05 17:53:22 +02:00
Mario Fetka
ad03c45765 Move OpenSSL compatibility into nwssl 2026-06-05 15:31:38 +02:00
Patch Bot
01ed39c1b0 Add nwcore and nwssl root libraries
All checks were successful
Source release / source-package (push) Successful in 1m4s
2026-06-04 20:54:41 +02:00
Mario Fetka
f8317503df docs: normalize source license headers to gpl2 only
All checks were successful
Source release / source-package (push) Successful in 40s
2026-06-03 00:46:27 +02:00
Mario Fetka
b0abf81f07 docs: retrofit endpoint stub scope notes 2026-06-02 16:13:00 +02:00
Mario Fetka
6d561b0866 docs: bucket endpoint audit by netware generation 2026-06-01 23:20:57 +02:00
ai
59bfdd65b2 afp: persist ProDOS info metadata
All checks were successful
Source release / source-package (push) Successful in 52s
2026-06-01 11:51:05 +02:00
ai
92b0c4a34a afp: add deleted file Macintosh info endpoint
All checks were successful
Source release / source-package (push) Successful in 55s
2026-06-01 11:07:43 +02:00
test
396dd8e66f ncp: inline salvage endpoint parsing in cases
All checks were successful
Source release / source-package (push) Successful in 1m0s
2026-05-31 21:50:16 +02:00
test
54181247b1 ncp: merge salvage endpoint wrappers 2026-05-31 21:33:25 +02:00
OpenAI
6b2c9f99f8 ncp: keep 87 salvage handlers local 2026-05-31 21:30:54 +02:00
OpenAI
4bfb1a46bd ncp: add legacy salvage endpoints 2026-05-31 21:05:29 +02:00
Test
e47a745d0b salvage: match scan entries by directory base
All checks were successful
Source release / source-package (push) Successful in 56s
2026-05-31 20:14:41 +02:00
Review Bot
cb0967c7e1 salvage: reuse scan path for recover lookup 2026-05-31 20:07:08 +02:00
OpenAI
0e9f65d821 ncp: keep 87 subfunction dispatch in namespace handler
All checks were successful
Source release / source-package (push) Successful in 54s
2026-05-31 19:50:34 +02:00
Mario Fetka
23be038087 NCP 87/17 Recover Salvageable File
All checks were successful
Source release / source-package (push) Successful in 58s
2026-05-31 19:39:29 +02:00
Test
51ae60a6f8 salvage: add initial NCP scan endpoint
All checks were successful
Source release / source-package (push) Successful in 57s
2026-05-31 18:06:51 +02:00
test
5d574078ff salvage: add recycle filters and versioning
All checks were successful
Source release / source-package (push) Successful in 53s
2026-05-31 15:54:51 +02:00
OpenAI
afa4a00f39 salvage: parse recycle behaviour flags 2026-05-31 15:31:04 +02:00
OpenAI
34c9e2a6ed salvage: reserve low ini range for recycle options 2026-05-31 15:23:37 +02:00
ChatGPT
3fb45fd624 salvage: hook delete path through nwsalvage
All checks were successful
Source release / source-package (push) Successful in 55s
2026-05-31 13:35:58 +02:00
Mario Fetka
5fc5a5218f salvage: preserve trustee metadata
All checks were successful
Source release / source-package (push) Successful in 52s
2026-05-31 12:37:40 +02:00
Mario Fetka
ce34e2df65 salvage: preserve xattr backed metadata 2026-05-31 12:32:44 +02:00
Mario Fetka
2c089f5fe3 salvage: expand metadata schema for server fields
All checks were successful
Source release / source-package (push) Successful in 58s
2026-05-31 12:27:44 +02:00
Mario Fetka
054ea6c867 salvage: add yyjson metadata helpers 2026-05-31 11:49:57 +02:00
Mario Fetka
5d0c665b52 salvage: load config through ini getter 2026-05-31 11:34:50 +02:00
Mario Fetka
47709fe935 salvage: add repository path helpers 2026-05-31 11:27:49 +02:00
Mario Fetka
bedec0d2c0 salvage: add initial config helper 2026-05-31 11:27:39 +02:00
Mario Fetka
fa96ebb264 nwatalk: use standalone mars_nwe AFP xattr backend 2026-05-31 06:15:03 +02:00
OpenAI
c51fde95fe nwconn: persist AFP invisible file attributes
All checks were successful
Source release / source-package (push) Successful in 47s
Extend the conservative NCP 0x2222/35/16 AFP 2.0 Set File Information smoke path beyond FinderInfo-only writes by accepting the file Attributes bitmap for one deliberately narrow bit: Finder Invisible.

WebSDK and Netatalk FPSetFileParams semantics carry file attributes as bitmap bit 0, with ATTRBIT_SETCLR selecting set-vs-clear behavior. Mirror that model only for ATTRBIT_INVISIBLE and reject all other AFP attribute bits so DOS/NetWare mode bits, timestamp writes, resource forks, and broader file protection semantics are not implied accidentally.

Persist the mars_nwe-owned AFP attribute word in org.mars-nwe.afp.attributes via the local xattr abstraction. On Linux this maps to user.org.mars-nwe.afp.attributes, matching the org.mars-nwe.* source-level namespace while remaining portable on Linux xattr backends. Get File Information and Scan File Information now merge that stored Invisible bit into the existing 120-byte AFP file-info record.

Update the Linux Set File Information smoke helper with --invisible, --clear-invisible, --attributes-only, and --finder-info-only so FinderInfo and the narrow AFP attribute path can be tested independently or together.

Tests: git diff --check

Tests: gcc -Iinclude -I/mnt/data/stubs -fsyntax-only tests/linux/afp_set_file_info_smoke.c

TODO: keep all other AFP Set File Information bits rejected until their write-safe mapping to NetWare/DOS attributes, timestamps, CNID, and resource-fork metadata is designed.
2026-05-30 12:23:03 +02:00
OpenAI
4637f3ee57 nwatalk: cache AFP fallback entry ids in xattrs
All checks were successful
Source release / source-package (push) Successful in 48s
The AFP smoke endpoints can now read mars_nwe-owned entry ids from the versioned org.mars-nwe.afp.entry-id xattr, but a newly discovered file still had to fall back to the temporary stat-derived id on every request until a real CNID allocator exists.

Preserve the existing WebSDK/NWAFP response semantics while making that fallback sticky: when Get Entry ID, Get File Information, or Scan File Information has no mars_nwe xattr and no Netatalk/libatalk AppleDouble/CNID id, derive the existing compatibility id and cache it through nwatalk_set_entry_id().  The first request still logs fallback so diagnostics remain honest about the id origin; subsequent requests should read the xattr directly and avoid re-entering the stat fallback path.

Keep the write narrowly scoped to mars_nwe's private AFP metadata namespace.  The payload is versioned, big-endian, and stored through the nwxattr helper, so Linux persists it as user.org.mars-nwe.afp.entry-id while source-level code continues to use the Netatalk-style org.mars-nwe.afp.entry-id name.  This does not implement CNID allocation, parent-id lookup, entry-id-only resolution, FinderInfo mutation beyond the existing smoke path, or resource-fork semantics.

Tests:

- git diff --check

- cmake --build build-xattr-off --target nwconn with ENABLE_NETATALK_LIBATALK=OFF

- cmake --build build-xattr-on --target nwconn with ENABLE_NETATALK_LIBATALK=ON against Netatalk 4.4.3 headers plus local link stubs
2026-05-30 11:56:43 +02:00
OpenAI
995a1e6cd7 nwconn: add AFP FinderInfo set smoke path
All checks were successful
Source release / source-package (push) Successful in 49s
Implement a deliberately narrow write-safe slice of the WebSDK/NWAFP Set File Information semantics for the NCP 0x2222/35/16 AFP 2.0 Set File Information call.

The only accepted request bitmap is the FinderInfo bit (0x0020). The handler uses the same path-backed raw VOL:-style compatibility subset as the existing AFP get, scan, open-fork, and temporary-directory-handle smoke endpoints, resolves the effective NetWare volume from the path prefix, rejects entry-id-only lookup until persistent CNID/base-ID mapping exists, and rejects directory or non-FinderInfo writes rather than pretending to implement DOS attribute, timestamp, delete-protect, resource-fork, or broader Mac namespace write semantics.

Store the 32-byte FinderInfo block in mars_nwe-owned metadata under the source-level xattr name org.mars-nwe.afp.finder-info and teach the existing AFP file-info response builder to read that value before falling back to Netatalk/libatalk AppleDouble FinderInfo. This makes the write immediately verifiable through AFP 2.0 Get File Information without changing data-fork or resource-fork contents.

Add a small local xattr abstraction for mars_nwe-private metadata names. Netatalk exposes names such as org.netatalk.Metadata at the libatalk layer, but prefixes them with user. on Linux inside its EA wrapper. Mirror that behavior for mars_nwe so source code and documentation use org.mars-nwe.* consistently while Linux stores user.org.mars-nwe.* where the kernel requires a namespace prefix. Convert the existing archive/fileinfo xattr calls to the same wrapper so the previous org.mars-nwe.* namespace rename remains functional on Linux.

Add tests/linux/afp_set_file_info_smoke, which sends AFP 0x10 with a FinderInfo bitmap, then verifies the result through AFP 0x0f Get File Information. Document the smoke command, expected output, server-log shape, and the remaining unsupported Set File Information write semantics.

Tests: git diff --check; gcc -Iinclude -I/mnt/data/stubs -fsyntax-only tests/linux/afp_set_file_info_smoke.c; cmake --build build-off --target nwconn with ENABLE_NETATALK_LIBATALK=OFF; cmake --build build-on --target nwconn with ENABLE_NETATALK_LIBATALK=ON against Netatalk-4.4.3 headers and local link stubs.
2026-05-30 11:29:33 +02:00