Commit Graph

202 Commits

Author SHA1 Message Date
Mario Fetka
8ad0f4a144 connect: honor ignore-case option for LOGIN path
All checks were successful
Source release / source-package (push) Successful in 49s
Apply the ignore-case volume option when preparing the SYS:LOGIN
directory path during connection setup.

With SYS configured as `itO`, the installed tree may use lowercase
Unix directories such as `login/`, but the connection code still tried
to stat the hard-coded uppercase `LOGIN/` path. This caused new client
connections to abort with:

  Stat error LOGIN Directory, Abort !!: No such file or directory
  UnixPath=`.../SYS/LOGIN/`

Treat `VOL_OPTION_IGNCASE` like `VOL_OPTION_DOWNSHIFT` for this path so
the login directory is resolved as `login/` on ignore-case volumes.
2026-05-27 12:07:30 +02:00
Mario Fetka
ad4d492ad6 sys: match Novell default login drive mappings
All checks were successful
Source release / source-package (push) Successful in 46s
Update the default net$log.dat template to use the same basic drive
layout as a standard Novell login script.

The default login now maps:

  F:  -> SYS:SYSTEM
  S1: -> SYS:PUBLIC
  S2: -> SYS:

This keeps the visible login result closer to Novell NetWare while
leaving the surrounding sample/login text intact.
2026-05-27 11:54:23 +02:00
Mario Fetka
07ee7fa659 nwdbm: honor ignore-case volumes when creating SYS dirs
All checks were successful
Source release / source-package (push) Successful in 49s
Treat the `i` volume option like `k` when choosing the Unix-side
case for the automatically created SYS directories.

With a volume configured as `itO` (ignore case, trustees, OS/2 LFN),
the server currently recreates uppercase directories such as LOGIN,
PUBLIC, SYSTEM and MAIL on startup, even when the installed tree uses
lowercase login/public/system/mail. This leaves duplicate host
directories that appear as ambiguous entries from DOS clients.

Use lowercase Unix names for the auto-created SYS directories when
the volume is configured either as downshift (`k`) or ignore-case (`i`).
2026-05-27 11:42:22 +02:00
Mario Fetka
12b9106732 Debug MAP fix
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-26 17:38:22 +02:00
Mario Fetka
52d6d76c34 Debug MAP
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-26 17:34:52 +02:00
Mario Fetka
48624d2776 Fix NCP22 trustee rights mapping for Modify
All checks were successful
Source release / source-package (push) Successful in 40s
NCP22 uses bit 0x80 for Modify. MARS internally uses the same bit for
TRUSTEE_M, while Supervisor is represented internally as TRUSTEE_S at 0x100.
Only the Supervisor/Open bit needs translation.

The previous conversion mapped NCP22 0x80 incorrectly, causing GRANT M from
Novell tools to be stored without TRUSTEE_M internally. As a result, users with
directory Modify rights could not rename files even though NDIR/RIGHTS displayed
the rights as expected.
2026-05-26 15:24:04 +02:00
Mario Fetka
2bc211cd4a Rename parent rights fix incremental Debug
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-26 15:10:00 +02:00
Mario Fetka
c1f4d74e3b Rename parent rights fix incremental
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-26 14:55:34 +02:00
Mario Fetka
181c20620c Fix rename trustee rights and invalidate trustee cache
All checks were successful
Source release / source-package (push) Successful in 39s
Align rename permission checks with NetWare trustee semantics. A same-directory
rename should be controlled by the Modify right instead of requiring a broader
R/W/M combination. For moves to another parent directory, require Create rights
on the destination parent.

Also invalidate the trustee rights cache after adding or deleting trustee
assignments so newly granted rights are visible immediately to subsequent
operations.

