Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions OpenCloudSDK/Bookmark/OCBookmark.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ extern OCBookmarkUserInfoKey OCBookmarkUserInfoKeyStatusInfo; //!< .userInfo ke
extern OCBookmarkUserInfoKey OCBookmarkUserInfoKeyAllowHTTPConnection; //!< .userInfo key with a NSDate value. To be set to the date that the user was informed and allowed the usage of HTTP. To be removed otherwise.
extern OCBookmarkUserInfoKey OCBookmarkUserInfoKeyBookmarkCreation; //!< .userInfo key with a NSDictionary holding information on the creation of the bookmark.
extern OCBookmarkUserInfoKey OCBookmarkUserInfoKeyPreferredUsername; //!< .userInfo key with an NSString holding the preferred_username from the OIDC id_token JWT, for use as login_hint on re-auth.
extern OCBookmarkUserInfoKey OCBookmarkUserInfoKeyCustomHTTPHeaderName; //!< .userInfo key with an NSString holding the name of a custom HTTP header to attach to every request for this account.
extern OCBookmarkUserInfoKey OCBookmarkUserInfoKeyCustomHTTPHeaderValue; //!< .userInfo key with an NSString holding the value of the custom HTTP header to attach to every request for this account.

extern OCBookmarkCapability OCBookmarkCapabilityDrives; //!< This bookmark is drive-based.
extern OCBookmarkCapability OCBookmarkCapabilityFavorites; //!< This bookmark supports favorites.
Expand Down
2 changes: 2 additions & 0 deletions OpenCloudSDK/Bookmark/OCBookmark.m
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,8 @@ + (OCIPCNotificationName)bookmarkAuthUpdateNotificationName
OCBookmarkUserInfoKey OCBookmarkUserInfoKeyAllowHTTPConnection = @"OCAllowHTTPConnection";
OCBookmarkUserInfoKey OCBookmarkUserInfoKeyBookmarkCreation = @"bookmark-creation";
OCBookmarkUserInfoKey OCBookmarkUserInfoKeyPreferredUsername = @"preferred-username";
OCBookmarkUserInfoKey OCBookmarkUserInfoKeyCustomHTTPHeaderName = @"custom-http-header-name";
OCBookmarkUserInfoKey OCBookmarkUserInfoKeyCustomHTTPHeaderValue = @"custom-http-header-value";

OCBookmarkCapability OCBookmarkCapabilityDrives = @"drives";
OCBookmarkCapability OCBookmarkCapabilityFavorites = @"favorites";
Expand Down
10 changes: 10 additions & 0 deletions OpenCloudSDK/Connection/OCConnection.m
Original file line number Diff line number Diff line change
Expand Up @@ -715,6 +715,16 @@ - (OCHTTPRequest *)pipeline:(OCHTTPPipeline *)pipeline prepareRequestForScheduli
[request addHeaderFields:_staticHeaderFields];
}

// Per-bookmark custom HTTP header (e.g. for reverse-proxy auth gating). See discussion opencloud-eu#2557.
NSString *customHeaderName = (NSString *)self.bookmark.userInfo[OCBookmarkUserInfoKeyCustomHTTPHeaderName];
NSString *customHeaderValue = (NSString *)self.bookmark.userInfo[OCBookmarkUserInfoKeyCustomHTTPHeaderValue];

if ([customHeaderName isKindOfClass:NSString.class] && (customHeaderName.length > 0) &&
[customHeaderValue isKindOfClass:NSString.class] && (customHeaderValue.length > 0))
{
[request setValue:customHeaderValue forHeaderField:customHeaderName];
}

return (request);
}

Expand Down
Loading