#22: Display error if daemon version is too low

This commit is contained in:
Scott E. Graves
2019-05-24 12:38:31 -05:00
parent 200534dccd
commit 234785180a
3 changed files with 79 additions and 7 deletions

View File

@@ -278,6 +278,44 @@ ipcMain.on(Constants.IPC_Browse_Directory + '_sync', (event, data) => {
});
});
ipcMain.on(Constants.IPC_Check_Daemon_Version, (event, data) => {
const dataDirectory = helpers.resolvePath(data.Directory);
helpers
.checkDaemonVersion(dataDirectory, data.Version, data.StorageType)
.then(code => {
standardIPCReply(event, Constants.IPC_Check_Daemon_Version_Reply, {
Valid: (code === 0),
});
})
.catch(e=> {
standardIPCReply(event, Constants.IPC_Check_Daemon_Version_Reply, {
Valid: false,
}, e);
});
});
ipcMain.on(Constants.IPC_Check_Daemon_Version + '_sync', (event, data) => {
const dataDirectory = helpers.resolvePath(data.Directory);
helpers
.checkDaemonVersion(dataDirectory, data.Version, data.StorageType)
.then(code => {
event.returnValue = {
data: {
Valid: (code === 0),
},
};
})
.catch(e => {
event.returnValue = {
data: {
Error: e.toString(),
Success: false,
Valid: false
},
};
});
});
ipcMain.on(Constants.IPC_Check_Dependency_Installed, (event, data) => {
try {
const exists = fs.lstatSync(data.File).isFile();

View File

@@ -95,10 +95,12 @@ class MountItems extends IPCContainer {
let allowAction = true;
if (mount) {
let result = this.sendSyncRequest(Constants.IPC_Check_Daemon_Version, {
Directory: this.props.directory,
StorageType: storageType,
Version: this.props.version
});
if (result.Success) {
if (result.Valid) {
if (this.props.platform !== 'win32') {
result = this.sendSyncRequest(Constants.IPC_Check_Mount_Location, {
Location: location,
@@ -108,6 +110,10 @@ class MountItems extends IPCContainer {
this.props.errorHandler(result.Error.toString());
}
}
} else {
allowAction = false;
this.props.errorHandler("Incompatible " + storageType + " daemon. Please upgrade " + storageType);
}
} else {
allowAction = false;
this.props.errorHandler(result.Error.toString());

View File

@@ -16,6 +16,34 @@ const tryParse = (j, def) => {
}
};
module.exports.checkDaemonVersion = (directory, version, storageType) => {
return new Promise((resolve, reject) => {
const processOptions = {
detached: true,
shell: false,
windowsHide: true,
};
const command = path.join(directory, version, (os.platform() === 'win32') ? 'repertory.exe' : 'repertory');
const args = [];
args.push('-cv');
if (Constants.PROVIDER_ARG[storageType.toLowerCase()].length > 0) {
args.push(Constants.PROVIDER_ARG[storageType.toLowerCase()]);
}
const process = new spawn(command, args, processOptions);
process.on('error', err => {
reject(err);
});
process.on('exit', code => {
resolve(code);
});
process.unref();
});
};
module.exports.createSignatureFiles = (signature, publicKey) => {
const fileName1 = RandomString.generate({
length: 12,