mirror of
https://github.com/ONLYOFFICE/server.git
synced 2026-04-07 14:04:35 +08:00
[log] Add log for getBaseUrlByConnection
This commit is contained in:
@ -687,16 +687,31 @@ function getBaseUrl(protocol, hostHeader, forwardedProtoHeader, forwardedHostHea
|
||||
}
|
||||
return url;
|
||||
}
|
||||
function getBaseUrlByConnection(conn) {
|
||||
function getBaseUrlByConnection(ctx, conn) {
|
||||
conn = conn.request;
|
||||
//Header names are lower-cased. https://nodejs.org/api/http.html#messageheaders
|
||||
let proto = conn.headers['cloudfront-forwarded-proto'] || conn.headers['x-forwarded-proto'];
|
||||
return getBaseUrl('', conn.headers['host'], proto, conn.headers['x-forwarded-host'], conn.headers['x-forwarded-prefix']);
|
||||
let cloudfrontForwardedProto = conn.headers['cloudfront-forwarded-proto'];
|
||||
let forwardedProto = conn.headers['x-forwarded-proto'];
|
||||
let forwardedHost = conn.headers['x-forwarded-host'];
|
||||
let forwardedPrefix = conn.headers['x-forwarded-prefix'];
|
||||
let host = conn.headers['host'];
|
||||
let proto = cloudfrontForwardedProto || forwardedProto;
|
||||
ctx.logger.debug(`getBaseUrlByConnection host=%s x-forwarded-host=%s x-forwarded-proto=%s x-forwarded-prefix=%s cloudfront-forwarded-proto=%s `,
|
||||
host, forwardedHost, forwardedProto, forwardedPrefix, cloudfrontForwardedProto);
|
||||
return getBaseUrl('', host, proto, forwardedHost, forwardedPrefix);
|
||||
}
|
||||
function getBaseUrlByRequest(req) {
|
||||
function getBaseUrlByRequest(ctx, req) {
|
||||
//case-insensitive match. https://expressjs.com/en/api.html#req.get
|
||||
let proto = req.get('cloudfront-forwarded-proto') || req.get('x-forwarded-proto');
|
||||
return getBaseUrl(req.protocol, req.get('host'), proto, req.get('x-forwarded-host'), req.get('x-forwarded-prefix'));
|
||||
let cloudfrontForwardedProto = req.get('cloudfront-forwarded-proto');
|
||||
let forwardedProto = req.get('x-forwarded-proto');
|
||||
let forwardedHost = req.get('x-forwarded-host');
|
||||
let forwardedPrefix = req.get('x-forwarded-prefix');
|
||||
let host = req.get('host');
|
||||
let protocol = req.protocol;
|
||||
let proto = cloudfrontForwardedProto || forwardedProto;
|
||||
ctx.logger.debug(`getBaseUrlByRequest protocol=%s host=%s x-forwarded-host=%s x-forwarded-proto=%s x-forwarded-prefix=%s cloudfront-forwarded-proto=%s `,
|
||||
protocol, host, forwardedHost, forwardedProto, forwardedPrefix, cloudfrontForwardedProto);
|
||||
return getBaseUrl(protocol, host, proto, forwardedHost, forwardedPrefix);
|
||||
}
|
||||
exports.getBaseUrlByConnection = getBaseUrlByConnection;
|
||||
exports.getBaseUrlByRequest = getBaseUrlByRequest;
|
||||
|
||||
@ -1351,7 +1351,7 @@ exports.install = function(server, callbackFunction) {
|
||||
sendFileError(ctx, conn, 'Server shutdow');
|
||||
return;
|
||||
}
|
||||
conn.baseUrl = utils.getBaseUrlByConnection(conn);
|
||||
conn.baseUrl = utils.getBaseUrlByConnection(ctx, conn);
|
||||
conn.sessionIsSendWarning = false;
|
||||
conn.sessionTimeConnect = conn.sessionTimeLastAction = new Date().getTime();
|
||||
|
||||
@ -2257,7 +2257,7 @@ exports.install = function(server, callbackFunction) {
|
||||
}
|
||||
}
|
||||
let format = data.openCmd && data.openCmd.format;
|
||||
upsertRes = yield canvasService.commandOpenStartPromise(ctx, docId, utils.getBaseUrlByConnection(conn), true, data.documentCallbackUrl, format);
|
||||
upsertRes = yield canvasService.commandOpenStartPromise(ctx, docId, utils.getBaseUrlByConnection(ctx, conn), true, data.documentCallbackUrl, format);
|
||||
let isInserted = upsertRes.affectedRows == 1;
|
||||
curIndexUser = isInserted ? 1 : upsertRes.insertId;
|
||||
if (isInserted && undefined !== data.timezoneOffset) {
|
||||
@ -2913,7 +2913,7 @@ exports.install = function(server, callbackFunction) {
|
||||
yield* unSaveLock(ctx, conn, changesIndex, newChangesLastTime);
|
||||
//last save
|
||||
let changeInfo = getExternalChangeInfo(conn.user, newChangesLastTime);
|
||||
yield resetForceSaveAfterChanges(ctx, docId, newChangesLastTime, puckerIndex, utils.getBaseUrlByConnection(conn), changeInfo);
|
||||
yield resetForceSaveAfterChanges(ctx, docId, newChangesLastTime, puckerIndex, utils.getBaseUrlByConnection(ctx, conn), changeInfo);
|
||||
} else {
|
||||
let changesToSend = arrNewDocumentChanges;
|
||||
if(changesToSend.length > cfgPubSubMaxChanges) {
|
||||
@ -3843,7 +3843,7 @@ exports.commandFromServer = function (req, res) {
|
||||
//If no files in the database means they have not been edited.
|
||||
const selectRes = yield taskResult.select(ctx, docId);
|
||||
if (selectRes.length > 0) {
|
||||
result = yield* bindEvents(ctx, docId, params.callback, utils.getBaseUrlByRequest(req), undefined, params.userdata);
|
||||
result = yield* bindEvents(ctx, docId, params.callback, utils.getBaseUrlByRequest(ctx, req), undefined, params.userdata);
|
||||
} else {
|
||||
result = commonDefines.c_oAscServerCommandErrors.DocumentIdError;
|
||||
}
|
||||
@ -3869,7 +3869,7 @@ exports.commandFromServer = function (req, res) {
|
||||
}
|
||||
break;
|
||||
case 'forcesave':
|
||||
let forceSaveRes = yield startForceSave(ctx, docId, commonDefines.c_oAscForceSaveTypes.Command, params.userdata, undefined, undefined, undefined, undefined, utils.getBaseUrlByRequest(req));
|
||||
let forceSaveRes = yield startForceSave(ctx, docId, commonDefines.c_oAscForceSaveTypes.Command, params.userdata, undefined, undefined, undefined, undefined, utils.getBaseUrlByRequest(ctx, req));
|
||||
result = forceSaveRes.code;
|
||||
break;
|
||||
case 'meta':
|
||||
|
||||
@ -459,7 +459,7 @@ function* commandOpen(ctx, conn, cmd, outputData, opt_upsertRes, opt_bIsRestore)
|
||||
if (opt_upsertRes) {
|
||||
upsertRes = opt_upsertRes;
|
||||
} else {
|
||||
upsertRes = yield commandOpenStartPromise(ctx, cmd.getDocId(), utils.getBaseUrlByConnection(conn));
|
||||
upsertRes = yield commandOpenStartPromise(ctx, cmd.getDocId(), utils.getBaseUrlByConnection(ctx, conn));
|
||||
}
|
||||
//if CLIENT_FOUND_ROWS don't specify 1 row is inserted , 2 row is updated, and 0 row is set to its current values
|
||||
//http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
|
||||
@ -848,7 +848,7 @@ function* commandSetPassword(ctx, conn, cmd, outputData) {
|
||||
if (!conn.isEnterCorrectPassword) {
|
||||
yield docsCoServer.modifyConnectionForPassword(ctx, conn, true);
|
||||
}
|
||||
yield docsCoServer.resetForceSaveAfterChanges(ctx, cmd.getDocId(), newChangesLastDate.getTime(), 0, utils.getBaseUrlByConnection(conn), changeInfo);
|
||||
yield docsCoServer.resetForceSaveAfterChanges(ctx, cmd.getDocId(), newChangesLastDate.getTime(), 0, utils.getBaseUrlByConnection(ctx, conn), changeInfo);
|
||||
} else {
|
||||
ctx.logger.debug('commandSetPassword sql update error');
|
||||
outputData.setStatus('err');
|
||||
|
||||
@ -354,7 +354,7 @@ function convertRequest(req, res, isJson) {
|
||||
if (status.end) {
|
||||
let fileToPath = yield* getConvertPath(ctx, docId, fileTo, cmd.getOutputFormat());
|
||||
status.setExtName(path.extname(fileToPath));
|
||||
status.setUrl(yield* getConvertUrl(ctx, utils.getBaseUrlByRequest(req), fileToPath, cmd.getTitle()));
|
||||
status.setUrl(yield* getConvertUrl(ctx, utils.getBaseUrlByRequest(ctx, req), fileToPath, cmd.getTitle()));
|
||||
ctx.logger.debug('convertRequest: url = %s', status.url);
|
||||
}
|
||||
utils.fillResponse(req, res, status, isJson);
|
||||
@ -428,7 +428,7 @@ function builderRequest(req, res) {
|
||||
end = status.end;
|
||||
error = status.err;
|
||||
if (end) {
|
||||
urls = yield storageBase.getSignedUrls(ctx, utils.getBaseUrlByRequest(req), docId + '/output',
|
||||
urls = yield storageBase.getSignedUrls(ctx, utils.getBaseUrlByRequest(ctx, req), docId + '/output',
|
||||
commonDefines.c_oAscUrlTypes.Temporary);
|
||||
}
|
||||
} else if (error === constants.NO_ERROR) {
|
||||
|
||||
@ -76,7 +76,7 @@ exports.uploadTempFile = function(req, res) {
|
||||
var task = yield* taskResult.addRandomKeyTask(ctx, docId);
|
||||
var strPath = task.key + '/' + docId + '.tmp';
|
||||
yield storageBase.putObject(ctx, strPath, req.body, req.body.length);
|
||||
var url = yield storageBase.getSignedUrl(ctx, utils.getBaseUrlByRequest(req), strPath,
|
||||
var url = yield storageBase.getSignedUrl(ctx, utils.getBaseUrlByRequest(ctx, req), strPath,
|
||||
commonDefines.c_oAscUrlTypes.Temporary);
|
||||
utils.fillResponse(req, res, new commonDefines.ConvertStatus(constants.NO_ERROR, url), false);
|
||||
} else {
|
||||
@ -178,7 +178,7 @@ exports.uploadImageFileOld = function(req, res) {
|
||||
if (isError) {
|
||||
res.sendStatus(400);
|
||||
} else {
|
||||
storageBase.getSignedUrlsByArray(ctx, utils.getBaseUrlByRequest(req), listImages, docId,
|
||||
storageBase.getSignedUrlsByArray(ctx, utils.getBaseUrlByRequest(ctx, req), listImages, docId,
|
||||
commonDefines.c_oAscUrlTypes.Session).then(function(urls) {
|
||||
var outputData = {'type': 0, 'error': constants.NO_ERROR, 'urls': urls, 'input': req.query};
|
||||
var output = '<html><head><script type="text/javascript">function load(){ parent.postMessage("';
|
||||
@ -250,7 +250,7 @@ exports.uploadImageFile = function(req, res) {
|
||||
var strPathRel = 'media/' + strImageName + '.' + formatStr;
|
||||
var strPath = docId + '/' + strPathRel;
|
||||
yield storageBase.putObject(ctx, strPath, buffer, buffer.length);
|
||||
output[strPathRel] = yield storageBase.getSignedUrl(ctx, utils.getBaseUrlByRequest(req), strPath,
|
||||
output[strPathRel] = yield storageBase.getSignedUrl(ctx, utils.getBaseUrlByRequest(ctx, req), strPath,
|
||||
commonDefines.c_oAscUrlTypes.Session);
|
||||
isError = false;
|
||||
} else {
|
||||
|
||||
@ -235,7 +235,13 @@ docsCoServer.install(server, () => {
|
||||
app.get('/healthcheck', utils.checkClientIp, docsCoServer.healthCheck);
|
||||
|
||||
app.get('/baseurl', (req, res) => {
|
||||
res.send(utils.getBaseUrlByRequest(req));
|
||||
let ctx = new operationContext.Context();
|
||||
try {
|
||||
ctx.initFromRequest(req);
|
||||
res.send(utils.getBaseUrlByRequest(ctx, req));
|
||||
} catch (err) {
|
||||
ctx.logger.error('baseurl error: %s', err.stack);
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/robots.txt', (req, res) => {
|
||||
|
||||
@ -106,7 +106,7 @@ function discovery(req, res) {
|
||||
try {
|
||||
ctx.initFromRequest(req);
|
||||
ctx.logger.info('wopiDiscovery start');
|
||||
let baseUrl = cfgWopiHost || utils.getBaseUrlByRequest(req);
|
||||
let baseUrl = cfgWopiHost || utils.getBaseUrlByRequest(ctx, req);
|
||||
let names = ['Word','Excel','PowerPoint'];
|
||||
let favIconUrls = [cfgWopiFavIconUrlWord, cfgWopiFavIconUrlCell, cfgWopiFavIconUrlSlide];
|
||||
let exts = [
|
||||
@ -406,7 +406,7 @@ function getEditorHtml(req, res) {
|
||||
fileType = fileInfo.FileExtension ? fileInfo.FileExtension.substr(1) : fileType;
|
||||
lockId = crypto.randomBytes(16).toString('base64');
|
||||
let commonInfo = JSON.stringify({lockId: lockId, fileInfo: fileInfo});
|
||||
yield canvasService.commandOpenStartPromise(ctx, docId, utils.getBaseUrlByRequest(req), 1, commonInfo, fileType);
|
||||
yield canvasService.commandOpenStartPromise(ctx, docId, utils.getBaseUrlByRequest(ctx, req), 1, commonInfo, fileType);
|
||||
}
|
||||
|
||||
//Lock
|
||||
@ -475,7 +475,7 @@ function getConverterHtml(req, res) {
|
||||
|
||||
let docId = yield converterService.convertAndEdit(ctx, wopiParams, ext, targetext);
|
||||
if (docId) {
|
||||
let baseUrl = cfgWopiHost || utils.getBaseUrlByRequest(req);
|
||||
let baseUrl = cfgWopiHost || utils.getBaseUrlByRequest(ctx, req);
|
||||
params.statusHandler = `${baseUrl}/hosting/wopi/convert-and-edit-handler`;
|
||||
params.statusHandler += `?wopiSrc=${encodeURI(wopiSrc)}&access_token=${encodeURI(access_token)}`;
|
||||
params.statusHandler += `&targetext=${encodeURI(targetext)}&docId=${encodeURI(docId)}`;
|
||||
|
||||
Reference in New Issue
Block a user