This fixes the MARIO trustee test where rename failed with R/W/M/F and even
R/W/C/E/M/F, while the same operation succeeded only with the broader all-rights
set.
2026-05-26 14:29:51 +02:00
Mario Fetka
121ca79bc7 Check seteuid result in quota wrapper
All checks were successful
Source release / source-package (push) Successful in 48s
Handle failures from seteuid(0) in su_quotactl() before calling
quotactl(). This fixes the warn_unused_result compiler warning and
returns an error to the quota caller if privilege elevation fails.
2026-05-26 09:56:00 +02:00
Mario Fetka
8175bcae50 Add CMake option for real debug compiler builds
All checks were successful
Source release / source-package (push) Successful in 45s
Keep the existing MARS debug logging switch separate from compiler
debug flags. ENABLE_DEBUG still controls the legacy DO_DEBUG/XDPRINTF
code paths, while the new ENABLE_DEBUG_BUILD option enables a real
debug build with -g3, -O0 and -fno-omit-frame-pointer.

When ENABLE_DEBUG_BUILD is set on single-config generators, CMake also
forces CMAKE_BUILD_TYPE=Debug so gdb/valgrind builds can be enabled
without manually passing compiler flags.
2026-05-26 09:39:23 +02:00
Mario Fetka
8017c0c078 Add CMake quota detection and enable quota support by default
All checks were successful
Source release / source-package (push) Successful in 47s
Add a FindQuota.cmake module that checks for the Linux quota headers and
symbols required by the MARS NWE quota backend. Prefer modern
<sys/quota.h> with quotactl(), and keep <linux/quota.h> as fallback for
older systems.

Enable quota support by default, but only compile it in when the required
headers and quota symbols are available. Also move the QTAINSYS define to
the detected sys/quota.h path so modern Linux builds use the correct
header automatically.
2026-05-26 09:32:01 +02:00
Mario Fetka
dd0285187d Handle volume restriction reads on volumes without quota backend
All checks were successful
Source release / source-package (push) Successful in 47s
SYSCON reads volume/disk restrictions before opening the edit dialog.
For volumes that do not map to a quota-capable block device, such as
HOME on /home, the old code returned an error during the read path.
This made SYSCON abort with error -30312 before the user could even see
the restriction state.

Treat read requests on volumes without a quota backend as unrestricted:
return success with an unlimited quota and zero usage. Removing a
restriction on such a volume is also treated as a successful no-op.

