Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 

RED/GREEN/BLURE OVA servers for demo lab

Ronenb
Cirrus
Cirrus

Hello

 

I am buiding a demo lab 

Can someone help me to download web servers (red, blue, green)  OVF files ? or can some one share the link where i can download these files ?

1 ACCEPTED SOLUTION

Instead of using using webservers I prefer to have some virtual servers running on a 2nd BIG-IP that will respond like webservers.

The replies are send by an iRule like this:

when HTTP_REQUEST {
  set cookielist ""
  foreach cookieinfo [HTTP::header values "Cookie:"] {
    append cookielist [string map -nocase {"; " "<br/>"} $cookieinfo]
  }
  if {[HTTP::cookie exists TestSessionID]} {
    set sessionid "TestSessionID=[HTTP::cookie value TestSessionID]"
  }
  else {
    set sessionid "TestSessionID=[format %09d [expr int(rand()*1e9)]].[format %09d [expr int(rand()*1e9)]]"
  }
#  use standard color names, i.e. "Blue", "Red", "Green", "Yellow", "Brown", "White", "Magenta", "Pink", "Gray"
  set servercolor "Blue"
  
  if {[string tolower [HTTP::uri]] starts_with "/text"} {
    
    set page \
"Server
\[IP::local_addr\]:\[TCP::local_port\]\t[IP::local_addr]:[TCP::local_port]
\[IP::client_addr\]:\[TCP::client_port\]\t[IP::client_addr]:[TCP::client_port]
\[HTTP::host\]\t\t\t\t[HTTP::host]
\[HTTP::uri\]\t\t\t\t[HTTP::uri]
\[HTTP::path\]\t\t\t\t[HTTP::path]
\[HTTP::query\]\t\t\t\t[HTTP::query]
\[HTTP::header X-Forwarded-For\]\t\t[HTTP::header X-Forwarded-For]
\[HTTP::header Virtual-Server-IP\]\t\t[HTTP::header Virtual-Server-IP]
\[HTTP::header X-Offloaded-SSL\]\t\t[HTTP::header X-Offloaded-SSL]
Random Number\t\t\t\t[format %04d [expr int(rand()*1e4)]]\n"
  } else {
    set page \
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\">
<html><head><title>Server $servercolor</title></head>
<body text=#000000 bgcolor=$servercolor>
<h2><font face=Verdana>Server $servercolor</font></h2>
<font face=Verdana><table border cellpadding=2 bgcolor=#C0C0C0>
<tr><td>\[IP::local_addr\]:\[TCP::local_port\]</td><td>[IP::local_addr]:[TCP::local_port]&nbsp;</td></tr>
<tr><td>\[IP::client_addr\]:\[TCP::client_port\]</td><td>[IP::client_addr]:[TCP::client_port]&nbsp;</td></tr>
<tr><td>\[HTTP::host\]</td><td>[HTTP::host]&nbsp;</td></tr>
<tr><td>\[HTTP::uri\]</td><td>[HTTP::uri]&nbsp;</td></tr>
<tr><td>\[HTTP::path\]</td><td>[HTTP::path]&nbsp;</td></tr>
<tr><td>\[HTTP::query\]</td><td>[HTTP::query]&nbsp;</td></tr>
<tr><td>\[HTTP::header X-Forwarded-For\]</td><td>[HTTP::header X-Forwarded-For]&nbsp;</td></tr>
<tr><td>\[HTTP::header Virtual-Server-IP\]</td><td>[HTTP::header Virtual-Server-IP]&nbsp;</td></tr>
<tr><td>\[HTTP::header X-Offloaded-SSL\]</td><td>[HTTP::header X-Offloaded-SSL]&nbsp;</td></tr>
<tr><td>Clientside Cookies:</td><td>$cookielist&nbsp;</td></tr>
<tr><td>Random Number:</td><td><font color=red>[format %04d [expr int(rand()*1e4)]]&nbsp;</font></td></tr>
</table></font></body></html>"
  }
  HTTP::respond 200 -version auto content "$page" noserver Set-Cookie $sessionid Server "$servercolor" Date "[clock format [clock seconds] -format {%a, %b %d %Y %H:%M:%S GMT} -gmt 1]"
  event disable
  return
}

This one can easily be enhanced to mirror different request parameters.

Screenshot 2022-08-15 194821.png

It works as well for cURL with plain text replies:

