initial refactor of feaure flag detection statements in serverRequest()

pull/734/head
Ryan Tharp 6 years ago
parent 6293cd468b
commit 5ced9a2b85

@ -388,12 +388,8 @@ class LokiAppDotNetServerAPI {
if (params) { if (params) {
url.search = new URLSearchParams(params); url.search = new URLSearchParams(params);
} }
let result;
let ephemeralKey;
let symKey;
let iv;
try {
const fetchOptions = {}; const fetchOptions = {};
try {
const headers = {}; const headers = {};
if (forceFreshToken) { if (forceFreshToken) {
await this.getOrRefreshServerToken(true); await this.getOrRefreshServerToken(true);
@ -411,61 +407,43 @@ class LokiAppDotNetServerAPI {
fetchOptions.body = rawBody; fetchOptions.body = rawBody;
} }
fetchOptions.headers = new Headers(headers); fetchOptions.headers = new Headers(headers);
} catch (e) {
log.info('serverRequest set up error:', JSON.stringify(e));
return {
err: e,
};
}
let result;
let response = null;
let TxtResponse = '';
if ( if (
window.lokiFeatureFlags.useSnodeProxy && window.lokiFeatureFlags.useSnodeProxy &&
(this.baseServerUrl === 'https://file-dev.lokinet.org' || (this.baseServerUrl === 'https://file-dev.lokinet.org' ||
this.baseServerUrl === 'https://file.lokinet.org') this.baseServerUrl === 'https://file.lokinet.org')
) { ) {
try {
// make temporary key for this request/response // make temporary key for this request/response
ephemeralKey = libsignal.Curve.generateKeyPair(); const ephemeralKey = libsignal.Curve.generateKeyPair();
// mix server pub key with our priv key // mix server pub key with our priv key
symKey = libsignal.Curve.calculateAgreement( const symKey = libsignal.Curve.calculateAgreement(
this.pubKey, // server's pubkey this.pubKey, // server's pubkey
ephemeralKey.privKey // our privkey ephemeralKey.privKey // our privkey
); );
// some randomness // some randomness
iv = libsignal.crypto.getRandomBytes(IV_LENGTH); const iv = libsignal.crypto.getRandomBytes(IV_LENGTH);
log.info('Sending a proxy request to', this.baseServerUrl);
result = await this.constructor._sendToProxy( result = await this.constructor._sendToProxy(
{ ...fetchOptions, headers }, fetchOptions,
endpoint, endpoint,
method, method,
{ ephemeralKey, symKey, iv } { ephemeralKey, symKey, iv }
); );
// log.info('sent to proxy')
} else {
result = await nodeFetch(url, fetchOptions || undefined);
}
} catch (e) {
log.info(
'serverRequest nodeFetch/_sendToProxy error:',
JSON.stringify(e)
);
return {
err: e,
};
}
let response = null;
let TxtResponse = '';
try {
TxtResponse = await result.text(); TxtResponse = await result.text();
response = JSON.parse(TxtResponse); response = JSON.parse(TxtResponse);
} catch (e) {
log.warn(`serverRequest json parse ${e} ${TxtResponse}`);
return {
err: e,
statusCode: result.status,
};
}
if (
window.lokiFeatureFlags.useSnodeProxy &&
(this.baseServerUrl === 'https://file-dev.lokinet.org' ||
this.baseServerUrl === 'https://file.lokinet.org')
) {
// log.info('Got proxy response', response, 'for', method || 'GET', endpoint);
if (response.meta && response.meta.code === 200) { if (response.meta && response.meta.code === 200) {
try { try {
const cipherBuffer = dcodeIO.ByteBuffer.wrap( const cipherBuffer = dcodeIO.ByteBuffer.wrap(
@ -479,6 +457,7 @@ class LokiAppDotNetServerAPI {
); );
const textDecoder = new TextDecoder(); const textDecoder = new TextDecoder();
const json = textDecoder.decode(decryped); const json = textDecoder.decode(decryped);
// replace response
response = JSON.parse(json); response = JSON.parse(json);
} catch (e) { } catch (e) {
// useless with the ephemeralKey and iv // useless with the ephemeralKey and iv
@ -488,10 +467,26 @@ class LokiAppDotNetServerAPI {
statusCode: result.status, statusCode: result.status,
}; };
} }
// log.info('decrypted response', response);
} else { } else {
log.warn('file server secure_rpc gave an non-200 response'); log.warn('file server secure_rpc gave an non-200 response');
} }
} catch (e) {
log.info('serverRequest _sendToProxy error:', e);
return {
err: e,
};
}
} else {
try {
result = await nodeFetch(url, fetchOptions || undefined);
TxtResponse = await result.text();
response = JSON.parse(TxtResponse);
} catch (e) {
log.info('serverRequest nodeFetch error:', JSON.stringify(e));
return {
err: e,
};
}
} }
// if it's a response style with a meta // if it's a response style with a meta

Loading…
Cancel
Save