File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed
Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ using System ;
2+ using System . IO ;
3+ using Semmle . Util ;
4+
5+ namespace Semmle . Extraction . CSharp . DependencyFetching
6+ {
7+ internal class DependabotProxy
8+ {
9+ private readonly string ? host ;
10+ private readonly string ? port ;
11+ private readonly FileInfo ? certFile ;
12+
13+ /// <summary>
14+ /// The full address of the Dependabot proxy, if available.
15+ /// </summary>
16+ internal readonly string ? Address ;
17+
18+ /// <summary>
19+ /// Gets a value indicating whether a Dependabot proxy is configured.
20+ /// </summary>
21+ internal bool IsConfigured => ! string . IsNullOrEmpty ( this . Address ) ;
22+
23+ internal DependabotProxy ( TemporaryDirectory tempWorkingDirectory )
24+ {
25+ // Obtain and store the address of the Dependabot proxy, if available.
26+ this . host = Environment . GetEnvironmentVariable ( EnvironmentVariableNames . ProxyHost ) ;
27+ this . port = Environment . GetEnvironmentVariable ( EnvironmentVariableNames . ProxyPort ) ;
28+
29+ if ( string . IsNullOrWhiteSpace ( host ) || string . IsNullOrWhiteSpace ( port ) )
30+ {
31+ return ;
32+ }
33+
34+ this . Address = $ "http://{ this . host } :{ this . port } ";
35+
36+ // Obtain and store the proxy's certificate, if available.
37+ var cert = Environment . GetEnvironmentVariable ( EnvironmentVariableNames . ProxyCertificate ) ;
38+
39+ if ( string . IsNullOrWhiteSpace ( cert ) )
40+ {
41+ return ;
42+ }
43+
44+ var certDirPath = new DirectoryInfo ( Path . Join ( tempWorkingDirectory . DirInfo . FullName , ".dependabot-proxy" ) ) ;
45+ Directory . CreateDirectory ( certDirPath . FullName ) ;
46+
47+ this . certFile = new FileInfo ( Path . Join ( certDirPath . FullName , "proxy.crt" ) ) ;
48+
49+ using var writer = this . certFile . CreateText ( ) ;
50+ writer . Write ( cert ) ;
51+ }
52+ }
53+ }
You can’t perform that action at this time.
0 commit comments