16
16
17
17
const express = require ( 'express' ) ;
18
18
const mysql = require ( 'promise-mysql' ) ;
19
+ const fs = require ( 'fs' ) ;
19
20
20
21
const app = express ( ) ;
21
22
app . set ( 'view engine' , 'pug' ) ;
@@ -41,13 +42,37 @@ const logger = winston.createLogger({
41
42
transports : [ new winston . transports . Console ( ) , loggingWinston ] ,
42
43
} ) ;
43
44
45
+ // [START cloud_sql_mysql_mysql_create_tcp_sslcerts]
46
+ const createTcpPoolSslCerts = async config => {
47
+ // Extract host and port from socket address
48
+ const dbSocketAddr = process . env . DB_HOST . split ( ':' ) ;
49
+
50
+ // Establish a connection to the database
51
+ return mysql . createPool ( {
52
+ user : process . env . DB_USER , // e.g. 'my-db-user'
53
+ password : process . env . DB_PASS , // e.g. 'my-db-password'
54
+ database : process . env . DB_NAME , // e.g. 'my-database'
55
+ host : dbSocketAddr [ 0 ] , // e.g. '127.0.0.1'
56
+ port : dbSocketAddr [ 1 ] , // e.g. '3306'
57
+ ssl : {
58
+ sslmode : 'verify-full' ,
59
+ ca : fs . readFileSync ( process . env . DB_ROOT_CERT ) , // e.g., '/path/to/my/server-ca.pem'
60
+ key : fs . readFileSync ( process . env . DB_KEY ) , // e.g. '/path/to/my/client-key.pem'
61
+ cert : fs . readFileSync ( process . env . DB_CERT ) , // e.g. '/path/to/my/client-cert.pem'
62
+ } ,
63
+ // ... Specify additional properties here.
64
+ ...config ,
65
+ } ) ;
66
+ } ;
67
+ // [END cloud_sql_mysql_mysql_create_tcp_sslcerts]
68
+
44
69
// [START cloud_sql_mysql_mysql_create_tcp]
45
70
const createTcpPool = async config => {
46
71
// Extract host and port from socket address
47
72
const dbSocketAddr = process . env . DB_HOST . split ( ':' ) ;
48
73
49
74
// Establish a connection to the database
50
- return await mysql . createPool ( {
75
+ return mysql . createPool ( {
51
76
user : process . env . DB_USER , // e.g. 'my-db-user'
52
77
password : process . env . DB_PASS , // e.g. 'my-db-password'
53
78
database : process . env . DB_NAME , // e.g. 'my-database'
@@ -64,7 +89,7 @@ const createUnixSocketPool = async config => {
64
89
const dbSocketPath = process . env . DB_SOCKET_PATH || '/cloudsql' ;
65
90
66
91
// Establish a connection to the database
67
- return await mysql . createPool ( {
92
+ return mysql . createPool ( {
68
93
user : process . env . DB_USER , // e.g. 'my-db-user'
69
94
password : process . env . DB_PASS , // e.g. 'my-db-password'
70
95
database : process . env . DB_NAME , // e.g. 'my-database'
@@ -106,9 +131,13 @@ const createPool = async () => {
106
131
// [END cloud_sql_mysql_mysql_backoff]
107
132
} ;
108
133
if ( process . env . DB_HOST ) {
109
- return await createTcpPool ( config ) ;
134
+ if ( process . env . DB_ROOT_CERT ) {
135
+ return createTcpPoolSslCerts ( config ) ;
136
+ } else {
137
+ return createTcpPool ( config ) ;
138
+ }
110
139
} else {
111
- return await createUnixSocketPool ( config ) ;
140
+ return createUnixSocketPool ( config ) ;
112
141
}
113
142
} ;
114
143
0 commit comments