# curl http://10.131.131.184/text/testpath?param=queryparam -H 'Host: app3.lb-net.bit' -sv
*   Trying 10.131.131.184...
* Connected to 10.131.131.184 (10.131.131.184) port 80 (#0)
> GET /text/testpath?param=queryparam HTTP/1.1
> Host: app3.lb-net.bit
> User-Agent: curl/7.47.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Set-Cookie: TestSessionID=123988933.882004550
< Server: Blue
< Date: Mon, Aug 15 2022 17:50:31 GMT
< Connection: Keep-Alive
< Content-Length: 385
<
Server
[IP::local_addr]:[TCP::local_port]      10.131.131.184:80
[IP::client_addr]:[TCP::client_port]    10.131.131.181:43618
[HTTP::host]                            app3.lb-net.bit
[HTTP::uri]                             /text/testpath?param=queryparam
[HTTP::path]                            /text/testpath
[HTTP::query]                           param=queryparam
[HTTP::header X-Forwarded-For]
[HTTP::header Virtual-Server-IP]
[HTTP::header X-Offloaded-SSL]
Random Number                           8504

 

View solution in original post

1 REPLY 1

Instead of using using webservers I prefer to have some virtual servers running on a 2nd BIG-IP that will respond like webservers.

The replies are send by an iRule like this:

when HTTP_REQUEST {
  set cookielist ""
  foreach cookieinfo [HTTP::header values "Cookie:"] {
    append cookielist [string map -nocase {"; " "<br/>"} $cookieinfo]
  }
  if {[HTTP::cookie exists TestSessionID]} {
    set sessionid "TestSessionID=[HTTP::cookie value TestSessionID]"
  }
  else {
    set sessionid "TestSessionID=[format %09d [expr int(rand()*1e9)]].[format %09d [expr int(rand()*1e9)]]"
  }
#  use standard color names, i.e. "Blue", "Red", "Green", "Yellow", "Brown", "White", "Magenta", "Pink", "Gray"
  set servercolor "Blue"
  
  if {[string tolower [HTTP::uri]] starts_with "/text"} {
    
    set page \
"Server
\[IP::local_addr\]:\[TCP::local_port\]\t[IP::local_addr]:[TCP::local_port]
\[IP::client_addr\]:\[TCP::client_port\]\t[IP::client_addr]:[TCP::client_port]
\[HTTP::host\]\t\t\t\t[HTTP::host]
\[HTTP::uri\]\t\t\t\t[HTTP::uri]
\[HTTP::path\]\t\t\t\t[HTTP::path]
\[HTTP::query\]\t\t\t\t[HTTP::query]
\[HTTP::header X-Forwarded-For\]\t\t[HTTP::header X-Forwarded-For]
\[HTTP::header Virtual-Server-IP\]\t\t[HTTP::header Virtual-Server-IP]
\[HTTP::header X-Offloaded-SSL\]\t\t[HTTP::header X-Offloaded-SSL]
Random Number\t\t\t\t[format %04d [expr int(rand()*1e4)]]\n"
  } else {
    set page \
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\">
<html><head><title>Server $servercolor</title></head>
<body text=#000000 bgcolor=$servercolor>
<h2><font face=Verdana>Server $servercolor</font></h2>
<font face=Verdana><table border cellpadding=2 bgcolor=#C0C0C0>
<tr><td>\[IP::local_addr\]:\[TCP::local_port\]</td><td>[IP::local_addr]:[TCP::local_port]&nbsp;</td></tr>
<tr><td>\[IP::client_addr\]:\[TCP::client_port\]</td><td>[IP::client_addr]:[TCP::client_port]&nbsp;</td></tr>
<tr><td>\[HTTP::host\]</td><td>[HTTP::host]&nbsp;</td></tr>
<tr><td>\[HTTP::uri\]</td><td>[HTTP::uri]&nbsp;</td></tr>
<tr><td>\[HTTP::path\]</td><td>[HTTP::path]&nbsp;</td></tr>
<tr><td>\[HTTP::query\]</td><td>[HTTP::query]&nbsp;</td></tr>
<tr><td>\[HTTP::header X-Forwarded-For\]</td><td>[HTTP::header X-Forwarded-For]&nbsp;</td></tr>
<tr><td>\[HTTP::header Virtual-Server-IP\]</td><td>[HTTP::header Virtual-Server-IP]&nbsp;</td></tr>
<tr><td>\[HTTP::header X-Offloaded-SSL\]</td><td>[HTTP::header X-Offloaded-SSL]&nbsp;</td></tr>
<tr><td>Clientside Cookies:</td><td>$cookielist&nbsp;</td></tr>
<tr><td>Random Number:</td><td><font color=red>[format %04d [expr int(rand()*1e4)]]&nbsp;</font></td></tr>
</table></font></body></html>"
  }
  HTTP::respond 200 -version auto content "$page" noserver Set-Cookie $sessionid Server "$servercolor" Date "[clock format [clock seconds] -format {%a, %b %d %Y %H:%M:%S GMT} -gmt 1]"
  event disable
  return
}

This one can easily be enhanced to mirror different request parameters.

Screenshot 2022-08-15 194821.png

It works as well for cURL with plain text replies:

# curl http://10.131.131.184/text/testpath?param=queryparam -H 'Host: app3.lb-net.bit' -sv
*   Trying 10.131.131.184...
* Connected to 10.131.131.184 (10.131.131.184) port 80 (#0)
> GET /text/testpath?param=queryparam HTTP/1.1
> Host: app3.lb-net.bit
> User-Agent: curl/7.47.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Set-Cookie: TestSessionID=123988933.882004550
< Server: Blue
< Date: Mon, Aug 15 2022 17:50:31 GMT
< Connection: Keep-Alive
< Content-Length: 385
<
Server
[IP::local_addr]:[TCP::local_port]      10.131.131.184:80
[IP::client_addr]:[TCP::client_port]    10.131.131.181:43618
[HTTP::host]                            app3.lb-net.bit
[HTTP::uri]                             /text/testpath?param=queryparam
[HTTP::path]                            /text/testpath
[HTTP::query]                           param=queryparam
[HTTP::header X-Forwarded-For]
[HTTP::header Virtual-Server-IP]
[HTTP::header X-Offloaded-SSL]
Random Number                           8504