Added test logon
This commit is contained in:
@@ -6,14 +6,14 @@ import PropTypes from 'prop-types';
|
||||
|
||||
const ApplicationBusy = ({ title }) => {
|
||||
return (
|
||||
<Box dxStyle={{ padding: 'var(--default_spacing)' }}>
|
||||
<Box dxDark dxStyle={{ padding: 'var(--default_spacing)' }}>
|
||||
<Text text={title || 'Please Wait...'} textAlign={'center'} type={'Heading1'} />
|
||||
<div
|
||||
style={{
|
||||
paddingLeft: 'calc(50% - 16px)',
|
||||
paddingTop: 'var(--default_spacing)',
|
||||
}}>
|
||||
<Loader color={'var(--heading_text_color)'} height={32} width={32} type="TailSpin" />
|
||||
<Loader color={'var(--heading_text_color)'} height={32} width={32} type='TailSpin' />
|
||||
</div>
|
||||
</Box>
|
||||
);
|
||||
|
||||
@@ -200,6 +200,9 @@ exports.IPC_Set_Linux_AppPlatform = 'IPC_Set_Linux_AppPlatform';
|
||||
|
||||
exports.IPC_Shutdown = 'shutdown';
|
||||
|
||||
exports.IPC_Skynet_Test_Logon = 'skynet_test_logon';
|
||||
exports.IPC_Skynet_Test_Logon_Reply = 'skynet_test_logon_reply';
|
||||
|
||||
exports.IPC_Test_Release = 'test_release';
|
||||
exports.IPC_Test_Release_Reply = 'test_release_reply';
|
||||
|
||||
|
||||
@@ -2,15 +2,18 @@ import React from 'react';
|
||||
import Box from '../../components/UI/Box/Box';
|
||||
import Button from '../../components/UI/Button/Button';
|
||||
import DropDown from '../../components/UI/DropDown/DropDown';
|
||||
import IPCContainer from '../IPCContainer/IPCContainer';
|
||||
import PropTypes from 'prop-types';
|
||||
import Text from '../../components/UI/Text/Text';
|
||||
import { Component } from 'react';
|
||||
import { addEditHostAction } from '../../redux/actions/host_actions';
|
||||
import { connect } from 'react-redux';
|
||||
import { createDismissDisplay } from '../../utils.jsx';
|
||||
import { notifyError } from '../../redux/actions/error_actions';
|
||||
import { notifyApplicationBusy } from '../../redux/actions/common_actions';
|
||||
import { notifyError, notifyInfo } from '../../redux/actions/error_actions';
|
||||
|
||||
class AddEditHost extends Component {
|
||||
const Constants = require('../../constants');
|
||||
|
||||
class AddEditHost extends IPCContainer {
|
||||
state = {
|
||||
AgentString: '',
|
||||
ApiPassword: '',
|
||||
@@ -25,13 +28,19 @@ class AddEditHost extends Component {
|
||||
};
|
||||
|
||||
componentDidMount() {
|
||||
this.setRequestHandler(Constants.IPC_Skynet_Test_Logon_Reply, this.onSkynetTestLogonReply);
|
||||
|
||||
if (this.props.HostData) {
|
||||
this.setState({ ...this.state, ...this.props.HostData });
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
super.componentWillUnmount();
|
||||
}
|
||||
|
||||
handleSave = () => {
|
||||
if (this.state.HostNameOrIp.trim().length == 0) {
|
||||
if (this.state.HostNameOrIp.trim().length === 0) {
|
||||
this.props.notifyError('Host / IP cannot be empty');
|
||||
return;
|
||||
}
|
||||
@@ -51,7 +60,7 @@ class AddEditHost extends Component {
|
||||
(i) =>
|
||||
(i.HostNameOrIp || '').trim() === this.state.HostNameOrIp &&
|
||||
i.Protocol === this.state.Protocol &&
|
||||
i.ApiPort == this.state.ApiPort
|
||||
i.ApiPort == this.state.ApiPort,
|
||||
)
|
||||
) {
|
||||
this.props.notifyError(`Portal already exists`);
|
||||
@@ -61,7 +70,33 @@ class AddEditHost extends Component {
|
||||
this.props.completeAddEditHost(this.state);
|
||||
};
|
||||
|
||||
handleTestLogon = () => {
|
||||
try {
|
||||
this.props.notifyApplicationBusy(true);
|
||||
this.sendRequest(Constants.IPC_Skynet_Test_Logon, {
|
||||
Version: this.props.InstalledVersion,
|
||||
AuthURL: this.state.AuthURL,
|
||||
AuthUser: this.state.AuthUser,
|
||||
AuthPassword: this.state.AuthPassword,
|
||||
});
|
||||
} catch (e) {
|
||||
this.props.notifyApplicationBusy(false);
|
||||
this.props.notifyError(e);
|
||||
}
|
||||
};
|
||||
|
||||
onSkynetTestLogonReply = (_, arg) => {
|
||||
this.props.notifyApplicationBusy(false);
|
||||
if (arg.data.Success) {
|
||||
this.props.notifyInfo('Logon was successful!');
|
||||
} else {
|
||||
this.props.notifyError(arg.data.Error);
|
||||
}
|
||||
};
|
||||
|
||||
render() {
|
||||
const allowTestLogon = this.state.AuthURL && this.state.AuthUser;
|
||||
|
||||
return (
|
||||
<Box dxDark dxStyle={{ width: '430px', height: 'auto', padding: '5px' }}>
|
||||
{createDismissDisplay(this.props.Close)}
|
||||
@@ -154,7 +189,21 @@ class AddEditHost extends Component {
|
||||
</div>
|
||||
<div style={{ height: 'var(--default_spacing)' }} />
|
||||
<div style={{ display: 'flex', flexDirection: 'row' }}>
|
||||
<Text text={'Authentication URL (premium)'} textAlign={'left'} type={'Heading2'} />
|
||||
<Text noOwner text={'Authentication URL (premium)'}
|
||||
textAlign={'left'} type={'Heading2'} style={{ marginRight: 'auto' }} />
|
||||
{allowTestLogon ? (
|
||||
<a
|
||||
href={'#'}
|
||||
onClick={
|
||||
(e) => {
|
||||
this.handleTestLogon();
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
>
|
||||
<u>test logon</u>
|
||||
</a>
|
||||
) : null}
|
||||
</div>
|
||||
<div style={{ display: 'flex', flexDirection: 'column' }}>
|
||||
<input
|
||||
@@ -212,6 +261,7 @@ const mapStateToProps = (state) => {
|
||||
return {
|
||||
HostData: state.host.HostData,
|
||||
HostList: state.host.HostList,
|
||||
InstalledVersion: state.relver.InstalledVersion,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -219,16 +269,21 @@ const mapDispatchToProps = (dispatch) => {
|
||||
return {
|
||||
Close: () => dispatch(addEditHostAction.complete(false)),
|
||||
completeAddEditHost: (host_data) => dispatch(addEditHostAction.complete(true, { host_data })),
|
||||
notifyApplicationBusy: (busy) => dispatch(notifyApplicationBusy(busy, true)),
|
||||
notifyError: (msg) => dispatch(notifyError(msg)),
|
||||
notifyInfo: (msg) => dispatch(notifyInfo(msg)),
|
||||
};
|
||||
};
|
||||
|
||||
AddEditHost.propTypes = {
|
||||
Close: PropTypes.func.isRequired,
|
||||
completeAddEditHost: PropTypes.func.isRequired,
|
||||
HostData: PropTypes.object,
|
||||
HostList: PropTypes.array.isRequired,
|
||||
InstalledVersion: PropTypes.string.isRequired,
|
||||
completeAddEditHost: PropTypes.func.isRequired,
|
||||
notifyApplicationBusy: PropTypes.func.isRequired,
|
||||
notifyError: PropTypes.func.isRequired,
|
||||
notifyInfo: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(AddEditHost);
|
||||
|
||||
@@ -45,7 +45,7 @@ const _vcRuntimeExists = () => {
|
||||
value.includes(
|
||||
IS_64BIT
|
||||
? 'Microsoft Visual C++ 2015-2019 Redistributable (x64)'
|
||||
: 'Microsoft Visual C++ 2015-2019 Redistributable (x32)'
|
||||
: 'Microsoft Visual C++ 2015-2019 Redistributable (x32)',
|
||||
)
|
||||
) {
|
||||
vcRuntimeExists = true;
|
||||
@@ -392,7 +392,7 @@ module.exports.detectRepertoryMounts = (version, providerList) => {
|
||||
provider,
|
||||
!Constants.PROVIDER_LIST.includes(provider) &&
|
||||
provider.toLowerCase().startsWith('remote'),
|
||||
!Constants.PROVIDER_LIST.includes(provider) && provider.toLowerCase().startsWith('s3')
|
||||
!Constants.PROVIDER_LIST.includes(provider) && provider.toLowerCase().startsWith('s3'),
|
||||
);
|
||||
args.push('-status');
|
||||
|
||||
@@ -539,9 +539,9 @@ module.exports.executeAsync = (command, args = []) => {
|
||||
() =>
|
||||
launchProcess(
|
||||
count,
|
||||
setTimeout(() => resolve(), 3000)
|
||||
setTimeout(() => resolve(), 3000),
|
||||
),
|
||||
1000
|
||||
1000,
|
||||
);
|
||||
}
|
||||
});
|
||||
@@ -556,9 +556,9 @@ module.exports.executeAsync = (command, args = []) => {
|
||||
() =>
|
||||
launchProcess(
|
||||
count,
|
||||
setTimeout(() => resolve(), 3000)
|
||||
setTimeout(() => resolve(), 3000),
|
||||
),
|
||||
1000
|
||||
1000,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -569,7 +569,7 @@ module.exports.executeAsync = (command, args = []) => {
|
||||
|
||||
launchProcess(
|
||||
0,
|
||||
setTimeout(() => resolve(), 3000)
|
||||
setTimeout(() => resolve(), 3000),
|
||||
);
|
||||
});
|
||||
};
|
||||
@@ -1136,6 +1136,37 @@ module.exports.setConfigValue = (name, value, provider, remote, s3, version) =>
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.testSkynetLogon = (version, authURL, authUser, authPassword, agentString, apiKey) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const repertoryExec = _getRepertoryExec(version);
|
||||
const processOptions = {
|
||||
cwd: repertoryExec.working,
|
||||
detached: true,
|
||||
shell: false,
|
||||
windowsHide: true,
|
||||
};
|
||||
|
||||
const args = _getDefaultRepertoryArgs('Skynet');
|
||||
args.push('-tsa');
|
||||
args.push(authURL);
|
||||
args.push(authUser);
|
||||
args.push(authPassword);
|
||||
args.push(agentString || '');
|
||||
args.push(apiKey || '');
|
||||
|
||||
const process = new spawn(repertoryExec.cmd, args, processOptions);
|
||||
process.on('error', (err) => {
|
||||
reject(err);
|
||||
});
|
||||
|
||||
process.on('exit', (code) => {
|
||||
resolve(code === 0);
|
||||
});
|
||||
|
||||
process.unref();
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.stopMountProcess = (version, provider, remote, s3) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const repertoryExec = _getRepertoryExec(version);
|
||||
@@ -1243,7 +1274,7 @@ module.exports.verifySignature = (file, signatureFile, publicKeyFile) => {
|
||||
} else {
|
||||
resolve(stdout);
|
||||
}
|
||||
}
|
||||
},
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1267,7 +1298,7 @@ module.exports.verifySignature = (file, signatureFile, publicKeyFile) => {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
reject(new Error("Failed to locate 'openssl.exe'"));
|
||||
reject(new Error('Failed to locate \'openssl.exe\''));
|
||||
}
|
||||
});
|
||||
} else if (os.platform() === 'linux') {
|
||||
|
||||
@@ -40,6 +40,21 @@ const addListeners = (ipcMain, { standardIPCReply }) => {
|
||||
standardIPCReply(event, Constants.IPC_Import_Skylinks_Reply, {}, error);
|
||||
});
|
||||
});
|
||||
|
||||
ipcMain.on(Constants.IPC_Skynet_Test_Logon, (event, data) => {
|
||||
helpers
|
||||
.testSkynetLogon(data.Version, data.AuthURL, data.AuthUser, data.AuthPassword)
|
||||
.then((success) => {
|
||||
if (success) {
|
||||
standardIPCReply(event, Constants.IPC_Skynet_Test_Logon_Reply, {});
|
||||
} else {
|
||||
standardIPCReply(event, Constants.IPC_Skynet_Test_Logon_Reply, {}, 'Logon failed. Please check credentials');
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
standardIPCReply(event, Constants.IPC_Skynet_Test_Logon_Reply, {}, error);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = { addListeners };
|
||||
|
||||
Reference in New Issue
Block a user