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:
parent
df4e0bad12
commit
02a39a0e1c
5 changed files with 44 additions and 27 deletions
|
@ -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 */
|
||||
|
|
|
@ -126,8 +126,6 @@
|
|||
<false/>
|
||||
<key>RPCAuthorize</key>
|
||||
<false/>
|
||||
<key>RPCPassword</key>
|
||||
<string></string>
|
||||
<key>RPCPort</key>
|
||||
<integer>9091</integer>
|
||||
<key>RPCUsername</key>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue