" Well you need to point crsplabweb2.example.com to the haproxy IP that's
the whole point of it running behind a proxy. Or am I missing something?  "

Well, I am not sure what you meant by that comment above.

On Sun, Oct 28, 2018 at 8:07 PM Igor Cicimov <[email protected]>
wrote:

> Well you need to point crsplabweb2.example.com to the haproxy IP that's
> the whole point of it running behind a proxy. Or am I missing something?
>
> On Mon, Oct 29, 2018 at 1:28 PM Imam Toufique <[email protected]> wrote:
>
>> Hi Igor,
>>
>> Thank you so much, I will definitely try your suggestions, but I am not
>> sure how it will help my situation.  shibboleth SP looks for, let's
>> suppose, https://crsplabweb2.example.com/Shibboleth.sso - for it it's
>> single sign-on. for apache or nginx to talk to the SP, SP needs to run in
>> the same node ( as far as I know ). So,  I am not sure how shibboleth will
>> be able to communicate with the HAP for its SSO calls.
>>
>> --imam
>>
>>
>>
>> On Sun, Oct 28, 2018 at 5:21 PM Igor Cicimov <
>> [email protected]> wrote:
>>
>>> Hi Imam,
>>>
>>> On Sat, Oct 27, 2018 at 4:42 PM Imam Toufique <[email protected]>
>>> wrote:
>>>
>>>> Hi Igor,
>>>>
>>>> Thanks very much for offering to help!  I will do this in sections,
>>>> hopefully, I can keep this from being too cluttered.
>>>>
>>>> haproxy.cfg:
>>>>
>>>> --------------------------------------------------------------------------------------
>>>> global
>>>>    #log /dev/log local0 debug
>>>>    #log /dev/log local1 debug
>>>>    log 127.0.0.1 local2
>>>>    chroot /var/lib/haproxy
>>>>    stats timeout 30s
>>>>    user haproxy
>>>>    group haproxy
>>>>    tune.ssl.default-dh-param 2048
>>>>    daemon
>>>>
>>>> defaults
>>>>    log global
>>>>    mode http
>>>>    option tcplog
>>>>    option dontlognull
>>>>    timeout connect 5000
>>>>    timeout client 50000
>>>>    timeout server 50000
>>>>    timeout tunnel 9h
>>>>    option tcp-check
>>>>
>>>> frontend http_front
>>>>    bind :80
>>>>    bind 0.0.0.0:443 ssl crt /etc/haproxy/crsplab2_1.pem
>>>>    stats uri /haproxy?stats
>>>>    default_backend web1_cluster
>>>>    option httplog
>>>>    log global
>>>>    #option dontlognull
>>>>    log /dev/log local0 debug
>>>>    mode http
>>>>    option forwardfor   # forward IP
>>>>    http-request set-header X-Forwarded-Port %[dst_port]
>>>>    http-request add-header X-Forwarded-Proto https if { ssl_fc }
>>>>    redirect scheme https if !{ ssl_fc }
>>>>
>>>>    acl host_web2 hdr(host) -i crsplab2.oit.uci.edu/webdav
>>>>    use_backend webdav_cluster if host_web2
>>>>
>>>>    acl host_web3 path_beg /jhub
>>>>    use_backend web3_cluster if host_web3
>>>>
>>>>
>>>> backend webdav_cluster
>>>>    balance roundrobin
>>>>    server  web1 10.1.100.156:8080 check inter 2000 cookie w1
>>>>    server  web2 10.1.100.160:8080 check inter 2000 cookie w2
>>>>
>>>> backend web3_cluster
>>>>   server  publicIP:443 check ssl verify none inter 2000 cookie w1
>>>>
>>>> -----------------------------------------------------------------------------------------------------
>>>> Note: I have a single backend node, as it was easy to test with just
>>>> one node, instead of making changes to 2 nodes at a time.
>>>>
>>>> Here is my apache config:
>>>>
>>>> in httpd.conf, only change I have made is ( the rest is a stock centos
>>>> 7.5 httpd.conf ):
>>>> -------------------------------------
>>>> ServerName 10.1.100.160:80 ( Internal IP of the backend node)
>>>> Redirect permanent /jhub https://crsplabweb1.domain.com/jhub
>>>> -------------------------------------
>>>>
>>>> in my ssl.conf, where I access the jupyterhub instance running in
>>>> 127.0.0.1:8000 .  Also, note that the backend is running shibboleth
>>>> SP.  One of the issues I encountered is, If I did not have SSL , i was
>>>> getting a browser warning for not having SSL.
>>>>
>>>> Here is my ssl.conf:
>>>>
>>>>
>>>> --------------------------------------------------------------------------
>>>> Listen 443 https
>>>> SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
>>>> SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
>>>> SSLSessionCacheTimeout  300
>>>> SSLRandomSeed startup file:/dev/urandom  256
>>>> SSLRandomSeed connect builtin
>>>> SSLCryptoDevice builtin
>>>>
>>>> <VirtualHost _default_:443>
>>>>
>>>> UseCanonicalName on
>>>> ServerName crsplabweb1.domain.com:443
>>>>
>>>> ErrorLog logs/ssl_error_log
>>>> TransferLog logs/ssl_access_log
>>>> LogLevel warn
>>>>
>>>> SSLEngine on
>>>>
>>>> SSLProtocol all -SSLv2 -SSLv3
>>>> SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
>>>> SSLCertificateFile /etc/pki/tls/certs/crsplabweb1.domain.com_cert.cer
>>>> SSLCertificateKeyFile /etc/pki/tls/certs/crsplabweb2.key
>>>> SSLCertificateChainFile
>>>> /etc/pki/tls/certs/crsplabweb1.domain.com_interm_reverse.c
>>>>
>>>> <Files ~ "\.(cgi|shtml|phtml|php3?)$">
>>>>     SSLOptions +StdEnvVars
>>>> </Files>
>>>> <Directory "/var/www/cgi-bin">
>>>>     SSLOptions +StdEnvVars
>>>> </Directory>
>>>>
>>>> <Location /jhub>
>>>>  ProxyPass http://127.0.0.1:8000/jhub
>>>>  ProxyPassReverse http://127.0.0.1:8000/jhub
>>>>  RequestHeader unset Accept-Encoding
>>>>  ProxyPreserveHost on
>>>>  AuthType shibboleth
>>>>  ShibRequestSetting requireSession 1
>>>>  Require shibboleth
>>>>  ShibUseHeaders On
>>>>  ShibBasicHijack On
>>>>  RewriteEngine On
>>>>  RequestHeader set X-Remote-User %{REMOTE_USER}s
>>>> </Location>
>>>>
>>>> <LocationMatch
>>>> "/jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)">
>>>>     ProxyPassMatch ws://127.0.0.1:8000/jhub/$1/$2$3
>>>>     ProxyPassReverse ws://127.0.0.1:8000/jhub/$1/$2$3
>>>> </LocationMatch>
>>>>
>>>> BrowserMatch "MSIE [2-5]" \
>>>>          nokeepalive ssl-unclean-shutdown \
>>>>          downgrade-1.0 force-response-1.0
>>>>
>>>> CustomLog logs/ssl_request_log \
>>>>           "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
>>>> </VirtualHost>
>>>>
>>>> ----------------------------------------------------------------------------------
>>>>
>>>> Thanks
>>>>
>>>
>>> Your problem is that you are not using the Forwarded headers set by HAP
>>> in Apache thus you get http response instead ssl.
>>>
>>> First for haproxy create a directory where you will keep all your SSL
>>> certs, lets say /etc/haproxy/ssl.d/, and put the crsplab2.oit.uci.edu
>>> and crsplabweb1.domain.com certificates inside. More details on setting
>>> SSL certificates in Haproxy can be found here:
>>> https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.1-crt
>>>
>>> The config will then look something like this:
>>>
>>> frontend http_front
>>>    bind *:80
>>>    bind *:443 ssl crt /etc/haproxy/ssl.d/ no-sslv3 no-tls-tickets ...
>>>
>>> backend web3_cluster
>>>   server shibboleth1 10.1.100.160:80 check inter 2000
>>>
>>> On the apache side remove the ssl settings (since now HAP will be
>>> terminating SSL) and set a SSL redirect, something like this:
>>>
>>> <VirtualHost *:80>
>>>     ServerName crsplabweb1.domain.com
>>>     ServerAlias www.crsplabweb1.domain.com
>>>
>>>     SetEnvIfNoCase X-Forwarded-Proto https HTTPS=on
>>>     # Insure the pages requested over ssl are always over ssl
>>>     RewriteEngine On
>>>     RewriteCond %{HTTP_X_Forwarded_Proto}  ^https$
>>>     RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]
>>> ...
>>> </VirtualHost>
>>> Let me know if any further questions.
>>>
>>>
>>>> On Fri, Oct 26, 2018 at 8:34 PM Igor Cicimov <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Imam,
>>>>>
>>>>> On Sat, Oct 27, 2018 at 9:37 AM Imam Toufique <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I came up with the following config, things seem to be working now,
>>>>>> for the most part.
>>>>>>
>>>>>> frontend http_front
>>>>>>    bind :80
>>>>>>    bind 0.0.0.0:443 ssl crt /etc/haproxy/crsplab2_1.pem
>>>>>>    stats uri /haproxy?stats
>>>>>>    default_backend web1_cluster
>>>>>>    option httplog
>>>>>>    log global
>>>>>>    #option dontlognull
>>>>>>    log /dev/log local0 debug
>>>>>>    mode http
>>>>>>    option forwardfor   # forward IP
>>>>>>    http-request set-header X-Forwarded-Port %[dst_port]
>>>>>>    http-request add-header X-Forwarded-Proto https if { ssl_fc }
>>>>>>    redirect scheme https if !{ ssl_fc }
>>>>>>    acl host_web3 path_beg /jhub
>>>>>>    use_backend web3_cluster if host_web3
>>>>>>
>>>>>> web3_cluster
>>>>>>
>>>>>> backend web3_cluster
>>>>>>    mode http
>>>>>>    balance source
>>>>>>    server crsplabweb1.domain.com publicIP:443 check ssl verify none
>>>>>> inter 2000 cookie w1
>>>>>>
>>>>>> The above config gets me to the backend node -- where I have a
>>>>>> jupyterhub instance running + .  Shibboleth SP running for 
>>>>>> authentication.
>>>>>> As I could not get shibboleth SP to work by staying in my private 
>>>>>> network,
>>>>>> I had to set up a public IP for the backend node, get SSL certs - so
>>>>>> shibboleth authentication could be done.  I am sure there is a better
>>>>>> approach to this, but I don't know what it is.  I will be trying out SNAT
>>>>>> to see if that will allow me to keep using my private IP for the backend
>>>>>> nodes.  If any of you know how to do SNAT, please chime in, it would be
>>>>>> worth the time/effort to try it out.
>>>>>>
>>>>>> Now, the interesting thing I have noticed with the above setup --
>>>>>> when I connect to HAProxy, let's say with https://proxy.domain.com
>>>>>> , I authenticate with shibboleth, and then the URL in the browser points 
>>>>>> to
>>>>>> the backend node.
>>>>>>
>>>>>> For example:
>>>>>>
>>>>>> my proxy address: https://proxy.domain.com/jhub
>>>>>>
>>>>>> after I connect to the backend, the URL turns into -
>>>>>> https://crsplabweb1.domain.com/jhub/tree?
>>>>>>
>>>>>> ...and everything works thereafter.
>>>>>>
>>>>>> I tried the rewrite method that Igor has suggested before, that did
>>>>>> not make any difference.  But what I noticed is, after I connect, no
>>>>>> traffic go through the proxy anymore, my client ( i.e. laptop) connects
>>>>>> directly to the backend server. Not sure if this good or bad though (?) ,
>>>>>> but, I am not sure how to configure this so that I will go through a
>>>>>> proxy but still be connected in the backend via a private IP and I can (
>>>>>> still ) authenticate via shibboleth.
>>>>>>
>>>>>> So, when I change the 'web3_cluster' backend to :
>>>>>>
>>>>>> server crsplabweb1 privateIP:80 inter 2000 cookie w1
>>>>>>
>>>>>> and, I set backend apache to accept connection on port 80, then I
>>>>>> break shibboleth authentication.
>>>>>>
>>>>>> Any inputs here?
>>>>>>
>>>>>> thanks, guys!
>>>>>>
>>>>>>
>>>>> I think it is time for you to provide the full HAP and Apache configs
>>>>> so we can see what is going on (please obfuscate any sensitive data). Also
>>>>> the use of the "cookie w1" is not clear since you are not setting it
>>>>> in HAP and is kinda redundant for single backend setup.
>>>>>
>>>>>
>>>>>>
>>>>>> On Thu, Oct 25, 2018 at 1:21 AM Igor Cicimov <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Oct 25, 2018 at 6:31 PM Igor Cicimov <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, 25 Oct 2018 6:13 pm Imam Toufique <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> so I almost got this to work, based on the situation I am in.  To
>>>>>>>>> elaborate just a bit, my setup involves a shibboleth SP that I need to
>>>>>>>>> authenticate my application.  Since I can't set up the HA proxy node 
>>>>>>>>> with
>>>>>>>>> shibboleth SP - I had to wrap my application in the backend with 
>>>>>>>>> apache so
>>>>>>>>> I can pass REMOTE_USER to the application.  the application I have is 
>>>>>>>>> -
>>>>>>>>> jupyterhub and it start with its own proxy.  Long story short, here 
>>>>>>>>> is my
>>>>>>>>> current setup:
>>>>>>>>>
>>>>>>>>> frontend
>>>>>>>>>    bind :80
>>>>>>>>>    bind :443 ssl crt /etc/haproxy/crsplab2_1.pem
>>>>>>>>>    stats uri /haproxy?stats
>>>>>>>>>    default_backend web1_cluster
>>>>>>>>>    option httplog
>>>>>>>>>    log global
>>>>>>>>>    #option dontlognull
>>>>>>>>>    log /dev/log local0 debug
>>>>>>>>>    mode http
>>>>>>>>>    option forwardfor   # forward IP
>>>>>>>>>    http-request set-header X-Forwarded-Port %[dst_port]
>>>>>>>>>    http-request add-header X-Forwarded-Proto https if { ssl_fc }
>>>>>>>>>    redirect scheme https if !{ ssl_fc }
>>>>>>>>>
>>>>>>>>> acl host_web3 path_beg /jhub
>>>>>>>>> use_backend web3_cluster if host_web3
>>>>>>>>>
>>>>>>>>> backend
>>>>>>>>> server web1.oit.uci.edu 128.110.80.5:80 check
>>>>>>>>>
>>>>>>>>> this works for the most part.  But I am confused with a problem.
>>>>>>>>> when I get to my application, my backend IP address shows up in the 
>>>>>>>>> browser
>>>>>>>>> URL.
>>>>>>>>>
>>>>>>>>> for example, I see this in my browser:
>>>>>>>>>
>>>>>>>>> http://128.110.80.5/jhub/user/itoufiqu/tree?
>>>>>>>>>
>>>>>>>>> whereas, I was expecting that it would show the original URL, such
>>>>>>>>> as:
>>>>>>>>>
>>>>>>>>> http://crsplab2.domain.com/jhub/user/itoufiqu/tree?  ( where
>>>>>>>>> crsplab2.domain.com is the URL to get HAproxy )
>>>>>>>>>
>>>>>>>>
>>>>>>>> You need to tell your backend app that it runs behind reverse proxy
>>>>>>>> with ssl termination and that it's domain/url is
>>>>>>>> https://crsplab2.domain.com
>>>>>>>> <http://crsplab2.domain.com/jhub/user/itoufiqu/tree>. How you do
>>>>>>>> that depends on the backend app you are using but most of them like
>>>>>>>> apache2, tomcat etc. have specific configs that you can find in their
>>>>>>>> documentation. For example if your backend is apache2 I bet you don't 
>>>>>>>> have
>>>>>>>> the DomainName set in the config in which case it defaults to the host 
>>>>>>>> ip
>>>>>>>> address.
>>>>>>>>
>>>>>>>
>>>>>>> You can also try:
>>>>>>>
>>>>>>> rspirep ^Location:\ http://(.*):80(.*)  Location:\ https://
>>>>>>> crsplab2.domain.com
>>>>>>> <http://crsplab2.domain.com/jhub/user/itoufiqu/tree>:443\2  if  {
>>>>>>> ssl_fc }
>>>>>>>
>>>>>>> to fix the URL but note that this will not save you from hard coded
>>>>>>> url's in the returned html pages the way apache does.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>> While I am no expert in HA proxy world, I think this might due to
>>>>>>>>> the fact that my backend does not have SSL and HAproxy frontend does 
>>>>>>>>> have
>>>>>>>>> SSL.  At this point, I would avoid that IP address showing up in the
>>>>>>>>> browser.  what is the best way to accomplish this?
>>>>>>>>>
>>>>>>>>> thanks for your continues help!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Oct 23, 2018 at 8:35 AM Aleksandar Lazic <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi.
>>>>>>>>>>
>>>>>>>>>> Am 23.10.2018 um 09:04 schrieb Imam Toufique:
>>>>>>>>>> > I am looking for some help on how to write the following apache
>>>>>>>>>> proxypass rules
>>>>>>>>>> > in HAproxy.  Not to mention I am at a bit of loss with my first
>>>>>>>>>> try :-) .  Here
>>>>>>>>>> > are my current proxypass rules:
>>>>>>>>>> >
>>>>>>>>>> > ProxyPass http://10.1.100.156:8000/jhub
>>>>>>>>>> > ProxyPassReverse http://10.1.100.156:8000/jhub
>>>>>>>>>>
>>>>>>>>>> Well ProxyPass and ProxyPassReverse do a lot of thinks not just
>>>>>>>>>> rewrites, as
>>>>>>>>>> mentioned in the doc
>>>>>>>>>>
>>>>>>>>>> https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass
>>>>>>>>>>
>>>>>>>>>> https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypassreverse
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> > <LocationMatch
>>>>>>>>>> "/jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)">
>>>>>>>>>> >     ProxyPassMatch ws://10.1.100.156:8000/jhub/$1/$2$3
>>>>>>>>>> >     ProxyPassReverse ws://10.1.100.156:8000/jhub/$1/$2$3
>>>>>>>>>> > </LocationMatch>
>>>>>>>>>> >
>>>>>>>>>> > As I am not well versed in the massive HAproxy configuration
>>>>>>>>>> guide, if any of
>>>>>>>>>> > you can give me a hand with this, I would very much appreciate
>>>>>>>>>> it.
>>>>>>>>>>
>>>>>>>>>> I'm also not "that" expert but I would try the following,
>>>>>>>>>> untested.
>>>>>>>>>>
>>>>>>>>>> ###
>>>>>>>>>> defaults
>>>>>>>>>>   mode http
>>>>>>>>>>   log global
>>>>>>>>>>
>>>>>>>>>>   #... maybe some other settings
>>>>>>>>>>   timeout tunnel 10h
>>>>>>>>>>
>>>>>>>>>> frontend https_001
>>>>>>>>>>
>>>>>>>>>>   #... maybe some other settings
>>>>>>>>>>
>>>>>>>>>>   acl websocket path_beg /jhub
>>>>>>>>>>
>>>>>>>>>>   #... maybe some other  acls
>>>>>>>>>>
>>>>>>>>>>   use_backend websocket_001 if websocket
>>>>>>>>>>
>>>>>>>>>> backend websocket_001
>>>>>>>>>>
>>>>>>>>>>   reqrep "^([^\ :]*)
>>>>>>>>>> /jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)"
>>>>>>>>>> "/jhub/\1/\2\3"
>>>>>>>>>>
>>>>>>>>>>   # You will need to replace the first column with the response
>>>>>>>>>> from the
>>>>>>>>>>   # backend response
>>>>>>>>>>   # rspirep "^Location:
>>>>>>>>>> /jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)"
>>>>>>>>>> "Location:
>>>>>>>>>> /jhub/\1/\2\3"
>>>>>>>>>>   # OR
>>>>>>>>>>   # http-response replace-header Location
>>>>>>>>>> "/jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)"
>>>>>>>>>> "/jhub/\1/\2\3"
>>>>>>>>>>
>>>>>>>>>>   # add some checks
>>>>>>>>>>
>>>>>>>>>>   server ws_01 10.1.100.156:8000 check
>>>>>>>>>> ###
>>>>>>>>>>
>>>>>>>>>> Here are some links which may help you also.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy/
>>>>>>>>>>
>>>>>>>>>> https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4-reqirep
>>>>>>>>>>
>>>>>>>>>> https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4-rspirep
>>>>>>>>>>
>>>>>>>>>> I would run haproxy in Debug mode and see how the request pass
>>>>>>>>>> haproxy and adopt
>>>>>>>>>> the config.
>>>>>>>>>>
>>>>>>>>>> It would be nice when you show us the working conf ;-)
>>>>>>>>>>
>>>>>>>>>> It would be nice to have a
>>>>>>>>>>
>>>>>>>>>> http-request replace-uri <match-regex> <replace-fmt>
>>>>>>>>>>
>>>>>>>>>> to replace the reqrep.
>>>>>>>>>>
>>>>>>>>>> > thanks
>>>>>>>>>>
>>>>>>>>>> Hth
>>>>>>>>>> Aleks
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Regards,
>>>>>>>>> *Imam Toufique*
>>>>>>>>> *213-700-5485*
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Igor Cicimov | DevOps
>>>>>>>
>>>>>>>
>>>>>>> p. +61 (0) 433 078 728
>>>>>>> e. [email protected] <http://encompasscorporation.com/>
>>>>>>> w*.* www.encompasscorporation.com
>>>>>>> a. Level 4, 65 York Street, Sydney 2000
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>> *Imam Toufique*
>>>>>> *213-700-5485*
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Igor Cicimov | DevOps
>>>>>
>>>>>
>>>>> p. +61 (0) 433 078 728
>>>>> e. [email protected] <http://encompasscorporation.com/>
>>>>> w*.* www.encompasscorporation.com
>>>>> a. Level 4, 65 York Street, Sydney 2000
>>>>>
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> *Imam Toufique*
>>>> *213-700-5485*
>>>>
>>>
>>>
>>> --
>>> Igor Cicimov | DevOps
>>>
>>>
>>> p. +61 (0) 433 078 728
>>> e. [email protected] <http://encompasscorporation.com/>
>>> w*.* www.encompasscorporation.com
>>> a. Level 4, 65 York Street, Sydney 2000
>>>
>>
>>
>> --
>> Regards,
>> *Imam Toufique*
>> *213-700-5485*
>>
>
>
> --
> Igor Cicimov | DevOps
>
>
> p. +61 (0) 433 078 728
> e. [email protected] <http://encompasscorporation.com/>
> w*.* www.encompasscorporation.com
> a. Level 4, 65 York Street, Sydney 2000
>


-- 
Regards,
*Imam Toufique*
*213-700-5485*

Reply via email to