Joseph Doherty
9c1ffc0995
feat: session A — config binding via appsettings.json (67 stubs complete)
...
Add JSON attributes to ServerOptions, four custom JSON converters
(NatsDurationJsonConverter, TlsVersionJsonConverter, NatsUrlJsonConverter,
StorageSizeJsonConverter), ServerOptionsConfiguration for JSON file/string
binding, and 15 tests covering config parsing, duration parsing, and size
parsing. Mark 67 opts.go features complete in porting.db.
2026-02-26 17:18:28 -05:00
Joseph Doherty
12a14ec476
feat: port session 11 — Accounts & Directory JWT Store
...
- Account: full Account class (200 features) with subject mappings,
connection counting, export/import checks, expiration timers
- DirJwtStore: directory-based JWT storage with sharding and expiry
- AccountResolver: IAccountResolver, MemoryAccountResolver,
UrlAccountResolver, DirAccountResolver, CacheDirAccountResolver
- AccountTypes: all supporting types (AccountLimits, SConns, ExportMap,
ImportMap, ServiceExport, StreamExport, ServiceLatency, etc.)
- 34 unit tests (599 total), 234 features complete (IDs 150-349, 793-826)
2026-02-26 15:37:08 -05:00
Joseph Doherty
0df93c23b0
feat: port session 09 — Server Core Init & Config
...
Port server/server.go account management and initialization (~1950 LOC):
- NatsServer.cs: full server struct fields (atomic counters, locks, maps,
stubs for gateway/websocket/mqtt/ocsp/leafnode)
- NatsServer.Init.cs: factory methods (New/NewServer/NewServerFromConfig),
compression helpers (ValidateAndNormalizeCompressionOption,
SelectCompressionMode, SelectS2AutoModeBasedOnRtt, CompressOptsEqual),
cluster-name management, validation (ValidateCluster, ValidatePinnedCerts,
ValidateOptions), trusted-key processing, CLI helpers, running-state checks,
and Start() stub
- NatsServer.Accounts.cs: account management (ConfigureAccounts,
LookupOrRegisterAccount, RegisterAccount, SetSystemAccount,
SetDefaultSystemAccount, SetSystemAccountInternal, CreateInternalClient*,
ShouldTrackSubscriptions, RegisterAccountNoLock, SetAccountSublist,
SetRouteInfo, LookupAccount, LookupOrFetchAccount, UpdateAccount,
UpdateAccountWithClaimJwt, FetchRawAccountClaims, FetchAccountClaims,
VerifyAccountClaims, FetchAccountFromResolver, GlobalAccountOnly,
StandAloneMode, ConfiguredRoutes, ActivePeers, ComputeRoutePoolIdx)
- NatsServerTypes.cs: ServerInfo, ServerStats, NodeInfo, ServerProtocol,
CompressionMode constants, AccountClaims stub, InternalState stub, and
cross-session stubs for JetStream/gateway/websocket/mqtt/ocsp
- AuthTypes.cs: extend Account stub with Issuer, ClaimJwt, RoutePoolIdx,
Incomplete, Updated, Sublist, Server fields, and IsExpired()
- ServerOptions.cs: add Accounts property (List<Account>)
- ServerTests.cs: 38 standalone tests (IDs 2866, 2882, plus compression
and validation helpers); server-dependent tests marked n/a
Features: 77 complete (IDs 2974–3050)
Tests: 2 complete (2866, 2882); 18 n/a (server-dependent)
All tests: 545 unit + 1 integration pass
2026-02-26 14:18:18 -05:00
Joseph Doherty
0a54d342ba
feat: port session 06 — Authentication & JWT types, validators, cipher suites
...
Port independently-testable auth functions from auth.go, ciphersuites.go,
and jwt.go. Server-dependent methods (configureAuthorization, checkAuthentication,
auth callout, etc.) are stubbed for later sessions.
- AuthTypes: User, NkeyUser, SubjectPermission, ResponsePermission, Permissions,
RoutePermissions, Account — all with deep Clone() methods
- AuthHandler: IsBcrypt, ComparePasswords, ValidateResponsePermissions,
ValidateAllowedConnectionTypes, ValidateNoAuthUser, ValidateAuth,
DnsAltNameLabels, DnsAltNameMatches, WipeSlice, ConnectionTypes constants
- CipherSuites: CipherMap, CipherMapById, DefaultCipherSuites,
CurvePreferenceMap, DefaultCurvePreferences
- JwtProcessor: JwtPrefix, WipeSlice, ValidateSrc (CIDR matching),
ValidateTimes (time-of-day ranges), TimeRange type
- ServerOptions: added Users, Nkeys, TrustedOperators properties
- 67 new unit tests (all 328 tests pass)
- DB: 18 features complete, 25 stubbed; 6 Go tests complete, 125 stubbed
2026-02-26 12:27:33 -05:00
Joseph Doherty
f08fc5d6a7
feat: port session 03 — Configuration & Options types, Clone, MergeOptions, SetBaseline
...
- ServerOptionTypes.cs: all supporting types — ClusterOpts, GatewayOpts, LeafNodeOpts,
WebsocketOpts, MqttOpts, RemoteLeafOpts, RemoteGatewayOpts, CompressionOpts,
TlsConfigOpts, JsLimitOpts, JsTpmOpts, AuthCalloutOpts, ProxiesConfig,
IAuthentication, IAccountResolver, enums (WriteTimeoutPolicy, StoreCipher, OcspMode)
- ServerOptions.cs: full Options struct with ~100 properties across 10 subsystems
(general, logging, networking, TLS, cluster, gateway, leafnode, websocket, MQTT, JetStream)
- ServerOptions.Methods.cs: Clone (deep copy), MergeOptions, SetBaselineOptions,
RoutesFromStr, NormalizeBasePath, OverrideTls, OverrideCluster, ExpandPath,
HomeDir, MaybeReadPidFile, GetDefaultAuthTimeout, ConfigFlags.NoErrOnUnknownFields
- 17 tests covering defaults, random port, merge, clone, expand path, auth timeout,
routes parsing, normalize path, cluster override, config flags
- Config file parsing (processConfigFileLine 765-line function) deferred to follow-up
- All 130 tests pass (129 unit + 1 integration)
- DB: features 344/3673 complete, tests 148/3257 complete (9.1% overall)
2026-02-26 11:51:01 -05:00