OpenCIFS.Server
0.1.1
See the version list below for details.
dotnet add package OpenCIFS.Server --version 0.1.1
NuGet\Install-Package OpenCIFS.Server -Version 0.1.1
<PackageReference Include="OpenCIFS.Server" Version="0.1.1" />
<PackageVersion Include="OpenCIFS.Server" Version="0.1.1" />
<PackageReference Include="OpenCIFS.Server" />
paket add OpenCIFS.Server --version 0.1.1
#r "nuget: OpenCIFS.Server, 0.1.1"
#:package OpenCIFS.Server@0.1.1
#addin nuget:?package=OpenCIFS.Server&version=0.1.1
#tool nuget:?package=OpenCIFS.Server&version=0.1.1
OpenCIFS.Server
Managed direct-TCP SMB 2.0.2 through bounded SMB 3.0.2 server surface for OpenCIFS.
OpenCIFS 0.1.1 is alpha software. The documented server surface and interop claims are intentionally bounded, and exhaustive compatibility testing across SMB dialects, platforms, and third-party peers has not been performed.
A bounded managed SMB 3.0.2 AES-128-CCM encrypted session slice now exists on the managed path, alongside the bounded non-encrypted SMB 3.0 / SMB 3.0.2 compatibility slice exposed through WithSmb3EncryptionRequired(false).
Scope
- direct-TCP listener and authenticated session handling
- share registration and local filesystem-backed share hosting
- bounded local
IPC$/ named-pipe hosting with the built-insrvsvcshare-enumeration/share-info endpoint, the built-in UTF-8 echo endpoint, plus host-provided named-pipe endpoints - bounded file-I/O, metadata, locking, notify, oplock, lease, and durable reconnect handling, including SMB 3.0.2 non-persistent durable-handle v2 reconnect on the managed path
- typed request callbacks for authenticated session, tree connect, create, query, set, and IOCTL control
- bounded SMB 3.0 / SMB 3.0.2 negotiate, secure-negotiate validation, AES-CMAC signing, and SMB 3.0.2 AES-128-CCM session encryption on the managed path, with
WithSmb3EncryptionRequired(false)exposing the non-encrypted SMB3 compatibility slice
Install
dotnet add package OpenCIFS.Server
This package depends on OpenCIFS.Protocol, OpenCIFS.Security, and OpenCIFS.Transport.
Example
using OpenCIFS.Server;
OpenCifsServerBuilder builder = new OpenCifsServerBuilder()
.WithServerName("demo-server")
.WithBindAddress("0.0.0.0")
.WithBindPort(4450)
.AddAccount(new OpenCifsServerAccount
{
UserName = "alice",
UserDomain = "WORKGROUP",
Password = "Password123!",
})
.AddShare("share", share => share.UseLocalFileSystem("C:\\OpenCifsShare"));
foreach (OpenCifsServerShareInfo shareInfo in builder.GetAvailableShares())
{
Console.WriteLine($"{shareInfo.ShareName} -> {shareInfo.RootPath}");
}
OpenCifsServer serverDefinition = builder.Build();
await using OpenCifsServerApplication server = serverDefinition.BuildApplication();
await server.RunAsync();
OpenCifsServerBuilder.BuildSettings() returns immutable OpenCifsServerSettings, and OpenCifsServerBuilder.Build() returns a configured OpenCifsServer for the primary builder → server → application flow. OpenCifsServerBuilder.GetAvailableShares(), OpenCifsServer.GetAvailableShares(), OpenCifsServerHostBuilder.GetAvailableShares(), OpenCifsServerHost.GetAvailableShares(), and OpenCifsServerApplication.GetAvailableShares() expose immutable server-side share snapshots for local configuration introspection, including the synthetic IPC$ share when bounded named-pipe endpoints are registered. The managed server path now also supports bounded local IPC$/named-pipe hosting with the built-in srvsvc share-enumeration/share-info endpoint through OpenCifsServerBuilder.AddSrvsvcShareEnumerationEndpoint(), the built-in UTF-8 echo endpoint through AddUtf8EchoNamedPipeEndpoint(), plus host-provided named-pipe endpoints through AddNamedPipeEndpoint(...).
Builder/configuration faults on the documented server surface now raise OpenCifsServerConfigurationException, and managed application lifecycle faults now raise OpenCifsServerStateException.
OpenCifsServerApplication now also exposes bounded TryRunAsync, TryStartAsync, and TryStopAsync companions that return OpenCifsServerResult when you want non-throwing managed lifecycle control for bind conflicts, double-start attempts, or disposed-lifecycle misuse.
Use Sample.OpenCifsServer for the full tester-facing sample host. The verified scope currently covers the managed SMB 2.0.2 and SMB 2.1 slices implemented in this repository plus bounded local IPC$/named-pipe hosting with the built-in srvsvc share-enumeration/share-info endpoint, the built-in UTF-8 echo endpoint, the bounded SMB 3.0 / SMB 3.0.2 negotiate, secure-negotiate validation, AES-CMAC signing, SMB 3.0.2 AES-128-CCM encrypted-session slice, and bounded SMB 3.0.2 non-persistent durable-handle v2 reconnect on the managed path. Continuous availability, persistent clustered handles, SMB 3.1.1, SMB1/CIFS, DFS, broader named-pipe semantics, and Kerberos remain backlog.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- OpenCIFS.Protocol (>= 0.1.1)
- OpenCIFS.Security (>= 0.1.1)
- OpenCIFS.Transport (>= 0.1.1)
-
net8.0
- OpenCIFS.Protocol (>= 0.1.1)
- OpenCIFS.Security (>= 0.1.1)
- OpenCIFS.Transport (>= 0.1.1)
- System.IO.Pipelines (>= 10.0.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.2.1-alpha | 34 | 10/3/2026 |
| 0.2.0-alpha | 40 | 10/3/2026 |
| 0.1.1 | 83 | 9/29/2026 |
0.1.1: fixed truncated multi-page directory enumeration (and '.'/'..' are no longer returned), short-read truncation in ReadAllBytesAsync, READ/WRITE frames that exceeded the direct-TCP frame limit, stale responses after cancellation, unsafe concurrent use of one client connection, raw ChannelClosedException on transport loss, OperationCanceledException on connect timeout, and stale or inconsistent server file timestamps; added OpenCifsClientTransportException, ranged ReadAsync, streaming OpenReadAsync and WriteAsync(Stream), Metadata.ExistsAsync, recursive Directories.CreateAsync, share-root paths, and directory-entry IsDirectory plus UTC timestamps. See https://github.com/jchristn/OpenCIFS/blob/main/CHANGELOG.md.