1818using System ;
1919using System . Collections . Generic ;
2020using System . Linq ;
21+ using System . Text ;
2122
2223namespace Microsoft . Azure . Commands . Sql . Security . Services
2324{
@@ -65,6 +66,7 @@ public AuditingPolicy GetDatabaseAuditingPolicy(string resourceGroup, string ser
6566 wrapper . ResourceGroupName = resourceGroup ;
6667 wrapper . ServerName = serverName ;
6768 wrapper . DatabaseName = databaseName ;
69+ AddConnectionStringsToWrapperFromPolicy ( wrapper , policy . Properties ) ;
6870 return wrapper ;
6971 }
7072
@@ -86,7 +88,6 @@ private AuditingPolicy WrapPolicy(DatabaseSecurityPolicy policy)
8688 wrapper . DirectAccessEnabled = ! properties . IsBlockDirectAccessEnabled ;
8789 addStorageInfoToWrapperFromPolicy ( wrapper , properties ) ;
8890 AddEventTypesToWrapperFromPolicy ( wrapper , properties ) ;
89- AddConnectionStringsToWrapperFromPolicy ( wrapper , properties ) ;
9091 this . FetchedProperties = properties ;
9192 return wrapper ;
9293 }
@@ -102,10 +103,69 @@ private void addStorageInfoToWrapperFromPolicy(AuditingPolicy wrapper, DatabaseS
102103
103104 private void AddConnectionStringsToWrapperFromPolicy ( AuditingPolicy wrapper , DatabaseSecurityPolicyProperties properties )
104105 {
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 ) ;
109169 }
110170
111171 private void AddEventTypesToWrapperFromPolicy ( AuditingPolicy wrapper , DatabaseSecurityPolicyProperties properties )
0 commit comments