Skip to content

Commit d432643

Browse files
committed
Add support for Windows/Domain authentication via DBSETLDOMAIN
1 parent a35a43c commit d432643

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

Sources/SQLClientSwift/SQLClient.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ public struct SQLClientConnectionOptions: Sendable {
8585
public var username: String
8686
public var password: String
8787
public var database: String?
88+
public var domain: String?
8889
public var port: UInt16?
8990
public var encryption: SQLClientEncryption = .request
9091
public var useNTLMv2: Bool = true
@@ -94,11 +95,12 @@ public struct SQLClientConnectionOptions: Sendable {
9495
public var queryTimeout: Int = 0
9596
public var loginTimeout: Int = 0
9697

97-
public init(server: String, username: String, password: String, database: String? = nil) {
98+
public init(server: String, username: String, password: String, database: String? = nil, domain: String? = nil) {
9899
self.server = server
99100
self.username = username
100101
self.password = password
101102
self.database = database
103+
self.domain = domain
102104
}
103105
}
104106

@@ -189,8 +191,8 @@ public actor SQLClient {
189191
private var connection: OpaquePointer?
190192
private var connected = false
191193

192-
public func connect(server: String, username: String, password: String, database: String? = nil) async throws {
193-
try await connect(options: SQLClientConnectionOptions(server: server, username: username, password: password, database: database))
194+
public func connect(server: String, username: String, password: String, database: String? = nil, domain: String? = nil) async throws {
195+
try await connect(options: SQLClientConnectionOptions(server: server, username: username, password: password, database: database, domain: domain))
194196
}
195197

196198
public func connect(options: SQLClientConnectionOptions) async throws {
@@ -326,6 +328,8 @@ public actor SQLClient {
326328
// Ensure we get UTF-8 from the server for N-types
327329
dbsetlname(lgn, "UTF-8", 10) // DBSETCHARSET
328330

331+
if let domain = options.domain { dbsetlname(lgn, domain, 15) } // DBSETLDOMAIN
332+
329333
if let port = options.port { dbsetlshort(lgn, Int32(port), 1006) } // DBSETPORT
330334
if options.encryption != .request { dbsetlname(lgn, options.encryption.rawValue, 1005) } // DBSETENCRYPTION
331335
dbsetlbool(lgn, options.useNTLMv2 ? 1 : 0, 1002) // DBSETNTLMV2

0 commit comments

Comments
 (0)