diff --git a/src/proxy/chain.ts b/src/proxy/chain.ts index 2760645b9..cab32f5c4 100644 --- a/src/proxy/chain.ts +++ b/src/proxy/chain.ts @@ -19,12 +19,12 @@ import { Request, Response } from 'express'; import { PluginLoader } from '../plugin'; import { Action, RequestType, PushType } from './actions'; import * as proc from './processors'; -import { Processor } from './processors/types'; +import { ProcessorExec } from './processors/types'; import { attemptAutoApproval, attemptAutoRejection } from './actions/autoActions'; import { handleErrorAndLog } from '../utils/errors'; import { createProgressWriter } from './sideband'; -const branchPushChain: Processor['exec'][] = [ +const branchPushChain: ProcessorExec[] = [ proc.push.resolveUserFromToken, proc.push.checkEmptyBranch, proc.push.checkRepoInAuthorisedList, @@ -42,7 +42,7 @@ const branchPushChain: Processor['exec'][] = [ proc.push.blockForAuth, ]; -const tagPushChain: Processor['exec'][] = [ +const tagPushChain: ProcessorExec[] = [ proc.push.checkRepoInAuthorisedList, proc.push.checkUserPushPermission, proc.push.checkIfWaitingAuth, @@ -53,12 +53,34 @@ const tagPushChain: Processor['exec'][] = [ proc.push.blockForAuth, ]; -const pullActionChain: Processor['exec'][] = [proc.push.checkRepoInAuthorisedList]; +const pullActionChain: ProcessorExec[] = [proc.push.checkRepoInAuthorisedList]; -const defaultActionChain: Processor['exec'][] = [proc.push.checkRepoInAuthorisedList]; +const defaultActionChain: ProcessorExec[] = [proc.push.checkRepoInAuthorisedList]; let pluginsInserted = false; +/** + * Compose a single error message from all failed steps, so that the git + * client displays every rejection reason for the push. + * @param {Action} action The action whose failed steps are reported. + * @return {string | undefined} The combined message, or undefined when there + * are fewer than two failed steps (the single step message is kept as-is). + */ +const composeErrorMessage = (action: Action): string | undefined => { + const messages = (action.steps ?? []) + .filter((step) => step.error && step.errorMessage) + .map((step) => (step.errorMessage as string).trim()); + + if (messages.length < 2) { + return undefined; + } + + return ( + `The following ${messages.length} checks failed:\n\n` + + messages.map((message, i) => `${i + 1}. ${message}`).join('\n\n') + ); +}; + const stepProgressLabels: Record = { 'checkEmptyBranch.exec': 'Checking for empty branch', 'checkRepoInAuthorisedList.exec': 'Checking repository is authorised', @@ -78,11 +100,11 @@ const stepProgressLabels: Record = { /** * Obtain the message to display before a chain step. - * @param {Processor['exec']} fn The chain step about to be executed. + * @param {ProcessorExec} fn The chain step about to be executed. * @return {string} The message to display. */ -const getProgressMessage = (fn: Processor['exec']): string => { - const displayName = (fn as { displayName?: string }).displayName; +const getProgressMessage = (fn: ProcessorExec): string => { + const { displayName } = fn; if (displayName && stepProgressLabels[displayName]) { return stepProgressLabels[displayName]; } @@ -106,22 +128,57 @@ export const executeChain = async (req: Request, res: Response): Promise // 3) Select the correct chain now that action.actionType is set const actionFns = await getChain(action); + let collectedErrors = false; const progress = createProgressWriter(res, action); // 4) Execute each step in the selected chain for (const fn of actionFns) { - if (progress.active && action.continue()) { - progress.message(`${getProgressMessage(fn)}...`); + // a push that already failed checks must not be queued for approval + if (fn === proc.push.blockForAuth && !action.continue()) { + break; } + + progress.message(`${getProgressMessage(fn)}...`); + + const stepsBefore = action.steps?.length ?? 0; action = await fn(req, action); - if (!action.continue() || action.allowPush) { + + if (action.allowPush) { break; - } else if (fn === proc.push.pullRemote) { + } + + if (!action.continue()) { + if (action.blocked) { + break; + } + + const failedNow = (action.steps ?? []).slice(stepsBefore).some((step) => step.error); + if (failedNow) { + // collectible steps have their failures can report all their + // rejection reasons at once, non-collectible steps fail immediately + if (!fn.isCollectible) { + break; + } + collectedErrors = true; + } else if (!collectedErrors) { + // error that predates the chain (e.g. produced while parsing the push) + break; + } + } + + if (fn === proc.push.pullRemote) { //if the pull was successful then record the fact we need to clean it up again // pullRemote should cleanup unsuccessful clones itself checkoutCleanUpRequired = true; } } + + if (collectedErrors) { + const combinedMessage = composeErrorMessage(action); + if (combinedMessage) { + action.errorMessage = combinedMessage; + } + } } catch (error: unknown) { const msg = handleErrorAndLog(error, 'An unexpected error occurred when executing the chain'); action.error = true; @@ -134,7 +191,8 @@ export const executeChain = async (req: Request, res: Response): Promise action = await proc.post.audit(req, action); - if (action.autoApproved) { + // a push that failed a later check must not be auto-approved + if (action.autoApproved && !action.error) { await attemptAutoApproval(action); } else if (action.autoRejected) { await attemptAutoRejection(action); @@ -150,7 +208,7 @@ export const executeChain = async (req: Request, res: Response): Promise */ let chainPluginLoader: PluginLoader; -export const getChain = async (action: Action): Promise => { +export const getChain = async (action: Action): Promise => { if (chainPluginLoader === undefined) { console.error( 'Plugin loader was not initialized! This is an application error. Please report it to the GitProxy maintainers. Skipping plugins...', diff --git a/src/proxy/processors/push-action/checkAuthorEmails.ts b/src/proxy/processors/push-action/checkAuthorEmails.ts index 150e8bed7..a0535fa4e 100644 --- a/src/proxy/processors/push-action/checkAuthorEmails.ts +++ b/src/proxy/processors/push-action/checkAuthorEmails.ts @@ -73,5 +73,6 @@ const exec = async (_req: Request, action: Action): Promise => { }; exec.displayName = 'checkAuthorEmails.exec'; +exec.isCollectible = true; export { exec }; diff --git a/src/proxy/processors/push-action/checkMessages.ts b/src/proxy/processors/push-action/checkMessages.ts index e1b111582..05ed2a2ea 100644 --- a/src/proxy/processors/push-action/checkMessages.ts +++ b/src/proxy/processors/push-action/checkMessages.ts @@ -92,5 +92,6 @@ const exec = async (_req: Request, action: Action): Promise => { }; exec.displayName = 'checkMessages.exec'; +exec.isCollectible = true; export { exec }; diff --git a/src/proxy/processors/push-action/gitleaks.ts b/src/proxy/processors/push-action/gitleaks.ts index 44b227ac8..abbc582b6 100644 --- a/src/proxy/processors/push-action/gitleaks.ts +++ b/src/proxy/processors/push-action/gitleaks.ts @@ -197,5 +197,6 @@ const exec = async (_req: Request, action: Action): Promise => { }; exec.displayName = 'gitleaks.exec'; +exec.isCollectible = true; export { exec }; diff --git a/src/proxy/processors/push-action/preReceive.ts b/src/proxy/processors/push-action/preReceive.ts index 84a7eca3d..8f6360269 100644 --- a/src/proxy/processors/push-action/preReceive.ts +++ b/src/proxy/processors/push-action/preReceive.ts @@ -98,5 +98,6 @@ const exec = async ( }; exec.displayName = 'executeExternalPreReceiveHook.exec'; +exec.isCollectible = true; export { exec }; diff --git a/src/proxy/processors/push-action/scanDiff.ts b/src/proxy/processors/push-action/scanDiff.ts index e6fceb0e9..a9cfa5d78 100644 --- a/src/proxy/processors/push-action/scanDiff.ts +++ b/src/proxy/processors/push-action/scanDiff.ts @@ -205,5 +205,6 @@ const exec = async (_req: Request, action: Action): Promise => { }; exec.displayName = 'scanDiff.exec'; +exec.isCollectible = true; export { exec }; diff --git a/src/proxy/processors/types.ts b/src/proxy/processors/types.ts index ba40c8138..550255761 100644 --- a/src/proxy/processors/types.ts +++ b/src/proxy/processors/types.ts @@ -19,8 +19,20 @@ import { Request } from 'express'; import { Question } from '../../config/generated/config'; import { Action } from '../actions'; +export interface ProcessorExec { + (req: Request, action: Action): Promise; + /** Used for progress and step reporting (e.g. 'checkMessages.exec'). */ + readonly displayName?: string; + /** + * Failures in collectible steps are recoverable by the user. Failures are + * recorded and all rejection reasons are reported at the end of the chain. + * When false or unset, a failure stops the chain immediately. + */ + readonly isCollectible?: boolean; +} + export interface Processor { - exec(req: Request, action: Action): Promise; + exec: ProcessorExec; metadata: ProcessorMetadata; } diff --git a/test/chain.test.ts b/test/chain.test.ts index 7852103cc..24612ad8d 100644 --- a/test/chain.test.ts +++ b/test/chain.test.ts @@ -27,24 +27,27 @@ const mockLoader = { ], }; +const collectibleFn = () => Object.assign(vi.fn(), { isCollectible: true }); +const nonCollectibleFn = () => Object.assign(vi.fn(), { isCollectible: false }); + const initMockPushProcessors = () => { return { - checkEmptyBranch: vi.fn(), - checkRepoInAuthorisedList: vi.fn(), - checkMessages: vi.fn(), - checkAuthorEmails: vi.fn(), - checkUserPushPermission: vi.fn(), - resolveUserFromToken: vi.fn(), - checkIfWaitingAuth: vi.fn(), - checkHiddenCommits: vi.fn(), - pullRemote: vi.fn(), - writePack: vi.fn(), - preReceive: vi.fn(), - getDiff: vi.fn(), - gitleaks: vi.fn(), - clearBareClone: vi.fn(), - scanDiff: vi.fn(), - blockForAuth: vi.fn(), + checkEmptyBranch: nonCollectibleFn(), + checkRepoInAuthorisedList: nonCollectibleFn(), + checkMessages: collectibleFn(), + checkAuthorEmails: collectibleFn(), + checkUserPushPermission: nonCollectibleFn(), + resolveUserFromToken: nonCollectibleFn(), + checkIfWaitingAuth: nonCollectibleFn(), + checkHiddenCommits: nonCollectibleFn(), + pullRemote: nonCollectibleFn(), + writePack: nonCollectibleFn(), + preReceive: collectibleFn(), + getDiff: nonCollectibleFn(), + gitleaks: collectibleFn(), + clearBareClone: nonCollectibleFn(), + scanDiff: collectibleFn(), + blockForAuth: nonCollectibleFn(), }; }; @@ -455,6 +458,96 @@ describe('proxy chain', function () { expect(consoleErrorSpy).toHaveBeenCalledWith('Error during auto-rejection: Database error'); }); + describe('error collection', () => { + // simulates a real processor failing + const failStep = (message: string) => async (req: any, action: any) => { + action.steps = [...(action.steps ?? []), { error: true, errorMessage: message }]; + action.error = true; + action.continue = () => false; + return action; + }; + + const setupPushAction = () => { + const action = { + type: 'push', + steps: [], + continue: () => true, + allowPush: false, + }; + mockPreProcessors.parseAction.mockResolvedValue(action); + mockPreProcessors.parsePush.mockResolvedValue(action); + return action; + }; + + it('should continue past recoverable failures and run the remaining checks', async () => { + setupPushAction(); + mockPushProcessors.checkMessages.mockImplementation(failStep('bad commit message')); + + const result = await chain.executeChain({}); + + // all later steps still ran + expect(mockPushProcessors.checkAuthorEmails).toHaveBeenCalled(); + expect(mockPushProcessors.checkUserPushPermission).toHaveBeenCalled(); + expect(mockPushProcessors.pullRemote).toHaveBeenCalled(); + expect(mockPushProcessors.writePack).toHaveBeenCalled(); + expect(mockPushProcessors.getDiff).toHaveBeenCalled(); + expect(mockPushProcessors.gitleaks).toHaveBeenCalled(); + expect(mockPushProcessors.scanDiff).toHaveBeenCalled(); + + // but a failing push is never queued for approval + expect(mockPushProcessors.blockForAuth).not.toHaveBeenCalled(); + expect(result.error).toBe(true); + }); + + it('should report every collected failure in a single combined message', async () => { + setupPushAction(); + mockPushProcessors.checkMessages.mockImplementation(failStep('bad commit message')); + mockPushProcessors.scanDiff.mockImplementation(failStep('secret detected in diff')); + + const result = await chain.executeChain({}); + + expect(result.errorMessage).toContain('The following 2 checks failed:'); + expect(result.errorMessage).toContain('bad commit message'); + expect(result.errorMessage).toContain('secret detected in diff'); + }); + + it('should keep the original message when only one collectible step fails', async () => { + setupPushAction(); + mockPushProcessors.checkAuthorEmails.mockImplementation(failStep('illegal author email')); + + const result = await chain.executeChain({}); + + expect(result.errorMessage).toBeUndefined(); // addStep is mocked so chain must not overwrite + expect(result.steps).toHaveLength(1); + expect(result.steps[0].errorMessage).toBe('illegal author email'); + }); + + it('should still stop immediately when a fatal step fails', async () => { + setupPushAction(); + mockPushProcessors.checkUserPushPermission.mockImplementation(failStep('no push permission')); + + await chain.executeChain({}); + + expect(mockPushProcessors.pullRemote).not.toHaveBeenCalled(); + expect(mockPushProcessors.scanDiff).not.toHaveBeenCalled(); + expect(mockPushProcessors.blockForAuth).not.toHaveBeenCalled(); + }); + + it('should not auto-approve a push that collected failures', async () => { + setupPushAction(); + mockPushProcessors.checkMessages.mockImplementation(failStep('bad commit message')); + mockPushProcessors.preReceive.mockImplementation(async (req: any, action: any) => { + action.autoApproved = true; + return action; + }); + const dbSpy = vi.spyOn(db, 'authorise'); + + await chain.executeChain({}); + + expect(dbSpy).not.toHaveBeenCalled(); + }); + }); + it('returns pullActionChain for pull actions', async () => { const action = new Action( '1', diff --git a/website/docs/configuration/reference.mdx b/website/docs/configuration/reference.mdx index 3c4167027..9a56cf0e2 100644 --- a/website/docs/configuration/reference.mdx +++ b/website/docs/configuration/reference.mdx @@ -17,8 +17,7 @@ description: JSON schema reference documentation for GitProxy
- 1. [Optional] Property GitProxy configuration file > proxyUrl - + 1. [Optional] Property GitProxy configuration file > proxyUrl
@@ -27,15 +26,14 @@ description: JSON schema reference documentation for GitProxy | **Type** | `string` | | **Required** | No | -**Description:** Deprecated: Used in early versions of git proxy to configure the remote host that traffic is proxied to. In later versions, the repository URL is used to determine the domain proxied, allowing multiple hosts to be proxied by one instance. +**Description:** Deprecated: Used in early versions of GitProxy to configure the remote host that traffic is proxied to. In later versions, the repository URL is used to determine the domain proxied, allowing multiple hosts to be proxied by one instance.
- 2. [Optional] Property GitProxy configuration file > cookieSecret - + 2. [Optional] Property GitProxy configuration file > cookieSecret
@@ -49,8 +47,7 @@ description: JSON schema reference documentation for GitProxy
- 3. [Optional] Property GitProxy configuration file > sessionMaxAgeHours - + 3. [Optional] Property GitProxy configuration file > sessionMaxAgeHours
@@ -64,8 +61,7 @@ description: JSON schema reference documentation for GitProxy
- 4. [Optional] Property GitProxy configuration file > serverPort - + 4. [Optional] Property GitProxy configuration file > serverPort
@@ -81,8 +77,7 @@ description: JSON schema reference documentation for GitProxy
- 5. [Optional] Property GitProxy configuration file > httpsServerPort - + 5. [Optional] Property GitProxy configuration file > httpsServerPort
@@ -98,8 +93,7 @@ description: JSON schema reference documentation for GitProxy
- 6. [Optional] Property GitProxy configuration file > uiHost - + 6. [Optional] Property GitProxy configuration file > uiHost
@@ -115,8 +109,7 @@ description: JSON schema reference documentation for GitProxy
- 7. [Optional] Property GitProxy configuration file > uiPort - + 7. [Optional] Property GitProxy configuration file > uiPort
@@ -132,8 +125,7 @@ description: JSON schema reference documentation for GitProxy
- 8. [Optional] Property GitProxy configuration file > httpsUiPort - + 8. [Optional] Property GitProxy configuration file > httpsUiPort
@@ -149,8 +141,7 @@ description: JSON schema reference documentation for GitProxy
- 9. [Optional] Property GitProxy configuration file > api - + 9. [Optional] Property GitProxy configuration file > api
@@ -164,8 +155,7 @@ description: JSON schema reference documentation for GitProxy
- 9.1. [Optional] Property GitProxy configuration file > api > ls - + 9.1. [Optional] Property GitProxy configuration file > api > ls
@@ -179,8 +169,7 @@ description: JSON schema reference documentation for GitProxy
- 9.1.1. [Optional] Property GitProxy configuration file > api > ls > userInADGroup - + 9.1.1. [Optional] Property GitProxy configuration file > api > ls > userInADGroup
@@ -205,8 +194,7 @@ description: JSON schema reference documentation for GitProxy
- 9.2. [Optional] Property GitProxy configuration file > api > gitleaks - + 9.2. [Optional] Property GitProxy configuration file > api > gitleaks
@@ -220,8 +208,7 @@ description: JSON schema reference documentation for GitProxy
- 9.2.1. [Optional] Property GitProxy configuration file > api > gitleaks > enabled - + 9.2.1. [Optional] Property GitProxy configuration file > api > gitleaks > enabled
@@ -235,8 +222,7 @@ description: JSON schema reference documentation for GitProxy
- 9.2.2. [Optional] Property GitProxy configuration file > api > gitleaks > ignoreGitleaksAllow - + 9.2.2. [Optional] Property GitProxy configuration file > api > gitleaks > ignoreGitleaksAllow
@@ -250,8 +236,7 @@ description: JSON schema reference documentation for GitProxy
- 9.2.3. [Optional] Property GitProxy configuration file > api > gitleaks > noColor - + 9.2.3. [Optional] Property GitProxy configuration file > api > gitleaks > noColor
@@ -265,8 +250,7 @@ description: JSON schema reference documentation for GitProxy
- 9.2.4. [Optional] Property GitProxy configuration file > api > gitleaks > configPath - + 9.2.4. [Optional] Property GitProxy configuration file > api > gitleaks > configPath
@@ -286,8 +270,7 @@ description: JSON schema reference documentation for GitProxy
- 10. [Optional] Property GitProxy configuration file > commitConfig - + 10. [Optional] Property GitProxy configuration file > commitConfig
@@ -303,8 +286,7 @@ description: JSON schema reference documentation for GitProxy
- 10.1. [Optional] Property GitProxy configuration file > commitConfig > author - + 10.1. [Optional] Property GitProxy configuration file > commitConfig > author
@@ -320,8 +302,7 @@ description: JSON schema reference documentation for GitProxy
- 10.1.1. [Optional] Property GitProxy configuration file > commitConfig > author > email - + 10.1.1. [Optional] Property GitProxy configuration file > commitConfig > author > email
@@ -337,8 +318,7 @@ description: JSON schema reference documentation for GitProxy
- 10.1.1.1. [Optional] Property GitProxy configuration file > commitConfig > author > email > local - + 10.1.1.1. [Optional] Property GitProxy configuration file > commitConfig > author > email > local
@@ -354,8 +334,7 @@ description: JSON schema reference documentation for GitProxy
- 10.1.1.1.1. [Optional] Property GitProxy configuration file > commitConfig > author > email > local > block - + 10.1.1.1.1. [Optional] Property GitProxy configuration file > commitConfig > author > email > local > block
@@ -376,8 +355,7 @@ description: JSON schema reference documentation for GitProxy
- 10.1.1.2. [Optional] Property GitProxy configuration file > commitConfig > author > email > domain - + 10.1.1.2. [Optional] Property GitProxy configuration file > commitConfig > author > email > domain
@@ -393,8 +371,7 @@ description: JSON schema reference documentation for GitProxy
- 10.1.1.2.1. [Optional] Property GitProxy configuration file > commitConfig > author > email > domain > allow - + 10.1.1.2.1. [Optional] Property GitProxy configuration file > commitConfig > author > email > domain > allow
@@ -421,8 +398,7 @@ description: JSON schema reference documentation for GitProxy
- 10.2. [Optional] Property GitProxy configuration file > commitConfig > message - + 10.2. [Optional] Property GitProxy configuration file > commitConfig > message
@@ -438,8 +414,7 @@ description: JSON schema reference documentation for GitProxy
- 10.2.1. [Optional] Property GitProxy configuration file > commitConfig > message > block - + 10.2.1. [Optional] Property GitProxy configuration file > commitConfig > message > block
@@ -455,8 +430,7 @@ description: JSON schema reference documentation for GitProxy
- 10.2.1.1. [Optional] Property GitProxy configuration file > commitConfig > message > block > literals - + 10.2.1.1. [Optional] Property GitProxy configuration file > commitConfig > message > block > literals
@@ -485,8 +459,7 @@ description: JSON schema reference documentation for GitProxy
- 10.2.1.2. [Optional] Property GitProxy configuration file > commitConfig > message > block > patterns - + 10.2.1.2. [Optional] Property GitProxy configuration file > commitConfig > message > block > patterns
@@ -521,8 +494,7 @@ description: JSON schema reference documentation for GitProxy
- 10.3. [Optional] Property GitProxy configuration file > commitConfig > diff - + 10.3. [Optional] Property GitProxy configuration file > commitConfig > diff
@@ -538,8 +510,7 @@ description: JSON schema reference documentation for GitProxy
- 10.3.1. [Optional] Property GitProxy configuration file > commitConfig > diff > block - + 10.3.1. [Optional] Property GitProxy configuration file > commitConfig > diff > block
@@ -555,8 +526,7 @@ description: JSON schema reference documentation for GitProxy
- 10.3.1.1. [Optional] Property GitProxy configuration file > commitConfig > diff > block > literals - + 10.3.1.1. [Optional] Property GitProxy configuration file > commitConfig > diff > block > literals
@@ -585,8 +555,7 @@ description: JSON schema reference documentation for GitProxy
- 10.3.1.2. [Optional] Property GitProxy configuration file > commitConfig > diff > block > patterns - + 10.3.1.2. [Optional] Property GitProxy configuration file > commitConfig > diff > block > patterns
@@ -616,8 +585,7 @@ description: JSON schema reference documentation for GitProxy
- 10.3.1.3. [Optional] Property GitProxy configuration file > commitConfig > diff > block > providers - + 10.3.1.3. [Optional] Property GitProxy configuration file > commitConfig > diff > block > providers
@@ -633,8 +601,7 @@ description: JSON schema reference documentation for GitProxy
- 10.3.1.3.1. Property GitProxy configuration file > commitConfig > diff > block > providers > additionalProperties - + 10.3.1.3.1. Property GitProxy configuration file > commitConfig > diff > block > providers > additionalProperties
@@ -660,8 +627,7 @@ description: JSON schema reference documentation for GitProxy
- 11. [Optional] Property GitProxy configuration file > attestationConfig - + 11. [Optional] Property GitProxy configuration file > attestationConfig
@@ -677,8 +643,7 @@ description: JSON schema reference documentation for GitProxy
- 11.1. [Optional] Property GitProxy configuration file > attestationConfig > questions - + 11.1. [Optional] Property GitProxy configuration file > attestationConfig > questions
@@ -707,8 +672,7 @@ description: JSON schema reference documentation for GitProxy
- 11.1.1.1. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > label - + 11.1.1.1. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > label
@@ -726,8 +690,7 @@ description: JSON schema reference documentation for GitProxy
- 11.1.1.2. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip - + 11.1.1.2. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip
@@ -743,8 +706,7 @@ description: JSON schema reference documentation for GitProxy
- 11.1.1.2.1. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip > text - + 11.1.1.2.1. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip > text
@@ -760,8 +722,7 @@ description: JSON schema reference documentation for GitProxy
- 11.1.1.2.2. [Optional] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip > links - + 11.1.1.2.2. [Optional] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip > links
@@ -786,8 +747,7 @@ description: JSON schema reference documentation for GitProxy
- 11.1.1.2.2.1.1. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip > links > links items > text - + 11.1.1.2.2.1.1. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip > links > links items > text
@@ -803,8 +763,7 @@ description: JSON schema reference documentation for GitProxy
- 11.1.1.2.2.1.2. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip > links > links items > url - + 11.1.1.2.2.1.2. [Required] Property GitProxy configuration file > attestationConfig > questions > Question > tooltip > links > links items > url
@@ -833,8 +792,7 @@ description: JSON schema reference documentation for GitProxy
- 12. [Optional] Property GitProxy configuration file > domains - + 12. [Optional] Property GitProxy configuration file > domains
@@ -844,12 +802,11 @@ description: JSON schema reference documentation for GitProxy | **Required** | No | | **Additional properties** | Any type allowed | -**Description:** Provide custom URLs for the git proxy interfaces in case it cannot determine its own URL +**Description:** Provide custom URLs for the GitProxy interfaces in case it cannot determine its own URL
- 12.1. [Optional] Property GitProxy configuration file > domains > proxy - + 12.1. [Optional] Property GitProxy configuration file > domains > proxy
@@ -868,8 +825,7 @@ description: JSON schema reference documentation for GitProxy
- 12.2. [Optional] Property GitProxy configuration file > domains > service - + 12.2. [Optional] Property GitProxy configuration file > domains > service
@@ -891,8 +847,7 @@ description: JSON schema reference documentation for GitProxy
- 13. [Optional] Property GitProxy configuration file > rateLimit - + 13. [Optional] Property GitProxy configuration file > rateLimit
@@ -906,8 +861,7 @@ description: JSON schema reference documentation for GitProxy
- 13.1. [Required] Property GitProxy configuration file > rateLimit > windowMs - + 13.1. [Required] Property GitProxy configuration file > rateLimit > windowMs
@@ -923,8 +877,7 @@ description: JSON schema reference documentation for GitProxy
- 13.2. [Required] Property GitProxy configuration file > rateLimit > limit - + 13.2. [Required] Property GitProxy configuration file > rateLimit > limit
@@ -940,8 +893,7 @@ description: JSON schema reference documentation for GitProxy
- 13.3. [Optional] Property GitProxy configuration file > rateLimit > statusCode - + 13.3. [Optional] Property GitProxy configuration file > rateLimit > statusCode
@@ -957,8 +909,7 @@ description: JSON schema reference documentation for GitProxy
- 13.4. [Optional] Property GitProxy configuration file > rateLimit > message - + 13.4. [Optional] Property GitProxy configuration file > rateLimit > message
@@ -977,8 +928,7 @@ description: JSON schema reference documentation for GitProxy
- 14. [Optional] Property GitProxy configuration file > privateOrganizations - + 14. [Optional] Property GitProxy configuration file > privateOrganizations
@@ -994,8 +944,7 @@ description: JSON schema reference documentation for GitProxy
- 15. [Optional] Property GitProxy configuration file > urlShortener - + 15. [Optional] Property GitProxy configuration file > urlShortener
@@ -1011,8 +960,7 @@ description: JSON schema reference documentation for GitProxy
- 16. [Optional] Property GitProxy configuration file > contactEmail - + 16. [Optional] Property GitProxy configuration file > contactEmail
@@ -1028,8 +976,7 @@ description: JSON schema reference documentation for GitProxy
- 17. [Optional] Property GitProxy configuration file > csrfProtection - + 17. [Optional] Property GitProxy configuration file > csrfProtection
@@ -1045,8 +992,7 @@ description: JSON schema reference documentation for GitProxy
- 18. [Optional] Property GitProxy configuration file > plugins - + 19. [Optional] Property GitProxy configuration file > plugins
@@ -1061,7 +1007,7 @@ description: JSON schema reference documentation for GitProxy | ------------------------------- | ----------- | | [plugins items](#plugins_items) | - | -### 18.1. GitProxy configuration file > plugins > plugins items +### 19.1. GitProxy configuration file > plugins > plugins items | | | | ------------ | -------- | @@ -1073,8 +1019,7 @@ description: JSON schema reference documentation for GitProxy
- 19. [Optional] Property GitProxy configuration file > authorisedList - + 20. [Optional] Property GitProxy configuration file > authorisedList
@@ -1089,7 +1034,7 @@ description: JSON schema reference documentation for GitProxy | --------------------------------------- | ----------- | | [authorisedRepo](#authorisedList_items) | - | -### 19.1. GitProxy configuration file > authorisedList > authorisedRepo +### 20.1. GitProxy configuration file > authorisedList > authorisedRepo | | | | ------------------------- | ---------------------------- | @@ -1100,8 +1045,7 @@ description: JSON schema reference documentation for GitProxy
- 19.1.1. [Required] Property GitProxy configuration file > authorisedList > authorisedList items > project - + 20.1.1. [Required] Property GitProxy configuration file > authorisedList > authorisedList items > project
@@ -1115,8 +1059,7 @@ description: JSON schema reference documentation for GitProxy
- 19.1.2. [Required] Property GitProxy configuration file > authorisedList > authorisedList items > name - + 20.1.2. [Required] Property GitProxy configuration file > authorisedList > authorisedList items > name
@@ -1130,8 +1073,7 @@ description: JSON schema reference documentation for GitProxy
- 19.1.3. [Required] Property GitProxy configuration file > authorisedList > authorisedList items > url - + 20.1.3. [Required] Property GitProxy configuration file > authorisedList > authorisedList items > url
@@ -1148,8 +1090,40 @@ description: JSON schema reference documentation for GitProxy
- 20. [Optional] Property GitProxy configuration file > sink + 21. [Optional] Property GitProxy configuration file > limits + +
+ +| | | +| ------------------------- | ----------- | +| **Type** | `object` | +| **Required** | No | +| **Additional properties** | Not allowed | + +**Description:** Configuration for various limits + +
+ + 21.1. [Optional] Property GitProxy configuration file > limits > maxPackSizeBytes + +
+ +| | | +| ------------ | -------- | +| **Type** | `number` | +| **Required** | No | + +**Description:** Maximum size of a pack file in bytes (default 1GB) +
+
+ +
+
+ +
+ + 22. [Optional] Property GitProxy configuration file > sink
@@ -1164,7 +1138,7 @@ description: JSON schema reference documentation for GitProxy | ------------------------------- | ---------------------------------- | | [database](#sink_items) | Configuration entry for a database | -### 20.1. GitProxy configuration file > sink > database +### 22.1. GitProxy configuration file > sink > database | | | | ------------------------- | ---------------------- | @@ -1184,7 +1158,7 @@ description: JSON schema reference documentation for GitProxy
-#### 20.1.1. Property `GitProxy configuration file > sink > sink items > oneOf > item 0` +#### 22.1.1. Property `GitProxy configuration file > sink > sink items > oneOf > item 0` | | | | ------------------------- | ---------------- | @@ -1196,8 +1170,7 @@ description: JSON schema reference documentation for GitProxy
- 20.1.1.1. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > type - + 22.1.1.1. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > type
@@ -1213,8 +1186,7 @@ Specific value: `"mongo"`
- 20.1.1.2. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > enabled - + 22.1.1.2. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > enabled
@@ -1228,8 +1200,7 @@ Specific value: `"mongo"`
- 20.1.1.3. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > connectionString - + 22.1.1.3. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > connectionString
@@ -1245,8 +1216,7 @@ Specific value: `"mongo"`
- 20.1.1.4. [Optional] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > options - + 22.1.1.4. [Optional] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > options
@@ -1260,8 +1230,7 @@ Specific value: `"mongo"`
- 20.1.1.4.1. [Optional] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > options > authMechanismProperties - + 22.1.1.4.1. [Optional] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > options > authMechanismProperties
@@ -1273,8 +1242,7 @@ Specific value: `"mongo"`
- 20.1.1.4.1.1. [Optional] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > options > authMechanismProperties > AWS_CREDENTIAL_PROVIDER - + 22.1.1.4.1.1. [Optional] Property GitProxy configuration file > sink > sink items > oneOf > item 0 > options > authMechanismProperties > AWS_CREDENTIAL_PROVIDER
@@ -1297,7 +1265,7 @@ Specific value: `"mongo"`
-#### 20.1.2. Property `GitProxy configuration file > sink > sink items > oneOf > item 1` +#### 22.1.2. Property `GitProxy configuration file > sink > sink items > oneOf > item 1` | | | | ------------------------- | ---------------- | @@ -1309,8 +1277,7 @@ Specific value: `"mongo"`
- 20.1.2.1. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 1 > type - + 22.1.2.1. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 1 > type
@@ -1326,8 +1293,7 @@ Specific value: `"fs"`
- 20.1.2.2. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 1 > enabled - + 22.1.2.2. [Required] Property GitProxy configuration file > sink > sink items > oneOf > item 1 > enabled
@@ -1348,8 +1314,7 @@ Specific value: `"fs"`
- 21. [Optional] Property GitProxy configuration file > authentication - + 23. [Optional] Property GitProxy configuration file > authentication
@@ -1364,7 +1329,7 @@ Specific value: `"fs"` | ---------------------------------------------- | ------------------------------------------ | | [authenticationElement](#authentication_items) | Configuration for an authentication source | -### 21.1. GitProxy configuration file > authentication > authenticationElement +### 23.1. GitProxy configuration file > authentication > authenticationElement | | | | ------------------------- | ----------------------------------- | @@ -1386,7 +1351,7 @@ Specific value: `"fs"`
-#### 21.1.1. Property `GitProxy configuration file > authentication > authentication items > oneOf > Local Auth Config` +#### 23.1.1. Property `GitProxy configuration file > authentication > authentication items > oneOf > Local Auth Config` **Title:** Local Auth Config @@ -1400,8 +1365,7 @@ Specific value: `"fs"`
- 21.1.1.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Local Auth Config > type - + 23.1.1.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Local Auth Config > type
@@ -1417,8 +1381,7 @@ Specific value: `"local"`
- 21.1.1.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Local Auth Config > enabled - + 23.1.1.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Local Auth Config > enabled
@@ -1433,7 +1396,7 @@ Specific value: `"local"`
-#### 21.1.2. Property `GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config` +#### 23.1.2. Property `GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config` **Title:** Active Directory Auth Config @@ -1447,8 +1410,7 @@ Specific value: `"local"`
- 21.1.2.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > type - + 23.1.2.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > type
@@ -1464,8 +1426,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > enabled - + 23.1.2.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > enabled
@@ -1479,8 +1440,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adminGroup - + 23.1.2.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adminGroup
@@ -1496,8 +1456,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.4. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > userGroup - + 23.1.2.4. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > userGroup
@@ -1506,15 +1465,14 @@ Specific value: `"ActiveDirectory"` | **Type** | `string` | | **Required** | Yes | -**Description:** Group that indicates that a user should be able to login to the Git Proxy UI and can work as a reviewer +**Description:** Group that indicates that a user should be able to login to the GitProxy UI and can work as a reviewer
- 21.1.2.5. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > domain - + 23.1.2.5. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > domain
@@ -1530,8 +1488,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.6. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig - + 23.1.2.6. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig
@@ -1545,8 +1502,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.6.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > url - + 23.1.2.6.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > url
@@ -1562,8 +1518,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.6.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > baseDN - + 23.1.2.6.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > baseDN
@@ -1579,8 +1534,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.6.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > username - + 23.1.2.6.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > username
@@ -1596,8 +1550,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.6.4. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > password - + 23.1.2.6.4. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > password
@@ -1613,8 +1566,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.2.6.5. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > searchBase - + 23.1.2.6.5. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > Active Directory Auth Config > adConfig > searchBase
@@ -1634,7 +1586,7 @@ Specific value: `"ActiveDirectory"`
-#### 21.1.3. Property `GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config` +#### 23.1.3. Property `GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config` **Title:** Open ID Connect Auth Config @@ -1648,8 +1600,7 @@ Specific value: `"ActiveDirectory"`
- 21.1.3.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > type - + 23.1.3.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > type
@@ -1665,8 +1616,7 @@ Specific value: `"openidconnect"`
- 21.1.3.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > enabled - + 23.1.3.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > enabled
@@ -1680,8 +1630,7 @@ Specific value: `"openidconnect"`
- 21.1.3.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig - + 23.1.3.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig
@@ -1695,8 +1644,7 @@ Specific value: `"openidconnect"`
- 21.1.3.3.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > issuer - + 23.1.3.3.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > issuer
@@ -1710,8 +1658,7 @@ Specific value: `"openidconnect"`
- 21.1.3.3.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > clientID - + 23.1.3.3.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > clientID
@@ -1725,8 +1672,7 @@ Specific value: `"openidconnect"`
- 21.1.3.3.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > clientSecret - + 23.1.3.3.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > clientSecret
@@ -1740,8 +1686,7 @@ Specific value: `"openidconnect"`
- 21.1.3.3.4. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > callbackURL - + 23.1.3.3.4. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > callbackURL
@@ -1755,8 +1700,7 @@ Specific value: `"openidconnect"`
- 21.1.3.3.5. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > scope - + 23.1.3.3.5. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > Open ID Connect Auth Config > oidcConfig > scope
@@ -1774,7 +1718,7 @@ Specific value: `"openidconnect"`
-#### 21.1.4. Property `GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config` +#### 23.1.4. Property `GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config` **Title:** JWT Auth Config @@ -1788,8 +1732,7 @@ Specific value: `"openidconnect"`
- 21.1.4.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > type - + 23.1.4.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > type
@@ -1805,8 +1748,7 @@ Specific value: `"jwt"`
- 21.1.4.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > enabled - + 23.1.4.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > enabled
@@ -1820,8 +1762,7 @@ Specific value: `"jwt"`
- 21.1.4.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig - + 23.1.4.3. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig
@@ -1835,8 +1776,7 @@ Specific value: `"jwt"`
- 21.1.4.3.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > clientID - + 23.1.4.3.1. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > clientID
@@ -1850,8 +1790,7 @@ Specific value: `"jwt"`
- 21.1.4.3.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > authorityURL - + 23.1.4.3.2. [Required] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > authorityURL
@@ -1865,8 +1804,7 @@ Specific value: `"jwt"`
- 21.1.4.3.3. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > expectedAudience - + 23.1.4.3.3. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > expectedAudience
@@ -1880,8 +1818,7 @@ Specific value: `"jwt"`
- 21.1.4.3.4. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > roleMapping - + 23.1.4.3.4. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > roleMapping
@@ -1893,8 +1830,7 @@ Specific value: `"jwt"`
- 21.1.4.3.4.1. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > roleMapping > admin - + 23.1.4.3.4.1. [Optional] Property GitProxy configuration file > authentication > authentication items > oneOf > JWT Auth Config > jwtConfig > roleMapping > admin
@@ -1922,8 +1858,7 @@ Specific value: `"jwt"`
- 22. [Optional] Property GitProxy configuration file > tempPassword - + 24. [Optional] Property GitProxy configuration file > tempPassword
@@ -1937,8 +1872,7 @@ Specific value: `"jwt"`
- 22.1. [Optional] Property GitProxy configuration file > tempPassword > sendEmail - + 24.1. [Optional] Property GitProxy configuration file > tempPassword > sendEmail
@@ -1952,8 +1886,7 @@ Specific value: `"jwt"`
- 22.2. [Optional] Property GitProxy configuration file > tempPassword > emailConfig - + 24.2. [Optional] Property GitProxy configuration file > tempPassword > emailConfig
@@ -1973,8 +1906,7 @@ Specific value: `"jwt"`
- 23. [Optional] Property GitProxy configuration file > apiAuthentication - + 25. [Optional] Property GitProxy configuration file > apiAuthentication
@@ -1989,7 +1921,7 @@ Specific value: `"jwt"` | ------------------------------------------------- | ------------------------------------------ | | [authenticationElement](#apiAuthentication_items) | Configuration for an authentication source | -### 23.1. GitProxy configuration file > apiAuthentication > authenticationElement +### 25.1. GitProxy configuration file > apiAuthentication > authenticationElement | | | | ------------------------- | --------------------------------------------- | @@ -2005,8 +1937,7 @@ Specific value: `"jwt"`
- 24. [Optional] Property GitProxy configuration file > tls - + 26. [Optional] Property GitProxy configuration file > tls
@@ -2020,8 +1951,7 @@ Specific value: `"jwt"`
- 24.1. [Required] Property GitProxy configuration file > tls > enabled - + 26.1. [Required] Property GitProxy configuration file > tls > enabled
@@ -2035,8 +1965,7 @@ Specific value: `"jwt"`
- 24.2. [Required] Property GitProxy configuration file > tls > key - + 26.2. [Required] Property GitProxy configuration file > tls > key
@@ -2050,8 +1979,7 @@ Specific value: `"jwt"`
- 24.3. [Required] Property GitProxy configuration file > tls > cert - + 26.3. [Required] Property GitProxy configuration file > tls > cert
@@ -2068,8 +1996,7 @@ Specific value: `"jwt"`
- 25. [Optional] Property GitProxy configuration file > sslKeyPemPath - + 27. [Optional] Property GitProxy configuration file > sslKeyPemPath
@@ -2085,8 +2012,7 @@ Specific value: `"jwt"`
- 26. [Optional] Property GitProxy configuration file > sslCertPemPath - + 28. [Optional] Property GitProxy configuration file > sslCertPemPath
@@ -2102,8 +2028,7 @@ Specific value: `"jwt"`
- 27. [Optional] Property GitProxy configuration file > configurationSources - + 29. [Optional] Property GitProxy configuration file > configurationSources
@@ -2118,8 +2043,7 @@ Specific value: `"jwt"`
- 28. [Optional] Property GitProxy configuration file > uiRouteAuth - + 30. [Optional] Property GitProxy configuration file > uiRouteAuth
@@ -2133,8 +2057,7 @@ Specific value: `"jwt"`
- 28.1. [Optional] Property GitProxy configuration file > uiRouteAuth > enabled - + 30.1. [Optional] Property GitProxy configuration file > uiRouteAuth > enabled
@@ -2148,8 +2071,7 @@ Specific value: `"jwt"`
- 28.2. [Optional] Property GitProxy configuration file > uiRouteAuth > rules - + 30.2. [Optional] Property GitProxy configuration file > uiRouteAuth > rules
@@ -2162,7 +2084,7 @@ Specific value: `"jwt"` | ----------------------------------------- | ----------- | | [routeAuthRule](#uiRouteAuth_rules_items) | - | -#### 28.2.1. GitProxy configuration file > uiRouteAuth > rules > routeAuthRule +#### 30.2.1. GitProxy configuration file > uiRouteAuth > rules > routeAuthRule | | | | ------------------------- | --------------------------- | @@ -2173,8 +2095,7 @@ Specific value: `"jwt"`
- 28.2.1.1. [Optional] Property GitProxy configuration file > uiRouteAuth > rules > rules items > pattern - + 30.2.1.1. [Optional] Property GitProxy configuration file > uiRouteAuth > rules > rules items > pattern
@@ -2188,8 +2109,21 @@ Specific value: `"jwt"`
- 28.2.1.2. [Optional] Property GitProxy configuration file > uiRouteAuth > rules > rules items > adminOnly + 30.2.1.2. [Optional] Property GitProxy configuration file > uiRouteAuth > rules > rules items > adminOnly + +
+ +| | | +| ------------ | --------- | +| **Type** | `boolean` | +| **Required** | No | + +
+
+
+ + 30.2.1.3. [Optional] Property GitProxy configuration file > uiRouteAuth > rules > rules items > loginRequired
@@ -2201,10 +2135,78 @@ Specific value: `"jwt"`
+
+
+ +
+
+
- 28.2.1.3. [Optional] Property GitProxy configuration file > uiRouteAuth > rules > rules items > loginRequired + 31. [Optional] Property GitProxy configuration file > ssh + +
+ +| | | +| ------------------------- | ----------- | +| **Type** | `object` | +| **Required** | No | +| **Additional properties** | Not allowed | + +**Description:** SSH proxy server configuration. The proxy uses SSH agent forwarding to authenticate with remote Git servers (GitHub, GitLab, etc.) using the client's SSH keys. The proxy's own host key is auto-generated and only used to identify the proxy to connecting clients. + +
+ + 31.1. [Required] Property GitProxy configuration file > ssh > enabled + +
+ +| | | +| ------------ | --------- | +| **Type** | `boolean` | +| **Required** | Yes | + +**Description:** Enable SSH proxy server. When enabled, clients can connect via SSH and the proxy will forward their SSH agent to authenticate with remote Git servers. + +
+
+ +
+ + 31.2. [Optional] Property GitProxy configuration file > ssh > port + +
+ +| | | +| ------------ | -------- | +| **Type** | `number` | +| **Required** | No | +| **Default** | `2222` | + +**Description:** Port for SSH proxy server to listen on. Clients connect to this port instead of directly to GitHub/GitLab. + +
+
+ +
+ + 31.3. [Optional] Property GitProxy configuration file > ssh > agentForwardingErrorMessage + +
+ +| | | +| ------------ | -------- | +| **Type** | `string` | +| **Required** | No | + +**Description:** Custom error message shown when SSH agent forwarding is not enabled or no keys are loaded in the client's SSH agent. If not specified, a default message with git config commands will be shown. This allows organizations to customize instructions based on their security policies. + +
+
+
+ + 31.4. [Optional] Property GitProxy configuration file > ssh > debug
@@ -2212,10 +2214,56 @@ Specific value: `"jwt"` | ------------ | --------- | | **Type** | `boolean` | | **Required** | No | +| **Default** | `false` | + +**Description:** Enable verbose SSH protocol debug logging (both for the local SSH server and for outbound connections to remote Git servers). Emits one log line per SSH packet, so leave disabled in production.
+
+ + 31.5. [Optional] Property GitProxy configuration file > ssh > hostKey + +
+ +| | | +| ------------------------- | ----------- | +| **Type** | `object` | +| **Required** | No | +| **Additional properties** | Not allowed | + +**Description:** Custom SSH host key paths. If not specified, a host key is auto-generated at .ssh/proxy_host_key. + +
+ + 31.5.1. [Required] Property GitProxy configuration file > ssh > hostKey > privateKeyPath + +
+ +| | | +| ------------ | -------- | +| **Type** | `string` | +| **Required** | Yes | + +**Description:** Path to the private key file (e.g. /etc/git-proxy/host_key) + +
+
+ +
+ + 31.5.2. [Required] Property GitProxy configuration file > ssh > hostKey > publicKeyPath + +
+ +| | | +| ------------ | -------- | +| **Type** | `string` | +| **Required** | Yes | + +**Description:** Path to the public key file (e.g. /etc/git-proxy/host_key.pub) +
@@ -2224,8 +2272,41 @@ Specific value: `"jwt"`
- 29. [Optional] Property GitProxy configuration file > upstreamProxy + 31.6. [Optional] Property GitProxy configuration file > ssh > knownHosts + +
+ +| | | +| ------------------------- | ------------------------------------------------------------------------------------------- | +| **Type** | `object` | +| **Required** | No | +| **Additional properties** | [Each additional property must conform to the schema](#ssh_knownHosts_additionalProperties) | + +**Description:** SSH host key fingerprints for verifying remote Git servers, merged with built-in defaults for github.com and gitlab.com. + +
+ + 31.6.1. Property GitProxy configuration file > ssh > knownHosts > additionalProperties + +
+ +| | | +| ------------ | -------- | +| **Type** | `string` | +| **Required** | No | + +
+
+ +
+
+
+
+ +
+ + 32. [Optional] Property GitProxy configuration file > upstreamProxy
@@ -2239,8 +2320,7 @@ Specific value: `"jwt"`
- 29.1. [Optional] Property GitProxy configuration file > upstreamProxy > enabled - + 32.1. [Optional] Property GitProxy configuration file > upstreamProxy > enabled
@@ -2256,8 +2336,7 @@ Specific value: `"jwt"`
- 29.2. [Optional] Property GitProxy configuration file > upstreamProxy > url - + 32.2. [Optional] Property GitProxy configuration file > upstreamProxy > url
@@ -2274,8 +2353,7 @@ Specific value: `"jwt"`
- 29.3. [Optional] Property GitProxy configuration file > upstreamProxy > noProxy - + 32.3. [Optional] Property GitProxy configuration file > upstreamProxy > noProxy
@@ -2290,7 +2368,7 @@ Specific value: `"jwt"` | --------------------------------------------- | ----------- | | [noProxy items](#upstreamProxy_noProxy_items) | - | -#### 29.3.1. GitProxy configuration file > upstreamProxy > noProxy > noProxy items +#### 32.3.1. GitProxy configuration file > upstreamProxy > noProxy > noProxy items | | | | ------------ | -------- | @@ -2304,4 +2382,4 @@ Specific value: `"jwt"`
---------------------------------------------------------------------------------------------------------------------------- -Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-06-02 at 22:41:17 +0900 +Generated using [json-schema-for-humans](https://github.com/coveooss/json-schema-for-humans) on 2026-07-08 at 00:58:14 +0000