Proxy Support for Sonarr #732

Switch to use Port #0 which just uses the next free port
Non Functional - Code Cleanup
Tabs -> Spaces,
Opps Deleted too much
Refactoring & Code Cleanup & Move Config to DB
remove unneeded line
Clean Up Spaces
Code Review Points on the UI
FIx extra space
Clean Up unrequired changes
Add a HealthCheck.
Extra Check in ProxyCheck. Correctly deal with Socks Authentication
Remove SubModule
Add in Nuget + Tweak ProxyCheck
Code Review Points
Missed Review Point
Add Subnet Filtering, Add ProxyBypass for local addresses. UI updated for property changes.
Fix typo, and copy&paste error
Tweak URL to hit
This commit is contained in:
Lloyd Sparkes
2016-02-02 18:42:22 +00:00
parent 7284ef50eb
commit bfe134ee54
17 changed files with 429 additions and 5 deletions

View File

@@ -11,6 +11,7 @@ var view = Marionette.ItemView.extend({
events : {
'change .x-auth' : '_setAuthOptionsVisibility',
'change .x-proxy' : '_setProxyOptionsVisibility',
'change .x-ssl' : '_setSslOptionsVisibility',
'click .x-reset-api-key' : '_resetApiKey',
'change .x-update-mechanism' : '_setScriptGroupVisibility'
@@ -25,7 +26,9 @@ var view = Marionette.ItemView.extend({
copyApiKey : '.x-copy-api-key',
apiKeyInput : '.x-api-key',
updateMechanism : '.x-update-mechanism',
scriptGroup : '.x-script-group'
scriptGroup : '.x-script-group',
proxyToggle : '.x-proxy',
proxyOptions : '.x-proxy-settings'
},
initialize : function() {
@@ -37,6 +40,10 @@ var view = Marionette.ItemView.extend({
this.ui.authOptions.hide();
}
if (!this.ui.proxyToggle.prop('checked')) {
this.ui.proxyOptions.hide();
}
if (!this.ui.sslToggle.prop('checked')) {
this.ui.sslOptions.hide();
}
@@ -70,6 +77,15 @@ var view = Marionette.ItemView.extend({
}
},
_setProxyOptionsVisibility : function() {
if (this.ui.proxyToggle.prop('checked')) {
this.ui.proxyOptions.slideDown();
}
else {
this.ui.proxyOptions.slideUp();
}
},
_setSslOptionsVisibility : function() {
var showSslOptions = this.ui.sslToggle.prop('checked');

View File

@@ -162,6 +162,114 @@
</div>
</div>
</fieldset>
<fieldset>
<legend>Proxy Settings</legend>
<div class="form-group">
<label class="col-sm-3 control-label">Use Proxy</label>
<div class="col-sm-8">
<div class="input-group">
<label class="checkbox toggle well">
<input type="checkbox" name="proxyEnabled" class="form-control x-proxy"/>
<p>
<span>Yes</span>
<span>No</span>
</p>
<div class="btn btn-primary slide-button"/>
</label>
</div>
</div>
</div>
<div class="x-proxy-settings">
<div class="form-group">
<label class="col-sm-3 control-label">Proxy Type</label>
<div class="col-sm-4">
<select name="proxyType" class="form-control">
<option value="http" selected="selected">HTTP(S)</option>
<option value="socks4">Socks4</option>
<option value="socks5">Socks5 (This option supports Tor)</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Hostname</label>
<div class="col-sm-4">
<input type="text" placeholder="localhost" name="proxyHostname" class="form-control"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Port</label>
<div class="col-sm-4">
<input type="number" placeholder="8080" name="proxyPort" class="form-control"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Username</label>
<div class="col-sm-1 col-sm-push-4 help-inline">
<i class="icon-sonarr-form-info" title="You only need to enter a username and password if one is required. Leave them blank otherwise."/>
</div>
<div class="col-sm-4 col-sm-pull-1">
<input type="text" name="proxyUsername" class="form-control"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Password</label>
<div class="col-sm-1 col-sm-push-4 help-inline">
<i class="icon-sonarr-form-info" title="You only need to enter a username and password if one is required. Leave them blank otherwise."/>
</div>
<div class="col-sm-4 col-sm-pull-1">
<input type="password" name="proxyPassword" class="form-control"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Addresses for the proxy to ignore</label>
<div class="col-sm-1 col-sm-push-4 help-inline">
<i class="icon-sonarr-form-info" title="Use ';' as a separator"/>
</div>
<div class="col-sm-4 col-sm-pull-1">
<input type="text" name="proxySubnetFilter" class="form-control"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Bypass Proxy for Local Addresses?</label>
<div class="col-sm-8">
<div class="input-group">
<label class="checkbox toggle well">
<input type="checkbox" name="proxyBypassLocalAddresses" class="form-control"/>
<p>
<span>Yes</span>
<span>No</span>
</p>
<div class="btn btn-primary slide-button"/>
</label>
</div>
</div>
</div>
</div>
</fieldset>
<fieldset>
<legend>Logging</legend>