aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <root@copernicus>2015-04-05 02:01:54 +0200
committerroot <root@copernicus>2015-04-05 02:01:54 +0200
commitc2e2960899fc2a52b8bf03f842bebf81c8b5404d (patch)
tree57e2db72a0e467e8c75f27adc4fffe3974b5fe57
parenta1addd24838ecb4eb310620ce8bfa3495ed7613e (diff)
Cleaned passwords, made it ready for further development before TG16
-rwxr-xr-xfap/README.md32
-rwxr-xr-xfap/database/README.md63
-rwxr-xr-xfap/dhcpd/DHCP_protocol_breakdown.txt18
-rwxr-xr-xfap/dhcpd/module_craft_option.py79
-rwxr-xr-xfap/dhcpd/module_lease.py174
-rwxr-xr-xfap/dhcpd/server_dhcp.py360
-rwxr-xr-xfap/dhcpd/terminal.log146
-rwxr-xr-xfap/httpd/# DEPRECATED/server_http.py146
-rwxr-xr-xfap/httpd/# DEPRECATED/terminal.log14
-rwxr-xr-xfap/httpd/README.md26
-rwxr-xr-xfap/httpd/files/.gitignore3
-rw-r--r--fap/httpd/httpd_root/# create_queries - DEPRECATED/create_queries.php55
-rw-r--r--fap/httpd/httpd_root/# create_queries - DEPRECATED/ipcalc_functions.php134
-rw-r--r--fap/httpd/httpd_root/# create_queries - DEPRECATED/patchlist.txt142
-rw-r--r--fap/httpd/httpd_root/# create_queries - DEPRECATED/switches.txt142
-rw-r--r--fap/httpd/httpd_root/.gitignore0
-rwxr-xr-xfap/httpd/httpd_root/.htaccess3
-rwxr-xr-xfap/httpd/httpd_root/ex2200.template288
-rwxr-xr-xfap/httpd/httpd_root/ex2200_secure.template312
-rw-r--r--fap/httpd/httpd_root/pg_connect.php6
-rwxr-xr-xfap/httpd/httpd_root/x.php67
-rw-r--r--fap/logs/httpd.log667
-rwxr-xr-xfap/proof_of_concepts/distro_during_testing.config355
-rwxr-xr-xfap/proof_of_concepts/tg15-tech82-poc1.tar.gzbin0 -> 4691 bytes
-rw-r--r--fap/tools_temp/get_info.php48
25 files changed, 3280 insertions, 0 deletions
diff --git a/fap/README.md b/fap/README.md
new file mode 100755
index 0000000..f41e879
--- /dev/null
+++ b/fap/README.md
@@ -0,0 +1,32 @@
+# FAP - Fast and Agile Provisioning
+
+Tools (DHCP daemon + HTTP daemon + DB) for managing provisioning towards a large number of factory default Juniper switches (EX2200) using ZTP (Zero Touch Protocol) over DHCP relays.
+
+The project is built with Python (>3.4.0) and PostgreSQL (>9.3.5).
+
+Licensed under the GNU GPL, version 2. See the included COPYING file.
+
+
+
+## Usage
+Launch the python scripts for fap from tgmanage directory.
+
+
+### HTTPD
+ j@lappie:~/git/tgmanage$ sudo python3 fap/httpd/server_http.py
+
+Example: <a href="httpd/terminal.log">httpd/terminal.log</a>
+
+
+### DHCPD
+ j@lappie:~/git/tgmanage$ sudo python3 fap/dhcpd/server_dhcp.py
+
+Example: <a href="dhcpd/terminal.log">dhcpd/terminal.log</a>
+
+
+# TODO
+* DONE: Support for IPv6 management
+* Process multiple HTTP request simultaneously
+* Support for only pushing JunOS image to switch - no config (for backup switches)
+* Try/catch on whole ethernet frame in DHCPD
+* Timestamps on each line in log both from DHCPD and HTTPD
diff --git a/fap/database/README.md b/fap/database/README.md
new file mode 100755
index 0000000..3d014d3
--- /dev/null
+++ b/fap/database/README.md
@@ -0,0 +1,63 @@
+# Database layout
+
+PostgreSQL
+
+**Tables**
+```
+bootstrap-> \dt
+ List of relations
+ Schema | Name | Type | Owner
+--------+----------+-------+-----------
+ public | switches | table | bootstrap
+```
+
+
+**Table structure**
+```
+fap=> \d switches
+ Table "public.switches"
+ Column | Type | Modifiers
+-------------------+------------------------+-------------------------------------------------------
+ id | integer | not null default nextval('switches_id_seq'::regclass)
+ hostname | character varying(20) |
+ distro_name | character varying(100) |
+ distro_phy_port | character varying(100) |
+ mgmt_v4_addr | character varying(15) |
+ mgmt_v4_cidr | smallint |
+ mgmt_v4_gw | character varying(15) |
+ mgmt_v6_cidr | smallint |
+ mgmt_v6_addr | character varying(35) |
+ mgmt_v6_gw | character varying(35) |
+ mgmt_vlan | smallint |
+ last_config_fetch | integer |
+ current_mac | character varying(17) |
+ model | character varying(20) |
+ traffic_vlan | integer |
+```
+
+
+**Sample content in DB**
+```
+fap=> select * from switches where [...] order by id desc;
+ id | hostname | distro_name | distro_phy_port | mgmt_v4_addr | mgmt_v4_cidr | mgmt_v4_gw | mgmt_v6_cidr | mgmt_v6_addr | mgmt_v6_gw | mgmt_vlan | last_config_fetch | current_mac | model | traffic_vlan
+-----+--------------------+----------------+-----------------+-----------------+--------------+-----------------+--------------+---------------------+-------------------+-----------+-------------------+-------------------+-------+--------------
+ 447 | sw1-crew | rs1.crew | ge-0/0/39 | 151.216.183.66 | 27 | 151.216.183.65 | 64 | 2a02:ed02:1832::66 | 2a02:ed02:1832::1 | 666 | | 44:f4:77:69:4d:41 | | 1701
+ 442 | sw2-gamestudio | rs1.north | ge-0/0/45 | 151.216.183.230 | 27 | 151.216.183.225 | 64 | 2a02:ed02:1837::230 | 2a02:ed02:1837::1 | 666 | | 44:f4:77:69:5d:41 | | 229
+ 435 | sw1-south | rs1.south | ge-0/0/45 | 151.216.183.98 | 27 | 151.216.183.97 | 64 | 2a02:ed02:1836::98 | 2a02:ed02:1836::1 | 666 | | 44:f4:77:69:49:81 | | 234
+ 434 | sw8-creativia | rs1.distro6 | ge-0/0/25 | 151.216.181.155 | 26 | 151.216.181.129 | 64 | 2a02:ed02:181c::155 | 2a02:ed02:181c::1 | 666 | | 44:f4:77:69:1a:c1 | | 2008
+ 420 | e83-1 | rs1.distro7 | ge-0/0/20 | 151.216.181.214 | 26 | 151.216.181.193 | 64 | 2a02:ed02:181d::214 | 2a02:ed02:181d::1 | 666 | | 44:f4:77:69:53:c1 | | 1831
+ 419 | e81-2 | rs1.distro7 | ge-0/0/19 | 151.216.181.213 | 26 | 151.216.181.193 | 64 | 2a02:ed02:181d::213 | 2a02:ed02:181d::1 | 666 | | 44:f4:77:69:4b:81 | | 1812
+ 418 | e81-1 | rs1.distro7 | ge-0/0/18 | 151.216.181.212 | 26 | 151.216.181.193 | 64 | 2a02:ed02:181d::212 | 2a02:ed02:181d::1 | 666 | | 44:f4:77:68:eb:c1 | | 1811
+ 417 | e79-4 | rs1.distro6 | ge-0/0/17 | 151.216.181.147 | 26 | 151.216.181.129 | 64 | 2a02:ed02:181c::147 | 2a02:ed02:181c::1 | 666 | | 44:f4:77:69:02:c1 | | 1794
+```
+
+
+**Connect to DB from CLI**
+```
+j@lappie:~/git/tgmanage$ psql -U bootstrap -d bootstrap -W
+Password for user bootstrap:
+psql (9.3.5)
+Type "help" for help.
+
+bootstrap=>
+```
diff --git a/fap/dhcpd/DHCP_protocol_breakdown.txt b/fap/dhcpd/DHCP_protocol_breakdown.txt
new file mode 100755
index 0000000..5af2bf2
--- /dev/null
+++ b/fap/dhcpd/DHCP_protocol_breakdown.txt
@@ -0,0 +1,18 @@
+Length of DHCP fields in octets, and their placement in packet.
+Ref: http://4.bp.blogspot.com/-IyYoFjAC4l8/UXuo16a3sII/AAAAAAAAAXQ/b6BojbYXoXg/s1600/DHCPTitle.JPG
+0 OP - 1
+1 HTYPE - 1
+2 HLEN - 1
+3 HOPS - 1
+4 XID - 4
+5 SECS - 2
+6 FLAGS - 2
+7 CIADDR - 4
+8 YIADDR - 4
+9 SIADDR - 4
+10 GIADDR - 4
+11 CHADDR - 6
+12 MAGIC COOKIE - 10
+13 PADDING - 192 octets of 0's
+14 MAGIC COOKIE - 4
+15 OPTIONS - variable length
diff --git a/fap/dhcpd/module_craft_option.py b/fap/dhcpd/module_craft_option.py
new file mode 100755
index 0000000..35e7328
--- /dev/null
+++ b/fap/dhcpd/module_craft_option.py
@@ -0,0 +1,79 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+'''
+ Created by Jonas 'j' Lindstad for The Gathering 2015
+ License: GPLv3
+
+ Class used to craft byte hex encoded DHCP options
+
+ NB: No direct support for suboptions. Should be possible to craft suboptions as
+ options, and inject them with craft_option(<option>).raw_hes(<conconcatenated options>)
+
+ Usage examples:
+ craft_option.debug = True
+ print(craft_option(1).string('vg.no'))
+ print(craft_option(2).bytes(b'abcd'))
+ print(craft_option(3).bytes(socket.inet_aton('192.168.0.55')))
+ print(craft_option(4).bytes(b'\xde\xad\xbe\xef\xfe\xed'))
+ print(craft_option(5).raw_hex(b'\x72\x78'))
+ print(craft_option(6).ip('255.255.128.0'))
+'''
+
+from binascii import hexlify, unhexlify
+
+class craft_option(object):
+ # content = b'' # content will be stored as hex values like hex(10) + hex(255) = 0aff
+ debug = False
+ def __init__(self, code):
+ self.code = self.__int_to_pad_byte(code)
+
+ # Works as intended
+ # internal function. Converts int(3) to str('03'), int('11') to str('0b'), int(255) to str('ff')
+ def __int_to_pad_byte(self, integer):
+ return hex(integer).split('x')[1].rjust(2, '0').encode()
+
+ # Works as intended
+ def string(self, string):
+ self.method = 'string'
+ self.content = hexlify(string.encode())
+ return self.process()
+
+ # Works as intended
+ def bytes(self, bytes):
+ self.method = 'bytes'
+ self.content = hexlify(bytes)
+ return self.process()
+
+ # Works as intended
+ # str('10.20.30.40') to b'\x10\x20\x30\x40'
+ def ip(self, ip):
+ self.method = 'ip'
+ self.content = ''.join([hex(int(i))[2:].rjust(2, '0') for i in ip.split('.')]).encode()
+ return self.process()
+
+ # Works as intended
+ # string like '\x72\x78' for 'rx'
+ def raw_hex(self, raw_hex):
+ self.method = 'raw_hex'
+ self.content = hexlify(raw_hex)
+ return self.process()
+
+
+
+ # TODO Does not work as intended
+ # int(666) to b'\x02\x9A'
+ def integer(self, integer):
+ self.method = 'integer'
+ self.content = ''.join([hex(int(i))[2:].rjust(2, '0') for i in ip.split('.')])
+ return self.process()
+
+ def process(self):
+ length = self.__int_to_pad_byte(len(unhexlify(self.content)))
+ if self.debug is True:
+ print('----------')
+ print(self.method + '():')
+ print(self.code + length)
+ print(b'content: ' + self.content)
+ print(unhexlify(self.content))
+ return unhexlify(self.code + length + self.content)
diff --git a/fap/dhcpd/module_lease.py b/fap/dhcpd/module_lease.py
new file mode 100755
index 0000000..0473579
--- /dev/null
+++ b/fap/dhcpd/module_lease.py
@@ -0,0 +1,174 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+'''
+ Created by Jonas 'j' Lindstad for The Gathering 2015
+ License: GPLv3
+
+ Class used to fetch data from the Postgres DB
+
+ Usage examples:
+ lease.debug = True
+ x = lease({'distro_name': 'distro-test', 'distro_phy_port': 'ge-0/0/6'}).get_dict()
+ print('key lookup - hostname: %s' % x['hostname'])
+'''
+
+import psycopg2
+import psycopg2.extras
+
+# settings
+settings = dict(
+ db = dict(
+ user = 'fap',
+ password = '<sensored>',
+ dbname = 'fap',
+ host = 'localhost'
+ )
+)
+
+# connect to Postgres DB
+connect_params = ("dbname='%s' user='%s' host='%s' password='%s'" % (settings['db']['dbname'], settings['db']['user'], settings['db']['host'], settings['db']['password']))
+conn = psycopg2.connect(connect_params)
+cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
+
+class lease(object):
+ debug = False
+
+ def __init__(self, identifiers):
+ if len(identifiers) > 0: # 1 or more identifiers - we're good to go
+
+ # build query string
+ where_pieces = []
+ for x in identifiers.items():
+ where_pieces.append(str(x[0]) + " = '" + str(x[1]) + "'")
+ where = ' AND '.join(where_pieces)
+ select = "SELECT * FROM switches WHERE " + where + " LIMIT 1"
+
+ if self.debug is True:
+ print('Executing query: ' + select)
+
+ cur.execute(select)
+
+ rows = cur.fetchall()
+ if len(rows) is 1:
+ if self.debug is True:
+ print('returned from DB:')
+ for key, value in rows[0].items():
+ print('%s: %s' % (key, value))
+
+ self.row = rows[0]
+ else:
+ self.row = False
+ else:
+ print('Missing identifier parameter')
+ exit()
+
+ def get_ip(self):
+ if self.row is not False:
+ return self.row['ip']
+ else:
+ print('identifiers (%s) not found' % self.row)
+ return False
+
+ def get_config(self):
+ if self.row is not False:
+ return self.row['config']
+ else:
+ print('identifiers (%s) not found' % self.row)
+ return False
+
+ def get_dict(self):
+ if self.row is not False:
+ return self.row
+ else:
+ print('identifiers (%s) not found' % self.row)
+ return False
+
+
+#
+# TESTING - Bruker ID fra DB-en som identifier, og kjører en query per lease.get_x()
+#
+class lease2(object):
+ debug = False
+ hostname = False
+ identifiers = False
+
+ # identifiers = dict of field/values
+ def __init__(self, identifiers):
+ cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
+
+ if len(identifiers) > 0: # 1 or more identifiers - we're good to go
+ self.identifiers = identifiers # Used to debug if no match for the identifiers is given
+
+ # build query string
+ where_pieces = []
+ for identifier in identifiers.items():
+ where_pieces.append(str(identifier[0]) + " = '" + str(identifier[1]) + "'")
+ where = ' AND '.join(where_pieces)
+ select = "SELECT hostname FROM switches WHERE " + where + " LIMIT 1"
+
+ if self.debug is True:
+ print('Executing query: ' + select)
+
+ cur.execute(select)
+ rows = cur.fetchall()
+ cur.close()
+ if len(rows) is 1:
+ if self.debug is True:
+ print('returned from DB:')
+ print(rows[0][0])
+ self.hostname = rows[0][0]
+ else:
+ self.hostname = False
+ else:
+ print('Missing identifier parameter')
+ exit()
+
+ # Used to fetch fields from DB
+ def get(self, field):
+ if self.hostname is not False:
+ cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
+
+ query = "SELECT %s FROM switches WHERE hostname = '%s' LIMIT 1" % (field, self.hostname)
+ if self.debug is True:
+ print('Query: %s' % query)
+
+ try:
+ cur.execute(query)
+ rows = cur.fetchall()
+
+ if len(rows) is 1:
+ if self.debug is True:
+ print('returned from DB:')
+ print(rows[0][0])
+ return rows[0][0]
+ else:
+ if self.debug is True:
+ print('No data found - field: %s' % field)
+ return False
+ except psycopg2.ProgrammingError:
+ print('Field (%s) not found' % field)
+ conn.rollback() # Prevents DB from locking up the next queries - http://initd.org/psycopg/docs/connection.html#connection.rollback
+ return False
+ else:
+ print('identifiers (%s) not found' % self.identifiers)
+ return False
+
+ # Used to set fields in DB
+ def set(self, field, value):
+ if self.hostname is not False:
+ cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
+ query = "UPDATE switches SET %s = '%s' WHERE hostname = '%s'" % (field, value, self.hostname)
+ if self.debug is True:
+ print('Query: %s' % query)
+ try:
+ cur.execute(query)
+ conn.commit()
+ return True
+ except psycopg2.ProgrammingError:
+ print('Field (%s) not found' % field)
+ conn.rollback()
+ return False
+ else:
+ print('identifiers (%s) not found' % self.identifiers)
+ return False
diff --git a/fap/dhcpd/server_dhcp.py b/fap/dhcpd/server_dhcp.py
new file mode 100755
index 0000000..592e1eb
--- /dev/null
+++ b/fap/dhcpd/server_dhcp.py
@@ -0,0 +1,360 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+'''
+server_dhcp.py by Jonas "j" Lindstad for The Gathering tech:server
+
+Used to configure the Juniper EX2200 edge switches with Zero Touch Protocol
+License: GPLv2
+
+Based on the work of psychomario - https://github.com/psychomario
+'''
+
+
+'''
+
+TODO
+
+ * try/catch around each incomming packet - prevents DHCP-server from crashing if it receives a malformed packet
+
+'''
+
+import socket, binascii, IN
+from module_craft_option import craft_option # Module that crafts DHCP options
+# from module_lease import lease # Module that fetches data from DB and provides data for the lease
+from module_lease import lease2 as lease # Module that fetches data from DB and provides data for the lease
+
+
+# Global options - not a pretty hack
+options_raw = {} # TODO - not a nice way to do things
+option_82_1 = ''
+client = ''
+
+
+#############
+# FUNCTIONS #
+#############
+
+# Generator for each of the dhcp fields
+def split_packet(msg,slices):
+ for x in slices:
+ yield msg[:x]
+ msg = msg[x:]
+
+# Splits a chunk of hex into a list of hex. (0123456789abcdef => ['01', '23', '45', '67', '89', 'ab', 'cd', 'ef'])
+def chunk_hex(hex):
+ return [hex[i:i+2] for i in range(0, len(hex), 2)]
+
+# Convert hex IP to string with formated decimal IP. (0a0000ff => 10.0.0.255)
+def hex_ip_to_str(hex_ip):
+ return '.'.join(str(y) for y in map(lambda x: int(x, 16), chunk_hex(hex_ip))) # cast int to str for join
+
+# formats a MAC address in the format "b827eb9a520f" to "b8:27:eb:9a:52:0f"
+def format_hex_mac(hex_mac):
+ return ':'.join(str(x) for x in chunk_hex(hex_mac))
+
+# Formats a 6 byte MAC to a readable string (b'5e\x21\x00r3' => '35:65:21:00:72:33')
+def six_byte_mac_to_str(mac):
+ return ':'.join('%02x' % byte for byte in mac)
+
+# b'b827eb9a520f' => 'b8:27:eb:9a:52:0f'
+def prettyprint_hex_as_str(hex):
+ return ':'.join('%02x' % byte for byte in binascii.unhexlify(hex))
+
+# CIDR notation to subnet string ('25' => '255.255.255.128')
+def cidr_to_subnet(cidr):
+ mask = [0, 0, 0, 0]
+ for i in range(int(cidr)):
+ mask[i//8] = mask[i//8] + (1 << (7 - i % 8))
+ return '.'.join(str(x) for x in mask)
+
+# Parses DHCP options - raw = hex options
+def parse_options(raw):
+ print('[%s] --> processing DHCP options' % client)
+ chunked = chunk_hex(raw)
+ chunked_length = len(chunked)
+ pointer = 0 # counter - next option start
+ options = {} # options dataset
+
+ global options_raw
+ options_raw = {} # incomming request's options
+ special_options = [53, 82]
+
+ while True: # Loop over the DHCP options
+ option = int(chunked[pointer], 16) # option ID (0 => 255)
+ code = int(chunked[pointer], 16) # option code (0 => 255) # New int for options' ID with correct name. Replaces $option
+
+ length = int(chunked[pointer+1], 16) # option length
+ option_payload = raw[((pointer+2)*2):((pointer+length+2)*2)] # Contains the payload of the option - without option ID and length
+ options_raw[code] = option_payload # copying incomming request's options, directly usable in outgoing replies
+
+ asciivalue = binascii.unhexlify(option_payload) # should not contain unreadable characters
+
+ if option in special_options:
+ if option is 82:
+ option82_raw = option_payload
+ options[option] = parse_suboptions(option, option_payload)
+ elif option is 53:
+ options[option] = option_payload
+ # options[option] = 1 # Not adding DHCP DISCOVER to the options list, becouse it will not be used further on
+ if int(chunked[pointer+2], 16) is 1:
+ print('[%s] --> option: %s: %s' % (client, option, 'DHCP Discover (will not be used in reply)'))
+ else:
+ print('[%s] --> option: %s: %s' % (client, option, asciivalue))
+
+ else:
+ options[option] = asciivalue
+ # TODO: Formating.... Also crap code
+ try:
+ if len(asciivalue) > 30:
+ print('[%s] --> option: %s: %s' % (client, option, asciivalue[:26] + ' [...]'))
+ else:
+ print('[%s] --> option: %s: %s' % (client, option, asciivalue))
+ except Exception:
+ if len(asciivalue) > 30:
+ print('[%s] --> option: %s: %s' % (client, option, prettyprint_hex_as_str(option_payload)[:26] + ' [...]'))
+ else:
+ print('[%s] --> option: %s: %s' % (client, option, prettyprint_hex_as_str(option_payload)))
+ pass
+
+ pointer = pointer + length + 2 # place pointer at the next options' option ID/code field
+
+ if int(chunked[pointer], 16) is 255: # end of DHCP options - should allways last field
+ print('[%s] --> Finished processing options' % client)
+ break
+ return options
+
+# Parses suboptions
+def parse_suboptions(option, raw):
+ print('[%s] --> processing suboption hook for option %s' % (client, option))
+ chunked = chunk_hex(raw)
+ chunked_length = len(chunked)
+ pointer = 0 # counter - next option start
+ dataset = {}
+
+ if option is 82: # Option 82 - custom shit: Setting global variable to list
+ global option_82_1
+
+ while True:
+ length = int(chunked[pointer+1], 16) # option length in bytes
+ value = raw[4:(length*2)+(4)]
+
+ if option is 82 and int(chunked[0], 16) is 1: # Option 82 - custom shit: Putting data in list
+ option_82_1 = binascii.unhexlify(value).decode()
+
+ print('[%s] --> suboption %s found - value: "%s"' % (client, int(chunked[0], 16), binascii.unhexlify(value).decode())) # will fail on non-ascii characters
+
+ dataset[int(chunked[0], 16)] = value
+ pointer = pointer + length + 2 # place pointer at the next options' option ID/code field
+ if pointer not in chunked: # end of DHCP options - allways last field
+ print('[%s] --> Finished processing suboption %s' % (client, option))
+ break
+ return dataset
+
+# Parses and handles DHCP DISCOVER or DHCP REQUEST
+def reqparse(message):
+ data=None
+ dhcpfields=[1,1,1,1,4,2,2,4,4,4,4,6,10,192,4,message.rfind(b'\xff'),1]
+ hexmessage=binascii.hexlify(message)
+ messagesplit=[binascii.hexlify(x) for x in split_packet(message,dhcpfields)]
+
+ global client
+ client = prettyprint_hex_as_str(messagesplit[11])
+
+ if messagesplit[11][0:6] != b'44f477':
+ print('[%s] Client not Juniper - exiting (GIADDR: %s)' % (client, hex_ip_to_str(messagesplit[10])))
+ return False
+
+ print('[%s] Parsing DHCP packet from client' % client)
+
+ #
+ # Logical checks to decide to whether respond or reject
+ #
+ if int(hex_ip_to_str(messagesplit[10]).replace('.', '')) is 0: # DHCP request has been forwarded by DHCP relay - A bit haxxy..
+ print('[%s] Rejecting to process DHCP packet - not forwarded by DHCP relay' % client)
+ return False
+
+
+ # Process DHCP options
+ options = parse_options(messagesplit[15])
+
+ # Option 82 is set in the packet
+ if 82 not in options:
+ print('[%s] Rejecting to process DHCP packet - DHCP option 82 not set' % client)
+ return False
+
+ # 1 = DHCP Discover message (DHCPDiscover).
+ # 2 = DHCP Offer message (DHCPOffer).
+ # 3 = DHCP Request message (DHCPRequest).
+ # 4 = DHCP Decline message (DHCPDecline).
+ # 5 = DHCP Acknowledgment message (DHCPAck).
+ # 6 = DHCP Negative Acknowledgment message (DHCPNak).
+ # 7 = DHCP Release message (DHCPRelease).
+ # 8 = DHCP Informational message (DHCPInform).
+
+ # Check DHCP request type
+ if options[53] == b'01':
+ mode = 'dhcp_discover'
+ print('[%s] --> DHCP packet type: DHCP DISCOVER' % client)
+ elif options[53] == b'03':
+ mode = 'dhcp_request'
+ print('[%s] --> DHCP packet type: DHCP REQUEST' % client)
+ elif options[53] == b'04':
+ print('[%s] --> DHCP packet type: DHCP DECLINE - Not implemented' % client)
+ return False
+ elif options[53] == b'05':
+ print('[%s] --> DHCP packet type: DHCP ACK - Not implemented' % client)
+ return False
+ elif options[53] == b'06':
+ print('[%s] --> DHCP packet type: DHCP NEGATIVE ACK - Not implemented' % client)
+ return False
+ elif options[53] == b'07':
+ print('[%s] --> DHCP packet type: DHCP RELEASE - Not implemented' % client)
+ return False
+ elif options[53] == b'08':
+ print('[%s] --> DHCP packet type: DHCP INFORM - Not implemented' % client)
+ return False
+ else:
+ print('[%s] Rejecting to continue process DHCP packet - option 53 missing' % client) # Small sanity check
+ return False
+
+
+ #
+ # Packet passes our requirements
+ #
+ print('[%s] --> DHCP packet contains option 82 - continues to process' % client)
+ print('[%s] --> DHCP packet forwarded by relay %s' % (client, hex_ip_to_str(messagesplit[10])))
+ print('[%s] --> DHCP XID/Transaction ID: %s' % (client, prettyprint_hex_as_str(messagesplit[4])))
+
+ # Handle DB request - do DB lookup based on option 82
+ print('[%s] --> Looking up in the DB' % (client))
+
+ option_82_1_pieces = option_82_1.split(':')
+
+ if len(option_82_1_pieces) == 3:
+ (distro, phy, vlan) = option_82_1.split(':')
+ print('[%s] --> Query details: distro_name:%s, distro_phy_port:%s' % (client, distro, phy.split('.')[0]))
+
+ lease_identifiers = {'distro_name': distro, 'distro_phy_port': phy.split('.')[0]}
+ if lease(lease_identifiers).get('hostname') is not False:
+ l={
+ 'hostname': lease(lease_identifiers).get('hostname'),
+ 'mgmt_v4_addr': lease(lease_identifiers).get('mgmt_v4_addr'),
+ 'mgmt_v4_gw': lease(lease_identifiers).get('mgmt_v4_gw'),
+ 'mgmt_v4_cidr': lease(lease_identifiers).get('mgmt_v4_cidr')
+ }
+
+ # lease_details = lease({'distro_name': distro, 'distro_phy_port': phy[:-2]}).get_dict()
+ print('[%s] --> Data found, switch exists in DB - ready to craft response' % client)
+ else:
+ print('[%s] --> Data not found, switch does not exists in DB' % client)
+ return False
+ elif len(option_82_1_pieces) > 0:
+ print('[%s] --> Option 82 does not contained required syntax (<distro>:<phy_port>:<vlan>)' % client)
+ print('[%s] --> Option 82: %s' % (client, option_82_1))
+ print('[%s] --> Ending request' % client)
+ return False
+ else:
+ print('[%s] Rejecting to continue to process DHCP packet - option 82.1 is empty' % client)
+
+ if mode == 'dhcp_discover':
+ print('[%s] --> Crafting DHCP OFFER response' % client)
+
+ if mode == 'dhcp_request':
+ print('[%s] --> Crafting DHCP ACK response' % client)
+
+ print('[%s] --> XID/Transaction ID: %s' % (client, prettyprint_hex_as_str(messagesplit[4])))
+ print('[%s] --> Client IP: %s' % (client, l['mgmt_v4_addr']))
+ print('[%s] --> DHCP forwarder IP: %s' % (client, l['mgmt_v4_gw']))
+ print('[%s] --> Client MAC: %s' % (client, client))
+
+ data = b'\x02' # Message type - boot reply
+ data += b'\x01' # Hardware type - ethernet
+ data += b'\x06' # Hardware address length - 6 octets for MAC
+ data += b'\x01' # Hops
+ data += binascii.unhexlify(messagesplit[4]) # XID / Transaction ID
+ data += b'\x00\x00' # seconds elapsed - 1 second
+ data += b'\x80\x00' # BOOTP flags - broadcast (unicast: 0x0000)
+ data += b'\x00'*4 # Client IP address
+ data += socket.inet_aton(l['mgmt_v4_addr']) # New IP to client
+ data += socket.inet_aton(dhcp_server_address) # Next server IP address
+ data += socket.inet_aton(l['mgmt_v4_gw']) # Relay agent IP - DHCP forwarder
+ data += binascii.unhexlify(messagesplit[11]) # Client MAC
+ data += b'\x00'*202 # Client hardware address padding (10) + Server hostname (64) + Boot file name (128)
+ data += b'\x63\x82\x53\x63' # Magic cookie
+
+ #
+ # Craft DHCP options
+ #
+ print('[%s] --> Completed DHCP header structure, building DHCP options' % client)
+
+ if mode == 'dhcp_discover':
+ print('[%s] --> Option 53 (DHCP OFFER): 2' % client)
+ data += craft_option(53).raw_hex(b'\x02') # Option 53 - DHCP OFFER
+
+ if mode == 'dhcp_request':
+ print('[%s] --> Option 53 (DHCP ACK): 5' % client)
+ data += craft_option(53).raw_hex(b'\x05') # Option 53 - DHCP ACK
+
+ data += craft_option(54).bytes(socket.inet_aton(dhcp_server_address)) # Option 54 - DHCP server identifier
+ print('[%s] --> Option 54 (DHCP server identifier): %s' % (client, dhcp_server_address))
+
+ data += craft_option(51).raw_hex(b'\x00\x00\xa8\xc0') # Option 51 - Lease time left padded with "0"
+ print('[%s] --> Option 51 (Lease time): %s' % (client, '43200 (12 hours)'))
+
+ data += craft_option(1).ip(cidr_to_subnet(l['mgmt_v4_cidr'])) # Option 1 - Subnet mask
+ print('[%s] --> Option 1 (subnet mask): %s' % (client, cidr_to_subnet(l['mgmt_v4_cidr'])))
+
+ data += craft_option(3).ip(l['mgmt_v4_gw']) # Option 3 - Default gateway (set to DHCP forwarders IP)
+ print('[%s] --> Option 3 (default gateway): %s' % (client, l['mgmt_v4_gw']))
+
+ data += craft_option(150).bytes(socket.inet_aton(dhcp_server_address)) # Option 150 - TFTP Server. Used as target for the Zero Touch Protocol. Not necessarily TFTP protocol used.
+ print('[%s] --> Option 150 (Cisco proprietary TFTP server(s)): %s' % (client, dhcp_server_address))
+
+ # http://www.juniper.net/documentation/en_US/junos13.2/topics/concept/software-image-and-configuration-automatic-provisioning-understanding.html
+ data += craft_option(43).bytes(craft_option(0).string(target_junos_file) + craft_option(1).string('/tg-edge/' + l['hostname']) + craft_option(3).string('http')) # Option 43 - ZTP
+ print('[%s] --> Option 43 (Vendor-specific option):' % client)
+ print('[%s] --> Suboption 0: %s' % (client, target_junos_file))
+ print('[%s] --> Suboption 1: %s' % (client, '/tg-edge/' + l['hostname']))
+ print('[%s] --> Suboption 3: %s' % (client, 'http'))
+
+ data += b'\xff'
+
+ lease(lease_identifiers).set('current_mac', client) # updates MAC in DB
+
+ return data
+
+if __name__ == "__main__":
+ interface = b'eth0'
+ dhcp_server_address = '185.12.59.11'
+ target_junos_file = '/files/jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz'
+
+ # Setting up the server, and how it will communicate
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # IPv4 UDP socket
+ s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+ s.setsockopt(socket.SOL_SOCKET, 25, interface)
+ s.bind(('', 67))
+
+ # Starting the whole loop
+ print('Starting main loop')
+ while True: #main loop
+ try:
+ message, addressf = s.recvfrom(8192)
+ # print(message)
+ if message.startswith(b'\x01'): # UDP payload is DHCP request (discover, request, release)
+ if addressf[0] == '0.0.0.0':
+ # print('[%s] DHCP broadcast - unsupported' % client)
+ reply_to = '<broadcast>'
+ else:
+ print('[%s] DHCP unicast - DHCP forwarding' % client)
+ reply_to = addressf[0] # senders (DHCP forwarders) IP
+ # print(addressf[0])
+ # reply_to = '10.0.0.1'
+ data=reqparse(message) # Parse the DHCP request
+ if data:
+ print('[%s] --> replying to %s' % (client, reply_to))
+ s.sendto(data, (reply_to, 67)) # Sends reply
+ print('')
+ except KeyboardInterrupt:
+ exit()
diff --git a/fap/dhcpd/terminal.log b/fap/dhcpd/terminal.log
new file mode 100755
index 0000000..e865bd4
--- /dev/null
+++ b/fap/dhcpd/terminal.log
@@ -0,0 +1,146 @@
+j@lappie:~/git/tgmanage$ sudo python3 fap/dhcpd/server_dhcp.py
+Starting main loop
+[] DHCP unicast - DHCP forwarding
+[40:b4:f0:cc:76:01] Parsing DHCP packet from client
+[40:b4:f0:cc:76:01] --> processing DHCP options
+[40:b4:f0:cc:76:01] --> option: 53: DHCP Discover (will not be used in reply)
+[40:b4:f0:cc:76:01] --> option: 12: b'GP0212466317'
+[40:b4:f0:cc:76:01] --> option: 60: 4a:75:6e:69:70:65:72:2d:65 [...]
+[40:b4:f0:cc:76:01] --> processing suboption hook for option 82
+[40:b4:f0:cc:76:01] --> suboption 1 found - value: "distro0gw:ge-0/0/0.0:mgmt"
+[40:b4:f0:cc:76:01] --> Finished processing suboption 82
+[40:b4:f0:cc:76:01] --> Finished processing options
+[40:b4:f0:cc:76:01] --> DHCP packet type: DHCP DISCOVER
+[40:b4:f0:cc:76:01] --> DHCP packet contains option 82 - continues to process
+[40:b4:f0:cc:76:01] --> DHCP packet forwarded by relay 10.0.200.1
+[40:b4:f0:cc:76:01] --> DHCP XID/Transaction ID: 75:45:e1:46
+[40:b4:f0:cc:76:01] --> Looking up in the DB
+[40:b4:f0:cc:76:01] --> Query details: distro_name:distro0gw, distro_phy_port:ge-0/0/0
+[40:b4:f0:cc:76:01] --> Data found, switch exists in DB - ready to craft response
+[40:b4:f0:cc:76:01] --> Crafting DHCP OFFER response
+[40:b4:f0:cc:76:01] --> XID/Transaction ID: 75:45:e1:46
+[40:b4:f0:cc:76:01] --> Client IP: 10.0.200.101
+[40:b4:f0:cc:76:01] --> DHCP forwarder IP: 10.0.200.1
+[40:b4:f0:cc:76:01] --> Client MAC: 40:b4:f0:cc:76:01
+[40:b4:f0:cc:76:01] --> Completed DHCP header structure, building DHCP options
+[40:b4:f0:cc:76:01] --> Option 53 (DHCP OFFER): 2
+[40:b4:f0:cc:76:01] --> Option 54 (DHCP server identifier): 10.0.100.2
+[40:b4:f0:cc:76:01] --> Option 51 (Lease time): 43200 (12 hours)
+[40:b4:f0:cc:76:01] --> Option 1 (subnet mask): 255.255.255.0
+[40:b4:f0:cc:76:01] --> Option 3 (default gateway): 10.0.200.1
+[40:b4:f0:cc:76:01] --> Option 150 (Cisco proprietary TFTP server(s)): 10.0.100.2
+[40:b4:f0:cc:76:01] --> Option 43 (Vendor-specific option):
+[40:b4:f0:cc:76:01] --> Suboption 0: /files/jinstall-ex-2200-12.3R6.6-domestic-signed.tgz
+[40:b4:f0:cc:76:01] --> Suboption 1: /tg-edge/e-00-1
+[40:b4:f0:cc:76:01] --> Suboption 3: http
+[40:b4:f0:cc:76:01] --> replying to 10.0.100.1
+
+[40:b4:f0:cc:76:01] DHCP unicast - DHCP forwarding
+[40:b4:f0:cc:76:01] Parsing DHCP packet from client
+[40:b4:f0:cc:76:01] --> processing DHCP options
+[40:b4:f0:cc:76:01] --> option: 54: b'\n\x00d\x02'
+[40:b4:f0:cc:76:01] --> option: 55: b'\x033\x01\x0f\x06BC+\x96\x0c\x07*'
+[40:b4:f0:cc:76:01] --> option: 50: b'\n\x00\xc8e'
+[40:b4:f0:cc:76:01] --> option: 53: b'\x03'
+[40:b4:f0:cc:76:01] --> option: 12: b'GP0212466317'
+[40:b4:f0:cc:76:01] --> option: 60: 4a:75:6e:69:70:65:72:2d:65 [...]
+[40:b4:f0:cc:76:01] --> processing suboption hook for option 82
+[40:b4:f0:cc:76:01] --> suboption 1 found - value: "distro0gw:ge-0/0/0.0:mgmt"
+[40:b4:f0:cc:76:01] --> Finished processing suboption 82
+[40:b4:f0:cc:76:01] --> Finished processing options
+[40:b4:f0:cc:76:01] --> DHCP packet type: DHCP REQUEST
+[40:b4:f0:cc:76:01] --> DHCP packet contains option 82 - continues to process
+[40:b4:f0:cc:76:01] --> DHCP packet forwarded by relay 10.0.200.1
+[40:b4:f0:cc:76:01] --> DHCP XID/Transaction ID: 51:5f:00:7c
+[40:b4:f0:cc:76:01] --> Looking up in the DB
+[40:b4:f0:cc:76:01] --> Query details: distro_name:distro0gw, distro_phy_port:ge-0/0/0
+[40:b4:f0:cc:76:01] --> Data found, switch exists in DB - ready to craft response
+[40:b4:f0:cc:76:01] --> Crafting DHCP ACK response
+[40:b4:f0:cc:76:01] --> XID/Transaction ID: 51:5f:00:7c
+[40:b4:f0:cc:76:01] --> Client IP: 10.0.200.101
+[40:b4:f0:cc:76:01] --> DHCP forwarder IP: 10.0.200.1
+[40:b4:f0:cc:76:01] --> Client MAC: 40:b4:f0:cc:76:01
+[40:b4:f0:cc:76:01] --> Completed DHCP header structure, building DHCP options
+[40:b4:f0:cc:76:01] --> Option 53 (DHCP ACK): 5
+[40:b4:f0:cc:76:01] --> Option 54 (DHCP server identifier): 10.0.100.2
+[40:b4:f0:cc:76:01] --> Option 51 (Lease time): 43200 (12 hours)
+[40:b4:f0:cc:76:01] --> Option 1 (subnet mask): 255.255.255.0
+[40:b4:f0:cc:76:01] --> Option 3 (default gateway): 10.0.200.1
+[40:b4:f0:cc:76:01] --> Option 150 (Cisco proprietary TFTP server(s)): 10.0.100.2
+[40:b4:f0:cc:76:01] --> Option 43 (Vendor-specific option):
+[40:b4:f0:cc:76:01] --> Suboption 0: /files/jinstall-ex-2200-12.3R6.6-domestic-signed.tgz
+[40:b4:f0:cc:76:01] --> Suboption 1: /tg-edge/e-00-1
+[40:b4:f0:cc:76:01] --> Suboption 3: http
+[40:b4:f0:cc:76:01] --> replying to 10.0.100.1
+
+[40:b4:f0:cc:76:01] DHCP unicast - DHCP forwarding
+[40:b4:f0:cc:76:01] Parsing DHCP packet from client
+[40:b4:f0:cc:76:01] --> processing DHCP options
+[40:b4:f0:cc:76:01] --> option: 53: DHCP Discover (will not be used in reply)
+[40:b4:f0:cc:76:01] --> option: 60: 4a:75:6e:69:70:65:72:2d:65 [...]
+[40:b4:f0:cc:76:01] --> processing suboption hook for option 82
+[40:b4:f0:cc:76:01] --> suboption 1 found - value: "distro0gw:ge-0/0/0.0:mgmt"
+[40:b4:f0:cc:76:01] --> Finished processing suboption 82
+[40:b4:f0:cc:76:01] --> Finished processing options
+[40:b4:f0:cc:76:01] --> DHCP packet type: DHCP DISCOVER
+[40:b4:f0:cc:76:01] --> DHCP packet contains option 82 - continues to process
+[40:b4:f0:cc:76:01] --> DHCP packet forwarded by relay 10.0.200.1
+[40:b4:f0:cc:76:01] --> DHCP XID/Transaction ID: 64:3c:98:69
+[40:b4:f0:cc:76:01] --> Looking up in the DB
+[40:b4:f0:cc:76:01] --> Query details: distro_name:distro0gw, distro_phy_port:ge-0/0/0
+[40:b4:f0:cc:76:01] --> Data found, switch exists in DB - ready to craft response
+[40:b4:f0:cc:76:01] --> Crafting DHCP OFFER response
+[40:b4:f0:cc:76:01] --> XID/Transaction ID: 64:3c:98:69
+[40:b4:f0:cc:76:01] --> Client IP: 10.0.200.101
+[40:b4:f0:cc:76:01] --> DHCP forwarder IP: 10.0.200.1
+[40:b4:f0:cc:76:01] --> Client MAC: 40:b4:f0:cc:76:01
+[40:b4:f0:cc:76:01] --> Completed DHCP header structure, building DHCP options
+[40:b4:f0:cc:76:01] --> Option 53 (DHCP OFFER): 2
+[40:b4:f0:cc:76:01] --> Option 54 (DHCP server identifier): 10.0.100.2
+[40:b4:f0:cc:76:01] --> Option 51 (Lease time): 43200 (12 hours)
+[40:b4:f0:cc:76:01] --> Option 1 (subnet mask): 255.255.255.0
+[40:b4:f0:cc:76:01] --> Option 3 (default gateway): 10.0.200.1
+[40:b4:f0:cc:76:01] --> Option 150 (Cisco proprietary TFTP server(s)): 10.0.100.2
+[40:b4:f0:cc:76:01] --> Option 43 (Vendor-specific option):
+[40:b4:f0:cc:76:01] --> Suboption 0: /files/jinstall-ex-2200-12.3R6.6-domestic-signed.tgz
+[40:b4:f0:cc:76:01] --> Suboption 1: /tg-edge/e-00-1
+[40:b4:f0:cc:76:01] --> Suboption 3: http
+[40:b4:f0:cc:76:01] --> replying to 10.0.100.1
+
+[40:b4:f0:cc:76:01] DHCP unicast - DHCP forwarding
+[40:b4:f0:cc:76:01] Parsing DHCP packet from client
+[40:b4:f0:cc:76:01] --> processing DHCP options
+[40:b4:f0:cc:76:01] --> option: 54: b'\n\x00d\x02'
+[40:b4:f0:cc:76:01] --> option: 55: b'\x033\x01\x0f\x06BC+\x96\x0c\x07*'
+[40:b4:f0:cc:76:01] --> option: 50: b'\n\x00\xc8e'
+[40:b4:f0:cc:76:01] --> option: 53: b'\x03'
+[40:b4:f0:cc:76:01] --> option: 60: 4a:75:6e:69:70:65:72:2d:65 [...]
+[40:b4:f0:cc:76:01] --> processing suboption hook for option 82
+[40:b4:f0:cc:76:01] --> suboption 1 found - value: "distro0gw:ge-0/0/0.0:mgmt"
+[40:b4:f0:cc:76:01] --> Finished processing suboption 82
+[40:b4:f0:cc:76:01] --> Finished processing options
+[40:b4:f0:cc:76:01] --> DHCP packet type: DHCP REQUEST
+[40:b4:f0:cc:76:01] --> DHCP packet contains option 82 - continues to process
+[40:b4:f0:cc:76:01] --> DHCP packet forwarded by relay 10.0.200.1
+[40:b4:f0:cc:76:01] --> DHCP XID/Transaction ID: 66:33:48:73
+[40:b4:f0:cc:76:01] --> Looking up in the DB
+[40:b4:f0:cc:76:01] --> Query details: distro_name:distro0gw, distro_phy_port:ge-0/0/0
+[40:b4:f0:cc:76:01] --> Data found, switch exists in DB - ready to craft response
+[40:b4:f0:cc:76:01] --> Crafting DHCP ACK response
+[40:b4:f0:cc:76:01] --> XID/Transaction ID: 66:33:48:73
+[40:b4:f0:cc:76:01] --> Client IP: 10.0.200.101
+[40:b4:f0:cc:76:01] --> DHCP forwarder IP: 10.0.200.1
+[40:b4:f0:cc:76:01] --> Client MAC: 40:b4:f0:cc:76:01
+[40:b4:f0:cc:76:01] --> Completed DHCP header structure, building DHCP options
+[40:b4:f0:cc:76:01] --> Option 53 (DHCP ACK): 5
+[40:b4:f0:cc:76:01] --> Option 54 (DHCP server identifier): 10.0.100.2
+[40:b4:f0:cc:76:01] --> Option 51 (Lease time): 43200 (12 hours)
+[40:b4:f0:cc:76:01] --> Option 1 (subnet mask): 255.255.255.0
+[40:b4:f0:cc:76:01] --> Option 3 (default gateway): 10.0.200.1
+[40:b4:f0:cc:76:01] --> Option 150 (Cisco proprietary TFTP server(s)): 10.0.100.2
+[40:b4:f0:cc:76:01] --> Option 43 (Vendor-specific option):
+[40:b4:f0:cc:76:01] --> Suboption 0: /files/jinstall-ex-2200-12.3R6.6-domestic-signed.tgz
+[40:b4:f0:cc:76:01] --> Suboption 1: /tg-edge/e-00-1
+[40:b4:f0:cc:76:01] --> Suboption 3: http
+[40:b4:f0:cc:76:01] --> replying to 10.0.100.1
+
diff --git a/fap/httpd/# DEPRECATED/server_http.py b/fap/httpd/# DEPRECATED/server_http.py
new file mode 100755
index 0000000..a9ae74c
--- /dev/null
+++ b/fap/httpd/# DEPRECATED/server_http.py
@@ -0,0 +1,146 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+from http.server import BaseHTTPRequestHandler, HTTPServer
+from string import Template
+import time
+import psycopg2
+import psycopg2.extras
+import sys
+import os
+
+def main():
+ #
+ # Settings
+ #
+ settings = {
+ 'db': {
+ 'user': 'bootstrap',
+ 'password': 'asdf',
+ 'dbname': 'bootstrap',
+ 'host': 'localhost'
+ },
+ 'http': {
+ 'host': '0.0.0.0',
+ 'port': 80
+ }
+ }
+
+ #
+ # Connect to DB
+ #
+ try:
+ connect_params = ("dbname='%s' user='%s' host='%s' password='%s'" % (settings['db']['dbname'], settings['db']['user'], settings['db']['host'], settings['db']['password']))
+ conn = psycopg2.connect(connect_params)
+ cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
+ # cur.execute("""SELECT * from switches""")
+ # rows = cur.fetchall()
+ # print ("\nSwitches in DB during server_http.py startup:")
+ # for row in rows:
+ # print (" --> %s, connected to %s port %s" % (row['hostname'], row['distro_name'], row['distro_phy_port']))
+
+ except (psycopg2.DatabaseError, psycopg2.OperationalError) as e:
+ print ('Error: %s' % e)
+ sys.exit(1)
+
+ except:
+ print(sys.exc_info()[0])
+ sys.exit(1)
+
+ def template_get(model):
+ return open('fap/httpd/' + model + '.template').read()
+
+ def template_parse(template_src, hostname):
+ cur.execute("SELECT * FROM switches WHERE hostname = '%s'" % hostname)
+ if(cur.rowcount == 1):
+ row = cur.fetchall()[0]
+ d={
+ 'hostname': row['hostname'],
+ 'distro_name': row['distro_name'],
+ 'distro_phy_port': row['distro_phy_port'],
+ 'mgmt_addr': row['mgmt_addr'],
+ 'mgmt_cidr': row['mgmt_cidr'],
+ 'mgmt_gw': row['mgmt_gw'],
+ 'mgmt_vlan': row['mgmt_vlan'],
+ 'traffic_vlan': row['traffic_vlan'],
+ 'mgmt_v6_addr': row['mgmt_v6_addr'],
+ 'mgmt_v6_cidr': row['mgmt_v6_cidr'],
+ 'mgmt_v6_gw': row['mgmt_v6_gw']
+ }
+ cur.execute("UPDATE switches SET last_config_fetch = '%s' WHERE hostname = '%s'" % (str(time.time()).split('.')[0], hostname)) # updated DB with last config fetch
+ conn.commit()
+ return Template(template_src).safe_substitute(d)
+ else:
+ return False
+
+ class httpd(BaseHTTPRequestHandler):
+ def do_GET(self):
+ print('[%s] [%s] Incoming HTTP GET URI:%s ' % (self.client_address[0], time.asctime(), self.path))
+
+ # Client asks for the config file
+ if '/tg-edge/' in self.path:
+ hostname = self.path.split('/tg-edge/')[1]
+ if len(hostname) > 0:
+ print('[%s] --> Hostname "%s" accepted, fetching info from DB' % (self.client_address[0], hostname))
+ template_parsed = template_parse(template_get('ex2200'), hostname)
+ if template_parsed:
+ print('[%s] --> Template successfully populated' % self.client_address[0])
+ print('[%s] --> Sending response to client' % self.client_address[0])
+ self.send_response(200)
+ self.send_header("Content-type", "text/plain")
+ self.end_headers()
+ self.wfile.write(bytes(template_parsed, "utf-8"))
+ print('[%s] --> Success - %s bytes sent to client' % (self.client_address[0], len(template_parsed)))
+ else:
+ print('[%s] --> Error - could not find hostname "%s" in DB' % (self.client_address[0], hostname))
+ else:
+ print('[%s] --> Rejected due to missing hostname' % self.client_address[0])
+
+ # Client asks for a file download - most likely a JunOS file
+ elif '/files/' in self.path:
+ # It seems that "http.server" escapes nastiness from the URL - ("/files/../../../root_file" => "/files/root_file")
+ requested_file = self.path.split('/files/')[1]
+ files_dir = 'fap/httpd/files/'
+ print('[%s] --> File request for "%s" in "%s"' % (self.client_address[0], requested_file, files_dir))
+ if os.path.isfile(files_dir + requested_file):
+ print('[%s] --> File found' % self.client_address[0])
+ try:
+ f = open(files_dir + requested_file)
+ self.send_response(200)
+ self.send_header('Content-type', 'application/x-gzip') # correct content type for tar.gz
+ self.end_headers()
+ print('[%s] --> File transfer started' % self.client_address[0])
+ f = open(files_dir + requested_file, 'rb')
+ self.wfile.write(f.read())
+ f.close()
+ print('[%s] --> File transfer completed' % self.client_address[0])
+ return
+ except IOError:
+ self.send_error(404,'File Not Found: %s' % self.path)
+ print('[%s] --> ERROR 404 - File not found' % self.client_address[0])
+ pass
+ except:
+ print('[%s] --> Generic error during file reading' % self.client_address[0])
+ pass
+ else:
+ print('[%s] --> File request rejected due to nonexisting file' % self.client_address[0])
+ else:
+ print('[%s] --> rejected due to bad URI' % self.client_address[0])
+ # silence stderr from BaseHTTPRequestHandler
+ # source: http://stackoverflow.com/questions/3389305/how-to-silent-quiet-httpserver-and-basichttprequesthandlers-stderr-output
+ def log_message(self, format, *args):
+ return
+
+ httpd_instance = HTTPServer((settings['http']['host'], settings['http']['port']), httpd)
+ print("\n[%s] Server Starts - %s:%s" % (time.asctime(), settings['http']['host'], settings['http']['port']))
+
+ try:
+ httpd_instance.serve_forever()
+ except KeyboardInterrupt:
+ pass
+
+ httpd_instance.server_close()
+ print("\n\n[%s] HTTP Server stopped\n" % time.asctime())
+
+if __name__ == "__main__":
+ main()
diff --git a/fap/httpd/# DEPRECATED/terminal.log b/fap/httpd/# DEPRECATED/terminal.log
new file mode 100755
index 0000000..bedb829
--- /dev/null
+++ b/fap/httpd/# DEPRECATED/terminal.log
@@ -0,0 +1,14 @@
+j@lappie:~/git/tgmanage$ sudo python3 fap/httpd/server_http.py
+
+[Thu Feb 19 23:15:45 2015] Server Starts - 0.0.0.0:80
+[10.0.200.101] [Fri Feb 20 00:18:25 2015] Incoming HTTP GET URI://tg-edge/e-00-1
+[10.0.200.101] --> Hostname "e-00-1" accepted, fetching info from DB
+[10.0.200.101] --> Template successfully populated
+[10.0.200.101] --> Sending response to client
+[10.0.200.101] --> Success - 1437 bytes sent to client
+[10.0.200.101] [Fri Feb 20 00:18:26 2015] Incoming HTTP GET URI://files/jinstall-ex-2200-12.3R6.6-domestic-signed.tgz
+[10.0.200.101] --> File request for "jinstall-ex-2200-12.3R6.6-domestic-signed.tgz" in "fap/httpd/files/"
+[10.0.200.101] --> File found
+[10.0.200.101] --> File transfer started
+[10.0.200.101] --> File transfer completed
+
diff --git a/fap/httpd/README.md b/fap/httpd/README.md
new file mode 100755
index 0000000..73c5634
--- /dev/null
+++ b/fap/httpd/README.md
@@ -0,0 +1,26 @@
+# HTTPD
+
+Well, not working out quite as I've hoped (at least for now).
+
+Resorted to Apache2, PHP and Postgres for the HTTP. Apache starts at boot, so no action required to get the stack up and after installation.
+
+```
+j@lappie:~/git/tgmanage$ cat /etc/apache2/sites-enabled/000-default.conf
+<VirtualHost *:80>
+ ServerAdmin webmaster@localhost
+
+ DocumentRoot /home/j/git/tgmanage/fap/httpd/httpd_root/
+
+ <Directory /home/j/git/tgmanage/fap/httpd/httpd_root>
+ Options Indexes FollowSymLinks MultiViews
+ AllowOverride All
+ Order allow,deny
+ allow from all
+ </Directory>
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ LogLevel warn
+
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+</VirtualHost>
+```
diff --git a/fap/httpd/files/.gitignore b/fap/httpd/files/.gitignore
new file mode 100755
index 0000000..cec9082
--- /dev/null
+++ b/fap/httpd/files/.gitignore
@@ -0,0 +1,3 @@
+*
+
+!.gitignore
diff --git a/fap/httpd/httpd_root/# create_queries - DEPRECATED/create_queries.php b/fap/httpd/httpd_root/# create_queries - DEPRECATED/create_queries.php
new file mode 100644
index 0000000..8d4bf26
--- /dev/null
+++ b/fap/httpd/httpd_root/# create_queries - DEPRECATED/create_queries.php
@@ -0,0 +1,55 @@
+<?php
+ /*
+ Used for generating SQL queries for FAP
+ Jonas Lindstad for TG15
+ GPL V2
+ */
+
+ chdir(__DIR__); # sets the executing directory to be the path of this script - necessary for CLI require() usage
+ header("Content-Type: text/plain");
+
+ require 'ipcalc_functions.php';
+ /*
+ Load data sources
+ */
+ $patchlist = file('patchlist.txt');
+ $switches = file('switches.txt');
+
+ $dataset = array();
+
+ foreach($patchlist as $lines){
+ $pieces = explode(' ', trim($lines));
+ $dataset[$pieces[0]] = array(
+ 'hostname' => $pieces[0],
+ 'distro_name' => 'rs1.' . $pieces[1], # prefix with "rs." so we get "rs1.distro0" syntax
+ 'distro_phy_port' => $pieces[2]
+ );
+ }
+
+ /*
+ Assign to logical and usable names in array
+ */
+ foreach($switches as $lines){
+ $pieces = explode(' ', trim($lines));
+ $dataset[$pieces[0]]['mgmt_v4_addr'] = explode('/', $pieces[3])[0];
+ $dataset[$pieces[0]]['mgmt_v4_cidr'] = explode('/', $pieces[3])[1];
+ $dataset[$pieces[0]]['mgmt_v4_gw'] = net_to_gw($pieces[3]);
+ $dataset[$pieces[0]]['mgmt_v6_addr'] = explode('/', $pieces[4])[0];
+ $dataset[$pieces[0]]['mgmt_v6_cidr'] = explode('/', $pieces[4])[1];
+ $dataset[$pieces[0]]['mgmt_v6_gw'] = net_to_gw($pieces[4]);
+ $dataset[$pieces[0]]['traffic_vlan'] = $pieces[5];
+ $dataset[$pieces[0]]['mgmt_vlan'] = '666';
+ }
+
+ /*
+ Prints the query rows
+ */
+ $sql_query = '';
+ foreach($dataset as $k => $v){
+ $columns = implode(', ', array_keys($v));
+ $values = "'" . implode("', '", array_values($v)) . "'";
+ $sql_query .= 'INSERT INTO switches (' . $columns . ') VALUES (' . $values . ');' . "\n";
+ }
+
+ echo $sql_query;
+?>
diff --git a/fap/httpd/httpd_root/# create_queries - DEPRECATED/ipcalc_functions.php b/fap/httpd/httpd_root/# create_queries - DEPRECATED/ipcalc_functions.php
new file mode 100644
index 0000000..e848ef1
--- /dev/null
+++ b/fap/httpd/httpd_root/# create_queries - DEPRECATED/ipcalc_functions.php
@@ -0,0 +1,134 @@
+<?php
+ /*
+ Mainly copied from djamps's work - https://github.com/djamps/php-ipv6-calculator/blob/master/ipcalc.php
+ Edited by Jonas Lindstad for The Gathering 2015
+ Licensed under GPL
+ */
+
+
+
+ // Convert array of short unsigned integers to binary
+ function _packBytes($array) {
+ foreach ( $array as $byte ) {
+ $chars .= pack('C',$byte);
+ }
+ return $chars;
+ }
+
+
+ // Convert binary to array of short integers
+ function _unpackBytes($string) {
+ return unpack('C*',$string);
+ }
+
+
+ // Add array of short unsigned integers
+ function _addBytes($array1,$array2) {
+ $result = array();
+ $carry = 0;
+ foreach ( array_reverse($array1,true) as $value1 ) {
+ $value2 = array_pop($array2);
+ if ( empty($result) ) { $value2++; }
+ $newValue = $value1 + $value2 + $carry;
+ if ( $newValue > 255 ) {
+ $newValue = $newValue - 256;
+ $carry = 1;
+ } else {
+ $carry = 0;
+ }
+ array_unshift($result,$newValue);
+ }
+ return $result;
+ }
+
+
+ /* Useful Functions */
+ function _cdr2Bin ($cdrin,$len=4){
+ if ( $len > 4 || $cdrin > 32 ) { // Are we ipv6?
+ return str_pad(str_pad("", $cdrin, "1"), 128, "0");
+ } else {
+ return str_pad(str_pad("", $cdrin, "1"), 32, "0");
+ }
+ }
+
+
+ function _bin2Cdr ($binin){
+ return strlen(rtrim($binin,"0"));
+ }
+
+
+ function _cdr2Char ($cdrin,$len=4){
+ $hex = _bin2Hex(_cdr2Bin($cdrin,$len));
+ return _hex2Char($hex);
+ }
+
+
+ function _char2Cdr ($char){
+ $bin = _hex2Bin(_char2Hex($char));
+ return _bin2Cdr($bin);
+ }
+
+
+ function _hex2Char($hex){
+ return pack('H*',$hex);
+ }
+
+
+ function _char2Hex($char){
+ $hex = unpack('H*',$char);
+ return array_pop($hex);
+ }
+
+
+ function _hex2Bin($hex){
+ $bin='';
+ for($i=0;$i<strlen($hex);$i++)
+ $bin.=str_pad(decbin(hexdec($hex{$i})),4,'0',STR_PAD_LEFT);
+ return $bin;
+ }
+
+
+ function _bin2Hex($bin){
+ $hex='';
+ for($i=strlen($bin)-4;$i>=0;$i-=4)
+ $hex.=dechex(bindec(substr($bin,$i,4)));
+ return strrev($hex);
+ }
+
+ /*
+ Converts a v4/v6 subnet to the first usable IP
+ */
+ function net_to_gw($net){
+ $maxSubNets = '2048'; // Stop memory leak from invalid input or large ranges
+ $charHost = inet_pton(strtok($net, '/'));
+ $charMask = _cdr2Char(strtok('/'),strlen($charHost));
+ $charHostMask = substr(_cdr2Char(127),-strlen($charHost));
+ $charNet = $charHost & $charMask; // Supernet network address
+ $charHostMin = $charNet | ~$charHostMask;
+ return inet_ntop($charHostMin);
+ }
+
+
+
+
+
+
+
+
+/*
+
+ $maxSubNets = '2048'; // Stop memory leak from invalid input or large ranges
+ $superNet = '2a02:ed02:180a::13/64';
+ if (ereg('/',$superNet)){ //if cidr type mask
+ $charHost = inet_pton(strtok($superNet, '/'));
+ $charMask = _cdr2Char(strtok('/'),strlen($charHost));
+ }
+
+ $charHostMask = substr(_cdr2Char(127),-strlen($charHost));
+ $charNet = $charHost & $charMask; // Supernet network address
+ $charHostMin = $charNet | ~$charHostMask;
+ echo 'Første brukbare adresse i ' . $superNet . ': ';
+ echo inet_ntop($charHostMin);
+*/
+
+?>
diff --git a/fap/httpd/httpd_root/# create_queries - DEPRECATED/patchlist.txt b/fap/httpd/httpd_root/# create_queries - DEPRECATED/patchlist.txt
new file mode 100644
index 0000000..7454441
--- /dev/null
+++ b/fap/httpd/httpd_root/# create_queries - DEPRECATED/patchlist.txt
@@ -0,0 +1,142 @@
+e1-3 distro0 ge-0/0/0 ge-1/0/0 ge-2/0/0 ge-3/0/0
+e3-3 distro0 ge-0/0/1 ge-1/0/1 ge-2/0/1 ge-3/0/1
+e3-4 distro0 ge-0/0/2 ge-1/0/2 ge-2/0/2 ge-3/0/2
+e5-2 distro1 ge-0/0/0 ge-1/0/0 ge-2/0/0 ge-3/0/0
+e5-3 distro0 ge-0/0/3 ge-1/0/3 ge-2/0/3 ge-3/0/3
+e5-4 distro0 ge-0/0/4 ge-1/0/4 ge-2/0/4 ge-3/0/4
+e7-2 distro1 ge-0/0/1 ge-1/0/1 ge-2/0/1 ge-3/0/1
+e7-3 distro0 ge-0/0/5 ge-1/0/5 ge-2/0/5 ge-3/0/5
+e7-4 distro0 ge-0/0/6 ge-1/0/6 ge-2/0/6 ge-3/0/6
+e9-2 distro1 ge-0/0/2 ge-1/0/2 ge-2/0/2 ge-3/0/2
+e9-3 distro0 ge-0/0/7 ge-1/0/7 ge-2/0/7 ge-3/0/7
+e9-4 distro0 ge-0/0/8 ge-1/0/8 ge-2/0/8 ge-3/0/8
+e11-1 distro1 ge-0/0/3 ge-1/0/3 ge-2/0/3 ge-3/0/3
+e11-2 distro1 ge-0/0/4 ge-1/0/4 ge-2/0/4 ge-3/0/4
+e11-3 distro0 ge-0/0/9 ge-1/0/9 ge-2/0/9 ge-3/0/9
+e11-4 distro0 ge-0/0/10 ge-1/0/10 ge-2/0/10 ge-3/0/10
+e13-1 distro1 ge-0/0/5 ge-1/0/5 ge-2/0/5 ge-3/0/5
+e13-2 distro1 ge-0/0/6 ge-1/0/6 ge-2/0/6 ge-3/0/6
+e13-3 distro0 ge-0/0/11 ge-1/0/11 ge-2/0/11 ge-3/0/11
+e13-4 distro0 ge-0/0/12 ge-1/0/12 ge-2/0/12 ge-3/0/12
+e15-1 distro1 ge-0/0/7 ge-1/0/7 ge-2/0/7 ge-3/0/7
+e15-2 distro1 ge-0/0/8 ge-1/0/8 ge-2/0/8 ge-3/0/8
+e15-3 distro0 ge-0/0/13 ge-1/0/13 ge-2/0/13 ge-3/0/13
+e15-4 distro0 ge-0/0/14 ge-1/0/14 ge-2/0/14 ge-3/0/14
+e17-1 distro1 ge-0/0/9 ge-1/0/9 ge-2/0/9 ge-3/0/9
+e17-2 distro1 ge-0/0/10 ge-1/0/10 ge-2/0/10 ge-3/0/10
+e17-3 distro2 ge-0/0/0 ge-1/0/0 ge-2/0/0 ge-3/0/0
+e17-4 distro2 ge-0/0/1 ge-1/0/1 ge-2/0/1 ge-3/0/1
+e19-1 distro1 ge-0/0/11 ge-1/0/11 ge-2/0/11 ge-3/0/11
+e19-2 distro1 ge-0/0/12 ge-1/0/12 ge-2/0/12 ge-3/0/12
+e19-3 distro2 ge-0/0/2 ge-1/0/2 ge-2/0/2 ge-3/0/2
+e19-4 distro2 ge-0/0/3 ge-1/0/3 ge-2/0/3 ge-3/0/3
+e21-1 distro1 ge-0/0/13 ge-1/0/13 ge-2/0/13 ge-3/0/13
+e21-2 distro1 ge-0/0/14 ge-1/0/14 ge-2/0/14 ge-3/0/14
+e21-3 distro2 ge-0/0/4 ge-1/0/4 ge-2/0/4 ge-3/0/4
+e21-4 distro2 ge-0/0/5 ge-1/0/5 ge-2/0/5 ge-3/0/5
+e23-1 distro1 ge-0/0/15 ge-1/0/15 ge-2/0/15 ge-3/0/15
+e23-2 distro1 ge-0/0/16 ge-1/0/16 ge-2/0/16 ge-3/0/16
+e23-3 distro2 ge-0/0/6 ge-1/0/6 ge-2/0/6 ge-3/0/6
+e23-4 distro2 ge-0/0/7 ge-1/0/7 ge-2/0/7 ge-3/0/7
+e25-1 distro1 ge-0/0/17 ge-1/0/17 ge-2/0/17 ge-3/0/17
+e25-2 distro1 ge-0/0/18 ge-1/0/18 ge-2/0/18 ge-3/0/18
+e25-3 distro2 ge-0/0/8 ge-1/0/8 ge-2/0/8 ge-3/0/8
+e25-4 distro2 ge-0/0/9 ge-1/0/9 ge-2/0/9 ge-3/0/9
+e27-1 distro1 ge-0/0/19 ge-1/0/19 ge-2/0/19 ge-3/0/19
+e27-2 distro1 ge-0/0/20 ge-1/0/20 ge-2/0/20 ge-3/0/20
+e27-3 distro2 ge-0/0/10 ge-1/0/10 ge-2/0/10 ge-3/0/10
+e27-4 distro2 ge-0/0/11 ge-1/0/11 ge-2/0/11 ge-3/0/11
+e27-1 distro1 ge-0/0/21 ge-1/0/21 ge-2/0/21 ge-3/0/21
+e27-2 distro1 ge-0/0/22 ge-1/0/22 ge-2/0/22 ge-3/0/22
+e29-1 distro3 ge-0/0/0 ge-1/0/0 ge-2/0/0 ge-3/0/0
+e29-2 distro3 ge-0/0/1 ge-1/0/1 ge-2/0/1 ge-3/0/1
+e31-1 distro3 ge-0/0/2 ge-1/0/2 ge-2/0/2 ge-3/0/2
+e31-2 distro3 ge-0/0/3 ge-1/0/3 ge-2/0/3 ge-3/0/3
+e33-1 distro3 ge-0/0/4 ge-1/0/4 ge-2/0/4 ge-3/0/4
+e33-2 distro3 ge-0/0/5 ge-1/0/5 ge-2/0/5 ge-3/0/5
+e35-1 distro3 ge-0/0/6 ge-1/0/6 ge-2/0/6 ge-3/0/6
+e35-2 distro3 ge-0/0/7 ge-1/0/7 ge-2/0/7 ge-3/0/7
+e37-1 distro3 ge-0/0/8 ge-1/0/8 ge-2/0/8 ge-3/0/8
+e37-2 distro3 ge-0/0/9 ge-1/0/9 ge-2/0/9 ge-3/0/9
+e39-1 distro3 ge-0/0/10 ge-1/0/10 ge-2/0/10 ge-3/0/10
+e39-2 distro3 ge-0/0/11 ge-1/0/11 ge-2/0/11 ge-3/0/11
+e41-1 distro3 ge-0/0/12 ge-1/0/12 ge-2/0/12 ge-3/0/12
+e41-2 distro3 ge-0/0/13 ge-1/0/13 ge-2/0/13 ge-3/0/13
+e43-1 distro3 ge-0/0/14 ge-1/0/14 ge-2/0/14 ge-3/0/14
+e43-2 distro3 ge-0/0/15 ge-1/0/15 ge-2/0/15 ge-3/0/15
+e45-1 distro4 ge-0/0/0 ge-1/0/0 ge-2/0/0 ge-3/0/0
+e45-2 distro4 ge-0/0/1 ge-1/0/1 ge-2/0/1 ge-3/0/1
+e45-3 distro5 ge-0/0/0 ge-1/0/0 ge-2/0/0 ge-3/0/0
+e45-4 distro5 ge-0/0/1 ge-1/0/1 ge-2/0/1 ge-3/0/1
+e47-1 distro4 ge-0/0/2 ge-1/0/2 ge-2/0/2 ge-3/0/2
+e47-2 distro4 ge-0/0/3 ge-1/0/3 ge-2/0/3 ge-3/0/3
+e47-3 distro5 ge-0/0/2 ge-1/0/2 ge-2/0/2 ge-3/0/2
+e47-4 distro5 ge-0/0/3 ge-1/0/3 ge-2/0/3 ge-3/0/3
+e49-1 distro4 ge-0/0/4 ge-1/0/4 ge-2/0/4 ge-3/0/4
+e49-2 distro4 ge-0/0/5 ge-1/0/5 ge-2/0/5 ge-3/0/5
+e49-3 distro5 ge-0/0/4 ge-1/0/4 ge-2/0/4 ge-3/0/4
+e49-4 distro5 ge-0/0/5 ge-1/0/5 ge-2/0/5 ge-3/0/5
+e51-1 distro4 ge-0/0/6 ge-1/0/6 ge-2/0/6 ge-3/0/6
+e51-2 distro4 ge-0/0/7 ge-1/0/7 ge-2/0/7 ge-3/0/7
+e51-3 distro5 ge-0/0/6 ge-1/0/6 ge-2/0/6 ge-3/0/6
+e51-4 distro5 ge-0/0/7 ge-1/0/7 ge-2/0/7 ge-3/0/7
+e53-1 distro4 ge-0/0/8 ge-1/0/8 ge-2/0/8 ge-3/0/8
+e53-2 distro4 ge-0/0/9 ge-1/0/9 ge-2/0/9 ge-3/0/9
+e53-3 distro5 ge-0/0/8 ge-1/0/8 ge-2/0/8 ge-3/0/8
+e53-4 distro5 ge-0/0/9 ge-1/0/9 ge-2/0/9 ge-3/0/9
+e55-1 distro4 ge-0/0/10 ge-1/0/10 ge-2/0/10 ge-3/0/10
+e55-2 distro4 ge-0/0/11 ge-1/0/11 ge-2/0/11 ge-3/0/11
+e55-3 distro5 ge-0/0/10 ge-1/0/10 ge-2/0/10 ge-3/0/10
+e55-4 distro5 ge-0/0/11 ge-1/0/11 ge-2/0/11 ge-3/0/11
+e57-1 distro4 ge-0/0/12 ge-1/0/12 ge-2/0/12 ge-3/0/12
+e57-2 distro4 ge-0/0/13 ge-1/0/13 ge-2/0/13 ge-3/0/13
+e57-3 distro5 ge-0/0/12 ge-1/0/12 ge-2/0/12 ge-3/0/12
+e57-4 distro5 ge-0/0/13 ge-1/0/13 ge-2/0/13 ge-3/0/13
+e59-1 distro4 ge-0/0/14 ge-1/0/14 ge-2/0/14 ge-3/0/14
+e59-2 distro4 ge-0/0/15 ge-1/0/15 ge-2/0/15 ge-3/0/15
+e59-3 distro5 ge-0/0/14 ge-1/0/14 ge-2/0/14 ge-3/0/14
+e59-4 distro5 ge-0/0/15 ge-1/0/15 ge-2/0/15 ge-3/0/15
+e61-1 distro4 ge-0/0/16 ge-1/0/16 ge-2/0/16 ge-3/0/16
+e61-2 distro4 ge-0/0/17 ge-1/0/17 ge-2/0/17 ge-3/0/17
+e61-3 distro5 ge-0/0/16 ge-1/0/16 ge-2/0/16 ge-3/0/16
+e61-4 distro5 ge-0/0/17 ge-1/0/17 ge-2/0/17 ge-3/0/17
+e63-1 distro7 ge-0/0/0 ge-1/0/0 ge-2/0/0 ge-3/0/0
+e63-2 distro7 ge-0/0/1 ge-1/0/1 ge-2/0/1 ge-3/0/1
+e63-3 distro6 ge-0/0/0 ge-1/0/0 ge-2/0/0 ge-3/0/0
+e63-4 distro6 ge-0/0/1 ge-1/0/1 ge-2/0/1 ge-3/0/1
+e65-1 distro7 ge-0/0/2 ge-1/0/2 ge-2/0/2 ge-3/0/2
+e65-2 distro7 ge-0/0/3 ge-1/0/3 ge-2/0/3 ge-3/0/3
+e65-3 distro6 ge-0/0/2 ge-1/0/2 ge-2/0/2 ge-3/0/2
+e65-4 distro6 ge-0/0/3 ge-1/0/3 ge-2/0/3 ge-3/0/3
+e67-1 distro7 ge-0/0/4 ge-1/0/4 ge-2/0/4 ge-3/0/4
+e67-2 distro7 ge-0/0/5 ge-1/0/5 ge-2/0/5 ge-3/0/5
+e67-3 distro6 ge-0/0/4 ge-1/0/4 ge-2/0/4 ge-3/0/4
+e67-4 distro6 ge-0/0/5 ge-1/0/5 ge-2/0/5 ge-3/0/5
+e69-1 distro7 ge-0/0/6 ge-1/0/6 ge-2/0/6 ge-3/0/6
+e69-2 distro7 ge-0/0/7 ge-1/0/7 ge-2/0/7 ge-3/0/7
+e69-3 distro6 ge-0/0/6 ge-1/0/6 ge-2/0/6 ge-3/0/6
+e69-4 distro6 ge-0/0/7 ge-1/0/7 ge-2/0/7 ge-3/0/7
+e71-1 distro7 ge-0/0/8 ge-1/0/8 ge-2/0/8 ge-3/0/8
+e71-2 distro7 ge-0/0/9 ge-1/0/9 ge-2/0/9 ge-3/0/9
+e71-3 distro6 ge-0/0/8 ge-1/0/8 ge-2/0/8 ge-3/0/8
+e71-4 distro6 ge-0/0/9 ge-1/0/9 ge-2/0/9 ge-3/0/9
+e73-1 distro7 ge-0/0/10 ge-1/0/10 ge-2/0/10 ge-3/0/10
+e73-2 distro7 ge-0/0/11 ge-1/0/11 ge-2/0/11 ge-3/0/11
+e73-3 distro6 ge-0/0/10 ge-1/0/10 ge-2/0/10 ge-3/0/10
+e73-4 distro6 ge-0/0/11 ge-1/0/11 ge-2/0/11 ge-3/0/11
+e75-1 distro7 ge-0/0/12 ge-1/0/12 ge-2/0/12 ge-3/0/12
+e75-2 distro7 ge-0/0/13 ge-1/0/13 ge-2/0/13 ge-3/0/13
+e75-3 distro6 ge-0/0/12 ge-1/0/12 ge-2/0/12 ge-3/0/12
+e75-4 distro6 ge-0/0/13 ge-1/0/13 ge-2/0/13 ge-3/0/13
+e77-1 distro7 ge-0/0/14 ge-1/0/14 ge-2/0/14 ge-3/0/14
+e77-2 distro7 ge-0/0/15 ge-1/0/15 ge-2/0/15 ge-3/0/15
+e77-3 distro6 ge-0/0/14 ge-1/0/14 ge-2/0/14 ge-3/0/14
+e77-4 distro6 ge-0/0/15 ge-1/0/15 ge-2/0/15 ge-3/0/15
+e79-1 distro7 ge-0/0/16 ge-1/0/16 ge-2/0/16 ge-3/0/16
+e79-2 distro7 ge-0/0/17 ge-1/0/17 ge-2/0/17 ge-3/0/17
+e79-3 distro6 ge-0/0/16 ge-1/0/16 ge-2/0/16 ge-3/0/16
+e79-4 distro6 ge-0/0/17 ge-1/0/17 ge-2/0/17 ge-3/0/17
+e81-1 distro7 ge-0/0/18 ge-1/0/18 ge-2/0/18 ge-3/0/18
+e81-2 distro7 ge-0/0/19 ge-1/0/19 ge-2/0/19 ge-3/0/19
+e83-1 distro7 ge-0/0/20 ge-1/0/20 ge-2/0/20 ge-3/0/20
+e83-2 distro7 ge-0/0/21 ge-1/0/21 ge-2/0/21 ge-3/0/21
diff --git a/fap/httpd/httpd_root/# create_queries - DEPRECATED/switches.txt b/fap/httpd/httpd_root/# create_queries - DEPRECATED/switches.txt
new file mode 100644
index 0000000..c9d60d9
--- /dev/null
+++ b/fap/httpd/httpd_root/# create_queries - DEPRECATED/switches.txt
@@ -0,0 +1,142 @@
+e1-3 151.216.129.0/26 2a02:ed02:129a::/64 151.216.180.2/26 2a02:ed02:180a::2/64 1013 distro0
+e3-3 151.216.129.64/26 2a02:ed02:129b::/64 151.216.180.3/26 2a02:ed02:180a::3/64 1033 distro0
+e3-4 151.216.129.128/26 2a02:ed02:129c::/64 151.216.180.4/26 2a02:ed02:180a::4/64 1034 distro0
+e5-2 151.216.129.192/26 2a02:ed02:129d::/64 151.216.180.66/26 2a02:ed02:180b::66/64 1052 distro1
+e5-3 151.216.130.0/26 2a02:ed02:130a::/64 151.216.180.5/26 2a02:ed02:180a::5/64 1053 distro0
+e5-4 151.216.130.64/26 2a02:ed02:130b::/64 151.216.180.6/26 2a02:ed02:180a::6/64 1054 distro0
+e7-2 151.216.130.128/26 2a02:ed02:130c::/64 151.216.180.67/26 2a02:ed02:180b::67/64 1072 distro1
+e7-3 151.216.130.192/26 2a02:ed02:130d::/64 151.216.180.7/26 2a02:ed02:180a::7/64 1073 distro0
+e7-4 151.216.131.0/26 2a02:ed02:131a::/64 151.216.180.8/26 2a02:ed02:180a::8/64 1074 distro0
+e9-2 151.216.131.64/26 2a02:ed02:131b::/64 151.216.180.68/26 2a02:ed02:180b::68/64 1092 distro1
+e9-3 151.216.131.128/26 2a02:ed02:131c::/64 151.216.180.9/26 2a02:ed02:180a::9/64 1093 distro0
+e9-4 151.216.131.192/26 2a02:ed02:131d::/64 151.216.180.10/26 2a02:ed02:180a::10/64 1094 distro0
+e11-1 151.216.132.0/26 2a02:ed02:132a::/64 151.216.180.69/26 2a02:ed02:180b::69/64 1111 distro1
+e11-2 151.216.132.64/26 2a02:ed02:132b::/64 151.216.180.70/26 2a02:ed02:180b::70/64 1112 distro1
+e11-3 151.216.132.128/26 2a02:ed02:132c::/64 151.216.180.11/26 2a02:ed02:180a::11/64 1113 distro0
+e11-4 151.216.132.192/26 2a02:ed02:132d::/64 151.216.180.12/26 2a02:ed02:180a::12/64 1114 distro0
+e13-1 151.216.133.0/26 2a02:ed02:133a::/64 151.216.180.71/26 2a02:ed02:180b::71/64 1131 distro1
+e13-2 151.216.133.64/26 2a02:ed02:133b::/64 151.216.180.72/26 2a02:ed02:180b::72/64 1132 distro1
+e13-3 151.216.133.128/26 2a02:ed02:133c::/64 151.216.180.13/26 2a02:ed02:180a::13/64 1133 distro0
+e13-4 151.216.133.192/26 2a02:ed02:133d::/64 151.216.180.14/26 2a02:ed02:180a::14/64 1134 distro0
+e15-1 151.216.134.0/26 2a02:ed02:134a::/64 151.216.180.73/26 2a02:ed02:180b::73/64 1151 distro1
+e15-2 151.216.134.64/26 2a02:ed02:134b::/64 151.216.180.74/26 2a02:ed02:180b::74/64 1152 distro1
+e15-3 151.216.134.128/26 2a02:ed02:134c::/64 151.216.180.15/26 2a02:ed02:180a::15/64 1153 distro0
+e15-4 151.216.134.192/26 2a02:ed02:134d::/64 151.216.180.16/26 2a02:ed02:180a::16/64 1154 distro0
+e17-1 151.216.135.0/26 2a02:ed02:135a::/64 151.216.180.75/26 2a02:ed02:180b::75/64 1171 distro1
+e17-2 151.216.135.64/26 2a02:ed02:135b::/64 151.216.180.76/26 2a02:ed02:180b::76/64 1172 distro1
+e17-3 151.216.135.128/26 2a02:ed02:135c::/64 151.216.180.130/26 2a02:ed02:180c::130/64 1173 distro2
+e17-4 151.216.135.192/26 2a02:ed02:135d::/64 151.216.180.131/26 2a02:ed02:180c::131/64 1174 distro2
+e19-1 151.216.136.0/26 2a02:ed02:136a::/64 151.216.180.77/26 2a02:ed02:180b::77/64 1191 distro1
+e19-2 151.216.136.64/26 2a02:ed02:136b::/64 151.216.180.78/26 2a02:ed02:180b::78/64 1192 distro1
+e19-3 151.216.136.128/26 2a02:ed02:136c::/64 151.216.180.132/26 2a02:ed02:180c::132/64 1193 distro2
+e19-4 151.216.136.192/26 2a02:ed02:136d::/64 151.216.180.133/26 2a02:ed02:180c::133/64 1194 distro2
+e21-1 151.216.137.0/26 2a02:ed02:137a::/64 151.216.180.79/26 2a02:ed02:180b::79/64 1211 distro1
+e21-2 151.216.137.64/26 2a02:ed02:137b::/64 151.216.180.80/26 2a02:ed02:180b::80/64 1212 distro1
+e21-3 151.216.137.128/26 2a02:ed02:137c::/64 151.216.180.134/26 2a02:ed02:180c::134/64 1213 distro2
+e21-4 151.216.137.192/26 2a02:ed02:137d::/64 151.216.180.135/26 2a02:ed02:180c::135/64 1214 distro2
+e23-1 151.216.138.0/26 2a02:ed02:138a::/64 151.216.180.81/26 2a02:ed02:180b::81/64 1231 distro1
+e23-2 151.216.138.64/26 2a02:ed02:138b::/64 151.216.180.82/26 2a02:ed02:180b::82/64 1232 distro1
+e23-3 151.216.138.128/26 2a02:ed02:138c::/64 151.216.180.136/26 2a02:ed02:180c::136/64 1233 distro2
+e23-4 151.216.138.192/26 2a02:ed02:138d::/64 151.216.180.137/26 2a02:ed02:180c::137/64 1234 distro2
+e25-1 151.216.139.0/26 2a02:ed02:139a::/64 151.216.180.83/26 2a02:ed02:180b::83/64 1251 distro1
+e25-2 151.216.139.64/26 2a02:ed02:139b::/64 151.216.180.84/26 2a02:ed02:180b::84/64 1252 distro1
+e25-3 151.216.139.128/26 2a02:ed02:139c::/64 151.216.180.138/26 2a02:ed02:180c::138/64 1253 distro2
+e25-4 151.216.139.192/26 2a02:ed02:139d::/64 151.216.180.139/26 2a02:ed02:180c::139/64 1254 distro2
+e27-1 151.216.140.0/26 2a02:ed02:140a::/64 151.216.180.85/26 2a02:ed02:180b::85/64 1271 distro1
+e27-2 151.216.140.64/26 2a02:ed02:140b::/64 151.216.180.86/26 2a02:ed02:180b::86/64 1272 distro1
+e27-3 151.216.140.128/26 2a02:ed02:140c::/64 151.216.180.140/26 2a02:ed02:180c::140/64 1273 distro2
+e27-4 151.216.140.192/26 2a02:ed02:140d::/64 151.216.180.141/26 2a02:ed02:180c::141/64 1274 distro2
+e27-1 151.216.141.0/26 2a02:ed02:141a::/64 151.216.180.87/26 2a02:ed02:180b::87/64 1271 distro1
+e27-2 151.216.141.64/26 2a02:ed02:141b::/64 151.216.180.88/26 2a02:ed02:180b::88/64 1272 distro1
+e29-1 151.216.141.128/26 2a02:ed02:141c::/64 151.216.180.194/26 2a02:ed02:180d::194/64 1291 distro3
+e29-2 151.216.141.192/26 2a02:ed02:141d::/64 151.216.180.195/26 2a02:ed02:180d::195/64 1292 distro3
+e31-1 151.216.142.0/26 2a02:ed02:142a::/64 151.216.180.196/26 2a02:ed02:180d::196/64 1311 distro3
+e31-2 151.216.142.64/26 2a02:ed02:142b::/64 151.216.180.197/26 2a02:ed02:180d::197/64 1312 distro3
+e33-1 151.216.142.128/26 2a02:ed02:142c::/64 151.216.180.198/26 2a02:ed02:180d::198/64 1331 distro3
+e33-2 151.216.142.192/26 2a02:ed02:142d::/64 151.216.180.199/26 2a02:ed02:180d::199/64 1332 distro3
+e35-1 151.216.143.0/26 2a02:ed02:143a::/64 151.216.180.200/26 2a02:ed02:180d::200/64 1351 distro3
+e35-2 151.216.143.64/26 2a02:ed02:143b::/64 151.216.180.201/26 2a02:ed02:180d::201/64 1352 distro3
+e37-1 151.216.143.128/26 2a02:ed02:143c::/64 151.216.180.202/26 2a02:ed02:180d::202/64 1371 distro3
+e37-2 151.216.143.192/26 2a02:ed02:143d::/64 151.216.180.203/26 2a02:ed02:180d::203/64 1372 distro3
+e39-1 151.216.144.0/26 2a02:ed02:144a::/64 151.216.180.204/26 2a02:ed02:180d::204/64 1391 distro3
+e39-2 151.216.144.64/26 2a02:ed02:144b::/64 151.216.180.205/26 2a02:ed02:180d::205/64 1392 distro3
+e41-1 151.216.144.128/26 2a02:ed02:144c::/64 151.216.180.206/26 2a02:ed02:180d::206/64 1411 distro3
+e41-2 151.216.144.192/26 2a02:ed02:144d::/64 151.216.180.207/26 2a02:ed02:180d::207/64 1412 distro3
+e43-1 151.216.145.0/26 2a02:ed02:145a::/64 151.216.180.208/26 2a02:ed02:180d::208/64 1431 distro3
+e43-2 151.216.145.64/26 2a02:ed02:145b::/64 151.216.180.209/26 2a02:ed02:180d::209/64 1432 distro3
+e45-1 151.216.145.128/26 2a02:ed02:145c::/64 151.216.181.2/26 2a02:ed02:181a::2/64 1451 distro4
+e45-2 151.216.145.192/26 2a02:ed02:145d::/64 151.216.181.3/26 2a02:ed02:181a::3/64 1452 distro4
+e45-3 151.216.146.0/26 2a02:ed02:146a::/64 151.216.181.66/26 2a02:ed02:181b::66/64 1453 distro5
+e45-4 151.216.146.64/26 2a02:ed02:146b::/64 151.216.181.67/26 2a02:ed02:181b::67/64 1454 distro5
+e47-1 151.216.146.128/26 2a02:ed02:146c::/64 151.216.181.4/26 2a02:ed02:181a::4/64 1471 distro4
+e47-2 151.216.146.192/26 2a02:ed02:146d::/64 151.216.181.5/26 2a02:ed02:181a::5/64 1472 distro4
+e47-3 151.216.147.0/26 2a02:ed02:147a::/64 151.216.181.68/26 2a02:ed02:181b::68/64 1473 distro5
+e47-4 151.216.147.64/26 2a02:ed02:147b::/64 151.216.181.69/26 2a02:ed02:181b::69/64 1474 distro5
+e49-1 151.216.147.128/26 2a02:ed02:147c::/64 151.216.181.6/26 2a02:ed02:181a::6/64 1491 distro4
+e49-2 151.216.147.192/26 2a02:ed02:147d::/64 151.216.181.7/26 2a02:ed02:181a::7/64 1492 distro4
+e49-3 151.216.148.0/26 2a02:ed02:148a::/64 151.216.181.70/26 2a02:ed02:181b::70/64 1493 distro5
+e49-4 151.216.148.64/26 2a02:ed02:148b::/64 151.216.181.71/26 2a02:ed02:181b::71/64 1494 distro5
+e51-1 151.216.148.128/26 2a02:ed02:148c::/64 151.216.181.8/26 2a02:ed02:181a::8/64 1511 distro4
+e51-2 151.216.148.192/26 2a02:ed02:148d::/64 151.216.181.9/26 2a02:ed02:181a::9/64 1512 distro4
+e51-3 151.216.149.0/26 2a02:ed02:149a::/64 151.216.181.72/26 2a02:ed02:181b::72/64 1513 distro5
+e51-4 151.216.149.64/26 2a02:ed02:149b::/64 151.216.181.73/26 2a02:ed02:181b::73/64 1514 distro5
+e53-1 151.216.149.128/26 2a02:ed02:149c::/64 151.216.181.10/26 2a02:ed02:181a::10/64 1531 distro4
+e53-2 151.216.149.192/26 2a02:ed02:149d::/64 151.216.181.11/26 2a02:ed02:181a::11/64 1532 distro4
+e53-3 151.216.150.0/26 2a02:ed02:150a::/64 151.216.181.74/26 2a02:ed02:181b::74/64 1533 distro5
+e53-4 151.216.150.64/26 2a02:ed02:150b::/64 151.216.181.75/26 2a02:ed02:181b::75/64 1534 distro5
+e55-1 151.216.150.128/26 2a02:ed02:150c::/64 151.216.181.12/26 2a02:ed02:181a::12/64 1551 distro4
+e55-2 151.216.150.192/26 2a02:ed02:150d::/64 151.216.181.13/26 2a02:ed02:181a::13/64 1552 distro4
+e55-3 151.216.151.0/26 2a02:ed02:151a::/64 151.216.181.76/26 2a02:ed02:181b::76/64 1553 distro5
+e55-4 151.216.151.64/26 2a02:ed02:151b::/64 151.216.181.77/26 2a02:ed02:181b::77/64 1554 distro5
+e57-1 151.216.151.128/26 2a02:ed02:151c::/64 151.216.181.14/26 2a02:ed02:181a::14/64 1571 distro4
+e57-2 151.216.151.192/26 2a02:ed02:151d::/64 151.216.181.15/26 2a02:ed02:181a::15/64 1572 distro4
+e57-3 151.216.152.0/26 2a02:ed02:152a::/64 151.216.181.78/26 2a02:ed02:181b::78/64 1573 distro5
+e57-4 151.216.152.64/26 2a02:ed02:152b::/64 151.216.181.79/26 2a02:ed02:181b::79/64 1574 distro5
+e59-1 151.216.152.128/26 2a02:ed02:152c::/64 151.216.181.16/26 2a02:ed02:181a::16/64 1591 distro4
+e59-2 151.216.152.192/26 2a02:ed02:152d::/64 151.216.181.17/26 2a02:ed02:181a::17/64 1592 distro4
+e59-3 151.216.153.0/26 2a02:ed02:153a::/64 151.216.181.80/26 2a02:ed02:181b::80/64 1593 distro5
+e59-4 151.216.153.64/26 2a02:ed02:153b::/64 151.216.181.81/26 2a02:ed02:181b::81/64 1594 distro5
+e61-1 151.216.153.128/26 2a02:ed02:153c::/64 151.216.181.18/26 2a02:ed02:181a::18/64 1611 distro4
+e61-2 151.216.153.192/26 2a02:ed02:153d::/64 151.216.181.19/26 2a02:ed02:181a::19/64 1612 distro4
+e61-3 151.216.154.0/26 2a02:ed02:154a::/64 151.216.181.82/26 2a02:ed02:181b::82/64 1613 distro5
+e61-4 151.216.154.64/26 2a02:ed02:154b::/64 151.216.181.83/26 2a02:ed02:181b::83/64 1614 distro5
+e63-1 151.216.154.128/26 2a02:ed02:154c::/64 151.216.181.194/26 2a02:ed02:181d::194/64 1631 distro7
+e63-2 151.216.154.192/26 2a02:ed02:154d::/64 151.216.181.195/26 2a02:ed02:181d::195/64 1632 distro7
+e63-3 151.216.155.0/26 2a02:ed02:155a::/64 151.216.181.130/26 2a02:ed02:181c::130/64 1633 distro6
+e63-4 151.216.155.64/26 2a02:ed02:155b::/64 151.216.181.131/26 2a02:ed02:181c::131/64 1634 distro6
+e65-1 151.216.155.128/26 2a02:ed02:155c::/64 151.216.181.196/26 2a02:ed02:181d::196/64 1651 distro7
+e65-2 151.216.155.192/26 2a02:ed02:155d::/64 151.216.181.197/26 2a02:ed02:181d::197/64 1652 distro7
+e65-3 151.216.156.0/26 2a02:ed02:156a::/64 151.216.181.132/26 2a02:ed02:181c::132/64 1653 distro6
+e65-4 151.216.156.64/26 2a02:ed02:156b::/64 151.216.181.133/26 2a02:ed02:181c::133/64 1654 distro6
+e67-1 151.216.156.128/26 2a02:ed02:156c::/64 151.216.181.198/26 2a02:ed02:181d::198/64 1671 distro7
+e67-2 151.216.156.192/26 2a02:ed02:156d::/64 151.216.181.199/26 2a02:ed02:181d::199/64 1672 distro7
+e67-3 151.216.157.0/26 2a02:ed02:157a::/64 151.216.181.134/26 2a02:ed02:181c::134/64 1673 distro6
+e67-4 151.216.157.64/26 2a02:ed02:157b::/64 151.216.181.135/26 2a02:ed02:181c::135/64 1674 distro6
+e69-1 151.216.157.128/26 2a02:ed02:157c::/64 151.216.181.200/26 2a02:ed02:181d::200/64 1691 distro7
+e69-2 151.216.157.192/26 2a02:ed02:157d::/64 151.216.181.201/26 2a02:ed02:181d::201/64 1692 distro7
+e69-3 151.216.158.0/26 2a02:ed02:158a::/64 151.216.181.136/26 2a02:ed02:181c::136/64 1693 distro6
+e69-4 151.216.158.64/26 2a02:ed02:158b::/64 151.216.181.137/26 2a02:ed02:181c::137/64 1694 distro6
+e71-1 151.216.158.128/26 2a02:ed02:158c::/64 151.216.181.202/26 2a02:ed02:181d::202/64 1711 distro7
+e71-2 151.216.158.192/26 2a02:ed02:158d::/64 151.216.181.203/26 2a02:ed02:181d::203/64 1712 distro7
+e71-3 151.216.159.0/26 2a02:ed02:159a::/64 151.216.181.138/26 2a02:ed02:181c::138/64 1713 distro6
+e71-4 151.216.159.64/26 2a02:ed02:159b::/64 151.216.181.139/26 2a02:ed02:181c::139/64 1714 distro6
+e73-1 151.216.159.128/26 2a02:ed02:159c::/64 151.216.181.204/26 2a02:ed02:181d::204/64 1731 distro7
+e73-2 151.216.159.192/26 2a02:ed02:159d::/64 151.216.181.205/26 2a02:ed02:181d::205/64 1732 distro7
+e73-3 151.216.160.0/26 2a02:ed02:160a::/64 151.216.181.140/26 2a02:ed02:181c::140/64 1733 distro6
+e73-4 151.216.160.64/26 2a02:ed02:160b::/64 151.216.181.141/26 2a02:ed02:181c::141/64 1734 distro6
+e75-1 151.216.160.128/26 2a02:ed02:160c::/64 151.216.181.206/26 2a02:ed02:181d::206/64 1751 distro7
+e75-2 151.216.160.192/26 2a02:ed02:160d::/64 151.216.181.207/26 2a02:ed02:181d::207/64 1752 distro7
+e75-3 151.216.161.0/26 2a02:ed02:161a::/64 151.216.181.142/26 2a02:ed02:181c::142/64 1753 distro6
+e75-4 151.216.161.64/26 2a02:ed02:161b::/64 151.216.181.143/26 2a02:ed02:181c::143/64 1754 distro6
+e77-1 151.216.161.128/26 2a02:ed02:161c::/64 151.216.181.208/26 2a02:ed02:181d::208/64 1771 distro7
+e77-2 151.216.161.192/26 2a02:ed02:161d::/64 151.216.181.209/26 2a02:ed02:181d::209/64 1772 distro7
+e77-3 151.216.162.0/26 2a02:ed02:162a::/64 151.216.181.144/26 2a02:ed02:181c::144/64 1773 distro6
+e77-4 151.216.162.64/26 2a02:ed02:162b::/64 151.216.181.145/26 2a02:ed02:181c::145/64 1774 distro6
+e79-1 151.216.162.128/26 2a02:ed02:162c::/64 151.216.181.210/26 2a02:ed02:181d::210/64 1791 distro7
+e79-2 151.216.162.192/26 2a02:ed02:162d::/64 151.216.181.211/26 2a02:ed02:181d::211/64 1792 distro7
+e79-3 151.216.163.0/26 2a02:ed02:163a::/64 151.216.181.146/26 2a02:ed02:181c::146/64 1793 distro6
+e79-4 151.216.163.64/26 2a02:ed02:163b::/64 151.216.181.147/26 2a02:ed02:181c::147/64 1794 distro6
+e81-1 151.216.163.128/26 2a02:ed02:163c::/64 151.216.181.212/26 2a02:ed02:181d::212/64 1811 distro7
+e81-2 151.216.163.192/26 2a02:ed02:163d::/64 151.216.181.213/26 2a02:ed02:181d::213/64 1812 distro7
+e83-1 151.216.164.0/26 2a02:ed02:164a::/64 151.216.181.214/26 2a02:ed02:181d::214/64 1831 distro7
+e83-2 151.216.164.64/26 2a02:ed02:164b::/64 151.216.181.215/26 2a02:ed02:181d::215/64 1832 distro7
diff --git a/fap/httpd/httpd_root/.gitignore b/fap/httpd/httpd_root/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/fap/httpd/httpd_root/.gitignore
diff --git a/fap/httpd/httpd_root/.htaccess b/fap/httpd/httpd_root/.htaccess
new file mode 100755
index 0000000..17add11
--- /dev/null
+++ b/fap/httpd/httpd_root/.htaccess
@@ -0,0 +1,3 @@
+RewriteEngine on
+RewriteRule ^files/(.+)$ x.php?mode=image&file=$1 [L]
+RewriteRule ^tg-edge/(.+)$ x.php?mode=config&hostname=$1 [L]
diff --git a/fap/httpd/httpd_root/ex2200.template b/fap/httpd/httpd_root/ex2200.template
new file mode 100755
index 0000000..7f3bbaf
--- /dev/null
+++ b/fap/httpd/httpd_root/ex2200.template
@@ -0,0 +1,288 @@
+system {
+ host-name <?php echo $c['hostname']; ?>;
+ auto-snapshot;
+ time-zone Europe/Oslo;
+ authentication-order [ tacplus password ];
+ root-authentication {
+ encrypted-password "<sensored>";
+ }
+ name-server {
+ 2a02:ed02:1ee7::66;
+ 2a02:ed02:1337::2;
+ }
+ login {
+ user technet {
+ uid 2000;
+ class super-user;
+ authentication {
+ encrypted-password "<sensored>";
+ }
+ }
+ }
+ services {
+ ssh {
+ root-login deny;
+ }
+ netconf {
+ ssh;
+ }
+ }
+ syslog {
+ user * {
+ any emergency;
+ }
+ file messages {
+ any notice;
+ authorization info;
+ }
+ file interactive-commands {
+ interactive-commands any;
+ }
+ }
+ ntp {
+ server 2001:700:100:2::6;
+ }
+}
+
+chassis {
+ aggregated-devices {
+ ethernet {
+ device-count 1;
+ }
+ }
+ alarm {
+ management-ethernet {
+ link-down ignore;
+ }
+ }
+}
+
+interfaces {
+ interface-range edge-ports {
+ description "Clients";
+ member-range ge-0/0/0 to ge-0/0/43;
+ unit 0 {
+ family ethernet-switching {
+ port-mode access;
+ vlan {
+ members clients;
+ }
+ }
+ }
+ }
+ interface-range core-ports {
+ description "<?php echo $c['distro_name']; ?> <?php echo $c['distro_phy_port']; ?>";
+ member-range ge-0/0/44 to ge-0/0/47;
+ ether-options {
+ 802.3ad ae0;
+ }
+ }
+ ae0 {
+ description "<?php echo $c['distro_name']; ?> <?php echo $c['distro_phy_port']; ?>";
+ aggregated-ether-options {
+ lacp {
+ active;
+ }
+ }
+ unit 0 {
+ family ethernet-switching {
+ port-mode trunk;
+ vlan {
+ members [clients mgmt];
+ }
+ }
+ }
+ }
+ vlan {
+ unit <?php echo $c['mgmt_vlan']; ?> {
+ description "MGMT L3 interface";
+ family inet {
+ filter {
+ input v4-mgmt;
+ }
+ address <?php echo $c['mgmt_v4_addr'] . '/' . $c['mgmt_v4_cidr']; ?>;
+ }
+ family inet6 {
+ filter {
+ input v6-mgmt;
+ }
+ address <?php echo $c['mgmt_v6_addr'] . '/' . $c['mgmt_v6_cidr']; ?>;
+ }
+ }
+ }
+}
+
+snmp {
+ community <sensored> {
+ client-list-name mgmt;
+ }
+}
+
+policy-options {
+ prefix-list v4-mgmt {
+ /* nLogic jumpstation */
+ <sensored>
+ /* Harald jumpstation */
+ <sensored>
+ /* Tech colo-boks */
+ <sensored>
+ /* NOC clients */
+ 151.216.254.0/24;
+ /* Servers */
+ 185.12.59.0/26;
+ }
+ prefix-list v6-mgmt {
+ /* Harald jumpstation */
+ <sensored>
+ /* nLogic jumpstation */
+ <sensored>
+ /* Tech colo-boks */
+ <sensored>
+ /* NOC clients */
+ 2a02:ed02:254::/64;
+ /* Servers */
+ 2a02:ed02:1337::/64;
+ }
+ prefix-list mgmt {
+ /* nLogic jumpstation */
+ <sensored>
+ /* Harald jumpstation */
+ <sensored>
+ /* Tech colo-boks */
+ <sensored>
+ /* NOC clients */
+ 151.216.254.0/24;
+ /* Servers */
+ 185.12.59.0/26;
+ /* Harald jumpstation */
+ <sensored>
+ /* nLogic jumpstation */
+ <sensored>
+ /* Tech colo-boks */
+ <sensored>
+ /* NOC clients */
+ 2a02:ed02:254::/64;
+ /* Servers */
+ 2a02:ed02:1337::/64;
+ }
+}
+firewall {
+ family inet {
+ filter v4-mgmt {
+ term accept-ssh {
+ from {
+ source-prefix-list {
+ v4-mgmt;
+ }
+ destination-port 22;
+ }
+ then {
+ accept;
+ }
+ }
+ term discard-ssh {
+ from {
+ destination-port 22;
+ }
+ then {
+ discard;
+ }
+ }
+ term accept-all {
+ then {
+ accept;
+ }
+ }
+ }
+ }
+ family inet6 {
+ filter v6-mgmt {
+ term accept-ssh {
+ from {
+ source-prefix-list {
+ v6-mgmt;
+ }
+ destination-port 22;
+ }
+ then {
+ accept;
+ }
+ }
+ term discard-ssh {
+ from {
+ destination-port 22;
+ }
+ then {
+ discard;
+ }
+ }
+ term accept-all {
+ then {
+
+ accept;
+ }
+ }
+ }
+ }
+}
+
+protocols {
+ sflow {
+ sample-rate {
+ ingress 10000;
+ egress 10000;
+ }
+ collector <sensored>;
+ interfaces edge-ports;
+ interfaces core-ports;
+ }
+ igmp-snooping {
+ vlan all {
+ version 3;
+ immediate-leave;
+ }
+ }
+ mld-snooping {
+ vlan all {
+ version 2;
+ immediate-leave;
+ }
+ }
+ rstp {
+ bridge-priority 8k;
+ interface edge-ports {
+ edge;
+ no-root-port;
+ }
+ }
+ lldp {
+ interface ae0.0
+ }
+}
+
+vlans {
+ clients {
+ vlan-id <?php echo $c['traffic_vlan']; ?>;
+ }
+ mgmt {
+ vlan-id <?php echo $c['mgmt_vlan']; ?>;
+ l3-interface vlan.<?php echo $c['mgmt_vlan']; ?>;
+ }
+}
+
+routing-options {
+ rib inet.0 {
+ static {
+ route 0.0.0.0/0 {
+ next-hop <?php echo $c['mgmt_v4_gw']; ?>;
+ }
+ }
+ }
+ rib inet6.0 {
+ static {
+ route ::/0 {
+ next-hop <?php echo $c['mgmt_v6_gw']; ?>;
+ }
+ }
+ }
+}
diff --git a/fap/httpd/httpd_root/ex2200_secure.template b/fap/httpd/httpd_root/ex2200_secure.template
new file mode 100755
index 0000000..de9bd3b
--- /dev/null
+++ b/fap/httpd/httpd_root/ex2200_secure.template
@@ -0,0 +1,312 @@
+system {
+ host-name <?php echo $c['hostname']; ?>;
+ auto-snapshot;
+ time-zone Europe/Oslo;
+ authentication-order [ tacplus password ];
+ root-authentication {
+ encrypted-password "<sensored>";
+ }
+ name-server {
+ 2a02:ed02:1ee7::66;
+ 2a02:ed02:1337::2;
+ }
+ login {
+ user technet {
+ uid 2000;
+ class super-user;
+ authentication {
+ encrypted-password "<sensored>";
+ }
+ }
+ }
+ services {
+ ssh {
+ root-login deny;
+ }
+ netconf {
+ ssh;
+ }
+ }
+ syslog {
+ user * {
+ any emergency;
+ }
+ file messages {
+ any notice;
+ authorization info;
+ }
+ file interactive-commands {
+ interactive-commands any;
+ }
+ }
+ ntp {
+ server 2001:700:100:2::6;
+ }
+}
+
+chassis {
+ aggregated-devices {
+ ethernet {
+ device-count 1;
+ }
+ }
+ alarm {
+ management-ethernet {
+ link-down ignore;
+ }
+ }
+}
+
+interfaces {
+ interface-range edge-ports {
+ description "Clients";
+ member-range ge-0/0/0 to ge-0/0/43;
+ unit 0 {
+ family ethernet-switching {
+ port-mode access;
+ vlan {
+ members clients;
+ }
+ }
+ }
+ }
+ interface-range core-ports {
+ description "<?php echo $c['distro_name']; ?> <?php echo $c['distro_phy_port']; ?>";
+ member-range ge-0/0/44 to ge-0/0/47;
+ ether-options {
+ 802.3ad ae0;
+ }
+ }
+ ae0 {
+ description "<?php echo $c['distro_name']; ?> <?php echo $c['distro_phy_port']; ?>";
+ aggregated-ether-options {
+ lacp {
+ active;
+ }
+ }
+ unit 0 {
+ family ethernet-switching {
+ port-mode trunk;
+ vlan {
+ members [clients mgmt];
+ }
+ }
+ }
+ }
+ vlan {
+ unit <?php echo $c['mgmt_vlan']; ?> {
+ description "MGMT L3 interface";
+ family inet {
+ filter {
+ input v4-mgmt;
+ }
+ address <?php echo $c['mgmt_v4_addr'] . '/' . $c['mgmt_v4_cidr']; ?>;
+ }
+ family inet6 {
+ filter {
+ input v6-mgmt;
+ }
+ address <?php echo $c['mgmt_v6_addr'] . '/' . $c['mgmt_v6_cidr']; ?>;
+ }
+ }
+ }
+}
+
+snmp {
+ community <sensored> {
+ client-list-name mgmt;
+ }
+}
+
+policy-options {
+ prefix-list v4-mgmt {
+ /* nLogic jumpstation */
+ <sensored>
+ /* Harald jumpstation */
+ <sensored>
+ /* Tech colo-boks */
+ <sensored>
+ /* NOC clients */
+ 151.216.254.0/24;
+ /* Servers */
+ 185.12.59.0/26;
+ }
+ prefix-list v6-mgmt {
+ /* Harald jumpstation */
+ <sensored>
+ /* nLogic jumpstation */
+ <sensored>
+ /* Tech colo-boks */
+ <sensored>
+ /* NOC clients */
+ 2a02:ed02:254::/64;
+ /* Servers */
+ 2a02:ed02:1337::/64;
+ }
+ prefix-list mgmt {
+ /* nLogic jumpstation */
+ <sensored>
+ /* Harald jumpstation */
+ <sensored>
+ /* Tech colo-boks */
+ <sensored>
+ /* NOC clients */
+ 151.216.254.0/24;
+ /* Servers */
+ 185.12.59.0/26;
+ /* Harald jumpstation */
+ <sensored>
+ /* nLogic jumpstation */
+ <sensored>
+ /* Tech colo-boks */
+ <sensored>
+ /* NOC clients */
+ 2a02:ed02:254::/64;
+ /* Servers */
+ 2a02:ed02:1337::/64;
+ }
+}
+firewall {
+ family inet {
+ filter v4-mgmt {
+ term accept-ssh {
+ from {
+ source-prefix-list {
+ v4-mgmt;
+ }
+ destination-port 22;
+ }
+ then {
+ accept;
+ }
+ }
+ term discard-ssh {
+ from {
+ destination-port 22;
+ }
+ then {
+ discard;
+ }
+ }
+ term accept-all {
+ then {
+ accept;
+ }
+ }
+ }
+ }
+ family inet6 {
+ filter v6-mgmt {
+ term accept-ssh {
+ from {
+ source-prefix-list {
+ v6-mgmt;
+ }
+ destination-port 22;
+ }
+ then {
+ accept;
+ }
+ }
+ term discard-ssh {
+ from {
+ destination-port 22;
+ }
+ then {
+ discard;
+ }
+ }
+ term accept-all {
+ then {
+
+ accept;
+ }
+ }
+ }
+ }
+}
+
+protocols {
+ sflow {
+ sample-rate {
+ ingress 10000;
+ egress 10000;
+ }
+ collector 91.209.30.12;
+ interfaces edge-ports;
+ interfaces core-ports;
+ }
+ igmp-snooping {
+ vlan all {
+ version 3;
+ immediate-leave;
+ }
+ }
+ mld-snooping {
+ vlan all {
+ version 2;
+ immediate-leave;
+ }
+ }
+ rstp {
+ bridge-priority 8k;
+ interface edge-ports {
+ edge;
+ no-root-port;
+ }
+ }
+ lldp {
+ interface ae0.0
+ }
+}
+ethernet-switching-options {
+ secure-access-port {
+ interface edge-ports {
+ no-dhcp-trusted;
+ }
+ vlan clients {
+ arp-inspection;
+ examine-dhcp;
+ examine-dhcpv6;
+ neighbor-discovery-inspection;
+ ip-source-guard;
+ ipv6-source-guard;
+ dhcp-option82;
+ dhcpv6-option18 {
+ use-option-82;
+ }
+ }
+ ipv6-source-guard-sessions {
+ max-number 128;
+ }
+ }
+ storm-control {
+ interface all;
+ }
+}
+vlans {
+ clients {
+ vlan-id <?php echo $c['traffic_vlan']; ?>;
+ }
+ mgmt {
+ vlan-id <?php echo $c['mgmt_vlan']; ?>;
+ l3-interface vlan.<?php echo $c['mgmt_vlan']; ?>;
+ }
+}
+
+routing-options {
+ rib inet.0 {
+ static {
+ route 0.0.0.0/0 {
+ next-hop <?php echo $c['mgmt_v4_gw']; ?>;
+ }
+ }
+ }
+ rib inet6.0 {
+ static {
+ route ::/0 {
+ next-hop <?php echo $c['mgmt_v6_gw']; ?>;
+ }
+ }
+ }
+}
diff --git a/fap/httpd/httpd_root/pg_connect.php b/fap/httpd/httpd_root/pg_connect.php
new file mode 100644
index 0000000..6808cb0
--- /dev/null
+++ b/fap/httpd/httpd_root/pg_connect.php
@@ -0,0 +1,6 @@
+<?php
+ if(!$dbconn = pg_connect("host=localhost dbname=fap user=fap password=<sensored>")){
+ echo 'Could not connect:' . pg_last_error();
+ exit();
+ }
+?>
diff --git a/fap/httpd/httpd_root/x.php b/fap/httpd/httpd_root/x.php
new file mode 100755
index 0000000..dda20f2
--- /dev/null
+++ b/fap/httpd/httpd_root/x.php
@@ -0,0 +1,67 @@
+<?php
+ if(isset($_GET['mode'])){
+ function log_to_file($text){
+ $out = date('c') . ' - ' . $_SERVER['REMOTE_ADDR'] . ' - ' . $text . "\n";
+ file_put_contents('../../logs/httpd.log', $out, FILE_APPEND);
+ }
+
+ if($_GET['mode'] === 'config'){
+ # LASTE NED CONFIG
+ /*
+ header('Content-Description: File Transfer');
+ header('Content-Type: application/octet-stream');
+ header('Content-Disposition: attachment; filename='.basename($file));
+ header('Content-Length: ' . filesize('../files/' . $_GET['file']));
+ */
+
+ # File containing pg_connect() with DB credentials - excluded for GIT safety
+ require 'pg_connect.php';
+
+
+ $template = 'ex2200.template'; # default template
+
+ $pieces = explode('/', $_GET['hostname']);
+ if(count($pieces) == 2){
+ $_GET['hostname'] = $pieces[0];
+ if($pieces[1] == 'secure'){
+ $template = 'ex2200_secure.template';
+ }
+ }
+
+
+ // Performing SQL query
+ $query = 'SELECT * FROM switches WHERE hostname = \'' . $_GET['hostname'] . '\'';
+ $result = pg_query($query) or die('Query failed: ' . pg_last_error());
+ if(pg_num_rows($result) == 1){
+ $c = pg_fetch_assoc($result);
+ include $template;
+ log_to_file('Served ' . $template . ' to client');
+ }else{
+ log_to_file('Hostname not found in DB');
+ header("HTTP/1.0 404 Not Found");
+ exit();
+ }
+
+ }elseif($_GET['mode'] === 'image'){
+ if(isset($_GET['file']) && is_readable('../files/' . $_GET['file'])){
+ # SEND IMAGE
+ header('Content-Description: File Transfer');
+ header('Content-Type: application/octet-stream');
+ header('Content-Disposition: attachment; filename='.basename($file));
+ header('Content-Length: ' . filesize('../files/' . $_GET['file']));
+
+ $time_start = microtime(true);
+ $bytes = readfile('../files/' . $_GET['file']);
+ $time_end = microtime(true);
+ $time = $time_end - $time_start;
+
+ log_to_file('Transferred "' . $_GET['file'] . '" in ' . round($time, 2) . 'sec (' . round(($bytes/$time)/(1024*128), 2) . 'Mbit/s)');
+ }else{
+ log_to_file('404 - File not found');
+ header("HTTP/1.1 404 Not Found");
+ exit();
+ }
+
+ }
+ }
+?>
diff --git a/fap/logs/httpd.log b/fap/logs/httpd.log
new file mode 100644
index 0000000..8571480
--- /dev/null
+++ b/fap/logs/httpd.log
@@ -0,0 +1,667 @@
+2015-03-30T08:01:36+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T08:01:43+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:10:24+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:10:26+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:10:56+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:10:59+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:12:12+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:12:25+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:36:39+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:36:57+02:00 - 151.216.254.19 - Served ex2200.template to client
+2015-03-30T00:37:06+02:00 - 151.216.183.130 - Served ex2200.template to client
+2015-03-30T00:37:40+02:00 - 151.216.254.19 - Served ex2200.template to client
+2015-03-30T00:38:13+02:00 - 150.70.97.117 - Served ex2200.template to client
+2015-03-30T00:39:15+02:00 - 150.70.173.10 - Served ex2200.template to client
+2015-03-30T00:42:10+02:00 - 151.216.254.19 - Served ex2200.template to client
+2015-03-30T00:46:07+02:00 - 151.216.254.19 - Served ex2200.template to client
+2015-03-30T00:47:24+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:47:26+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T00:47:43+02:00 - 151.216.183.130 - Served ex2200.template to client
+2015-03-30T00:53:45+02:00 - 151.216.254.32 - Hostname not found in DB
+2015-03-30T00:53:54+02:00 - 151.216.254.32 - Hostname not found in DB
+2015-03-30T00:54:33+02:00 - 151.216.254.32 - Hostname not found in DB
+2015-03-30T00:54:42+02:00 - 151.216.254.32 - Hostname not found in DB
+2015-03-30T00:54:47+02:00 - 151.216.254.32 - Hostname not found in DB
+2015-03-30T01:12:55+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:25:53+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:25:55+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:25:56+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:26:15+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:26:17+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:27:17+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:27:23+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:27:45+02:00 - 151.216.254.32 - Served ex2200_secure.template to client
+2015-03-30T01:27:49+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T01:31:37+02:00 - 151.216.254.19 - Served ex2200_secure.template to client
+2015-03-30T01:31:46+02:00 - 151.216.183.130 - Served ex2200_secure.template to client
+2015-03-30T01:33:11+02:00 - 150.70.97.99 - Served ex2200_secure.template to client
+2015-03-30T02:39:48+02:00 - 151.216.254.19 - Served ex2200.template to client
+2015-03-30T02:42:44+02:00 - 151.216.254.19 - Served ex2200.template to client
+2015-03-30T15:33:26+02:00 - 151.216.254.200 - Served ex2200_secure.template to client
+2015-03-30T15:33:26+02:00 - 151.216.254.200 - Served ex2200_secure.template to client
+2015-03-30T15:35:26+02:00 - 150.70.173.45 - Served ex2200_secure.template to client
+2015-03-30T15:41:53+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-30T15:41:58+02:00 - 151.216.254.32 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T15:42:31+02:00 - 151.216.254.200 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T15:43:07+02:00 - 151.216.128.43 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T15:43:11+02:00 - 150.70.173.53 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T15:43:42+02:00 - 151.216.128.43 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T15:48:06+02:00 - 151.216.128.43 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T15:55:00+02:00 - 151.216.128.43 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T16:21:28+02:00 - 151.216.254.32 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T16:29:06+02:00 - 151.216.128.43 - Transferred "distro0.conf" in 0sec (~0Mbit/s)
+2015-03-30T16:56:52+02:00 - 151.216.180.3 - Served ex2200.template to client
+2015-03-30T16:56:53+02:00 - 151.216.180.4 - Served ex2200.template to client
+2015-03-30T16:56:55+02:00 - 151.216.180.2 - Served ex2200.template to client
+2015-03-30T16:59:18+02:00 - 151.216.180.4 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 144.16sec (~5.8715227044515Mbit/s)
+2015-03-30T16:59:19+02:00 - 151.216.180.3 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.77sec (~5.806672930464Mbit/s)
+2015-03-30T16:59:23+02:00 - 151.216.180.2 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.51sec (~5.7381785172106Mbit/s)
+2015-03-30T17:45:52+02:00 - 151.216.128.39 - Transferred "distro0.conf" in 0sec (~1925.07Mbit/s)
+2015-03-30T17:46:04+02:00 - 151.216.128.39 - Transferred "distro1.conf" in 0sec (~2592.55Mbit/s)
+2015-03-30T17:52:57+02:00 - 151.216.254.32 - Transferred "distro0.conf" in 0sec (~2094.98Mbit/s)
+2015-03-30T17:53:53+02:00 - 151.216.128.43 - Transferred "distro0.conf" in 0sec (~2013.31Mbit/s)
+2015-03-30T18:02:19+02:00 - 151.216.254.32 - Transferred "distro0.conf" in 0sec (~1821.57Mbit/s)
+2015-03-30T18:03:50+02:00 - 151.216.128.43 - Transferred "distro0.conf" in 0sec (2150.91Mbit/s)
+2015-03-30T18:53:02+02:00 - 151.216.180.81 - Served ex2200.template to client
+2015-03-30T18:55:28+02:00 - 151.216.180.81 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.69sec (5.81Mbit/s)
+2015-03-30T19:06:21+02:00 - 151.216.128.43 - Transferred "distro0.conf" in 0sec (2123.73Mbit/s)
+2015-03-30T19:06:58+02:00 - 151.216.128.39 - Transferred "distro1.conf" in 0sec (2464.54Mbit/s)
+2015-03-30T19:09:53+02:00 - 151.216.128.39 - Transferred "distro1.conf" in 0sec (2561.39Mbit/s)
+2015-03-30T19:43:30+02:00 - 151.216.128.41 - Transferred "distro2.conf" in 0sec (1562.09Mbit/s)
+2015-03-30T19:47:40+02:00 - 151.216.180.76 - Served ex2200.template to client
+2015-03-30T19:48:03+02:00 - 151.216.180.75 - Served ex2200.template to client
+2015-03-30T19:49:12+02:00 - 151.216.180.73 - Served ex2200.template to client
+2015-03-30T19:49:32+02:00 - 151.216.180.76 - Served ex2200.template to client
+2015-03-30T19:50:34+02:00 - 151.216.180.75 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.92sec (5.61Mbit/s)
+2015-03-30T19:51:35+02:00 - 151.216.180.84 - Served ex2200.template to client
+2015-03-30T19:51:38+02:00 - 151.216.180.73 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.03sec (5.8Mbit/s)
+2015-03-30T19:52:03+02:00 - 151.216.180.76 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.89sec (5.65Mbit/s)
+2015-03-30T19:52:39+02:00 - 151.216.180.69 - Served ex2200.template to client
+2015-03-30T19:53:30+02:00 - 151.216.180.83 - Served ex2200.template to client
+2015-03-30T19:53:45+02:00 - 151.216.180.67 - Served ex2200.template to client
+2015-03-30T19:54:11+02:00 - 151.216.180.84 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 155.06sec (5.46Mbit/s)
+2015-03-30T19:55:07+02:00 - 151.216.180.69 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.25sec (5.75Mbit/s)
+2015-03-30T19:55:37+02:00 - 151.216.180.82 - Served ex2200.template to client
+2015-03-30T19:55:44+02:00 - 151.216.180.74 - Served ex2200.template to client
+2015-03-30T19:56:12+02:00 - 151.216.180.83 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 162.23sec (5.22Mbit/s)
+2015-03-30T19:56:14+02:00 - 151.216.180.67 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.83sec (5.73Mbit/s)
+2015-03-30T19:56:22+02:00 - 151.216.180.80 - Served ex2200.template to client
+2015-03-30T19:57:07+02:00 - 151.216.180.79 - Served ex2200.template to client
+2015-03-30T19:58:22+02:00 - 151.216.180.74 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 157.61sec (5.37Mbit/s)
+2015-03-30T19:58:31+02:00 - 151.216.180.82 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 172.86sec (4.9Mbit/s)
+2015-03-30T19:58:48+02:00 - 151.216.180.80 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.61sec (5.81Mbit/s)
+2015-03-30T19:59:34+02:00 - 151.216.180.79 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.59sec (5.81Mbit/s)
+2015-03-30T20:05:35+02:00 - 151.216.180.71 - Served ex2200.template to client
+2015-03-30T20:07:06+02:00 - 151.216.254.32 - Transferred "fap.sql" in 0sec (2289Mbit/s)
+2015-03-30T20:08:03+02:00 - 151.216.180.71 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.28sec (5.75Mbit/s)
+2015-03-30T20:08:24+02:00 - 151.216.180.85 - Served ex2200.template to client
+2015-03-30T20:08:25+02:00 - 151.216.180.86 - Served ex2200.template to client
+2015-03-30T20:10:51+02:00 - 151.216.180.85 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.65sec (5.81Mbit/s)
+2015-03-30T20:10:52+02:00 - 151.216.180.86 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.59sec (5.77Mbit/s)
+2015-03-30T21:02:13+02:00 - 151.216.128.41 - Transferred "distro0.conf" in 0sec (1750.68Mbit/s)
+2015-03-30T21:02:24+02:00 - 151.216.128.41 - Transferred "distro2.conf" in 0sec (1640.49Mbit/s)
+2015-03-30T21:13:20+02:00 - 151.216.128.37 - Transferred "distro3.conf" in 0sec (1923.68Mbit/s)
+2015-03-30T21:21:24+02:00 - 151.216.128.35 - Transferred "distro5.conf" in 0sec (2082.34Mbit/s)
+2015-03-30T21:29:05+02:00 - 151.216.128.33 - Transferred "distro4.conf" in 0sec (2072.46Mbit/s)
+2015-03-30T21:30:04+02:00 - 151.216.128.35 - Transferred "distro5.conf" in 0sec (1884.14Mbit/s)
+2015-03-30T21:32:25+02:00 - 151.216.128.31 - Transferred "distro6.conf" in 0sec (1875.11Mbit/s)
+2015-03-30T21:33:25+02:00 - 151.216.128.29 - Transferred "distro7.conf" in 0sec (2184.1Mbit/s)
+2015-03-30T21:53:03+02:00 - 151.216.180.138 - Served ex2200.template to client
+2015-03-30T21:55:33+02:00 - 151.216.180.138 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.29sec (5.67Mbit/s)
+2015-03-30T22:00:33+02:00 - 151.216.180.201 - Served ex2200.template to client
+2015-03-30T22:01:20+02:00 - 151.216.180.139 - Served ex2200.template to client
+2015-03-30T22:01:27+02:00 - 151.216.180.200 - Served ex2200.template to client
+2015-03-30T22:02:13+02:00 - 151.216.180.198 - Served ex2200.template to client
+2015-03-30T22:03:00+02:00 - 151.216.180.201 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.64sec (5.77Mbit/s)
+2015-03-30T22:03:48+02:00 - 151.216.180.139 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.75sec (5.73Mbit/s)
+2015-03-30T22:03:54+02:00 - 151.216.180.200 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.38sec (5.78Mbit/s)
+2015-03-30T22:04:38+02:00 - 151.216.180.198 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.1sec (5.83Mbit/s)
+2015-03-30T22:05:02+02:00 - 151.216.180.138 - Served ex2200.template to client
+2015-03-30T22:07:32+02:00 - 151.216.180.138 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.03sec (5.68Mbit/s)
+2015-03-30T22:07:35+02:00 - 151.216.180.141 - Served ex2200.template to client
+2015-03-30T22:10:04+02:00 - 151.216.180.141 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.29sec (5.71Mbit/s)
+2015-03-30T22:10:41+02:00 - 151.216.180.140 - Served ex2200.template to client
+2015-03-30T22:13:11+02:00 - 151.216.180.140 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.87sec (5.69Mbit/s)
+2015-03-30T22:13:12+02:00 - 151.216.180.132 - Served ex2200.template to client
+2015-03-30T22:14:04+02:00 - 151.216.180.130 - Served ex2200.template to client
+2015-03-30T22:14:59+02:00 - 151.216.180.133 - Served ex2200.template to client
+2015-03-30T22:15:33+02:00 - 151.216.180.135 - Served ex2200.template to client
+2015-03-30T22:15:54+02:00 - 151.216.180.132 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 161.39sec (5.24Mbit/s)
+2015-03-30T22:16:38+02:00 - 151.216.180.130 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 153.35sec (5.52Mbit/s)
+2015-03-30T22:17:55+02:00 - 151.216.180.133 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 176.05sec (4.81Mbit/s)
+2015-03-30T22:18:18+02:00 - 151.216.180.135 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 164.34sec (5.15Mbit/s)
+2015-03-30T22:18:47+02:00 - 151.216.180.136 - Served ex2200.template to client
+2015-03-30T22:21:14+02:00 - 151.216.180.136 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.65sec (5.77Mbit/s)
+2015-03-30T22:22:23+02:00 - 151.216.180.131 - Served ex2200.template to client
+2015-03-30T22:25:23+02:00 - 151.216.180.131 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 178.4sec (4.74Mbit/s)
+2015-03-30T22:27:06+02:00 - 151.216.180.134 - Served ex2200.template to client
+2015-03-30T22:29:34+02:00 - 151.216.180.134 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.06sec (5.72Mbit/s)
+2015-03-30T23:18:19+02:00 - 151.216.180.207 - Served ex2200.template to client
+2015-03-30T23:20:01+02:00 - 151.216.180.204 - Served ex2200.template to client
+2015-03-30T23:20:49+02:00 - 151.216.180.207 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.01sec (5.64Mbit/s)
+2015-03-30T23:22:24+02:00 - 151.216.180.205 - Served ex2200.template to client
+2015-03-30T23:22:29+02:00 - 151.216.180.204 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.54sec (5.74Mbit/s)
+2015-03-30T23:24:54+02:00 - 151.216.180.205 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.91sec (5.68Mbit/s)
+2015-03-30T23:25:12+02:00 - 151.216.180.194 - Served ex2200.template to client
+2015-03-30T23:27:43+02:00 - 151.216.180.194 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.22sec (5.63Mbit/s)
+2015-03-30T23:28:34+02:00 - 151.216.181.132 - Served ex2200.template to client
+2015-03-30T23:28:52+02:00 - 151.216.180.195 - Served ex2200.template to client
+2015-03-30T23:29:05+02:00 - 151.216.181.132 - Served ex2200.template to client
+2015-03-30T23:30:51+02:00 - 151.216.180.206 - Served ex2200.template to client
+2015-03-30T23:31:21+02:00 - 151.216.180.195 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.95sec (5.68Mbit/s)
+2015-03-30T23:33:19+02:00 - 151.216.180.206 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.9sec (5.72Mbit/s)
+2015-03-30T23:34:57+02:00 - 151.216.181.133 - Served ex2200.template to client
+2015-03-30T23:35:11+02:00 - 151.216.181.132 - Served ex2200.template to client
+2015-03-30T23:36:26+02:00 - 151.216.180.199 - Served ex2200.template to client
+2015-03-30T23:37:28+02:00 - 151.216.181.133 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.24sec (5.63Mbit/s)
+2015-03-30T23:37:41+02:00 - 151.216.181.132 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.41sec (5.67Mbit/s)
+2015-03-30T23:38:35+02:00 - 151.216.180.197 - Served ex2200.template to client
+2015-03-30T23:38:45+02:00 - 151.216.181.131 - Served ex2200.template to client
+2015-03-30T23:38:56+02:00 - 151.216.180.199 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.71sec (5.65Mbit/s)
+2015-03-30T23:39:00+02:00 - 151.216.181.130 - Served ex2200.template to client
+2015-03-30T23:40:44+02:00 - 151.216.180.196 - Served ex2200.template to client
+2015-03-30T23:41:06+02:00 - 151.216.180.197 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.7sec (5.62Mbit/s)
+2015-03-30T23:41:14+02:00 - 151.216.181.131 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.73sec (5.73Mbit/s)
+2015-03-30T23:41:29+02:00 - 151.216.181.130 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.52sec (5.7Mbit/s)
+2015-03-30T23:42:25+02:00 - 151.216.254.32 - Transferred "rs1.backstage.conf" in 0sec (429.68Mbit/s)
+2015-03-30T23:43:13+02:00 - 151.216.180.196 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.09sec (5.68Mbit/s)
+2015-03-30T23:45:12+02:00 - 151.216.180.203 - Served ex2200.template to client
+2015-03-30T23:46:42+02:00 - 151.216.180.202 - Served ex2200.template to client
+2015-03-30T23:47:17+02:00 - 151.216.254.203 - Transferred "rs1.backstage.conf" in 0sec (571.5Mbit/s)
+2015-03-30T23:47:40+02:00 - 151.216.180.203 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.52sec (5.74Mbit/s)
+2015-03-30T23:48:57+02:00 - 151.216.181.13 - Served ex2200.template to client
+2015-03-30T23:49:11+02:00 - 151.216.180.202 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.78sec (5.73Mbit/s)
+2015-03-30T23:51:25+02:00 - 151.216.181.13 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.59sec (5.74Mbit/s)
+2015-03-30T23:52:50+02:00 - 151.216.181.5 - Served ex2200.template to client
+2015-03-30T23:53:06+02:00 - 151.216.181.10 - Served ex2200.template to client
+2015-03-30T23:53:45+02:00 - 151.216.181.12 - Served ex2200.template to client
+2015-03-30T23:53:45+02:00 - 151.216.181.4 - Served ex2200.template to client
+2015-03-30T23:53:57+02:00 - 151.216.181.3 - Served ex2200.template to client
+2015-03-30T23:54:16+02:00 - 151.216.180.208 - Served ex2200.template to client
+2015-03-30T23:54:28+02:00 - 151.216.181.2 - Served ex2200.template to client
+2015-03-30T23:54:31+02:00 - 151.216.180.209 - Served ex2200.template to client
+2015-03-30T23:55:32+02:00 - 151.216.181.10 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.12sec (5.83Mbit/s)
+2015-03-30T23:55:34+02:00 - 151.216.254.203 - Transferred "rs1.backstage.conf" in 0sec (526.75Mbit/s)
+2015-03-30T23:55:39+02:00 - 151.216.181.5 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 168.81sec (5.01Mbit/s)
+2015-03-30T23:56:25+02:00 - 151.216.181.3 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.86sec (5.72Mbit/s)
+2015-03-30T23:56:34+02:00 - 151.216.181.12 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 168.13sec (5.03Mbit/s)
+2015-03-30T23:56:42+02:00 - 151.216.128.21 - Transferred "rs1.backstage.conf" in 0sec (429.68Mbit/s)
+2015-03-30T23:56:43+02:00 - 151.216.181.4 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 176.63sec (4.79Mbit/s)
+2015-03-30T23:56:56+02:00 - 151.216.181.2 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.48sec (5.74Mbit/s)
+2015-03-30T23:57:02+02:00 - 151.216.180.208 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 164.93sec (5.13Mbit/s)
+2015-03-30T23:57:13+02:00 - 151.216.181.11 - Served ex2200.template to client
+2015-03-30T23:57:25+02:00 - 151.216.180.209 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 173.05sec (4.89Mbit/s)
+2015-03-30T23:58:12+02:00 - 151.216.181.9 - Served ex2200.template to client
+2015-03-31T00:00:06+02:00 - 151.216.181.11 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 172.59sec (4.9Mbit/s)
+2015-03-31T00:00:14+02:00 - 151.216.181.8 - Served ex2200.template to client
+2015-03-31T00:00:46+02:00 - 151.216.128.21 - Transferred "rs1.backstage.conf" in 0sec (631.34Mbit/s)
+2015-03-31T00:01:00+02:00 - 151.216.181.7 - Served ex2200.template to client
+2015-03-31T00:01:08+02:00 - 151.216.181.9 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 175.41sec (4.83Mbit/s)
+2015-03-31T00:01:23+02:00 - 151.216.181.6 - Served ex2200.template to client
+2015-03-31T00:02:40+02:00 - 151.216.181.8 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.22sec (5.83Mbit/s)
+2015-03-31T00:02:49+02:00 - 151.216.181.15 - Served ex2200.template to client
+2015-03-31T00:03:30+02:00 - 151.216.181.7 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.02sec (5.68Mbit/s)
+2015-03-31T00:03:52+02:00 - 151.216.181.6 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.05sec (5.72Mbit/s)
+2015-03-31T00:04:41+02:00 - 151.216.181.134 - Served ex2200.template to client
+2015-03-31T00:05:30+02:00 - 151.216.181.15 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 159.57sec (5.3Mbit/s)
+2015-03-31T00:05:36+02:00 - 151.216.181.17 - Served ex2200.template to client
+2015-03-31T00:06:50+02:00 - 151.216.181.16 - Served ex2200.template to client
+2015-03-31T00:07:08+02:00 - 151.216.181.134 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.07sec (5.76Mbit/s)
+2015-03-31T00:07:33+02:00 - 151.216.181.18 - Served ex2200.template to client
+2015-03-31T00:08:03+02:00 - 151.216.181.17 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.12sec (5.79Mbit/s)
+2015-03-31T00:08:51+02:00 - 151.216.181.19 - Served ex2200.template to client
+2015-03-31T00:09:33+02:00 - 151.216.181.16 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 161.64sec (5.24Mbit/s)
+2015-03-31T00:09:43+02:00 - 151.216.181.139 - Served ex2200.template to client
+2015-03-31T00:10:01+02:00 - 151.216.181.135 - Served ex2200.template to client
+2015-03-31T00:10:17+02:00 - 151.216.181.14 - Served ex2200.template to client
+2015-03-31T00:10:31+02:00 - 151.216.181.18 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 176.87sec (4.79Mbit/s)
+2015-03-31T00:11:13+02:00 - 151.216.181.138 - Served ex2200.template to client
+2015-03-31T00:11:28+02:00 - 151.216.181.19 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 156.67sec (5.4Mbit/s)
+2015-03-31T00:11:41+02:00 - 151.216.181.83 - Served ex2200.template to client
+2015-03-31T00:12:43+02:00 - 151.216.181.135 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 160.91sec (5.26Mbit/s)
+2015-03-31T00:12:44+02:00 - 151.216.181.14 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.26sec (5.79Mbit/s)
+2015-03-31T00:12:48+02:00 - 151.216.181.139 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 184.22sec (4.59Mbit/s)
+2015-03-31T00:13:23+02:00 - 151.216.181.82 - Served ex2200.template to client
+2015-03-31T00:13:40+02:00 - 151.216.181.138 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.63sec (5.77Mbit/s)
+2015-03-31T00:14:10+02:00 - 151.216.181.83 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.42sec (5.7Mbit/s)
+2015-03-31T00:15:07+02:00 - 151.216.181.140 - Served ex2200.template to client
+2015-03-31T00:15:54+02:00 - 151.216.181.82 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.1sec (5.64Mbit/s)
+2015-03-31T00:17:35+02:00 - 151.216.181.140 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.53sec (5.74Mbit/s)
+2015-03-31T00:18:38+02:00 - 151.216.181.141 - Served ex2200.template to client
+2015-03-31T00:21:08+02:00 - 151.216.181.141 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.82sec (5.69Mbit/s)
+2015-03-31T00:21:13+02:00 - 151.216.181.195 - Served ex2200.template to client
+2015-03-31T00:22:48+02:00 - 151.216.181.196 - Served ex2200.template to client
+2015-03-31T00:23:10+02:00 - 151.216.181.81 - Served ex2200.template to client
+2015-03-31T00:23:40+02:00 - 151.216.181.195 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.11sec (5.79Mbit/s)
+2015-03-31T00:24:08+02:00 - 151.216.181.80 - Served ex2200.template to client
+2015-03-31T00:25:08+02:00 - 151.216.181.78 - Served ex2200.template to client
+2015-03-31T00:25:16+02:00 - 151.216.181.196 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.02sec (5.76Mbit/s)
+2015-03-31T00:25:36+02:00 - 151.216.254.32 - Transferred "rs1.backstage.conf" in 0sec (571.5Mbit/s)
+2015-03-31T00:25:56+02:00 - 151.216.181.143 - Served ex2200.template to client
+2015-03-31T00:25:58+02:00 - 151.216.181.81 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 168.12sec (5.03Mbit/s)
+2015-03-31T00:26:17+02:00 - 151.216.181.76 - Served ex2200.template to client
+2015-03-31T00:26:37+02:00 - 151.216.181.80 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.59sec (5.7Mbit/s)
+2015-03-31T00:26:42+02:00 - 151.216.181.77 - Served ex2200.template to client
+2015-03-31T00:26:43+02:00 - 151.216.181.194 - Served ex2200.template to client
+2015-03-31T00:27:30+02:00 - 151.216.181.197 - Served ex2200.template to client
+2015-03-31T00:27:36+02:00 - 151.216.181.78 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.78sec (5.77Mbit/s)
+2015-03-31T00:28:22+02:00 - 151.216.181.143 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.06sec (5.84Mbit/s)
+2015-03-31T00:28:44+02:00 - 151.216.181.76 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.69sec (5.77Mbit/s)
+2015-03-31T00:29:12+02:00 - 151.216.181.194 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.64sec (5.73Mbit/s)
+2015-03-31T00:29:12+02:00 - 151.216.181.77 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.86sec (5.69Mbit/s)
+2015-03-31T00:29:41+02:00 - 151.216.181.74 - Served ex2200.template to client
+2015-03-31T00:30:01+02:00 - 151.216.181.197 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.1sec (5.64Mbit/s)
+2015-03-31T00:30:32+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-31T00:30:39+02:00 - 151.216.254.32 - Hostname not found in DB
+2015-03-31T00:31:00+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-31T00:31:55+02:00 - 151.216.181.75 - Served ex2200.template to client
+2015-03-31T00:32:07+02:00 - 151.216.254.32 - Transferred "rs1.backstage.conf" in 0sec (579.07Mbit/s)
+2015-03-31T00:32:10+02:00 - 151.216.181.74 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.45sec (5.7Mbit/s)
+2015-03-31T00:32:52+02:00 - 151.216.128.21 - Transferred "rs1.backstage.conf" in 0sec (613.61Mbit/s)
+2015-03-31T00:33:25+02:00 - 151.216.181.142 - Served ex2200.template to client
+2015-03-31T00:33:57+02:00 - 151.216.181.66 - Served ex2200.template to client
+2015-03-31T00:34:24+02:00 - 151.216.181.75 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.76sec (5.73Mbit/s)
+2015-03-31T00:35:07+02:00 - 151.216.181.213 - Served ex2200.template to client
+2015-03-31T00:35:55+02:00 - 151.216.181.142 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.48sec (5.66Mbit/s)
+2015-03-31T00:36:27+02:00 - 151.216.181.66 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.87sec (5.69Mbit/s)
+2015-03-31T00:36:48+02:00 - 151.216.181.211 - Served ex2200.template to client
+2015-03-31T00:37:35+02:00 - 151.216.181.213 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.73sec (5.77Mbit/s)
+2015-03-31T00:38:17+02:00 - 151.216.181.67 - Served ex2200.template to client
+2015-03-31T00:39:16+02:00 - 151.216.181.211 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.09sec (5.75Mbit/s)
+2015-03-31T00:40:06+02:00 - 151.216.181.68 - Served ex2200.template to client
+2015-03-31T00:40:46+02:00 - 151.216.181.67 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.65sec (5.69Mbit/s)
+2015-03-31T00:41:14+02:00 - 151.216.181.70 - Served ex2200.template to client
+2015-03-31T00:42:35+02:00 - 151.216.181.68 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.44sec (5.7Mbit/s)
+2015-03-31T00:43:05+02:00 - 151.216.181.72 - Served ex2200.template to client
+2015-03-31T00:43:21+02:00 - 151.216.181.210 - Served ex2200.template to client
+2015-03-31T00:43:43+02:00 - 151.216.181.70 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.55sec (5.7Mbit/s)
+2015-03-31T00:43:59+02:00 - 151.216.181.208 - Served ex2200.template to client
+2015-03-31T00:45:34+02:00 - 151.216.181.72 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.28sec (5.71Mbit/s)
+2015-03-31T00:45:49+02:00 - 151.216.181.71 - Served ex2200.template to client
+2015-03-31T00:45:51+02:00 - 151.216.181.210 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.4sec (5.7Mbit/s)
+2015-03-31T00:46:29+02:00 - 151.216.181.208 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.25sec (5.67Mbit/s)
+2015-03-31T00:46:34+02:00 - 151.216.181.73 - Served ex2200.template to client
+2015-03-31T00:48:17+02:00 - 151.216.181.71 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.01sec (5.72Mbit/s)
+2015-03-31T00:49:01+02:00 - 151.216.181.73 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.74sec (5.81Mbit/s)
+2015-03-31T00:50:18+02:00 - 151.216.183.163 - Served ex2200.template to client
+2015-03-31T00:50:56+02:00 - 151.216.181.145 - Served ex2200.template to client
+2015-03-31T00:51:37+02:00 - 151.216.181.144 - Served ex2200.template to client
+2015-03-31T00:52:46+02:00 - 151.216.183.163 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.39sec (5.74Mbit/s)
+2015-03-31T00:53:24+02:00 - 151.216.181.145 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.85sec (5.72Mbit/s)
+2015-03-31T00:54:06+02:00 - 151.216.181.144 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.58sec (5.7Mbit/s)
+2015-03-31T00:57:03+02:00 - 151.216.181.206 - Served ex2200.template to client
+2015-03-31T00:57:54+02:00 - 151.216.181.146 - Served ex2200.template to client
+2015-03-31T00:57:59+02:00 - 151.216.181.147 - Served ex2200.template to client
+2015-03-31T00:59:29+02:00 - 151.216.181.206 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.33sec (5.82Mbit/s)
+2015-03-31T00:59:34+02:00 - 151.216.180.5 - Served ex2200.template to client
+2015-03-31T01:00:20+02:00 - 151.216.181.146 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.83sec (5.8Mbit/s)
+2015-03-31T01:00:27+02:00 - 151.216.181.209 - Served ex2200.template to client
+2015-03-31T01:00:38+02:00 - 151.216.181.147 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 158.34sec (5.35Mbit/s)
+2015-03-31T01:01:59+02:00 - 151.216.181.199 - Served ex2200.template to client
+2015-03-31T01:02:02+02:00 - 151.216.180.5 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.18sec (5.75Mbit/s)
+2015-03-31T01:02:54+02:00 - 151.216.181.209 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.56sec (5.81Mbit/s)
+2015-03-31T01:04:16+02:00 - 151.216.180.12 - Served ex2200.template to client
+2015-03-31T01:04:27+02:00 - 151.216.181.199 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.46sec (5.74Mbit/s)
+2015-03-31T01:04:37+02:00 - 151.216.181.215 - Served ex2200.template to client
+2015-03-31T01:05:22+02:00 - 151.216.180.11 - Served ex2200.template to client
+2015-03-31T01:05:57+02:00 - 151.216.181.214 - Served ex2200.template to client
+2015-03-31T01:06:30+02:00 - 151.216.180.10 - Served ex2200.template to client
+2015-03-31T01:06:46+02:00 - 151.216.180.12 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.39sec (5.67Mbit/s)
+2015-03-31T01:07:07+02:00 - 151.216.181.215 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.77sec (5.69Mbit/s)
+2015-03-31T01:07:39+02:00 - 151.216.181.207 - Served ex2200.template to client
+2015-03-31T01:07:41+02:00 - 151.216.181.212 - Served ex2200.template to client
+2015-03-31T01:07:50+02:00 - 151.216.180.11 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.92sec (5.72Mbit/s)
+2015-03-31T01:08:25+02:00 - 151.216.181.214 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.31sec (5.71Mbit/s)
+2015-03-31T01:08:51+02:00 - 151.216.180.9 - Served ex2200.template to client
+2015-03-31T01:08:53+02:00 - 151.216.181.207 - Served ex2200.template to client
+2015-03-31T01:09:00+02:00 - 151.216.180.10 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.21sec (5.67Mbit/s)
+2015-03-31T01:09:32+02:00 - 151.216.180.13 - Served ex2200.template to client
+2015-03-31T01:09:44+02:00 - 151.216.181.198 - Served ex2200.template to client
+2015-03-31T01:10:11+02:00 - 151.216.181.212 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.55sec (5.66Mbit/s)
+2015-03-31T01:11:20+02:00 - 151.216.180.9 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.59sec (5.7Mbit/s)
+2015-03-31T01:11:23+02:00 - 151.216.181.207 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.66sec (5.66Mbit/s)
+2015-03-31T01:11:44+02:00 - 151.216.180.14 - Served ex2200.template to client
+2015-03-31T01:12:01+02:00 - 151.216.180.13 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.75sec (5.69Mbit/s)
+2015-03-31T01:12:13+02:00 - 151.216.181.198 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148sec (5.72Mbit/s)
+2015-03-31T01:13:18+02:00 - 151.216.180.16 - Served ex2200.template to client
+2015-03-31T01:14:01+02:00 - 151.216.180.15 - Served ex2200.template to client
+2015-03-31T01:14:10+02:00 - 151.216.180.14 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.18sec (5.83Mbit/s)
+2015-03-31T01:15:45+02:00 - 151.216.180.16 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.28sec (5.75Mbit/s)
+2015-03-31T01:16:21+02:00 - 151.216.181.204 - Served ex2200.template to client
+2015-03-31T01:16:31+02:00 - 151.216.180.15 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.15sec (5.67Mbit/s)
+2015-03-31T01:17:00+02:00 - 151.216.181.202 - Served ex2200.template to client
+2015-03-31T01:17:43+02:00 - 151.216.180.137 - Served ex2200.template to client
+2015-03-31T01:18:51+02:00 - 151.216.181.204 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.42sec (5.66Mbit/s)
+2015-03-31T01:19:27+02:00 - 151.216.181.202 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.3sec (5.79Mbit/s)
+2015-03-31T01:20:15+02:00 - 151.216.180.137 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.68sec (5.62Mbit/s)
+2015-03-31T01:21:18+02:00 - 151.216.181.205 - Served ex2200.template to client
+2015-03-31T01:23:46+02:00 - 151.216.181.205 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.87sec (5.72Mbit/s)
+2015-03-31T01:26:10+02:00 - 151.216.181.200 - Served ex2200.template to client
+2015-03-31T01:26:21+02:00 - 151.216.181.203 - Served ex2200.template to client
+2015-03-31T01:28:36+02:00 - 151.216.181.200 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 144.96sec (5.84Mbit/s)
+2015-03-31T01:28:48+02:00 - 151.216.181.203 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.27sec (5.79Mbit/s)
+2015-03-31T01:29:49+02:00 - 151.216.181.201 - Served ex2200.template to client
+2015-03-31T01:32:16+02:00 - 151.216.181.201 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.52sec (5.78Mbit/s)
+2015-03-31T01:49:49+02:00 - 151.216.183.162 - Served ex2200.template to client
+2015-03-31T01:53:04+02:00 - 151.216.183.162 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 194.4sec (4.35Mbit/s)
+2015-03-31T02:20:51+02:00 - 151.216.181.79 - Served ex2200.template to client
+2015-03-31T02:23:17+02:00 - 151.216.181.79 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.05sec (5.8Mbit/s)
+2015-03-31T02:27:20+02:00 - 151.216.181.69 - Served ex2200.template to client
+2015-03-31T02:29:47+02:00 - 151.216.181.69 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.43sec (5.78Mbit/s)
+2015-03-31T03:18:42+02:00 - 151.216.180.77 - Served ex2200.template to client
+2015-03-31T03:21:08+02:00 - 151.216.180.77 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.66sec (5.81Mbit/s)
+2015-03-31T09:50:51+02:00 - 151.216.180.68 - Served ex2200.template to client
+2015-03-31T09:53:21+02:00 - 151.216.180.68 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 149.43sec (5.66Mbit/s)
+2015-03-31T09:57:30+02:00 - 151.216.180.78 - Served ex2200.template to client
+2015-03-31T10:00:07+02:00 - 151.216.180.78 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 155.88sec (5.43Mbit/s)
+2015-03-31T10:46:03+02:00 - 151.216.180.72 - Served ex2200.template to client
+2015-03-31T10:48:30+02:00 - 151.216.180.72 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.27sec (5.79Mbit/s)
+2015-03-31T11:48:49+02:00 - 151.216.180.6 - Served ex2200.template to client
+2015-03-31T11:54:49+02:00 - 151.216.180.7 - Served ex2200.template to client
+2015-03-31T11:57:18+02:00 - 151.216.180.7 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 147.99sec (5.72Mbit/s)
+2015-03-31T11:58:09+02:00 - 151.216.254.219 - Transferred "rs1.backstage.conf" in 0sec (662.42Mbit/s)
+2015-03-31T11:59:31+02:00 - 151.216.254.20 - Transferred "rs1.backstage.conf" in 0sec (672.62Mbit/s)
+2015-03-31T12:00:56+02:00 - 151.216.254.20 - Transferred "rs1.backstage.conf" in 0sec (672.62Mbit/s)
+2015-03-31T12:19:33+02:00 - 151.216.180.6 - Served ex2200.template to client
+2015-03-31T12:22:03+02:00 - 151.216.180.6 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 148.91sec (5.68Mbit/s)
+2015-03-31T13:30:34+02:00 - 151.216.254.32 - Transferred "rs1.north.conf" in 0sec (306.91Mbit/s)
+2015-03-31T13:39:00+02:00 - 151.216.254.25 - Transferred "rs1.north.conf" in 0sec (352.28Mbit/s)
+2015-03-31T13:41:32+02:00 - 151.216.128.18 - Transferred "rs1.north.conf" in 0sec (311.63Mbit/s)
+2015-03-31T13:43:14+02:00 - 151.216.128.18 - Transferred "rs1.north.conf" in 0sec (344.78Mbit/s)
+2015-03-31T13:44:09+02:00 - 151.216.128.18 - Transferred "rs1.north.conf" in 0sec (363.34Mbit/s)
+2015-03-31T13:44:56+02:00 - 151.216.128.18 - Transferred "rs1.north.conf" in 0sec (344.78Mbit/s)
+2015-03-31T13:46:24+02:00 - 151.216.128.18 - Transferred "rs1.north.conf" in 0sec (241.86Mbit/s)
+2015-03-31T13:48:13+02:00 - 151.216.254.32 - Transferred "rs1.gamehq.conf" in 0sec (483.52Mbit/s)
+2015-03-31T13:49:29+02:00 - 151.216.254.20 - Transferred "rs1.gamehq.conf" in 0sec (586.51Mbit/s)
+2015-03-31T13:52:15+02:00 - 151.216.128.16 - Transferred "rs1.gamehq.conf" in 0sec (570.05Mbit/s)
+2015-03-31T14:23:11+02:00 - 151.216.181.136 - Served ex2200.template to client
+2015-03-31T14:23:13+02:00 - 151.216.181.137 - Served ex2200.template to client
+2015-03-31T14:26:11+02:00 - 151.216.180.70 - Served ex2200.template to client
+2015-03-31T14:26:24+02:00 - 151.216.181.136 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 191.49sec (4.42Mbit/s)
+2015-03-31T14:26:25+02:00 - 151.216.181.137 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 191.46sec (4.42Mbit/s)
+2015-03-31T14:27:46+02:00 - 151.216.180.8 - Served ex2200.template to client
+2015-03-31T14:29:25+02:00 - 151.216.180.70 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 194.18sec (4.36Mbit/s)
+2015-03-31T14:31:06+02:00 - 151.216.180.8 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 198.88sec (4.26Mbit/s)
+2015-03-31T15:50:15+02:00 - 151.216.254.200 - Transferred "rs1.gamehq.conf" in 0sec (483.52Mbit/s)
+2015-03-31T15:50:43+02:00 - 151.216.254.200 - 404 - File not found
+2015-03-31T15:50:51+02:00 - 151.216.254.200 - 404 - File not found
+2015-03-31T15:51:01+02:00 - 151.216.254.200 - 404 - File not found
+2015-03-31T15:51:11+02:00 - 150.70.97.119 - Transferred "rs1.gamehq.conf" in 0sec (606.21Mbit/s)
+2015-03-31T15:51:18+02:00 - 151.216.254.200 - Served ex2200.template to client
+2015-03-31T15:51:23+02:00 - 151.216.254.200 - Served ex2200.template to client
+2015-03-31T15:52:44+02:00 - 150.70.97.124 - Served ex2200.template to client
+2015-03-31T15:53:16+02:00 - 150.70.97.97 - Served ex2200.template to client
+2015-03-31T16:33:45+02:00 - 151.216.128.31 - Transferred "distro6_creativia.conf" in 0sec (998.52Mbit/s)
+2015-03-31T16:48:02+02:00 - 151.216.181.148 - Served ex2200.template to client
+2015-03-31T16:50:27+02:00 - 151.216.181.148 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 144.42sec (5.86Mbit/s)
+2015-03-31T16:53:43+02:00 - 151.216.181.150 - Served ex2200.template to client
+2015-03-31T16:55:11+02:00 - 151.216.181.153 - Served ex2200.template to client
+2015-03-31T16:56:11+02:00 - 151.216.181.150 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.64sec (5.77Mbit/s)
+2015-03-31T16:56:23+02:00 - 151.216.181.155 - Served ex2200.template to client
+2015-03-31T16:56:44+02:00 - 151.216.181.151 - Served ex2200.template to client
+2015-03-31T16:57:31+02:00 - 151.216.181.152 - Served ex2200.template to client
+2015-03-31T16:57:38+02:00 - 151.216.181.153 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.13sec (5.79Mbit/s)
+2015-03-31T16:58:50+02:00 - 151.216.181.155 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.4sec (5.78Mbit/s)
+2015-03-31T16:59:10+02:00 - 151.216.181.151 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.66sec (5.81Mbit/s)
+2015-03-31T16:59:57+02:00 - 151.216.181.152 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 145.33sec (5.82Mbit/s)
+2015-03-31T17:22:57+02:00 - 151.216.128.11 - 404 - File not found
+2015-03-31T17:25:46+02:00 - 151.216.128.11 - 404 - File not found
+2015-03-31T17:26:22+02:00 - 151.216.254.219 - 404 - File not found
+2015-03-31T17:27:30+02:00 - 151.216.128.11 - Transferred "rs1.south.conf" in 0sec (321.52Mbit/s)
+2015-03-31T17:54:05+02:00 - 151.216.180.66 - Served ex2200.template to client
+2015-03-31T17:57:10+02:00 - 151.216.180.66 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 184.02sec (4.6Mbit/s)
+2015-03-31T17:59:53+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-31T18:13:33+02:00 - 151.216.254.237 - Transferred "rs1.gamehq.conf" in 0sec (560.22Mbit/s)
+2015-03-31T18:13:37+02:00 - 151.216.254.237 - 404 - File not found
+2015-03-31T18:13:44+02:00 - 151.216.254.237 - 404 - File not found
+2015-03-31T18:13:54+02:00 - 151.216.254.237 - 404 - File not found
+2015-03-31T18:14:06+02:00 - 151.216.254.237 - 404 - File not found
+2015-03-31T18:14:10+02:00 - 151.216.254.237 - 404 - File not found
+2015-03-31T18:24:06+02:00 - 176.11.7.229 - Served ex2200.template to client
+2015-03-31T18:25:19+02:00 - 151.216.181.154 - Served ex2200.template to client
+2015-03-31T18:27:45+02:00 - 151.216.181.154 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 146.34sec (5.78Mbit/s)
+2015-03-31T18:27:50+02:00 - 151.216.181.149 - Served ex2200.template to client
+2015-03-31T18:30:55+02:00 - 151.216.181.149 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 183.5sec (4.61Mbit/s)
+2015-03-31T18:43:33+02:00 - 151.216.229.12 - 404 - File not found
+2015-03-31T18:43:41+02:00 - 151.216.229.12 - Served ex2200.template to client
+2015-03-31T20:17:12+02:00 - 151.216.181.148 - Served ex2200.template to client
+2015-03-31T20:19:09+02:00 - 151.216.181.148 - Served ex2200.template to client
+2015-03-31T20:45:47+02:00 - 151.216.183.98 - Served ex2200.template to client
+2015-03-31T20:48:18+02:00 - 151.216.183.98 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 150.84sec (5.61Mbit/s)
+2015-03-31T22:10:24+02:00 - 151.216.254.20 - Hostname not found in DB
+2015-03-31T22:10:31+02:00 - 151.216.254.20 - Hostname not found in DB
+2015-03-31T22:12:27+02:00 - 151.216.254.20 - Hostname not found in DB
+2015-03-31T22:12:36+02:00 - 151.216.254.20 - Hostname not found in DB
+2015-03-31T22:13:06+02:00 - 151.216.254.32 - Hostname not found in DB
+2015-03-31T22:13:21+02:00 - 151.216.254.32 - Hostname not found in DB
+2015-03-31T22:13:35+02:00 - 151.216.254.32 - Transferred "rs1.north_sw1-infodesk.conf" in 0sec (329.03Mbit/s)
+2015-03-31T22:13:55+02:00 - 151.216.254.20 - Transferred "rs1.north_sw1-infodesk.conf" in 0sec (461.02Mbit/s)
+2015-03-31T22:14:33+02:00 - 151.216.254.20 - Hostname not found in DB
+2015-03-31T22:37:45+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-03-31T22:38:05+02:00 - 151.216.254.20 - Served ex2200.template to client
+2015-03-31T22:39:04+02:00 - 151.216.254.200 - Hostname not found in DB
+2015-03-31T22:39:12+02:00 - 151.216.254.200 - Served ex2200_secure.template to client
+2015-03-31T22:40:22+02:00 - 150.70.97.113 - Served ex2200_secure.template to client
+2015-03-31T22:40:28+02:00 - 150.70.97.114 - Hostname not found in DB
+2015-03-31T22:50:27+02:00 - 151.216.181.196 - Served ex2200_secure.template to client
+2015-03-31T22:52:37+02:00 - 151.216.181.196 - Served ex2200_secure.template to client
+2015-03-31T22:53:48+02:00 - 151.216.181.196 - Served ex2200_secure.template to client
+2015-03-31T23:01:27+02:00 - 151.216.181.196 - Served ex2200_secure.template to client
+2015-03-31T23:02:16+02:00 - 151.216.181.196 - Served ex2200_secure.template to client
+2015-03-31T23:04:51+02:00 - 151.216.181.196 - Hostname not found in DB
+2015-03-31T23:32:54+02:00 - 151.216.181.198 - Served ex2200_secure.template to client
+2015-03-31T23:41:24+02:00 - 151.216.181.198 - Served ex2200_secure.template to client
+2015-04-01T00:20:21+02:00 - 151.216.180.2 - Served ex2200_secure.template to client
+2015-04-01T00:21:28+02:00 - 151.216.180.3 - Served ex2200_secure.template to client
+2015-04-01T02:10:33+02:00 - 151.216.183.229 - Served ex2200.template to client
+2015-04-01T02:13:26+02:00 - 151.216.183.229 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 172.98sec (4.89Mbit/s)
+2015-04-01T02:37:02+02:00 - 151.216.183.230 - Served ex2200.template to client
+2015-04-01T02:38:52+02:00 - 151.216.183.231 - Served ex2200.template to client
+2015-04-01T02:39:58+02:00 - 151.216.183.230 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 175.76sec (4.82Mbit/s)
+2015-04-01T02:41:26+02:00 - 151.216.183.231 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 153.39sec (5.52Mbit/s)
+2015-04-01T03:08:24+02:00 - 151.216.180.69 - Served ex2200_secure.template to client
+2015-04-01T03:08:30+02:00 - 151.216.180.70 - Served ex2200_secure.template to client
+2015-04-01T03:08:30+02:00 - 151.216.180.71 - Served ex2200_secure.template to client
+2015-04-01T03:08:30+02:00 - 151.216.180.11 - Served ex2200_secure.template to client
+2015-04-01T03:08:31+02:00 - 151.216.180.12 - Served ex2200_secure.template to client
+2015-04-01T03:08:31+02:00 - 151.216.180.2 - Served ex2200_secure.template to client
+2015-04-01T03:08:31+02:00 - 151.216.180.72 - Served ex2200_secure.template to client
+2015-04-01T03:08:33+02:00 - 151.216.180.13 - Served ex2200_secure.template to client
+2015-04-01T03:08:33+02:00 - 151.216.180.14 - Served ex2200_secure.template to client
+2015-04-01T03:09:13+02:00 - 151.216.180.73 - Served ex2200_secure.template to client
+2015-04-01T03:09:15+02:00 - 151.216.180.15 - Served ex2200_secure.template to client
+2015-04-01T03:09:15+02:00 - 151.216.180.74 - Served ex2200_secure.template to client
+2015-04-01T03:09:16+02:00 - 151.216.180.16 - Served ex2200_secure.template to client
+2015-04-01T03:09:16+02:00 - 151.216.180.76 - Served ex2200_secure.template to client
+2015-04-01T03:09:16+02:00 - 151.216.180.75 - Served ex2200_secure.template to client
+2015-04-01T03:09:18+02:00 - 151.216.180.130 - Served ex2200_secure.template to client
+2015-04-01T03:09:18+02:00 - 151.216.180.77 - Served ex2200_secure.template to client
+2015-04-01T03:09:18+02:00 - 151.216.180.131 - Served ex2200_secure.template to client
+2015-04-01T03:09:59+02:00 - 151.216.180.78 - Served ex2200_secure.template to client
+2015-04-01T03:10:00+02:00 - 151.216.180.132 - Served ex2200_secure.template to client
+2015-04-01T03:10:00+02:00 - 151.216.180.133 - Served ex2200_secure.template to client
+2015-04-01T03:10:01+02:00 - 151.216.180.79 - Served ex2200_secure.template to client
+2015-04-01T03:10:02+02:00 - 151.216.180.80 - Served ex2200_secure.template to client
+2015-04-01T03:10:03+02:00 - 151.216.180.134 - Served ex2200_secure.template to client
+2015-04-01T03:10:03+02:00 - 151.216.180.135 - Served ex2200_secure.template to client
+2015-04-01T03:10:03+02:00 - 151.216.180.81 - Served ex2200_secure.template to client
+2015-04-01T03:10:05+02:00 - 151.216.180.82 - Served ex2200_secure.template to client
+2015-04-01T03:10:36+02:00 - 151.216.180.136 - Served ex2200_secure.template to client
+2015-04-01T03:10:40+02:00 - 151.216.180.137 - Served ex2200_secure.template to client
+2015-04-01T03:10:44+02:00 - 151.216.180.83 - Served ex2200_secure.template to client
+2015-04-01T03:10:44+02:00 - 151.216.180.84 - Served ex2200_secure.template to client
+2015-04-01T03:10:45+02:00 - 151.216.180.139 - Served ex2200_secure.template to client
+2015-04-01T03:10:45+02:00 - 151.216.180.138 - Served ex2200_secure.template to client
+2015-04-01T03:10:46+02:00 - 151.216.180.85 - Served ex2200_secure.template to client
+2015-04-01T03:10:47+02:00 - 151.216.180.86 - Served ex2200_secure.template to client
+2015-04-01T03:10:49+02:00 - 151.216.180.140 - Served ex2200_secure.template to client
+2015-04-01T03:10:50+02:00 - 151.216.180.194 - Served ex2200_secure.template to client
+2015-04-01T03:10:51+02:00 - 151.216.180.141 - Served ex2200_secure.template to client
+2015-04-01T03:10:51+02:00 - 151.216.180.195 - Served ex2200_secure.template to client
+2015-04-01T03:10:52+02:00 - 151.216.180.196 - Served ex2200_secure.template to client
+2015-04-01T03:10:54+02:00 - 151.216.180.197 - Served ex2200_secure.template to client
+2015-04-01T03:10:57+02:00 - 151.216.180.3 - Served ex2200_secure.template to client
+2015-04-01T03:11:23+02:00 - 151.216.180.198 - Served ex2200_secure.template to client
+2015-04-01T03:11:25+02:00 - 151.216.180.199 - Served ex2200_secure.template to client
+2015-04-01T03:11:30+02:00 - 151.216.180.4 - Served ex2200_secure.template to client
+2015-04-01T03:11:30+02:00 - 151.216.180.200 - Served ex2200_secure.template to client
+2015-04-01T03:11:31+02:00 - 151.216.180.201 - Served ex2200_secure.template to client
+2015-04-01T03:11:31+02:00 - 151.216.180.202 - Served ex2200_secure.template to client
+2015-04-01T03:11:32+02:00 - 151.216.180.203 - Served ex2200_secure.template to client
+2015-04-01T03:11:32+02:00 - 151.216.180.204 - Served ex2200_secure.template to client
+2015-04-01T03:11:33+02:00 - 151.216.180.205 - Served ex2200_secure.template to client
+2015-04-01T03:11:34+02:00 - 151.216.180.207 - Served ex2200_secure.template to client
+2015-04-01T03:11:34+02:00 - 151.216.180.206 - Served ex2200_secure.template to client
+2015-04-01T03:11:37+02:00 - 151.216.180.208 - Served ex2200_secure.template to client
+2015-04-01T03:11:37+02:00 - 151.216.180.209 - Served ex2200_secure.template to client
+2015-04-01T03:11:39+02:00 - 151.216.181.2 - Served ex2200_secure.template to client
+2015-04-01T03:11:41+02:00 - 151.216.181.3 - Served ex2200_secure.template to client
+2015-04-01T03:12:08+02:00 - 151.216.181.66 - Served ex2200_secure.template to client
+2015-04-01T03:12:11+02:00 - 151.216.181.67 - Served ex2200_secure.template to client
+2015-04-01T03:12:16+02:00 - 151.216.181.4 - Served ex2200_secure.template to client
+2015-04-01T03:12:18+02:00 - 151.216.181.5 - Served ex2200_secure.template to client
+2015-04-01T03:12:19+02:00 - 151.216.181.69 - Served ex2200_secure.template to client
+2015-04-01T03:12:19+02:00 - 151.216.181.68 - Served ex2200_secure.template to client
+2015-04-01T03:12:19+02:00 - 151.216.181.7 - Served ex2200_secure.template to client
+2015-04-01T03:12:20+02:00 - 151.216.181.6 - Served ex2200_secure.template to client
+2015-04-01T03:12:21+02:00 - 151.216.180.66 - Served ex2200_secure.template to client
+2015-04-01T03:12:21+02:00 - 151.216.181.71 - Served ex2200_secure.template to client
+2015-04-01T03:12:21+02:00 - 151.216.181.70 - Served ex2200_secure.template to client
+2015-04-01T03:12:24+02:00 - 151.216.180.5 - Served ex2200_secure.template to client
+2015-04-01T03:12:25+02:00 - 151.216.180.6 - Served ex2200_secure.template to client
+2015-04-01T03:12:26+02:00 - 151.216.180.67 - Served ex2200_secure.template to client
+2015-04-01T03:12:29+02:00 - 151.216.180.7 - Served ex2200_secure.template to client
+2015-04-01T03:12:53+02:00 - 151.216.180.8 - Served ex2200_secure.template to client
+2015-04-01T03:12:54+02:00 - 151.216.180.68 - Served ex2200_secure.template to client
+2015-04-01T03:13:02+02:00 - 151.216.180.9 - Served ex2200_secure.template to client
+2015-04-01T03:13:03+02:00 - 151.216.180.10 - Served ex2200_secure.template to client
+2015-04-01T03:44:54+02:00 - 151.216.181.19 - Served ex2200_secure.template to client
+2015-04-01T03:44:54+02:00 - 151.216.181.18 - Served ex2200_secure.template to client
+2015-04-01T03:44:55+02:00 - 151.216.181.82 - Served ex2200_secure.template to client
+2015-04-01T03:44:56+02:00 - 151.216.181.83 - Served ex2200_secure.template to client
+2015-04-01T03:44:57+02:00 - 151.216.181.194 - Served ex2200_secure.template to client
+2015-04-01T03:44:58+02:00 - 151.216.181.195 - Served ex2200_secure.template to client
+2015-04-01T03:44:59+02:00 - 151.216.181.196 - Served ex2200_secure.template to client
+2015-04-01T03:45:00+02:00 - 151.216.181.197 - Served ex2200_secure.template to client
+2015-04-01T03:45:00+02:00 - 151.216.181.132 - Served ex2200_secure.template to client
+2015-04-01T03:45:01+02:00 - 151.216.181.131 - Served ex2200_secure.template to client
+2015-04-01T03:45:01+02:00 - 151.216.181.133 - Served ex2200_secure.template to client
+2015-04-01T03:45:01+02:00 - 151.216.181.130 - Served ex2200_secure.template to client
+2015-04-01T03:45:01+02:00 - 151.216.181.199 - Served ex2200_secure.template to client
+2015-04-01T03:45:01+02:00 - 151.216.181.198 - Served ex2200_secure.template to client
+2015-04-01T03:45:02+02:00 - 151.216.181.135 - Served ex2200_secure.template to client
+2015-04-01T03:45:02+02:00 - 151.216.181.134 - Served ex2200_secure.template to client
+2015-04-01T03:45:38+02:00 - 151.216.181.200 - Served ex2200_secure.template to client
+2015-04-01T03:45:39+02:00 - 151.216.181.201 - Served ex2200_secure.template to client
+2015-04-01T03:45:40+02:00 - 151.216.181.136 - Served ex2200_secure.template to client
+2015-04-01T03:45:41+02:00 - 151.216.181.137 - Served ex2200_secure.template to client
+2015-04-01T03:45:42+02:00 - 151.216.181.202 - Served ex2200_secure.template to client
+2015-04-01T03:45:43+02:00 - 151.216.181.203 - Served ex2200_secure.template to client
+2015-04-01T03:45:44+02:00 - 151.216.181.138 - Served ex2200_secure.template to client
+2015-04-01T03:45:45+02:00 - 151.216.181.204 - Served ex2200_secure.template to client
+2015-04-01T03:45:45+02:00 - 151.216.181.139 - Served ex2200_secure.template to client
+2015-04-01T03:45:45+02:00 - 151.216.181.205 - Served ex2200_secure.template to client
+2015-04-01T03:45:46+02:00 - 151.216.181.206 - Served ex2200_secure.template to client
+2015-04-01T03:45:46+02:00 - 151.216.181.141 - Served ex2200_secure.template to client
+2015-04-01T03:45:48+02:00 - 151.216.181.143 - Served ex2200_secure.template to client
+2015-04-01T03:45:49+02:00 - 151.216.181.140 - Served ex2200_secure.template to client
+2015-04-01T03:45:49+02:00 - 151.216.181.207 - Served ex2200_secure.template to client
+2015-04-01T03:45:50+02:00 - 151.216.181.142 - Served ex2200_secure.template to client
+2015-04-01T03:46:24+02:00 - 151.216.181.208 - Served ex2200_secure.template to client
+2015-04-01T03:46:26+02:00 - 151.216.181.209 - Served ex2200_secure.template to client
+2015-04-01T03:46:27+02:00 - 151.216.181.144 - Served ex2200_secure.template to client
+2015-04-01T03:46:28+02:00 - 151.216.181.145 - Served ex2200_secure.template to client
+2015-04-01T03:46:29+02:00 - 151.216.181.211 - Served ex2200_secure.template to client
+2015-04-01T03:46:29+02:00 - 151.216.181.210 - Served ex2200_secure.template to client
+2015-04-01T03:46:30+02:00 - 151.216.181.146 - Served ex2200_secure.template to client
+2015-04-01T03:46:30+02:00 - 151.216.181.147 - Served ex2200_secure.template to client
+2015-04-01T03:46:30+02:00 - 151.216.181.212 - Served ex2200_secure.template to client
+2015-04-01T03:46:31+02:00 - 151.216.181.213 - Served ex2200_secure.template to client
+2015-04-01T03:46:32+02:00 - 151.216.181.214 - Served ex2200_secure.template to client
+2015-04-01T03:46:32+02:00 - 151.216.181.215 - Served ex2200_secure.template to client
+2015-04-01T03:48:21+02:00 - 151.216.180.137 - Served ex2200_secure.template to client
+2015-04-01T03:52:38+02:00 - 151.216.180.8 - Served ex2200_secure.template to client
+2015-04-01T03:53:13+02:00 - 151.216.181.8 - Served ex2200_secure.template to client
+2015-04-01T03:53:13+02:00 - 151.216.181.9 - Served ex2200_secure.template to client
+2015-04-01T03:53:13+02:00 - 151.216.181.73 - Served ex2200_secure.template to client
+2015-04-01T03:53:14+02:00 - 151.216.181.10 - Served ex2200_secure.template to client
+2015-04-01T03:53:14+02:00 - 151.216.181.72 - Served ex2200_secure.template to client
+2015-04-01T03:53:14+02:00 - 151.216.181.11 - Served ex2200_secure.template to client
+2015-04-01T03:53:17+02:00 - 151.216.181.12 - Served ex2200_secure.template to client
+2015-04-01T03:53:18+02:00 - 151.216.181.74 - Served ex2200_secure.template to client
+2015-04-01T03:53:18+02:00 - 151.216.181.13 - Served ex2200_secure.template to client
+2015-04-01T03:53:18+02:00 - 151.216.181.75 - Served ex2200_secure.template to client
+2015-04-01T03:53:19+02:00 - 151.216.181.14 - Served ex2200_secure.template to client
+2015-04-01T03:53:20+02:00 - 151.216.181.79 - Served ex2200_secure.template to client
+2015-04-01T03:53:20+02:00 - 151.216.181.78 - Served ex2200_secure.template to client
+2015-04-01T03:53:22+02:00 - 151.216.181.76 - Served ex2200_secure.template to client
+2015-04-01T03:53:22+02:00 - 151.216.181.77 - Served ex2200_secure.template to client
+2015-04-01T03:53:23+02:00 - 151.216.181.15 - Served ex2200_secure.template to client
+2015-04-01T03:53:57+02:00 - 151.216.181.17 - Served ex2200_secure.template to client
+2015-04-01T03:53:57+02:00 - 151.216.181.16 - Served ex2200_secure.template to client
+2015-04-01T03:53:59+02:00 - 151.216.181.80 - Served ex2200_secure.template to client
+2015-04-01T03:54:01+02:00 - 151.216.181.81 - Served ex2200_secure.template to client
+2015-04-01T03:56:05+02:00 - 151.216.180.70 - Served ex2200_secure.template to client
+2015-04-01T04:27:22+02:00 - 151.216.254.200 - Hostname not found in DB
+2015-04-01T04:27:26+02:00 - 151.216.181.149 - Served ex2200_secure.template to client
+2015-04-01T04:27:27+02:00 - 151.216.181.148 - Served ex2200_secure.template to client
+2015-04-01T04:27:28+02:00 - 151.216.181.150 - Served ex2200_secure.template to client
+2015-04-01T04:27:31+02:00 - 151.216.181.151 - Served ex2200_secure.template to client
+2015-04-01T04:27:32+02:00 - 151.216.181.152 - Served ex2200_secure.template to client
+2015-04-01T04:27:32+02:00 - 151.216.181.153 - Served ex2200_secure.template to client
+2015-04-01T04:27:32+02:00 - 151.216.181.154 - Served ex2200_secure.template to client
+2015-04-01T04:27:34+02:00 - 151.216.181.155 - Served ex2200_secure.template to client
+2015-04-01T04:27:40+02:00 - 151.216.254.200 - Hostname not found in DB
+2015-04-01T04:27:48+02:00 - 151.216.254.200 - Served ex2200_secure.template to client
+2015-04-01T04:27:53+02:00 - 151.216.254.200 - Served ex2200_secure.template to client
+2015-04-01T04:27:56+02:00 - 151.216.254.200 - Served ex2200_secure.template to client
+2015-04-01T04:28:09+02:00 - 151.216.254.200 - Served ex2200_secure.template to client
+2015-04-01T04:28:13+02:00 - 150.70.97.121 - Hostname not found in DB
+2015-04-01T04:28:18+02:00 - 150.70.97.97 - Hostname not found in DB
+2015-04-01T04:29:08+02:00 - 150.70.97.114 - Served ex2200_secure.template to client
+2015-04-01T04:29:09+02:00 - 150.70.97.126 - Served ex2200_secure.template to client
+2015-04-01T04:29:31+02:00 - 150.70.173.47 - Served ex2200_secure.template to client
+2015-04-01T04:33:34+02:00 - 151.216.181.137 - Served ex2200_secure.template to client
+2015-04-01T04:40:24+02:00 - 151.216.181.136 - Served ex2200_secure.template to client
+2015-04-01T05:53:42+02:00 - 151.216.254.32 - Transferred "rs1.crew.conf" in 0sec (497.33Mbit/s)
+2015-04-01T05:54:24+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-04-01T05:54:34+02:00 - 151.216.254.32 - Transferred "rs1.crew.conf" in 0sec (563.5Mbit/s)
+2015-04-01T05:55:21+02:00 - 151.216.254.241 - Transferred "rs1.crew.conf" in 0sec (493.59Mbit/s)
+2015-04-01T05:56:18+02:00 - 151.216.128.27 - Transferred "rs1.crew.conf" in 0sec (534.81Mbit/s)
+2015-04-01T06:02:23+02:00 - 151.216.128.27 - Transferred "rs1.crew.conf" in 0sec (530.49Mbit/s)
+2015-04-01T06:42:02+02:00 - 151.216.254.241 - Transferred "rs1.crew.conf" in 0sec (426.29Mbit/s)
+2015-04-01T07:12:49+02:00 - 213.188.19.15 - Served ex2200.template to client
+2015-04-01T07:14:47+02:00 - 151.216.183.229 - Served ex2200_secure.template to client
+2015-04-01T07:31:09+02:00 - 151.216.183.66 - Served ex2200.template to client
+2015-04-01T07:49:17+02:00 - 151.216.183.67 - Served ex2200.template to client
+2015-04-01T07:51:49+02:00 - 151.216.183.67 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 151.28sec (5.6Mbit/s)
+2015-04-01T07:51:55+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-04-01T08:26:56+02:00 - 151.216.254.32 - Served ex2200_secure.template to client
+2015-04-01T08:32:16+02:00 - 151.216.254.32 - Served ex2200_secure.template to client
+2015-04-01T08:32:28+02:00 - 151.216.254.32 - Served ex2200.template to client
+2015-04-01T08:34:46+02:00 - 151.216.254.23 - Served ex2200_secure.template to client
+2015-04-01T08:37:39+02:00 - 151.216.213.24 - Served ex2200_secure.template to client
+2015-04-01T08:50:37+02:00 - 151.216.254.241 - Served ex2200_secure.template to client
+2015-04-01T08:51:46+02:00 - 151.216.254.241 - Served ex2200_secure.template to client
+2015-04-01T08:51:53+02:00 - 151.216.254.241 - Served ex2200_secure.template to client
+2015-04-01T09:10:35+02:00 - 151.216.254.241 - Served ex2200_secure.template to client
+2015-04-01T09:11:30+02:00 - 151.216.254.23 - Served ex2200_secure.template to client
+2015-04-01T09:11:55+02:00 - 151.216.254.23 - Served ex2200_secure.template to client
+2015-04-01T09:12:59+02:00 - 151.216.213.24 - Served ex2200_secure.template to client
+2015-04-01T09:13:10+02:00 - 151.216.213.24 - Served ex2200_secure.template to client
+2015-04-01T09:19:46+02:00 - 151.216.213.24 - Served ex2200_secure.template to client
+2015-04-01T10:03:23+02:00 - 151.216.183.68 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 158.86sec (5.33Mbit/s)
+2015-04-01T10:59:24+02:00 - 151.216.254.248 - Served ex2200_secure.template to client
+2015-04-01T13:31:06+02:00 - 151.216.254.200 - Served ex2200.template to client
+2015-04-01T13:31:13+02:00 - 151.216.254.200 - Hostname not found in DB
+2015-04-01T13:31:27+02:00 - 151.216.254.200 - Served ex2200.template to client
+2015-04-01T13:32:02+02:00 - 151.216.254.200 - Served ex2200.template to client
+2015-04-01T13:32:14+02:00 - 150.70.97.97 - Served ex2200.template to client
+2015-04-01T13:32:24+02:00 - 150.70.173.55 - Hostname not found in DB
+2015-04-01T13:32:35+02:00 - 150.70.173.57 - Served ex2200.template to client
+2015-04-01T13:33:17+02:00 - 150.70.97.96 - Served ex2200.template to client
+2015-04-02T01:46:16+02:00 - 151.216.224.60 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 144.58sec (5.85Mbit/s)
+2015-04-02T01:58:22+02:00 - 151.216.224.61 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 144.82sec (5.84Mbit/s)
+2015-04-02T02:34:33+02:00 - 151.216.224.61 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 144.21sec (5.87Mbit/s)
+2015-04-02T03:13:49+02:00 - 151.216.224.67 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 143.22sec (5.91Mbit/s)
+2015-04-03T06:46:01+02:00 - 151.216.183.7 - Transferred "jinstall-ex-2200-14.1X53-D15.2-domestic-signed.tgz" in 206.37sec (4.1Mbit/s)
diff --git a/fap/proof_of_concepts/distro_during_testing.config b/fap/proof_of_concepts/distro_during_testing.config
new file mode 100755
index 0000000..1b92507
--- /dev/null
+++ b/fap/proof_of_concepts/distro_during_testing.config
@@ -0,0 +1,355 @@
+root@distro0gw> show configuration
+## Last commit: 2013-05-03 23:06:23 UTC by root
+version 12.1R6.6;
+system {
+ host-name distro0gw;
+ root-authentication {
+ encrypted-password "$1$SPgmZ0Nq$u2R7lVJJAv1I3paV1Go0z0"; ## SECRET-DATA
+ }
+ login {
+ user tg15 {
+ uid 2003;
+ class super-user;
+ authentication {
+ encrypted-password "$1$Mhjp603p$t6F4RTyx8igBGDZ6zj7A3/"; ## SECRET-DATA
+ }
+ }
+ }
+ syslog {
+ user * {
+ any emergency;
+ }
+ file messages {
+ any notice;
+ authorization info;
+ }
+ file interactive-commands {
+ interactive-commands any;
+ }
+ }
+}
+chassis {
+ aggregated-devices {
+ ethernet {
+ device-count 10;
+ }
+ }
+}
+interfaces {
+ ge-0/0/0 {
+ description "ae0/access mgmt";
+ inactive: ether-options {
+ 802.3ad ae0;
+ }
+ unit 0 {
+ family ethernet-switching {
+ port-mode access;
+ vlan {
+ members mgmt;
+ }
+ }
+ }
+ }
+ ge-0/0/1 {
+ description ae0;
+ ether-options {
+ 802.3ad ae0;
+ }
+ }
+ ge-0/0/2 {
+ description ae0;
+ ether-options {
+ 802.3ad ae0;
+ }
+ }
+ ge-0/0/3 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/4 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/5 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/6 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/7 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/8 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/9 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/10 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/11 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/12 {
+ description "RPI dhcp-client test";
+ unit 0 {
+ family ethernet-switching {
+ port-mode access;
+ vlan {
+ members mgmt;
+ }
+ }
+ }
+ }
+ ge-0/0/13 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/14 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/15 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/16 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/17 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/18 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/19 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/20 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/21 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/22 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/0/23 {
+ unit 0 {
+ description "Til laptopen";
+ family inet {
+ address 10.0.100.1/24;
+ }
+ }
+ }
+ ge-0/1/0 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ xe-0/1/0 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/1/1 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ xe-0/1/1 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/1/2 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ xe-0/1/2 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ge-0/1/3 {
+ unit 0 {
+ family ethernet-switching;
+ }
+ }
+ ae0 {
+ description "Aggregation til EX2200";
+ aggregated-ether-options {
+ minimum-links 2;
+ lacp {
+ active;
+ }
+ }
+ unit 0 {
+ family ethernet-switching {
+ port-mode trunk;
+ vlan {
+ members [ deltagere mgmt ];
+ }
+ }
+ }
+ }
+ me0 {
+ unit 0 {
+ family inet;
+ }
+ }
+ vlan {
+ unit 200 {
+ description "Deltagere L3 interface";
+ }
+ unit 300 {
+ description "Management L3 interface";
+ family inet {
+ address 10.0.200.1/24;
+ }
+ }
+ }
+}
+forwarding-options {
+ helpers {
+ bootp {
+ interface {
+ vlan.200 {
+ description "Deltagere DHCP-server";
+ server 1.2.3.4;
+ }
+ vlan.300 {
+ description "MGMT + bootstrap";
+ server 10.0.100.2;
+ dhcp-option82 {
+ circuit-id {
+ prefix hostname;
+ use-interface-description;
+ }
+ }
+ }
+ }
+ }
+ }
+}
+event-options {
+ policy ae0down {
+ events snmp_trap_link_down;
+ attributes-match {
+ snmp_trap_link_down.interface-name matches ae0;
+ }
+ then {
+ change-configuration {
+ retry count 5 interval 10;
+ commands {
+ "deactivate interface ge-0/0/0 ether-options";
+ "activate interface ge-0/0/0 unit 0";
+ }
+ user-name tg15;
+ commit-options {
+ log "deactivating 802.3 from ge-0/0/0 (ae0). Activating access port";
+ }
+ }
+ }
+ }
+ policy ae0up {
+ events snmp_trap_link_up;
+ attributes-match {
+ snmp_trap_link_up.interface-name matches ae0;
+ }
+ then {
+ change-configuration {
+ retry count 5 interval 10;
+ commands {
+ "deactivate interface ge-0/0/0 unit 0";
+ "activate interface ge-0/0/0 ether-options";
+ }
+ user-name tg15;
+ commit-options {
+ log "activating 802.3 at ge-0/0/0 (ae0). Deactivating access port";
+ }
+ }
+ }
+ }
+}
+protocols {
+ igmp-snooping {
+ vlan all;
+ }
+ rstp;
+ lldp {
+ interface all;
+ }
+ lldp-med {
+ interface all;
+ }
+}
+ethernet-switching-options {
+ analyzer dump {
+ input {
+ ingress {
+ interface ge-0/0/23.0;
+ }
+ egress {
+ interface ge-0/0/23.0;
+ }
+ }
+ output {
+ interface {
+ ge-0/0/22.0;
+ }
+ }
+ }
+ storm-control {
+ interface all;
+ }
+}
+vlans {
+ deltagere {
+ vlan-id 200;
+ l3-interface vlan.200;
+ }
+ mgmt {
+ vlan-id 300;
+ l3-interface vlan.300;
+ }
+}
+poe {
+ interface all;
+}
+
diff --git a/fap/proof_of_concepts/tg15-tech82-poc1.tar.gz b/fap/proof_of_concepts/tg15-tech82-poc1.tar.gz
new file mode 100755
index 0000000..2844b59
--- /dev/null
+++ b/fap/proof_of_concepts/tg15-tech82-poc1.tar.gz
Binary files differ
diff --git a/fap/tools_temp/get_info.php b/fap/tools_temp/get_info.php
new file mode 100644
index 0000000..84da5cf
--- /dev/null
+++ b/fap/tools_temp/get_info.php
@@ -0,0 +1,48 @@
+<?php
+ $community = '<sensored>';
+
+ /*
+ Loopbacks: 151.216.255.0/24
+ */
+ $ips = array();
+ foreach(range(1, 254) as $n){
+ $ips[] = '151.216.255.' . $n;
+ }
+
+ /*
+ mgmt nets
+ */
+ foreach(range(180, 184) as $range){
+ foreach(range(2, 254) as $n){ # skips .1, which is the distro
+ $ips[] = '151.216.' . $range . '.' . $n;
+ }
+ }
+
+ $n = 1;
+ foreach($ips as $ip){
+ $hostname = @snmpget($ip, $community, '.1.3.6.1.2.1.1.5.0', 50000);
+ if($hostname) {
+ $sysdescr = snmpget($ip, $community, '.1.3.6.1.2.1.1.1.0', 50000);
+ if(substr($sysdescr, 0, 30) === 'STRING: Juniper Networks, Inc.'){
+ $model = explode(' ', substr($sysdescr, 30))[1];
+ }else{
+ $model = 'unknown_model';
+ }
+
+ # Sample string: STRING: Juniper Networks, Inc. ex3300-48p Ethernet Switch, kernel JUNOS 14.1X53-D15.2, Build date: 2014-12-21 02:50:15 UTC Copyright (c) 1996-2014 Juniper Networks, Inc.
+ preg_match('/[0-9]{2}\.[0-9]{1}X[0-9]{2}-[A-Z]{1}[0-9]{2}\.[0-9]{1}/', $sysdescr, $regex_matches);
+
+ if(isset($regex_matches[0])){
+ $version = $regex_matches[0];
+ }else{
+ $version = 'unknown_firmware';
+ }
+
+
+ # 14.1X53-D15.2
+
+ echo substr($hostname, 8) . ' ' . $ip . ' ' . $model . ' ' . $version;
+ echo "\n";
+ }
+ }
+?>