network preferences implemented

This commit is contained in:
anthony 2022-04-12 09:52:49 +01:00
parent 5bad583fbb
commit a8b0ad8190
3 changed files with 240 additions and 0 deletions

View File

@ -38,6 +38,14 @@ typedef NS_ENUM(NSInteger, FontType) {
FontTypeFantasy
};
typedef NS_ENUM(NSInteger, ProxyType) {
ProxyTypeDirect = 0,
ProxyTypeBasicAuth,
ProxyTypeNoAuth,
ProxyTypeAuth,
ProxyTypeSystem
};
// Certain preferences will notify that they have been updated using this key.
#define PreferencesUpdatedNotificationName @"PreferencesUpdatedNotification"
typedef NS_ENUM(NSInteger, PreferenceType) {
@ -135,5 +143,33 @@ typedef NS_ENUM(NSInteger, PreferenceType) {
-(NSUInteger)cacheExpiryDays;
-(void)setCacheExpiryDays: (NSUInteger)value;
-(ProxyType)proxyType;
-(void)setProxyType: (ProxyType)value;
-(NSString*)proxyHost;
-(void)setProxyHost: (NSString*)value;
-(NSUInteger)proxyPort;
-(void)setProxyPort: (NSUInteger)value;
-(NSString*)proxyUsername;
-(void)setProxyUsername: (NSString*)value;
-(NSString*)proxyPassword;
-(void)setProxyPassword: (NSString*)value;
-(NSString*)proxyOmit;
-(void)setProxyOmit: (NSString*)value;
-(NSUInteger)maximumFetchers;
-(void)setMaximumFetchers: (NSUInteger)value;
-(NSUInteger)fetchesPerHost;
-(void)setFetchesPerHost: (NSUInteger)value;
-(NSUInteger)cachedConnections;
-(void)setCachedConnections: (NSUInteger)value;
+(Preferences*)defaultPreferences;
@end

View File

@ -376,6 +376,139 @@
[self saveNetsurfPrefsFile];
}
-(ProxyType)proxyType {
if (!nsoption_bool(http_proxy))
return ProxyTypeDirect;
int proxyType = nsoption_int(http_proxy_auth);
BOOL authenticated = (nsoption_charp(http_proxy_auth_user) != NULL)
&& (nsoption_charp(http_proxy_auth_pass) != NULL);
BOOL hostProvided = nsoption_charp(http_proxy_host) != NULL;
if (!hostProvided)
return ProxyTypeSystem;
// If the required fields of a selected proxy type arne't set; Default to none.
switch (proxyType) {
case OPTION_HTTP_PROXY_AUTH_NONE:
return ProxyTypeNoAuth;
case OPTION_HTTP_PROXY_AUTH_BASIC:
if (authenticated)
return ProxyTypeBasicAuth;
else
return ProxyTypeDirect;
case OPTION_HTTP_PROXY_AUTH_NTLM:
if (authenticated)
return ProxyTypeAuth;
else
return ProxyTypeDirect;
default:
return ProxyTypeDirect;
}
}
-(void)setProxyType: (ProxyType)value {
switch (value) {
case ProxyTypeDirect:
nsoption_set_bool(http_proxy, false);
break;
case ProxyTypeNoAuth:
nsoption_set_bool(http_proxy, true);
nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_NONE);
break;
case ProxyTypeBasicAuth:
nsoption_set_bool(http_proxy, true);
nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_BASIC);
break;
case ProxyTypeAuth:
nsoption_set_bool(http_proxy, true);
nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_NTLM);
break;
case ProxyTypeSystem:
nsoption_set_bool(http_proxy, true);
nsoption_set_charp(http_proxy_host, NULL);
nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_NONE);
break;
}
[self saveNetsurfPrefsFile];
}
-(NSString*)proxyHost {
char *value = nsoption_charp(http_proxy_host);
if (value == NULL)
return nil;
return [NSString stringWithCString: value];
}
-(void)setProxyHost: (NSString*)value {
nsoption_set_charp(http_proxy_host, strdup([value cString]));
[self saveNetsurfPrefsFile];
}
-(NSUInteger)proxyPort {
return (NSUInteger)nsoption_int(http_proxy_port);
}
-(void)setProxyPort: (NSUInteger)value {
nsoption_set_int(http_proxy_port, (int)value);
[self saveNetsurfPrefsFile];
}
-(NSString*)proxyUsername {
char *value = nsoption_charp(http_proxy_auth_user);
if (value == NULL)
return nil;
return [NSString stringWithCString: value];
}
-(void)setProxyUsername: (NSString*)value {
nsoption_set_charp(http_proxy_auth_user, strdup([value cString]));
[self saveNetsurfPrefsFile];
}
-(NSString*)proxyPassword {
char *value = nsoption_charp(http_proxy_auth_pass);
if (value == NULL)
return nil;
return [NSString stringWithCString: value];
}
-(void)setProxyPassword: (NSString*)value {
nsoption_set_charp(http_proxy_auth_pass, strdup([value cString]));
[self saveNetsurfPrefsFile];
}
-(NSString*)proxyOmit {
char *value = nsoption_charp(http_proxy_noproxy);
if (value == NULL)
return nil;
return [NSString stringWithCString: value];
}
-(void)setProxyOmit: (NSString*)value {
nsoption_set_charp(http_proxy_noproxy, strdup([value cString]));
[self saveNetsurfPrefsFile];
}
-(NSUInteger)maximumFetchers {
return (NSUInteger)nsoption_int(max_fetchers);
}
-(void)setMaximumFetchers: (NSUInteger)value {
nsoption_set_int(max_fetchers, (int)value);
[self saveNetsurfPrefsFile];
}
-(NSUInteger)fetchesPerHost {
return (NSUInteger)nsoption_int(max_fetchers_per_host);
}
-(void)setFetchesPerHost: (NSUInteger)value {
nsoption_set_int(max_fetchers_per_host, (int)value);
[self saveNetsurfPrefsFile];
}
-(NSUInteger)cachedConnections {
return (NSUInteger)nsoption_int(max_cached_fetch_handles);
}
-(void)setCachedConnections: (NSUInteger)value {
nsoption_set_int(max_cached_fetch_handles, (int)value);
[self saveNetsurfPrefsFile];
}
+(Preferences*)defaultPreferences {
static Preferences *prefs;
if (prefs == nil) {

View File

@ -14,6 +14,8 @@
-(void)configureAppearanceTab;
-(void)configureContentTab;
-(void)configurePrivacyTab;
-(void)configureNetworkTab;
-(void)configureProxyFieldsEnabled: (ProxyType)proxyType;
@end
@interface DownloadLocation: NSObject {
NSString *name;
@ -63,6 +65,7 @@
[self configureAppearanceTab];
[self configureContentTab];
[self configurePrivacyTab];
[self configureNetworkTab];
}
// MARK: - MAIN TAB
@ -422,40 +425,108 @@
(NSUInteger)[[sender stringValue] integerValue]];
}
// MARK: - NETWORK TAB
-(void)configureNetworkTab {
Preferences *prefs = [Preferences defaultPreferences];
[proxyTypeButton selectItemAtIndex: (NSUInteger)[prefs proxyType]];
[proxyHostField setStringValue: [prefs proxyHost]];
[proxyUsernameField setStringValue: [prefs proxyUsername]];
[proxyPortField setIntegerValue: [prefs proxyPort]];
[proxyPasswordField setStringValue: [prefs proxyPassword]];
[proxyOmitField setStringValue: [prefs proxyOmit]];
[maxFetchersField setIntegerValue: [prefs maximumFetchers]];
[fetchesPerHostField setIntegerValue: [prefs fetchesPerHost]];
[cachedConnectionsField setIntegerValue: [prefs cachedConnections]];
[self configureProxyFieldsEnabled: [prefs proxyType]];
}
static void disable(NSControl *field) {
[field setStringValue: nil];
[field setEnabled: NO];
}
static void enable(NSControl *field) {
[field setEnabled: YES];
}
-(void)configureProxyFieldsEnabled: (ProxyType)proxyType {
enable(proxyHostField);
enable(proxyPortField);
enable(proxyUsernameField);
enable(proxyPasswordField);
enable(proxyOmitField);
switch (proxyType) {
case ProxyTypeDirect:
disable(proxyHostField);
disable(proxyPortField);
disable(proxyUsernameField);
disable(proxyPasswordField);
disable(proxyOmitField);
break;
case ProxyTypeBasicAuth:
break;
case ProxyTypeNoAuth:
disable(proxyUsernameField);
disable(proxyPasswordField);
break;
case ProxyTypeAuth:
break;
case ProxyTypeSystem:
disable(proxyHostField);
disable(proxyPortField);
disable(proxyUsernameField);
disable(proxyPasswordField);
[proxyHostField setStringValue: @"localhost"];
break;
default:
break;
}
}
-(void)didPickProxyType: (id)sender {
NSLog(@"didPickProxyType");
NSUInteger selected = [sender indexOfItem: [sender selectedItem]];
[[Preferences defaultPreferences] setProxyType: (ProxyType)selected];
[self configureProxyFieldsEnabled: (ProxyType)selected];
}
-(void)didChangeProxyHost: (id)sender {
NSLog(@"didChangeProxyHost");
[[Preferences defaultPreferences] setProxyHost: [sender stringValue]];
}
-(void)didChangeProxyPort: (id)sender {
NSLog(@"didChangeProxyPort");
[[Preferences defaultPreferences] setProxyPort: [[sender stringValue] integerValue]];
}
-(void)didChangeProxyUsername: (id)sender {
NSLog(@"didChangeProxyUsername");
[[Preferences defaultPreferences] setProxyUsername: [sender stringValue]];
}
-(void)didChangeProxyPassword: (id)sender {
NSLog(@"didChangeProxyPassword");
[[Preferences defaultPreferences] setProxyPassword: [sender stringValue]];
}
-(void)didChangeProxyOmit: (id)sender {
NSLog(@"didChangeProxyOmit");
[[Preferences defaultPreferences] setProxyOmit: [sender stringValue]];
}
-(void)didChangeMaxFetchers: (id)sender {
NSLog(@"didChangeMaxFetchers");
[[Preferences defaultPreferences] setMaximumFetchers: [[sender stringValue] integerValue]];
}
-(void)didChangeFetchesPerHost: (id)sender {
NSLog(@"didChangeFetchesPerHost");
[[Preferences defaultPreferences] setFetchesPerHost: [[sender stringValue] integerValue]];
}
-(void)didChangeCachedConnections: (id)sender {
NSLog(@"didChangeCachedConnections");
[[Preferences defaultPreferences] setCachedConnections: [[sender stringValue] integerValue]];
}