提交 7e1f9d3f 编写于 作者: S Sercan

resolves #113

上级 24f0d270
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
</a> </a>
<form role="search" class="navbar-form-custom"> <form role="search" class="navbar-form-custom">
<div class="form-group"> <div class="form-group">
<input type="text" disabled="true" placeholder="Search for something..." class="form-control" name="top-search" <input type="text" disabled="true" placeholder="Search for something..." class="form-control"
name="top-search"
id="top-search"> id="top-search">
</div> </div>
</form> </form>
...@@ -154,7 +155,8 @@ ...@@ -154,7 +155,8 @@
class="form-control"> class="form-control">
</div> </div>
</div> </div>
<div class="form-group"><label class="col-lg-2 control-label">Read From SECONDARY <div class="form-group"><label class="col-lg-2 control-label">Read From
SECONDARY
</label> </label>
<div id="divReadFromSecondary" class="col-lg-10"> <div id="divReadFromSecondary" class="col-lg-10">
<input id="inputReadFromSecondary" type="checkbox" <input id="inputReadFromSecondary" type="checkbox"
...@@ -277,6 +279,23 @@ ...@@ -277,6 +279,23 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group"><label class="col-lg-2 control-label">Use x509</label>
<div id="divUseX509" class="col-lg-10">
<input id="inputUseX509" type="checkbox"
class="form-control"
checked=""
style="position: absolute; opacity: 0;"/>
</div>
</div>
<div id="divX509Username" class="form-group" style="display: none">
<label class="col-lg-2 control-label">x509 Username</label>
<div class="col-lg-10"><input id="inputX509Username" type="text"
placeholder="x509 Username"
class="form-control">
</div>
</div>
</form> </form>
</div> </div>
</div> </div>
......
...@@ -122,6 +122,15 @@ Template.topNavbar.events({ ...@@ -122,6 +122,15 @@ Template.topNavbar.events({
var connection = Connections.findOne({_id: Session.get(Template.strSessionConnection)}); var connection = Connections.findOne({_id: Session.get(Template.strSessionConnection)});
Template.topNavbar.clearAllFieldsOfConnectionModal(); Template.topNavbar.clearAllFieldsOfConnectionModal();
if (connection.x509Username) {
$('#divX509Username').show();
$('#inputUseX509').iCheck('check');
$('#inputX509Username').val(connection.x509Username);
} else {
$('#inputUseX509').iCheck('uncheck');
$('#divX509Username').hide();
}
if (connection.readFromSecondary) { if (connection.readFromSecondary) {
$('#inputReadFromSecondary').iCheck('check'); $('#inputReadFromSecondary').iCheck('check');
} else { } else {
...@@ -235,6 +244,9 @@ Template.topNavbar.events({ ...@@ -235,6 +244,9 @@ Template.topNavbar.events({
var inputCertificatePathSelector = $('#inputCertificatePath'); var inputCertificatePathSelector = $('#inputCertificatePath');
var rootCertificatePathSelector = $("#inputRootCaPath"); var rootCertificatePathSelector = $("#inputRootCaPath");
var inputCertificateKeyPathSelector = $('#inputCertificateKeyPath'); var inputCertificateKeyPathSelector = $('#inputCertificateKeyPath');
var cmbSShAuthTypeSelector = $('#cmbSshAuthType');
var inputSShPassPhraseSelector = $('#inputSshPassPhrase');
var inputSshCertificatePathSelector = $('#inputSshCertificatePath');
var connection = {}; var connection = {};
connection.readFromSecondary = $('#inputReadFromSecondary').iCheck('update')[0].checked; connection.readFromSecondary = $('#inputReadFromSecondary').iCheck('update')[0].checked;
...@@ -244,15 +256,15 @@ Template.topNavbar.events({ ...@@ -244,15 +256,15 @@ Template.topNavbar.events({
connection.sshPort = $('#inputSshPort').val(); connection.sshPort = $('#inputSshPort').val();
connection.sshUser = $('#inputSshUsername').val(); connection.sshUser = $('#inputSshUsername').val();
if ($('#cmbSshAuthType').val() == 'Password') { if (cmbSShAuthTypeSelector.val() == 'Password') {
connection.sshPassword = $('#inputSshPassword').val(); connection.sshPassword = $('#inputSshPassword').val();
} }
else if ($('#cmbSshAuthType').val() == 'Key File') { else if (cmbSShAuthTypeSelector.val() == 'Key File') {
if ($('#inputSshCertificatePath').val()) { if (inputSshCertificatePathSelector.val()) {
connection.sshCertificatePath = $('#inputSshCertificatePath').val(); connection.sshCertificatePath = inputSshCertificatePathSelector.val();
} }
if ($('#inputSshPassPhrase').val()) { if (inputSShPassPhraseSelector.val()) {
connection.sshPassPhrase = $('#inputSshPassPhrase').val(); connection.sshPassPhrase = inputSShPassPhraseSelector.val();
} }
} }
} }
...@@ -268,6 +280,10 @@ Template.topNavbar.events({ ...@@ -268,6 +280,10 @@ Template.topNavbar.events({
connection.databaseName = $('#inputDatabaseName').val(); connection.databaseName = $('#inputDatabaseName').val();
if ($('#inputAuthCertificate').iCheck('update')[0].checked) { if ($('#inputAuthCertificate').iCheck('update')[0].checked) {
if ($('#inputUseX509').iCheck('update')[0].checked && $('#inputX509Username').val()) {
connection.x509Username = $('#inputX509Username').val();
}
if (inputCertificatePathSelector.val()) { if (inputCertificatePathSelector.val()) {
connection.sslCertificatePath = inputCertificatePathSelector.val(); connection.sslCertificatePath = inputCertificatePathSelector.val();
connection.passPhrase = $("#inputPassPhrase").val(); connection.passPhrase = $("#inputPassPhrase").val();
...@@ -368,6 +384,9 @@ Template.topNavbar.clearAllFieldsOfConnectionModal = function () { ...@@ -368,6 +384,9 @@ Template.topNavbar.clearAllFieldsOfConnectionModal = function () {
$("#inputSshCertificatePath").val(''); $("#inputSshCertificatePath").val('');
$("#inputSshPassPhrase").val(''); $("#inputSshPassPhrase").val('');
$("#inputSshPassword").val(''); $("#inputSshPassword").val('');
$('#inputX509Username').val('');
$('#divX509Username').hide();
$('#inputUseX509').iCheck('uncheck');
$('#inputUseUrl').iCheck('uncheck'); $('#inputUseUrl').iCheck('uncheck');
$('#inputUseSsh').iCheck('uncheck'); $('#inputUseSsh').iCheck('uncheck');
$('#inputUseSSL').iCheck('uncheck'); $('#inputUseSSL').iCheck('uncheck');
...@@ -615,11 +634,12 @@ Template.topNavbar.initIChecks = function () { ...@@ -615,11 +634,12 @@ Template.topNavbar.initIChecks = function () {
var anchorTab2Selector = $('#anchorTab2'); var anchorTab2Selector = $('#anchorTab2');
var inputUseUriSelector = $("#inputUseUrl"); var inputUseUriSelector = $("#inputUseUrl");
var inputUseSshSelector = $("#inputUseSsh"); var inputUseSshSelector = $("#inputUseSsh");
var inputUseX509Username = $("#inputUseX509");
var inputReadFromSecondary = $("#inputReadFromSecondary"); var inputReadFromSecondary = $("#inputReadFromSecondary");
inputAuthStandardSelector.iCheck('check'); inputAuthStandardSelector.iCheck('check');
$('#divUseSSL, #divUseSsh, #divUseUrl, #divReadFromSecondary').iCheck({ $('#divUseSSL, #divUseSsh, #divUseUrl, #divReadFromSecondary, #divUseX509').iCheck({
checkboxClass: 'icheckbox_square-green' checkboxClass: 'icheckbox_square-green'
}); });
...@@ -636,6 +656,18 @@ Template.topNavbar.initIChecks = function () { ...@@ -636,6 +656,18 @@ Template.topNavbar.initIChecks = function () {
inputReadFromSecondary.iCheck('uncheck'); inputReadFromSecondary.iCheck('uncheck');
inputUseX509Username.iCheck('uncheck');
inputUseX509Username.on('ifChanged', function (event) {
var divX509UsernameSelector = $('#divX509Username');
var isChecked = event.currentTarget.checked;
if (isChecked) {
divX509UsernameSelector.show();
} else {
divX509UsernameSelector.hide();
}
});
inputUseUriSelector.iCheck('uncheck'); inputUseUriSelector.iCheck('uncheck');
inputUseUriSelector.on('ifChanged', function (event) { inputUseUriSelector.on('ifChanged', function (event) {
var inputUriSelector = $('#inputUrl'); var inputUriSelector = $('#inputUrl');
......
...@@ -23,6 +23,10 @@ Connections.attachSchema(new SimpleSchema({ ...@@ -23,6 +23,10 @@ Connections.attachSchema(new SimpleSchema({
type: "String", type: "String",
optional: true optional: true
}, },
'x509Username': {
type: "String",
optional: true
},
'sshCertificate': { 'sshCertificate': {
type: "String", type: "String",
optional: true optional: true
......
...@@ -9,13 +9,25 @@ getConnectionUrl = function (connection) { ...@@ -9,13 +9,25 @@ getConnectionUrl = function (connection) {
var connectionUrl = 'mongodb://'; var connectionUrl = 'mongodb://';
if (connection.user && connection.password) { if (connection.user && connection.password) {
connectionUrl += connection.user + ':' + encodeURIComponent(connection.password) + '@'; connectionUrl += connection.user + ':' + encodeURIComponent(connection.password) + '@';
} else if (connection.x509Username) {
connectionUrl += encodeURIComponent(connection.x509Username) + '@'
} }
connectionUrl += connection.host + ':' + connection.port + '/' + connection.databaseName; connectionUrl += connection.host + ':' + connection.port + '/' + connection.databaseName;
if (connection.readFromSecondary) { if (connection.readFromSecondary) {
connectionUrl += '?readPreference=secondary'; connectionUrl += '?readPreference=secondary';
} }
if (connection.x509Username) {
if (connectionUrl.indexOf('?') != -1) {
connectionUrl += '&authMechanism=MONGODB-X509';
} else {
connectionUrl += '?authMechanism=MONGODB-X509';
}
}
if (connection.authDatabaseName) { if (connection.authDatabaseName) {
if (connectionUrl.indexOf('?') != -1) { if (connectionUrl.indexOf('?') != -1) {
connectionUrl += '&authSource=' + connection.authDatabaseName; connectionUrl += '&authSource=' + connection.authDatabaseName;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册