2
2
using System . Collections . Generic ;
3
3
using System . Linq ;
4
4
using System . Threading . Tasks ;
5
+ using System . Text ;
5
6
using System . Net ;
6
7
7
8
using Microsoft . AspNetCore . Hosting ;
@@ -17,44 +18,66 @@ public class Program
17
18
#region Entry-point
18
19
public static void Main ( string [ ] args )
19
20
{
21
+ /* Configure the Serilog Logger */
20
22
var config = new LoggerConfiguration ( ) ;
21
23
Log . Logger = config . MinimumLevel . Debug ( ) . Enrich . FromLogContext ( ) . WriteTo . Console ( ) . CreateLogger ( ) ;
22
24
23
- if ( string . IsNullOrEmpty ( Environment . GetEnvironmentVariable ( "TG_TOKEN" ) ) )
25
+ /* Check for required environment vars */
26
+ if ( string . IsNullOrEmpty ( TG_TOKEN ) )
24
27
{
25
28
Log . Error ( "The environment variable {0} could not be read." , "TG_TOKEN" ) ;
26
29
return ;
27
30
}
28
- else if ( string . IsNullOrEmpty ( Environment . GetEnvironmentVariable ( "TG_SERVER_URL" ) ) )
31
+ else if ( string . IsNullOrEmpty ( TG_REST_SERVER_URL ) )
29
32
{
30
- Log . Error ( "The environment variable {0} could not be read." , "TG_SERVER_URL " ) ;
33
+ Log . Error ( "The environment variable {0} could not be read." , "TG_REST_SERVER_URL " ) ;
31
34
return ;
32
35
}
33
- else if ( ! Uri . TryCreate ( Environment . GetEnvironmentVariable ( "TG_SERVER_URL" ) , UriKind . Absolute , out Uri u ) )
36
+ else if ( string . IsNullOrEmpty ( TG_GSQL_SERVER_URL ) )
34
37
{
35
- Log . Error ( "The environment variable {0}:{1} is not a valid URI." , "TG_SERVER_URL" , Environment . GetEnvironmentVariable ( "TG_SERVER_URL" ) ) ;
38
+ Log . Error ( "The environment variable {0} could not be read." , "TG_GSQL_SERVER_URL" ) ;
39
+ return ;
40
+ }
41
+ else if ( ! Uri . TryCreate ( TG_REST_SERVER_URL , UriKind . Absolute , out Uri rsu ) )
42
+ {
43
+ Log . Error ( "The environment variable {0}:{1} is not a valid URI." , "TG_REST_SERVER_URL" , TG_REST_SERVER_URL ) ;
44
+ return ;
45
+ }
46
+ else if ( ! Uri . TryCreate ( TG_GSQL_SERVER_URL , UriKind . Absolute , out Uri gu ) )
47
+ {
48
+ Log . Error ( "The environment variable {0}:{1} is not a valid URI." , "TG_GSQL_SERVER_URL" , TG_GSQL_SERVER_URL ) ;
36
49
return ;
37
50
}
38
51
else
39
52
{
40
- WebClient wc = new WebClient ( ) ;
41
- wc . Headers . Add ( "Authorization" , "Bearer " + Environment . GetEnvironmentVariable ( "TG_TOKEN" ) ) ;
53
+ /* Setup authentication to the TG servers */
54
+ RestServerWebClient = new WebClient ( ) ;
55
+ RestServerWebClient . Headers . Add ( "Authorization" , "Bearer " + TG_TOKEN ) ;
56
+ GsqlServerWebClient = new WebClient ( ) ;
57
+ string credentials = Convert . ToBase64String (
58
+ Encoding . ASCII . GetBytes ( TG_USER + ":" + TG_PASS ) ) ;
59
+ GsqlServerWebClient . Headers [ HttpRequestHeader . Authorization ] = string . Format (
60
+ "Basic {0}" , credentials ) ;
61
+ Log . Information ( "Authentication to REST++ server at {0} and GSQL server at {1} initialized." , TG_REST_SERVER_URL , TG_GSQL_SERVER_URL ) ;
62
+ /* Setup the timer for pinging the server.*/
42
63
var pingTimer = new System . Timers . Timer ( 1000 * 60 * 15 ) ;
43
64
pingTimer . Elapsed += ( sender , e ) => {
44
65
var now = DateTime . Now ;
45
66
try
46
67
{
47
- wc . DownloadString ( u . ToString ( ) + "echo" ) ;
48
- Log . Information ( "Pinged {0} at {1}." , u , now ) ;
68
+ RestServerWebClient . DownloadString ( rsu . ToString ( ) + "echo" ) ;
69
+ Log . Information ( "Pinged {0} at {1}." , rsu , now ) ;
49
70
}
50
71
catch ( Exception ex )
51
72
{
52
- Log . Error ( ex , "Error attempting to ping {0} at {1}." , u , now ) ;
73
+ Log . Error ( ex , "Error attempting to ping {0} at {1}." , rsu , now ) ;
53
74
}
54
75
} ;
55
76
pingTimer . Enabled = true ;
56
77
CreateHostBuilder ( args ) . Build ( ) . Run ( ) ;
57
- wc . Dispose ( ) ;
78
+ /* After the webhost shuts down dispose of any unmanaged resources. */
79
+ RestServerWebClient . Dispose ( ) ;
80
+ GsqlServerWebClient . Dispose ( ) ;
58
81
pingTimer . Dispose ( ) ;
59
82
}
60
83
}
@@ -70,13 +93,20 @@ public static void Main(string[] args)
70
93
public static string TG_REST_SERVER_URL = Environment . GetEnvironmentVariable ( "TG_REST_SERVER_URL" ) ;
71
94
72
95
public static string TG_GSQL_SERVER_URL = Environment . GetEnvironmentVariable ( "TG_GSQL_SERVER_URL" ) ;
96
+
97
+ public static WebClient RestServerWebClient = new WebClient ( ) ;
98
+
99
+ public static WebClient GsqlServerWebClient = new WebClient ( ) ;
73
100
#endregion
101
+
102
+ #region Methods
74
103
public static IHostBuilder CreateHostBuilder ( string [ ] args ) =>
75
104
Host . CreateDefaultBuilder ( args )
76
105
. ConfigureWebHostDefaults ( webBuilder =>
77
106
{
78
107
webBuilder . UseSerilog ( ) ;
79
108
webBuilder . UseStartup < Startup > ( ) ;
80
109
} ) ;
110
+ #endregion
81
111
}
82
112
}
0 commit comments