mirror of
https://github.com/swisspol/GCDWebServer.git
synced 2024-10-07 08:32:16 +08:00
Cleaned up authentication options
This commit is contained in:
parent
8619799e62
commit
4685fae29c
@ -46,8 +46,10 @@ extern NSString* const GCDWebServerOption_Port; // NSNumber / NSUInteger (defau
|
|||||||
extern NSString* const GCDWebServerOption_BonjourName; // NSString (default is empty string i.e. use computer name)
|
extern NSString* const GCDWebServerOption_BonjourName; // NSString (default is empty string i.e. use computer name)
|
||||||
extern NSString* const GCDWebServerOption_MaxPendingConnections; // NSNumber / NSUInteger (default is 16)
|
extern NSString* const GCDWebServerOption_MaxPendingConnections; // NSNumber / NSUInteger (default is 16)
|
||||||
extern NSString* const GCDWebServerOption_ServerName; // NSString (default is server class name)
|
extern NSString* const GCDWebServerOption_ServerName; // NSString (default is server class name)
|
||||||
|
extern NSString* const GCDWebServerOption_AuthenticationMethod; // One of "GCDWebServerAuthenticationMethod_..." (default is nil i.e. no authentication)
|
||||||
extern NSString* const GCDWebServerOption_AuthenticationRealm; // NSString (default is server name)
|
extern NSString* const GCDWebServerOption_AuthenticationRealm; // NSString (default is server name)
|
||||||
extern NSString* const GCDWebServerOption_BasicAuthenticationAccount; // NSString in the form "user:password" (default is nil i.e. basic authentication disabled)
|
extern NSString* const GCDWebServerOption_AuthenticationUser; // NSString
|
||||||
|
extern NSString* const GCDWebServerOption_AuthenticationPassword; // NSString
|
||||||
extern NSString* const GCDWebServerOption_ConnectionClass; // Subclass of GCDWebServerConnection (default is GCDWebServerConnection class)
|
extern NSString* const GCDWebServerOption_ConnectionClass; // Subclass of GCDWebServerConnection (default is GCDWebServerConnection class)
|
||||||
extern NSString* const GCDWebServerOption_AutomaticallyMapHEADToGET; // NSNumber / BOOL (default is YES)
|
extern NSString* const GCDWebServerOption_AutomaticallyMapHEADToGET; // NSNumber / BOOL (default is YES)
|
||||||
extern NSString* const GCDWebServerOption_ConnectedStateCoalescingInterval; // NSNumber / double (default is 1.0 seconds - set to <=0.0 to disable coaslescing of -webServerDidConnect: / -webServerDidDisconnect:)
|
extern NSString* const GCDWebServerOption_ConnectedStateCoalescingInterval; // NSNumber / double (default is 1.0 seconds - set to <=0.0 to disable coaslescing of -webServerDidConnect: / -webServerDidDisconnect:)
|
||||||
@ -55,6 +57,8 @@ extern NSString* const GCDWebServerOption_ConnectedStateCoalescingInterval; //
|
|||||||
extern NSString* const GCDWebServerOption_AutomaticallySuspendInBackground; // NSNumber / BOOL (default is YES)
|
extern NSString* const GCDWebServerOption_AutomaticallySuspendInBackground; // NSNumber / BOOL (default is YES)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern NSString* const GCDWebServerAuthenticationMethod_Basic;
|
||||||
|
|
||||||
@class GCDWebServer;
|
@class GCDWebServer;
|
||||||
|
|
||||||
// These methods are always called on main thread
|
// These methods are always called on main thread
|
||||||
|
@ -83,8 +83,10 @@ NSString* const GCDWebServerOption_Port = @"Port";
|
|||||||
NSString* const GCDWebServerOption_BonjourName = @"BonjourName";
|
NSString* const GCDWebServerOption_BonjourName = @"BonjourName";
|
||||||
NSString* const GCDWebServerOption_MaxPendingConnections = @"MaxPendingConnections";
|
NSString* const GCDWebServerOption_MaxPendingConnections = @"MaxPendingConnections";
|
||||||
NSString* const GCDWebServerOption_ServerName = @"ServerName";
|
NSString* const GCDWebServerOption_ServerName = @"ServerName";
|
||||||
|
NSString* const GCDWebServerOption_AuthenticationMethod = @"AuthenticationMethod";
|
||||||
NSString* const GCDWebServerOption_AuthenticationRealm = @"AuthenticationRealm";
|
NSString* const GCDWebServerOption_AuthenticationRealm = @"AuthenticationRealm";
|
||||||
NSString* const GCDWebServerOption_BasicAuthenticationAccount = @"BasicAuthenticationAccount";
|
NSString* const GCDWebServerOption_AuthenticationUser = @"AuthenticationUser";
|
||||||
|
NSString* const GCDWebServerOption_AuthenticationPassword = @"AuthenticationPassword";
|
||||||
NSString* const GCDWebServerOption_ConnectionClass = @"ConnectionClass";
|
NSString* const GCDWebServerOption_ConnectionClass = @"ConnectionClass";
|
||||||
NSString* const GCDWebServerOption_AutomaticallyMapHEADToGET = @"AutomaticallyMapHEADToGET";
|
NSString* const GCDWebServerOption_AutomaticallyMapHEADToGET = @"AutomaticallyMapHEADToGET";
|
||||||
NSString* const GCDWebServerOption_ConnectedStateCoalescingInterval = @"ConnectedStateCoalescingInterval";
|
NSString* const GCDWebServerOption_ConnectedStateCoalescingInterval = @"ConnectedStateCoalescingInterval";
|
||||||
@ -92,6 +94,8 @@ NSString* const GCDWebServerOption_ConnectedStateCoalescingInterval = @"Connecte
|
|||||||
NSString* const GCDWebServerOption_AutomaticallySuspendInBackground = @"AutomaticallySuspendInBackground";
|
NSString* const GCDWebServerOption_AutomaticallySuspendInBackground = @"AutomaticallySuspendInBackground";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
NSString* const GCDWebServerAuthenticationMethod_Basic = @"Basic";
|
||||||
|
|
||||||
#ifndef __GCDWEBSERVER_LOGGING_HEADER__
|
#ifndef __GCDWEBSERVER_LOGGING_HEADER__
|
||||||
#ifdef NDEBUG
|
#ifdef NDEBUG
|
||||||
GCDWebServerLogLevel GCDLogLevel = kGCDWebServerLogLevel_Info;
|
GCDWebServerLogLevel GCDLogLevel = kGCDWebServerLogLevel_Info;
|
||||||
@ -373,9 +377,13 @@ static inline NSString* _EncodeBase64(NSString* string) {
|
|||||||
if (listen(listeningSocket, (int)maxPendingConnections) == 0) {
|
if (listen(listeningSocket, (int)maxPendingConnections) == 0) {
|
||||||
LOG_DEBUG(@"Did open listening socket %i", listeningSocket);
|
LOG_DEBUG(@"Did open listening socket %i", listeningSocket);
|
||||||
_serverName = [_GetOption(_options, GCDWebServerOption_ServerName, NSStringFromClass([self class])) copy];
|
_serverName = [_GetOption(_options, GCDWebServerOption_ServerName, NSStringFromClass([self class])) copy];
|
||||||
_authenticationRealm = [_GetOption(_options, GCDWebServerOption_AuthenticationRealm, _serverName) copy];
|
NSString* authenticationMethod = _GetOption(_options, GCDWebServerOption_AuthenticationMethod, nil);
|
||||||
NSString* basicAuthenticationAccount = _GetOption(_options, GCDWebServerOption_BasicAuthenticationAccount, nil);
|
if ([authenticationMethod isEqualToString:GCDWebServerAuthenticationMethod_Basic]) {
|
||||||
_authenticationBasicAccount = basicAuthenticationAccount.length ? _EncodeBase64(basicAuthenticationAccount) : nil;
|
_authenticationRealm = [_GetOption(_options, GCDWebServerOption_AuthenticationRealm, _serverName) copy];
|
||||||
|
NSString* user = _GetOption(_options, GCDWebServerOption_AuthenticationUser, @"");
|
||||||
|
NSString* password = _GetOption(_options, GCDWebServerOption_AuthenticationPassword, @"");
|
||||||
|
_authenticationBasicAccount = ARC_RETAIN(_EncodeBase64([NSString stringWithFormat:@"%@:%@", user, password]));
|
||||||
|
}
|
||||||
_connectionClass = _GetOption(_options, GCDWebServerOption_ConnectionClass, [GCDWebServerConnection class]);
|
_connectionClass = _GetOption(_options, GCDWebServerOption_ConnectionClass, [GCDWebServerConnection class]);
|
||||||
_mapHEADToGET = [_GetOption(_options, GCDWebServerOption_AutomaticallyMapHEADToGET, @YES) boolValue];
|
_mapHEADToGET = [_GetOption(_options, GCDWebServerOption_AutomaticallyMapHEADToGET, @YES) boolValue];
|
||||||
_disconnectDelay = [_GetOption(_options, GCDWebServerOption_ConnectedStateCoalescingInterval, @1.0) doubleValue];
|
_disconnectDelay = [_GetOption(_options, GCDWebServerOption_ConnectedStateCoalescingInterval, @1.0) doubleValue];
|
||||||
|
20
Mac/main.m
20
Mac/main.m
@ -131,10 +131,11 @@ int main(int argc, const char* argv[]) {
|
|||||||
NSString* rootDirectory = NSHomeDirectory();
|
NSString* rootDirectory = NSHomeDirectory();
|
||||||
NSString* testDirectory = nil;
|
NSString* testDirectory = nil;
|
||||||
NSString* authenticationRealm = nil;
|
NSString* authenticationRealm = nil;
|
||||||
NSString* authenticationAccount = nil;
|
NSString* authenticationUser = nil;
|
||||||
|
NSString* authenticationPassword = nil;
|
||||||
|
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
fprintf(stdout, "Usage: %s [-mode webServer | htmlPage | htmlForm | webDAV | webUploader | streamingResponse] [-record] [-root directory] [-tests directory] [-authenticationRealm realm] [-authenticationAccount user:password]\n\n", basename((char*)argv[0]));
|
fprintf(stdout, "Usage: %s [-mode webServer | htmlPage | htmlForm | webDAV | webUploader | streamingResponse] [-record] [-root directory] [-tests directory] [-authenticationRealm realm] [-authenticationUser user] [-authenticationPassword password]\n\n", basename((char*)argv[0]));
|
||||||
} else {
|
} else {
|
||||||
for (int i = 1; i < argc; ++i) {
|
for (int i = 1; i < argc; ++i) {
|
||||||
if (argv[i][0] != '-') {
|
if (argv[i][0] != '-') {
|
||||||
@ -166,9 +167,12 @@ int main(int argc, const char* argv[]) {
|
|||||||
} else if (!strcmp(argv[i], "-authenticationRealm") && (i + 1 < argc)) {
|
} else if (!strcmp(argv[i], "-authenticationRealm") && (i + 1 < argc)) {
|
||||||
++i;
|
++i;
|
||||||
authenticationRealm = [NSString stringWithUTF8String:argv[i]];
|
authenticationRealm = [NSString stringWithUTF8String:argv[i]];
|
||||||
} else if (!strcmp(argv[i], "-authenticationAccount") && (i + 1 < argc)) {
|
} else if (!strcmp(argv[i], "-authenticationUser") && (i + 1 < argc)) {
|
||||||
++i;
|
++i;
|
||||||
authenticationAccount = [NSString stringWithUTF8String:argv[i]];
|
authenticationUser = [NSString stringWithUTF8String:argv[i]];
|
||||||
|
} else if (!strcmp(argv[i], "-authenticationPassword") && (i + 1 < argc)) {
|
||||||
|
++i;
|
||||||
|
authenticationPassword = [NSString stringWithUTF8String:argv[i]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -292,8 +296,12 @@ int main(int argc, const char* argv[]) {
|
|||||||
NSMutableDictionary* options = [NSMutableDictionary dictionary];
|
NSMutableDictionary* options = [NSMutableDictionary dictionary];
|
||||||
[options setObject:@8080 forKey:GCDWebServerOption_Port];
|
[options setObject:@8080 forKey:GCDWebServerOption_Port];
|
||||||
[options setObject:@"" forKey:GCDWebServerOption_BonjourName];
|
[options setObject:@"" forKey:GCDWebServerOption_BonjourName];
|
||||||
[options setValue:authenticationRealm forKey:GCDWebServerOption_AuthenticationRealm];
|
if (authenticationUser && authenticationPassword) {
|
||||||
[options setValue:authenticationAccount forKey:GCDWebServerOption_BasicAuthenticationAccount];
|
[options setObject:GCDWebServerAuthenticationMethod_Basic forKey:GCDWebServerOption_AuthenticationMethod];
|
||||||
|
[options setValue:authenticationRealm forKey:GCDWebServerOption_AuthenticationRealm];
|
||||||
|
[options setObject:authenticationUser forKey:GCDWebServerOption_AuthenticationUser];
|
||||||
|
[options setObject:authenticationPassword forKey:GCDWebServerOption_AuthenticationPassword];
|
||||||
|
}
|
||||||
if ([webServer runWithOptions:options]) {
|
if ([webServer runWithOptions:options]) {
|
||||||
result = 0;
|
result = 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user