18
18
using System ;
19
19
using System . Collections . Generic ;
20
20
using System . Linq ;
21
+ using System . Text ;
21
22
22
23
namespace Microsoft . Azure . Commands . Sql . Security . Services
23
24
{
@@ -65,6 +66,7 @@ public AuditingPolicy GetDatabaseAuditingPolicy(string resourceGroup, string ser
65
66
wrapper . ResourceGroupName = resourceGroup ;
66
67
wrapper . ServerName = serverName ;
67
68
wrapper . DatabaseName = databaseName ;
69
+ AddConnectionStringsToWrapperFromPolicy ( wrapper , policy . Properties ) ;
68
70
return wrapper ;
69
71
}
70
72
@@ -86,7 +88,6 @@ private AuditingPolicy WrapPolicy(DatabaseSecurityPolicy policy)
86
88
wrapper . DirectAccessEnabled = ! properties . IsBlockDirectAccessEnabled ;
87
89
addStorageInfoToWrapperFromPolicy ( wrapper , properties ) ;
88
90
AddEventTypesToWrapperFromPolicy ( wrapper , properties ) ;
89
- AddConnectionStringsToWrapperFromPolicy ( wrapper , properties ) ;
90
91
this . FetchedProperties = properties ;
91
92
return wrapper ;
92
93
}
@@ -102,10 +103,69 @@ private void addStorageInfoToWrapperFromPolicy(AuditingPolicy wrapper, DatabaseS
102
103
103
104
private void AddConnectionStringsToWrapperFromPolicy ( AuditingPolicy wrapper , DatabaseSecurityPolicyProperties properties )
104
105
{
105
- wrapper . ConnectionStrings . AdoNetConnectionString = properties . AdoNetConnectionString ;
106
- wrapper . ConnectionStrings . OdbcConnectionString = properties . OdbcConnectionString ;
107
- wrapper . ConnectionStrings . JdbcConnectionString = properties . JdbcConnectionString ;
108
- wrapper . ConnectionStrings . PhpConnectionString = properties . PhpConnectionString ;
106
+ wrapper . ConnectionStrings . AdoNetConnectionString = ConstructAdoNetConnectionString ( wrapper , properties ) ;
107
+ wrapper . ConnectionStrings . OdbcConnectionString = ConstructOdbcConnectionString ( wrapper , properties ) ;
108
+ wrapper . ConnectionStrings . JdbcConnectionString = ConstructJdbcConnectionString ( wrapper , properties ) ;
109
+ wrapper . ConnectionStrings . PhpConnectionString = ConstructPhpConnectionString ( wrapper , properties ) ;
110
+ }
111
+
112
+ private string ConstructPhpConnectionString ( AuditingPolicy wrapper , DatabaseSecurityPolicyProperties properties )
113
+ {
114
+ string enterUser = Microsoft . Azure . Commands . Sql . Properties . Resources . EnterUserId ;
115
+ string enterPassword = Microsoft . Azure . Commands . Sql . Properties . Resources . EnterPassword ;
116
+ string pdoTitle = Microsoft . Azure . Commands . Sql . Properties . Resources . PdoTitle ;
117
+ string sqlServerSampleTitle = Microsoft . Azure . Commands . Sql . Properties . Resources . sqlSampleTitle ;
118
+ string connectionError = Microsoft . Azure . Commands . Sql . Properties . Resources . PhpConnectionError ;
119
+ StringBuilder sb = new StringBuilder ( ) ;
120
+ sb . Append ( string . Format ( "Server: {0}, {1}" , properties . ProxyDnsName , properties . ProxyPort ) ) . Append ( Environment . NewLine ) ;
121
+ sb . Append ( string . Format ( "SQL Database: {0}" , wrapper . DatabaseName ) ) . Append ( Environment . NewLine ) ;
122
+ sb . Append ( string . Format ( "User Name: {0}" , enterUser ) ) . Append ( Environment . NewLine ) . Append ( Environment . NewLine ) ;
123
+ sb . Append ( pdoTitle ) . Append ( Environment . NewLine ) ;
124
+ sb . Append ( "try{" ) . Append ( Environment . NewLine ) ;
125
+ sb . Append ( string . Format ( "$conn = new PDO ( \" sqlsrv:server = tcp:{0},{1}; Database = \" {2}\" , \" {3}\" , \" {4}\" );" ,
126
+ properties . ProxyDnsName , properties . ProxyPort , wrapper . DatabaseName , enterUser , enterPassword ) ) . Append ( Environment . NewLine ) ;
127
+ sb . Append ( "$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );" ) . Append ( Environment . NewLine ) ;
128
+ sb . Append ( "}" ) . Append ( Environment . NewLine ) ;
129
+ sb . Append ( "catch ( PDOException $e ) {" ) . Append ( Environment . NewLine ) ;
130
+ sb . Append ( string . Format ( "print( \" {0}\" );" , connectionError ) ) . Append ( Environment . NewLine ) ;
131
+ sb . Append ( "die(print_r($e));" ) . Append ( Environment . NewLine ) ;
132
+ sb . Append ( "}" ) . Append ( Environment . NewLine ) ;
133
+ sb . Append ( sqlServerSampleTitle ) . Append ( Environment . NewLine ) . Append ( Environment . NewLine ) ;
134
+ sb . Append ( string . Format ( "connectionInfo = array(\" UID\" => \" {0}@{1}\" , \" pwd\" => \" {2}\" , \" Database\" => \" {3}\" , \" LoginTimeout\" => 30, \" Encrypt\" => 1);" ,
135
+ enterUser , wrapper . ServerName , enterPassword , wrapper . DatabaseName ) ) . Append ( Environment . NewLine ) ;
136
+ sb . Append ( string . Format ( "$serverName = \" tcp:{0},{1}\" ;" , properties . ProxyDnsName , properties . ProxyPort ) ) . Append ( Environment . NewLine ) ;
137
+ sb . Append ( "$conn = sqlsrv_connect($serverName, $connectionInfo);" ) ;
138
+ return sb . ToString ( ) ;
139
+ }
140
+
141
+ private string ConstructOdbcConnectionString ( AuditingPolicy wrapper , DatabaseSecurityPolicyProperties properties )
142
+ {
143
+ string enterUser = Microsoft . Azure . Commands . Sql . Properties . Resources . EnterUserId ;
144
+ string enterPassword = Microsoft . Azure . Commands . Sql . Properties . Resources . EnterPassword ;
145
+ StringBuilder sb = new StringBuilder ( ) ;
146
+ sb . Append ( "Driver={SQL Server Native Client 11.0};" ) ;
147
+ sb . Append ( string . Format ( "Server=tcp:{0},{1};" , properties . ProxyDnsName , properties . ProxyPort ) ) ;
148
+ sb . Append ( string . Format ( "Database={0};" , wrapper . DatabaseName ) ) ;
149
+ sb . Append ( string . Format ( "Uid={0}@{1};" , enterUser , wrapper . ServerName ) ) ;
150
+ sb . Append ( string . Format ( "Pwd={0};" , enterPassword ) ) ;
151
+ sb . Append ( "Encrypt=yes;Connection Timeout=30;" ) ;
152
+ return sb . ToString ( ) ;
153
+ }
154
+
155
+ private string ConstructJdbcConnectionString ( AuditingPolicy wrapper , DatabaseSecurityPolicyProperties properties )
156
+ {
157
+ string enterUser = Microsoft . Azure . Commands . Sql . Properties . Resources . EnterUserId ;
158
+ string enterPassword = Microsoft . Azure . Commands . Sql . Properties . Resources . EnterPassword ;
159
+ return string . Format ( "jdbc:sqlserver://{0}:{1};database={2};user={3}@{4};password={5};encrypt=true;hostNameInCertificate=*.database.secure.windows.net;loginTimeout=30;" ,
160
+ properties . ProxyDnsName , properties . ProxyPort , wrapper . DatabaseName , enterUser , wrapper . ServerName , enterPassword ) ;
161
+ }
162
+
163
+ private string ConstructAdoNetConnectionString ( AuditingPolicy wrapper , DatabaseSecurityPolicyProperties properties )
164
+ {
165
+ string enterUser = Microsoft . Azure . Commands . Sql . Properties . Resources . EnterUserId ;
166
+ string enterPassword = Microsoft . Azure . Commands . Sql . Properties . Resources . EnterPassword ;
167
+ return string . Format ( "Server=tcp:{0},{1};Database={2};User ID={3}@{4};Password={5};Trusted_Connection=False;Encrypt=True;Connection Timeout=30" ,
168
+ properties . ProxyDnsName , properties . ProxyPort , wrapper . DatabaseName , enterUser , wrapper . ServerName , enterPassword ) ;
109
169
}
110
170
111
171
private void AddEventTypesToWrapperFromPolicy ( AuditingPolicy wrapper , DatabaseSecurityPolicyProperties properties )
0 commit comments