1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-02-20 21:26:53 +00:00

make RPC password use the Keychain as well

This commit is contained in:
Mitchell Livingston 2008-06-13 19:56:09 +00:00
parent df4e0bad12
commit 02a39a0e1c
5 changed files with 44 additions and 27 deletions

View file

@ -222,7 +222,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
NULL, /* reset in prefs */
[fDefaults boolForKey: @"RPCAuthorize"],
[[fDefaults stringForKey: @"RPCUsername"] UTF8String],
[[fDefaults stringForKey: @"RPCPassword"] UTF8String],
"", /* reset in prefs - from Keychain */
[fDefaults boolForKey: @"Proxy"],
[[fDefaults stringForKey: @"ProxyAddress"] UTF8String],
TR_DEFAULT_PROXY_TYPE, /* reset in prefs */

View file

@ -126,8 +126,6 @@
<false/>
<key>RPCAuthorize</key>
<false/>
<key>RPCPassword</key>
<string></string>
<key>RPCPort</key>
<integer>9091</integer>
<key>RPCUsername</key>

View file

@ -9,6 +9,7 @@
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="66"/>
<integer value="1481"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -3026,7 +3027,7 @@ AAABAAAAAQ</bytes>
<string key="NSExtension">NSResponder</string>
</object>
<object class="NSCustomView" id="810116101">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -3538,6 +3539,7 @@ AAABAAAAAQ</bytes>
</object>
</object>
<string key="NSFrameSize">{535, 403}</string>
<reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
<string key="NSExtension">NSResponder</string>
</object>
@ -5415,22 +5417,6 @@ AAABAAAAAQ</bytes>
</object>
<int key="connectionID">1565</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: values.RPCPassword</string>
<reference key="source" ref="894846458"/>
<reference key="destination" ref="356871564"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="894846458"/>
<reference key="NSDestination" ref="356871564"/>
<string key="NSLabel">value: values.RPCPassword</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">values.RPCPassword</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">1566</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: values.RPCAuthorize</string>
@ -5927,6 +5913,14 @@ AAABAAAAAQ</bytes>
</object>
<int key="connectionID">1673</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">fRPCPasswordField</string>
<reference key="source" ref="511492310"/>
<reference key="destination" ref="894846458"/>
</object>
<int key="connectionID">1674</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -8980,7 +8974,7 @@ AAABAAAAAQ</bytes>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">1673</int>
<int key="maxID">1674</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -9185,6 +9179,7 @@ AAABAAAAAQ</bytes>
<string>fQueueSeedField</string>
<string>fRPCAccessTable</string>
<string>fRPCAddRemoveControl</string>
<string>fRPCPasswordField</string>
<string>fRPCPortField</string>
<string>fRatioStopField</string>
<string>fRemoteView</string>
@ -9222,6 +9217,7 @@ AAABAAAAAQ</bytes>
<string>NSSegmentedControl</string>
<string>NSTextField</string>
<string>NSTextField</string>
<string>NSTextField</string>
<string>NSView</string>
<string>NSTextField</string>
<string>NSTextField</string>

View file

@ -60,7 +60,7 @@
IBOutlet NSTextField * fProxyAddressField, * fProxyPasswordField;
IBOutlet NSPopUpButton * fProxyTypePopUp;
IBOutlet NSTextField * fRPCPortField;
IBOutlet NSTextField * fRPCPortField, * fRPCPasswordField;
IBOutlet NSTableView * fRPCAccessTable;
IBOutlet NSSegmentedControl * fRPCAddRemoveControl;
NSMutableArray * fRPCAccessArray;
@ -134,6 +134,7 @@
- (void) setRPCAuthorize: (id) sender;
- (void) setRPCUsername: (id) sender;
- (void) setRPCPassword: (id) sender;
- (void) updateRPCPassword;
- (void) setRPCPort: (id) sender;
- (void) updateRPCAccessList;
- (void) addRemoveRPCIP: (id) sender;

View file

@ -54,6 +54,9 @@
#define PROXY_KEYCHAIN_SERVICE @"Transmission:Proxy"
#define PROXY_KEYCHAIN_NAME @"Proxy"
#define RPC_KEYCHAIN_SERVICE @"Transmission:Remote"
#define RPC_KEYCHAIN_NAME @"Remote"
@interface PrefsController (Private)
- (void) setPrefView: (id) sender;
@ -113,10 +116,11 @@
//set proxy type
[self updateProxyType];
[self updateProxyPassword];
//update rpc access list
[self updateRPCPassword];
fRPCAccessArray = [[fDefaults arrayForKey: @"RPCAccessList"] mutableCopy];
if (!fRPCAccessArray)
fRPCAccessArray = [[NSMutableArray arrayWithObject: [NSDictionary dictionaryWithObjectsAndKeys: @"127.0.0.1", @"IP",
@ -220,6 +224,7 @@
//set rpc port
[fRPCPortField setIntValue: [fDefaults integerForKey: @"RPCPort"]];
[fRPCPasswordField setStringValue: [NSString stringWithUTF8String: tr_sessionGetRPCPassword(fHandle)]];
}
- (void) setUpdater: (SUUpdater *) updater
@ -763,12 +768,12 @@
tr_sessionSetProxyPassword(fHandle, [password UTF8String]);
}
//user will only be prompted if Keychain is locked and Transmission has changed since last launched
- (void) updateProxyPassword
{
NSString * password;
EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: PROXY_KEYCHAIN_SERVICE
withUsername: PROXY_KEYCHAIN_NAME];
NSString * password;
if (!(password = [keychainItem password]))
password = @"";
@ -794,7 +799,24 @@
- (void) setRPCPassword: (id) sender
{
tr_sessionSetRPCPassword(fHandle, [[fDefaults stringForKey: @"RPCPassword"] UTF8String]);
NSString * password = [[sender stringValue] retain];
[self setKeychainPassword: password forService: RPC_KEYCHAIN_SERVICE username: RPC_KEYCHAIN_NAME];
tr_sessionSetRPCPassword(fHandle, [password UTF8String]);
}
- (void) updateRPCPassword
{
EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: RPC_KEYCHAIN_SERVICE
withUsername: RPC_KEYCHAIN_NAME];
NSString * password;
if (!(password = [keychainItem password]))
password = @"";
tr_sessionSetRPCPassword(fHandle, [password UTF8String]);
[fRPCPasswordField setStringValue: password];
}
- (void) setRPCPort: (id) sender
@ -1123,7 +1145,7 @@
- (void) setKeychainPassword: (NSString *) password forService: (NSString *) service username: (NSString *) username
{
BOOL shouldAdd = ![password isEqualToString: @""];
BOOL shouldAdd = password && ![password isEqualToString: @""];
EMGenericKeychainItem * keychainItem = [[EMKeychainProxy sharedProxy] genericKeychainItemForService: service withUsername: username];
if (keychainItem)