@ethicdevs/fastify-git-server
Advanced tools
Comparing version 1.4.2 to 1.4.3
@@ -16,54 +16,2 @@ "use strict"; | ||
return new Promise(function (resolve, reject) { | ||
if (opts.withSideBandMessages === true && opts.onPush != null) { | ||
var onPushPerfomedAction_1 = false; | ||
var shouldAcceptRequest_1 = false; | ||
var denyReason_1 = null; | ||
var accept = function () { | ||
onPushPerfomedAction_1 = true; | ||
shouldAcceptRequest_1 = true; | ||
logTrace("accept was called."); | ||
}; | ||
var deny_1 = function (reason) { | ||
onPushPerfomedAction_1 = true; | ||
shouldAcceptRequest_1 = false; | ||
denyReason_1 = reason; | ||
logTrace("deny was called. reason:", reason); | ||
}; | ||
// protect against miss-implemented onPush by automatically denying the | ||
// request in case onPush hook does not reply after 30 seconds. | ||
var autoDenyTimeoutId_1 = setTimeout(function () { | ||
if (autoDenyTimeoutId_1 == null) { | ||
return undefined; | ||
} | ||
if (autoDenyTimeoutId_1 != null) { | ||
clearTimeout(autoDenyTimeoutId_1); | ||
autoDenyTimeoutId_1 = null; | ||
} | ||
return deny_1("onPush did not respond within the allowed ".concat(constants_1.ON_PUSH_TIMEOUT_MS, " seconds.")); | ||
}, constants_1.ON_PUSH_TIMEOUT_MS); | ||
// ask client for resolution about what to do + possibility to write to | ||
// the side band messages stream. | ||
opts.onPush({ | ||
type: "push", | ||
message: new GitServerMessage_1.GitServerMessage(gitStream, accept, deny_1), | ||
data: { | ||
packType: packType, | ||
repoDiskPath: cwd, | ||
repoSlug: repoSlug, | ||
request: request, | ||
requestMethod: requestMethod, | ||
requestType: requestType, | ||
username: username, | ||
}, | ||
}); | ||
clearTimeout(autoDenyTimeoutId_1); | ||
autoDenyTimeoutId_1 = null; | ||
if (onPushPerfomedAction_1 === false) { | ||
accept(); | ||
} | ||
if (shouldAcceptRequest_1 === false && denyReason_1 != null) { | ||
gitStream.end(); | ||
return reject(new Error(denyReason_1)); | ||
} | ||
} | ||
var safePackType = (0, safeServiceToPackType_1.safeServiceToPackType)(packType); | ||
@@ -73,2 +21,61 @@ var process = spawnGitCmd([safePackType, constants_1.GIT_STATELESS_RPC_FLAG]); | ||
process.stdout.on("data", function (chunk) { return gitStream.write(chunk); }); | ||
process.stdout.once("data", function () { | ||
if (opts.withSideBandMessages === true && opts.onPush != null) { | ||
var onPushPerfomedAction_1 = false; | ||
var shouldAcceptRequest_1 = false; | ||
var denyReason_1 = null; | ||
var accept = function () { | ||
onPushPerfomedAction_1 = true; | ||
shouldAcceptRequest_1 = true; | ||
logTrace("accept was called."); | ||
}; | ||
var deny_1 = function (reason) { | ||
onPushPerfomedAction_1 = true; | ||
shouldAcceptRequest_1 = false; | ||
denyReason_1 = reason; | ||
logTrace("deny was called. reason:", reason); | ||
}; | ||
// protect against miss-implemented onPush by automatically denying the | ||
// request in case onPush hook does not reply after 30 seconds. | ||
var autoDenyTimeoutId_1 = setTimeout(function () { | ||
if (autoDenyTimeoutId_1 == null) { | ||
return undefined; | ||
} | ||
if (autoDenyTimeoutId_1 != null) { | ||
clearTimeout(autoDenyTimeoutId_1); | ||
autoDenyTimeoutId_1 = null; | ||
} | ||
return deny_1("onPush did not respond within the allowed ".concat(constants_1.ON_PUSH_TIMEOUT_MS, " seconds.")); | ||
}, constants_1.ON_PUSH_TIMEOUT_MS); | ||
// ask client for resolution about what to do + possibility to write to | ||
// the side band messages stream. | ||
opts.onPush({ | ||
type: "push", | ||
message: new GitServerMessage_1.GitServerMessage(gitStream, accept, deny_1), | ||
data: { | ||
packType: packType, | ||
repoDiskPath: cwd, | ||
repoSlug: repoSlug, | ||
request: request, | ||
requestMethod: requestMethod, | ||
requestType: requestType, | ||
username: username, | ||
}, | ||
}); | ||
clearTimeout(autoDenyTimeoutId_1); | ||
autoDenyTimeoutId_1 = null; | ||
if (onPushPerfomedAction_1 === false) { | ||
accept(); | ||
} | ||
if (shouldAcceptRequest_1 === false && denyReason_1 != null) { | ||
process.kill(); | ||
gitStream.end(); | ||
return reject(new Error(denyReason_1)); | ||
} | ||
// else just let the command complete | ||
return undefined; | ||
} | ||
// do nothing | ||
return undefined; | ||
}); | ||
process.stdout.on("close", function () { return resolve(gitStream.end()); }); | ||
@@ -75,0 +82,0 @@ }); |
{ | ||
"name": "@ethicdevs/fastify-git-server", | ||
"version": "1.4.2", | ||
"version": "1.4.3", | ||
"description": "A Fastify plugin to easily make one/many Git repositories available for clone/fetch/push.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -39,72 +39,82 @@ // std | ||
return new Promise((resolve, reject) => { | ||
if (opts.withSideBandMessages === true && opts.onPush != null) { | ||
let onPushPerfomedAction: boolean = false; | ||
let shouldAcceptRequest: boolean = false; | ||
let denyReason: null | string = null; | ||
const safePackType = safeServiceToPackType(packType); | ||
const process = spawnGitCmd([safePackType, GIT_STATELESS_RPC_FLAG]); | ||
const accept = () => { | ||
onPushPerfomedAction = true; | ||
shouldAcceptRequest = true; | ||
logTrace("accept was called."); | ||
}; | ||
request.raw.pipe(process.stdin, { end: false }); | ||
const deny = (reason: string) => { | ||
onPushPerfomedAction = true; | ||
shouldAcceptRequest = false; | ||
denyReason = reason; | ||
logTrace("deny was called. reason:", reason); | ||
}; | ||
process.stdout.on("data", (chunk) => gitStream.write(chunk)); | ||
// protect against miss-implemented onPush by automatically denying the | ||
// request in case onPush hook does not reply after 30 seconds. | ||
let autoDenyTimeoutId: null | NodeJS.Timer = setTimeout(() => { | ||
if (autoDenyTimeoutId == null) { | ||
return undefined; | ||
} | ||
if (autoDenyTimeoutId != null) { | ||
clearTimeout(autoDenyTimeoutId); | ||
autoDenyTimeoutId = null; | ||
} | ||
return deny( | ||
`onPush did not respond within the allowed ${ON_PUSH_TIMEOUT_MS} seconds.`, | ||
); | ||
}, ON_PUSH_TIMEOUT_MS); | ||
process.stdout.once("data", () => { | ||
if (opts.withSideBandMessages === true && opts.onPush != null) { | ||
let onPushPerfomedAction: boolean = false; | ||
let shouldAcceptRequest: boolean = false; | ||
let denyReason: null | string = null; | ||
// ask client for resolution about what to do + possibility to write to | ||
// the side band messages stream. | ||
opts.onPush({ | ||
type: "push", | ||
message: new GitServerMessage(gitStream, accept, deny), | ||
data: { | ||
packType, | ||
repoDiskPath: cwd, | ||
repoSlug, | ||
request, | ||
requestMethod, | ||
requestType, | ||
username, | ||
}, | ||
}); | ||
const accept = () => { | ||
onPushPerfomedAction = true; | ||
shouldAcceptRequest = true; | ||
logTrace("accept was called."); | ||
}; | ||
clearTimeout(autoDenyTimeoutId); | ||
autoDenyTimeoutId = null; | ||
const deny = (reason: string) => { | ||
onPushPerfomedAction = true; | ||
shouldAcceptRequest = false; | ||
denyReason = reason; | ||
logTrace("deny was called. reason:", reason); | ||
}; | ||
if (onPushPerfomedAction === false) { | ||
accept(); | ||
} | ||
// protect against miss-implemented onPush by automatically denying the | ||
// request in case onPush hook does not reply after 30 seconds. | ||
let autoDenyTimeoutId: null | NodeJS.Timer = setTimeout(() => { | ||
if (autoDenyTimeoutId == null) { | ||
return undefined; | ||
} | ||
if (autoDenyTimeoutId != null) { | ||
clearTimeout(autoDenyTimeoutId); | ||
autoDenyTimeoutId = null; | ||
} | ||
return deny( | ||
`onPush did not respond within the allowed ${ON_PUSH_TIMEOUT_MS} seconds.`, | ||
); | ||
}, ON_PUSH_TIMEOUT_MS); | ||
if (shouldAcceptRequest === false && denyReason != null) { | ||
gitStream.end(); | ||
return reject(new Error(denyReason)); | ||
// ask client for resolution about what to do + possibility to write to | ||
// the side band messages stream. | ||
opts.onPush({ | ||
type: "push", | ||
message: new GitServerMessage(gitStream, accept, deny), | ||
data: { | ||
packType, | ||
repoDiskPath: cwd, | ||
repoSlug, | ||
request, | ||
requestMethod, | ||
requestType, | ||
username, | ||
}, | ||
}); | ||
clearTimeout(autoDenyTimeoutId); | ||
autoDenyTimeoutId = null; | ||
if (onPushPerfomedAction === false) { | ||
accept(); | ||
} | ||
if (shouldAcceptRequest === false && denyReason != null) { | ||
process.kill(); | ||
gitStream.end(); | ||
return reject(new Error(denyReason)); | ||
} | ||
// else just let the command complete | ||
return undefined; | ||
} | ||
} | ||
const safePackType = safeServiceToPackType(packType); | ||
const process = spawnGitCmd([safePackType, GIT_STATELESS_RPC_FLAG]); | ||
// do nothing | ||
return undefined; | ||
}); | ||
request.raw.pipe(process.stdin, { end: false }); | ||
process.stdout.on("data", (chunk) => gitStream.write(chunk)); | ||
process.stdout.on("close", () => resolve(gitStream.end())); | ||
}); | ||
} |
52364
1042