beautypg.com

Google Search Appliance Security User Manual

Page 41

background image


41

request

.

ContentType

=

"application/x-www-form-urlencoded";

ServicePointManager

.

ServerCertificateValidationCallback

=

new

System

.

Net

.

Security

.

RemoteCertificateValidationCallback

(

AcceptAllCertifications

);

request

.

Proxy

=

WebRequest

.

DefaultWebProxy;

request

.

CookieContainer

=

new

CookieContainer

();

if

(

_gsaSessionId

!=

null)

{

request

.

CookieContainer

.

Add

(

new

Cookie

(

GSA_SESSION_ID

,

_gsaSessionId

)

{

Domain

=

_gsaHostName

});

}

else

{

string

authInfo

=

_trustedUser

+

":"

+

_trustedPwd;

authInfo

=

Convert

.

ToBase64String

(

Encoding

.

Default

.

GetBytes

(

authInfo

));

request

.

Headers

[

"Authorization"

]

=

"Basic "

+

authInfo;

}

request

.

Proxy

.

Credentials

=

CredentialCache

.

DefaultCredentials;

((

HttpWebRequest

)

request

).

KeepAlive

=

true;

//specific to the end user

String

strRsps

=

null;

request

.

Headers

[

"X_GSA_USER"

]

=

_endUser;

request

.

Headers

[

"X_GSA_CREDENTIAL_GROUP"

]

=

_credentialGroup;

//"X_GSA_USER: usera1" --header "X_GSA_CREDENTIAL_GROUP: Default" -d "access=a&q=

byte

[]

byteData

=

UTF8Encoding

.

UTF8

.

GetBytes

(

q

);

request

.

ContentLength

=

byteData

.

Length;

try

{

using

(

Stream

postStream

=

request

.

GetRequestStream

())

{

postStream

.

Write

(

byteData

,

0

,

byteData

.

Length

);

postStream

.

Close

();

}

HttpWebResponse

response

=

(

HttpWebResponse

)

request

.

GetResponse

();

if

(

_gsaSessionId

==

null)

{

_gsaSessionId

=

response

.

Cookies

[

"GSA_SESSION_ID"

].

Value;

}

StreamReader

rsps

=

new

StreamReader

(

request

.

GetResponse

().

GetResponseStream

());

strRsps

=

rsps

.

ReadToEnd

();

rsps

.

Close

();

response

.

Close

();

}

catch

(

WebException

e)

{

if

(

e

.

Status

==

WebExceptionStatus

.

ProtocolError)

{

WebResponse

resp

=

e

.

Response;

using

(

StreamReader

sr

=

new

StreamReader

(

resp

.

GetResponseStream

()))

{

Console

.

Write

(

sr

.

ReadToEnd

());

}

}

if

(

iRetry

==

0)

{

//assume session timed out

_gsaSessionId

=

null;