Setting a non-zero restriction still fails, so admin tools do not report
a quota as enforced when no Linux quota backend exists.
2026-05-26 09:15:20 +02:00
Mario Fetka
aa86258fe9 NCP22 trustee rights: map Novell wire mask to internal trustee bits
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-26 07:58:27 +02:00
Mario Fetka
8ffadff3e6 Raw-Dump-Debug
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-26 07:33:33 +02:00
Mario Fetka
adbb1211aa Add debug for trustees
All checks were successful
Source release / source-package (push) Successful in 45s
NCP22/0D AddTrustee
NCP22/0E DelTrustee
NCP22/27 SetTrustee
NCP22/2B DelTrustee
2026-05-26 07:20:58 +02:00
Mario Fetka
adf9b6e9f2 Replace sample NET.DAT with SYS-only default login script
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-26 06:35:30 +02:00
Mario Fetka
cee3d26888 NCP22/32: map internal trustee rights to NCP22 access mask
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-26 06:19:41 +02:00
Mario Fetka
e80b67a490 Quota-Backend-Cleanup/Logging remove tmpfs and create quota if not exist Part three
All checks were successful
Source release / source-package (push) Successful in 39s
2026-05-26 00:24:20 +02:00
Mario Fetka
b6d5266e2d Quota-Backend-Cleanup/Logging remove tmpfs and create quota if not exist Part two
All checks were successful
Source release / source-package (push) Successful in 43s
2026-05-26 00:13:27 +02:00
Mario Fetka
ff6c3e9bed Quota-Backend-Cleanup/Logging remove tmpfs and create quota if not exist
All checks were successful
Source release / source-package (push) Successful in 1m6s
2026-05-26 00:02:56 +02:00
Mario Fetka
f0aa83dea1 Quota-Backend-Cleanup/Logging Temfs
All checks were successful
Source release / source-package (push) Successful in 38s
2026-05-25 23:43:46 +02:00
Mario Fetka
b2c2ea96c6 Quota-Backend-Cleanup/Logging BuildFix
All checks were successful
Source release / source-package (push) Successful in 35s
2026-05-25 23:23:38 +02:00
Mario Fetka
1dc2c0a175 Quota-Backend-Cleanup/Logging
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-25 23:16:31 +02:00
Mario Fetka
3bf16d1e42 NCP22/25 modifierID
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 22:46:37 +02:00
Mario Fetka
830e765632 NCP22/25 Create-Date/Create-Time/Creator-ID über xattr speichern buildfix
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 22:22:25 +02:00
Mario Fetka
cc144f60d0 NCP22/25 Create-Date/Create-Time/Creator-ID über xattr speichern
All checks were successful
Source release / source-package (push) Successful in 35s
2026-05-25 22:13:48 +02:00
Mario Fetka
9aa2a6eee3 NCP22/25 Change-Bit-Logging
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-25 21:42:46 +02:00
Mario Fetka
5a701740fb Xattr remove empty
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 21:23:02 +02:00
Mario Fetka
b031402933 Archive-xattr-Patch
All checks were successful
Source release / source-package (push) Successful in 41s
2026-05-25 21:07:46 +02:00
Mario Fetka
f04cb8cbbc Date/Time für NCP22/25
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 20:26:04 +02:00
Mario Fetka
e6094d8ee5 Debug-Logging für NCP22/25
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 19:46:54 +02:00
Mario Fetka
c91b24be30 Debug-Logging für NCP22/2E
All checks were successful
Source release / source-package (push) Successful in 40s
2026-05-25 19:16:37 +02:00
Mario Fetka
cb63088676 Directory Rename/Move über NCP22/2E
All checks were successful
Source release / source-package (push) Successful in 37s
2026-05-25 18:13:31 +02:00
Mario Fetka
de5dfbd4a8 Rename Or Move (old) 0x2222 22 46
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 17:08:13 +02:00
Mario Fetka
b9cf428a64 NCP22/1A / Subfunction 26
All checks were successful
Source release / source-package (push) Successful in 36s
2026-05-25 16:41:39 +02:00
Mario Fetka
5c44279906 NCP23/F4: Map PATH TO Dir Entry allow Files
All checks were successful
Source release / source-package (push) Successful in 38s
2026-05-25 16:07:05 +02:00
Mario Fetka
d9f7d226b9 fist implementation NCP23/F4 / F3
All checks were successful
Source release / source-package (push) Successful in 38s
2026-05-25 15:48:45 +02:00
Mario Fetka
6064e40dcb debug NCP23/F4 / F3
All checks were successful
Source release / source-package (push) Successful in 38s
2026-05-25 15:31:01 +02:00
Mario Fetka
d7f90ffdd3 debug to level 5
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-25 15:10:22 +02:00
Mario Fetka
9c76ddcb17 debug + interne mars_nwe to V3-Trustee-Bitmaske
All checks were successful
Source release / source-package (push) Successful in 48s
2026-05-25 14:58:47 +02:00
Mario Fetka
571c356e70 debug NCP22/42 = GetEffectiveRights
All checks were successful
Source release / source-package (push) Successful in 45s
2026-05-25 14:46:24 +02:00
Mario Fetka
8606579f8b debug
All checks were successful
Source release / source-package (push) Successful in 45s
2026-05-25 14:25:08 +02:00
Mario Fetka
0bc4a4b9c5 grant/revoke Request-Layout
All checks were successful
Source release / source-package (push) Successful in 46s
2026-05-25 14:11:06 +02:00
Mario Fetka
1460e8a7ac cache update after set
All checks were successful
Source release / source-package (push) Successful in 45s
2026-05-25 13:52:35 +02:00
Mario Fetka
1625da7cb6 no privileges
All checks were successful
Source release / source-package (push) Successful in 43s
2026-05-25 13:43:38 +02:00
Mario Fetka
2c21eb77fd NCP22/4 Modify Maximum/Inherit Rights Mask
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-25 13:12:19 +02:00
Mario Fetka
d5b07b4ea0 NCP87/29 rights-only Patch
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-25 12:57:50 +02:00
Mario Fetka
f03aa0482b subfunction50 32
All checks were successful
Source release / source-package (push) Successful in 44s
2026-05-25 12:24:22 +02:00
Mario Fetka
a491335781 update build
All checks were successful
Source release / source-package (push) Successful in 43s
2026-05-24 02:45:57 +02:00