@@ -29,14 +29,19 @@ const logAction = (
2929const proxyFilter : ProxyOptions [ 'filter' ] = async ( req , res ) => {
3030 try {
3131 const urlComponents = processUrlPath ( req . url ) ;
32-
3332 if (
3433 ! urlComponents ||
3534 urlComponents . gitPath === undefined ||
3635 ! validGitRequest ( urlComponents . gitPath , req . headers )
3736 ) {
38- res . status ( 400 ) . send ( 'Invalid request received' ) ;
39- console . log ( 'action blocked' ) ;
37+ logAction (
38+ req . url ,
39+ req . headers . host ,
40+ req . headers [ 'user-agent' ] ,
41+ 'Invalid request received' ,
42+ null ,
43+ ) ;
44+ res . status ( 400 ) . send ( handleMessage ( 'Invalid request received' ) ) ;
4045 return false ;
4146 }
4247
@@ -51,17 +56,7 @@ const proxyFilter: ProxyOptions['filter'] = async (req, res) => {
5156 res . set ( 'x-frame-options' , 'DENY' ) ;
5257 res . set ( 'connection' , 'close' ) ;
5358
54- let message = '' ;
55-
56- if ( action . error ) {
57- message = action . errorMessage ! ;
58- console . error ( message ) ;
59- }
60- if ( action . blocked ) {
61- message = action . blockedMessage ! ;
62- }
63-
64- const packetMessage = handleMessage ( message ) ;
59+ const packetMessage = handleMessage ( action . errorMessage ?? action . blockedMessage ?? '' ) ;
6560
6661 logAction (
6762 req . url ,
@@ -70,9 +65,7 @@ const proxyFilter: ProxyOptions['filter'] = async (req, res) => {
7065 action . errorMessage ,
7166 action . blockedMessage ,
7267 ) ;
73-
74- res . status ( 200 ) . send ( packetMessage ) ;
75-
68+ res . status ( 403 ) . send ( packetMessage ) ;
7669 return false ;
7770 }
7871
@@ -84,16 +77,20 @@ const proxyFilter: ProxyOptions['filter'] = async (req, res) => {
8477 action . blockedMessage ,
8578 ) ;
8679
80+ // this is the only case where we do not respond directly, instead we return true to proxy the request
8781 return true ;
8882 } catch ( e ) {
89- console . error ( 'Error occurred in proxy filter function ' , e ) ;
83+ const packetMessage = handleMessage ( `Error occurred in proxy filter function ${ e } ` ) ;
84+
9085 logAction (
9186 req . url ,
9287 req . headers . host ,
9388 req . headers [ 'user-agent' ] ,
9489 'Error occurred in proxy filter function: ' + ( ( e as Error ) . message ?? e ) ,
9590 null ,
9691 ) ;
92+
93+ res . status ( 500 ) . send ( packetMessage ) ;
9794 return false ;
9895 }
9996} ;
@@ -140,7 +137,9 @@ const isPackPost = (req: Request) =>
140137 / ^ (?: \/ [ ^ / ] + ) * \/ [ ^ / ] + \. g i t \/ (?: g i t - u p l o a d - p a c k | g i t - r e c e i v e - p a c k ) $ / . test ( req . url ) ;
141138
142139const teeAndValidate = async ( req : Request , res : Response , next : NextFunction ) => {
143- if ( ! isPackPost ( req ) ) return next ( ) ;
140+ if ( ! isPackPost ( req ) ) {
141+ return next ( ) ;
142+ }
144143
145144 const proxyStream = new PassThrough ( ) ;
146145 const pluginStream = new PassThrough ( ) ;
@@ -152,17 +151,16 @@ const teeAndValidate = async (req: Request, res: Response, next: NextFunction) =
152151 const buf = await getRawBody ( pluginStream , { limit : '1gb' } ) ;
153152 ( req as any ) . body = buf ;
154153 const verdict = await executeChain ( req , res ) ;
155- console . log ( 'action processed' ) ;
156154 if ( verdict . error || verdict . blocked ) {
157- let msg = '' ;
155+ const msg = verdict . errorMessage ?? verdict . blockedMessage ?? '' ;
158156
159- if ( verdict . error ) {
160- msg = verdict . errorMessage ! ;
161- console . error ( msg ) ;
162- }
163- if ( verdict . blocked ) {
164- msg = verdict . blockedMessage ! ;
165- }
157+ logAction (
158+ req . url ,
159+ req . headers ?. host ,
160+ req . headers ?. [ 'user-agent' ] ,
161+ verdict . errorMessage ,
162+ verdict . blockedMessage ,
163+ ) ;
166164
167165 res
168166 . set ( {
@@ -174,7 +172,7 @@ const teeAndValidate = async (req: Request, res: Response, next: NextFunction) =
174172 'x-frame-options' : 'DENY' ,
175173 connection : 'close' ,
176174 } )
177- . status ( 200 )
175+ . status ( 403 )
178176 . send ( handleMessage ( msg ) ) ;
179177 return ;
180178 }
@@ -233,8 +231,9 @@ const getRouter = async () => {
233231 console . log ( 'proxy keys registered: ' , JSON . stringify ( proxyKeys ) ) ;
234232
235233 router . use ( '/' , ( req , res , next ) => {
236- console . log ( `processing request URL: '${ req . url } '` ) ;
237- console . log ( 'proxy keys registered: ' , JSON . stringify ( proxyKeys ) ) ;
234+ console . log (
235+ `processing request URL: '${ req . url } ' against registered proxy keys: ${ JSON . stringify ( proxyKeys ) } ` ,
236+ ) ;
238237
239238 for ( let i = 0 ; i < proxyKeys . length ; i ++ ) {
240239 if ( req . url . startsWith ( proxyKeys [ i ] ) ) {
0 commit comments