diff options
708 files changed, 24001 insertions, 1 deletions
@@ -1,2 +1,29 @@ -tgmanage +tgmanage -- tools and hacks by Tech:Server ======== + +## planning.txt? patchlist.txt? netlist.txt? bootstrap? SETUP?! + +See tools/README… + +## dlink-ng usage + +> Update A/AAAA/PTR for dlink switches +dlink-ng/make-dlink-config.pl switches.txt patchlist.txt | tools/dlink-ng2dns.pl | head -n 30 + +> Delete records for creative1 in DNS +dlink-ng/make-dlink-config.pl switches.txt patchlist.txt | grep '^creative1 ' | tools/dlink-ng2dns.pl -d + +> Configure both dlink and cisco side +dlink-ng/make-dlink-config.pl switches.txt patchlist.txt | grep 'creative[12]' | perl dlink-ng/dlink-ng.pl + +> Configuring dlink switches for a single dlink switch +dlink-ng/make-dlink-config.pl switches.txt patchlist.txt | grep 'creative[1-8+] ' | dlink-ng/dlink-ng.pl -s creative3 + +> Configuring dlink switches from cisco side only +dlink-ng/make-dlink-config.pl switches.txt patchlist.txt | grep creative | perl dlink-ng/dlink-ng.pl -c + +> Configures all switches with lots of threads love <3 +dlink-ng/dlink-ng.pl switches.txt patchlist.txt + +> DNS for all switches pewpew +dlink-ng/dlink-ng.pl switches.txt patchlist.txt | tools/dlink-ng2dns.pl
\ No newline at end of file diff --git a/bind/README b/bind/README new file mode 100644 index 0000000..53299b8 --- /dev/null +++ b/bind/README @@ -0,0 +1,5 @@ +== BIND + +This directory is a copy of our install, please do not use these directly! +It is provided to show you what the scripts are generating for you… + diff --git a/bind/master/2.0.d.e.2.0.a.2.ip6.arpa.zone b/bind/master/2.0.d.e.2.0.a.2.ip6.arpa.zone new file mode 100644 index 0000000..9560c4b --- /dev/null +++ b/bind/master/2.0.d.e.2.0.a.2.ip6.arpa.zone @@ -0,0 +1,36 @@ +$ORIGIN . +$TTL 3600 ; 1 hour +2.0.d.e.2.0.a.2.ip6.arpa IN SOA ns1.tg13.gathering.org. abuse.gathering.org. ( + 2013736881 ; serial + 3600 ; refresh (1 hour) + 1800 ; retry (30 minutes) + 608400 ; expire (1 week 1 hour) + 3600 ; minimum (1 hour) + ) + NS ns1.tg13.gathering.org. + NS ns2.tg13.gathering.org. +$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.f.f.f.2.0.d.e.2.0.a.2.ip6.arpa. +$TTL 3600 ; 1 hour +1 PTR telegw.infra.tg13.gathering.org. +2 PTR nocgw.infra.tg13.gathering.org. +3 PTR camgw.infra.tg13.gathering.org. +4 PTR stageboh.infra.tg13.gathering.org. +5 PTR wtfgw.infra.tg13.gathering.org. +6 PTR logistikkgw.infra.tg13.gathering.org. +7 PTR corengw.infra.tg13.gathering.org. +8 PTR coresgw.infra.tg13.gathering.org. +9 PTR crewgw.infra.tg13.gathering.org. +$ORIGIN 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.f.f.f.2.0.d.e.2.0.a.2.ip6.arpa. +0 PTR tvgw.infra.tg13.gathering.org. +1 PTR gamegw.infra.tg13.gathering.org. +2 PTR resepsjongw.infra.tg13.gathering.org. +3 PTR pressegw.infra.tg13.gathering.org. +4 PTR sponsorgw.infra.tg13.gathering.org. +5 PTR komplettgw.infra.tg13.gathering.org. +6 PTR eldregw.infra.tg13.gathering.org. +7 PTR distro0.infra.tg13.gathering.org. +8 PTR distro1.infra.tg13.gathering.org. +9 PTR distro2.infra.tg13.gathering.org. +$ORIGIN 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.f.f.f.2.0.d.e.2.0.a.2.ip6.arpa. +0 PTR distro3.infra.tg13.gathering.org. +1 PTR distro4.infra.tg13.gathering.org. diff --git a/bind/master/55.169.31.in-addr.arpa.zone b/bind/master/55.169.31.in-addr.arpa.zone new file mode 100644 index 0000000..29dfe30 --- /dev/null +++ b/bind/master/55.169.31.in-addr.arpa.zone @@ -0,0 +1,267 @@ +$TTL 3600 +@ IN SOA ns1.tg13.gathering.org. abuse.gathering.org. ( + 2013032802 ; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS ns1.tg13.gathering.org. + IN NS ns2.tg13.gathering.org. + +$ORIGIN 55.169.31.in-addr.arpa. + +1 IN PTR 31-169-55-1.tg13.kandu.no. +2 IN PTR 31-169-55-2.tg13.kandu.no. +3 IN PTR 31-169-55-3.tg13.kandu.no. +4 IN PTR 31-169-55-4.tg13.kandu.no. +5 IN PTR 31-169-55-5.tg13.kandu.no. +6 IN PTR 31-169-55-6.tg13.kandu.no. +7 IN PTR 31-169-55-7.tg13.kandu.no. +8 IN PTR 31-169-55-8.tg13.kandu.no. +9 IN PTR 31-169-55-9.tg13.kandu.no. +10 IN PTR 31-169-55-10.tg13.kandu.no. +11 IN PTR 31-169-55-11.tg13.kandu.no. +12 IN PTR 31-169-55-12.tg13.kandu.no. +13 IN PTR 31-169-55-13.tg13.kandu.no. +14 IN PTR 31-169-55-14.tg13.kandu.no. +15 IN PTR 31-169-55-15.tg13.kandu.no. +16 IN PTR 31-169-55-16.tg13.kandu.no. +17 IN PTR 31-169-55-17.tg13.kandu.no. +18 IN PTR 31-169-55-18.tg13.kandu.no. +19 IN PTR 31-169-55-19.tg13.kandu.no. +20 IN PTR 31-169-55-20.tg13.kandu.no. +21 IN PTR 31-169-55-21.tg13.kandu.no. +22 IN PTR 31-169-55-22.tg13.kandu.no. +23 IN PTR 31-169-55-23.tg13.kandu.no. +24 IN PTR 31-169-55-24.tg13.kandu.no. +25 IN PTR 31-169-55-25.tg13.kandu.no. +26 IN PTR 31-169-55-26.tg13.kandu.no. +27 IN PTR 31-169-55-27.tg13.kandu.no. +28 IN PTR 31-169-55-28.tg13.kandu.no. +29 IN PTR 31-169-55-29.tg13.kandu.no. +30 IN PTR 31-169-55-30.tg13.kandu.no. +31 IN PTR 31-169-55-31.tg13.kandu.no. +32 IN PTR 31-169-55-32.tg13.kandu.no. +33 IN PTR 31-169-55-33.tg13.kandu.no. +34 IN PTR 31-169-55-34.tg13.kandu.no. +35 IN PTR 31-169-55-35.tg13.kandu.no. +36 IN PTR 31-169-55-36.tg13.kandu.no. +37 IN PTR 31-169-55-37.tg13.kandu.no. +38 IN PTR 31-169-55-38.tg13.kandu.no. +39 IN PTR 31-169-55-39.tg13.kandu.no. +40 IN PTR 31-169-55-40.tg13.kandu.no. +41 IN PTR 31-169-55-41.tg13.kandu.no. +42 IN PTR 31-169-55-42.tg13.kandu.no. +43 IN PTR 31-169-55-43.tg13.kandu.no. +44 IN PTR 31-169-55-44.tg13.kandu.no. +45 IN PTR 31-169-55-45.tg13.kandu.no. +46 IN PTR 31-169-55-46.tg13.kandu.no. +47 IN PTR 31-169-55-47.tg13.kandu.no. +48 IN PTR 31-169-55-48.tg13.kandu.no. +49 IN PTR 31-169-55-49.tg13.kandu.no. +50 IN PTR 31-169-55-50.tg13.kandu.no. +51 IN PTR 31-169-55-51.tg13.kandu.no. +52 IN PTR 31-169-55-52.tg13.kandu.no. +53 IN PTR 31-169-55-53.tg13.kandu.no. +54 IN PTR 31-169-55-54.tg13.kandu.no. +55 IN PTR 31-169-55-55.tg13.kandu.no. +56 IN PTR 31-169-55-56.tg13.kandu.no. +57 IN PTR 31-169-55-57.tg13.kandu.no. +58 IN PTR 31-169-55-58.tg13.kandu.no. +59 IN PTR 31-169-55-59.tg13.kandu.no. +60 IN PTR 31-169-55-60.tg13.kandu.no. +61 IN PTR 31-169-55-61.tg13.kandu.no. +62 IN PTR 31-169-55-62.tg13.kandu.no. +63 IN PTR 31-169-55-63.tg13.kandu.no. +64 IN PTR 31-169-55-64.tg13.kandu.no. +65 IN PTR 31-169-55-65.tg13.kandu.no. +66 IN PTR 31-169-55-66.tg13.kandu.no. +67 IN PTR 31-169-55-67.tg13.kandu.no. +68 IN PTR 31-169-55-68.tg13.kandu.no. +69 IN PTR 31-169-55-69.tg13.kandu.no. +70 IN PTR 31-169-55-70.tg13.kandu.no. +71 IN PTR 31-169-55-71.tg13.kandu.no. +72 IN PTR 31-169-55-72.tg13.kandu.no. +73 IN PTR 31-169-55-73.tg13.kandu.no. +74 IN PTR 31-169-55-74.tg13.kandu.no. +75 IN PTR 31-169-55-75.tg13.kandu.no. +76 IN PTR 31-169-55-76.tg13.kandu.no. +77 IN PTR 31-169-55-77.tg13.kandu.no. +78 IN PTR 31-169-55-78.tg13.kandu.no. +79 IN PTR 31-169-55-79.tg13.kandu.no. +80 IN PTR 31-169-55-80.tg13.kandu.no. +81 IN PTR 31-169-55-81.tg13.kandu.no. +82 IN PTR 31-169-55-82.tg13.kandu.no. +83 IN PTR 31-169-55-83.tg13.kandu.no. +84 IN PTR 31-169-55-84.tg13.kandu.no. +85 IN PTR 31-169-55-85.tg13.kandu.no. +86 IN PTR 31-169-55-86.tg13.kandu.no. +87 IN PTR 31-169-55-87.tg13.kandu.no. +88 IN PTR 31-169-55-88.tg13.kandu.no. +89 IN PTR 31-169-55-89.tg13.kandu.no. +90 IN PTR 31-169-55-90.tg13.kandu.no. +91 IN PTR 31-169-55-91.tg13.kandu.no. +92 IN PTR 31-169-55-92.tg13.kandu.no. +93 IN PTR 31-169-55-93.tg13.kandu.no. +94 IN PTR 31-169-55-94.tg13.kandu.no. +95 IN PTR 31-169-55-95.tg13.kandu.no. +96 IN PTR 31-169-55-96.tg13.kandu.no. +97 IN PTR 31-169-55-97.tg13.kandu.no. +98 IN PTR 31-169-55-98.tg13.kandu.no. +99 IN PTR 31-169-55-99.tg13.kandu.no. +100 IN PTR 31-169-55-100.tg13.kandu.no. +101 IN PTR 31-169-55-101.tg13.kandu.no. +102 IN PTR 31-169-55-102.tg13.kandu.no. +103 IN PTR 31-169-55-103.tg13.kandu.no. +104 IN PTR 31-169-55-104.tg13.kandu.no. +105 IN PTR 31-169-55-105.tg13.kandu.no. +106 IN PTR 31-169-55-106.tg13.kandu.no. +107 IN PTR 31-169-55-107.tg13.kandu.no. +108 IN PTR 31-169-55-108.tg13.kandu.no. +109 IN PTR 31-169-55-109.tg13.kandu.no. +110 IN PTR 31-169-55-110.tg13.kandu.no. +111 IN PTR 31-169-55-111.tg13.kandu.no. +112 IN PTR 31-169-55-112.tg13.kandu.no. +113 IN PTR 31-169-55-113.tg13.kandu.no. +114 IN PTR 31-169-55-114.tg13.kandu.no. +115 IN PTR 31-169-55-115.tg13.kandu.no. +116 IN PTR 31-169-55-116.tg13.kandu.no. +117 IN PTR 31-169-55-117.tg13.kandu.no. +118 IN PTR 31-169-55-118.tg13.kandu.no. +119 IN PTR 31-169-55-119.tg13.kandu.no. +120 IN PTR 31-169-55-120.tg13.kandu.no. +121 IN PTR 31-169-55-121.tg13.kandu.no. +122 IN PTR 31-169-55-122.tg13.kandu.no. +123 IN PTR 31-169-55-123.tg13.kandu.no. +124 IN PTR 31-169-55-124.tg13.kandu.no. +125 IN PTR 31-169-55-125.tg13.kandu.no. +126 IN PTR 31-169-55-126.tg13.kandu.no. +127 IN PTR 31-169-55-127.tg13.kandu.no. +128 IN PTR 31-169-55-128.tg13.kandu.no. +129 IN PTR 31-169-55-129.tg13.kandu.no. +130 IN PTR 31-169-55-130.tg13.kandu.no. +131 IN PTR 31-169-55-131.tg13.kandu.no. +132 IN PTR 31-169-55-132.tg13.kandu.no. +133 IN PTR 31-169-55-133.tg13.kandu.no. +134 IN PTR 31-169-55-134.tg13.kandu.no. +135 IN PTR 31-169-55-135.tg13.kandu.no. +136 IN PTR 31-169-55-136.tg13.kandu.no. +137 IN PTR 31-169-55-137.tg13.kandu.no. +138 IN PTR 31-169-55-138.tg13.kandu.no. +139 IN PTR 31-169-55-139.tg13.kandu.no. +140 IN PTR 31-169-55-140.tg13.kandu.no. +141 IN PTR 31-169-55-141.tg13.kandu.no. +142 IN PTR 31-169-55-142.tg13.kandu.no. +143 IN PTR 31-169-55-143.tg13.kandu.no. +144 IN PTR 31-169-55-144.tg13.kandu.no. +145 IN PTR 31-169-55-145.tg13.kandu.no. +146 IN PTR 31-169-55-146.tg13.kandu.no. +147 IN PTR 31-169-55-147.tg13.kandu.no. +148 IN PTR 31-169-55-148.tg13.kandu.no. +149 IN PTR 31-169-55-149.tg13.kandu.no. +150 IN PTR 31-169-55-150.tg13.kandu.no. +151 IN PTR 31-169-55-151.tg13.kandu.no. +152 IN PTR 31-169-55-152.tg13.kandu.no. +153 IN PTR 31-169-55-153.tg13.kandu.no. +154 IN PTR 31-169-55-154.tg13.kandu.no. +155 IN PTR 31-169-55-155.tg13.kandu.no. +156 IN PTR 31-169-55-156.tg13.kandu.no. +157 IN PTR 31-169-55-157.tg13.kandu.no. +158 IN PTR 31-169-55-158.tg13.kandu.no. +159 IN PTR 31-169-55-159.tg13.kandu.no. +160 IN PTR 31-169-55-160.tg13.kandu.no. +161 IN PTR 31-169-55-161.tg13.kandu.no. +162 IN PTR 31-169-55-162.tg13.kandu.no. +163 IN PTR 31-169-55-163.tg13.kandu.no. +164 IN PTR 31-169-55-164.tg13.kandu.no. +165 IN PTR 31-169-55-165.tg13.kandu.no. +166 IN PTR 31-169-55-166.tg13.kandu.no. +167 IN PTR 31-169-55-167.tg13.kandu.no. +168 IN PTR 31-169-55-168.tg13.kandu.no. +169 IN PTR 31-169-55-169.tg13.kandu.no. +170 IN PTR 31-169-55-170.tg13.kandu.no. +171 IN PTR 31-169-55-171.tg13.kandu.no. +172 IN PTR 31-169-55-172.tg13.kandu.no. +173 IN PTR 31-169-55-173.tg13.kandu.no. +174 IN PTR 31-169-55-174.tg13.kandu.no. +175 IN PTR 31-169-55-175.tg13.kandu.no. +176 IN PTR 31-169-55-176.tg13.kandu.no. +177 IN PTR 31-169-55-177.tg13.kandu.no. +178 IN PTR 31-169-55-178.tg13.kandu.no. +179 IN PTR 31-169-55-179.tg13.kandu.no. +180 IN PTR 31-169-55-180.tg13.kandu.no. +181 IN PTR 31-169-55-181.tg13.kandu.no. +182 IN PTR 31-169-55-182.tg13.kandu.no. +183 IN PTR 31-169-55-183.tg13.kandu.no. +184 IN PTR 31-169-55-184.tg13.kandu.no. +185 IN PTR 31-169-55-185.tg13.kandu.no. +186 IN PTR 31-169-55-186.tg13.kandu.no. +187 IN PTR 31-169-55-187.tg13.kandu.no. +188 IN PTR 31-169-55-188.tg13.kandu.no. +189 IN PTR 31-169-55-189.tg13.kandu.no. +190 IN PTR 31-169-55-190.tg13.kandu.no. +191 IN PTR 31-169-55-191.tg13.kandu.no. +192 IN PTR 31-169-55-192.tg13.kandu.no. +193 IN PTR 31-169-55-193.tg13.kandu.no. +194 IN PTR 31-169-55-194.tg13.kandu.no. +195 IN PTR 31-169-55-195.tg13.kandu.no. +196 IN PTR 31-169-55-196.tg13.kandu.no. +197 IN PTR 31-169-55-197.tg13.kandu.no. +198 IN PTR 31-169-55-198.tg13.kandu.no. +199 IN PTR 31-169-55-199.tg13.kandu.no. +200 IN PTR 31-169-55-200.tg13.kandu.no. +201 IN PTR 31-169-55-201.tg13.kandu.no. +202 IN PTR 31-169-55-202.tg13.kandu.no. +203 IN PTR 31-169-55-203.tg13.kandu.no. +204 IN PTR 31-169-55-204.tg13.kandu.no. +205 IN PTR 31-169-55-205.tg13.kandu.no. +206 IN PTR 31-169-55-206.tg13.kandu.no. +207 IN PTR 31-169-55-207.tg13.kandu.no. +208 IN PTR 31-169-55-208.tg13.kandu.no. +209 IN PTR 31-169-55-209.tg13.kandu.no. +210 IN PTR 31-169-55-210.tg13.kandu.no. +211 IN PTR 31-169-55-211.tg13.kandu.no. +212 IN PTR 31-169-55-212.tg13.kandu.no. +213 IN PTR 31-169-55-213.tg13.kandu.no. +214 IN PTR 31-169-55-214.tg13.kandu.no. +215 IN PTR 31-169-55-215.tg13.kandu.no. +216 IN PTR 31-169-55-216.tg13.kandu.no. +217 IN PTR 31-169-55-217.tg13.kandu.no. +218 IN PTR 31-169-55-218.tg13.kandu.no. +219 IN PTR 31-169-55-219.tg13.kandu.no. +220 IN PTR 31-169-55-220.tg13.kandu.no. +221 IN PTR 31-169-55-221.tg13.kandu.no. +222 IN PTR 31-169-55-222.tg13.kandu.no. +223 IN PTR 31-169-55-223.tg13.kandu.no. +224 IN PTR 31-169-55-224.tg13.kandu.no. +225 IN PTR 31-169-55-225.tg13.kandu.no. +226 IN PTR 31-169-55-226.tg13.kandu.no. +227 IN PTR 31-169-55-227.tg13.kandu.no. +228 IN PTR 31-169-55-228.tg13.kandu.no. +229 IN PTR 31-169-55-229.tg13.kandu.no. +230 IN PTR 31-169-55-230.tg13.kandu.no. +231 IN PTR 31-169-55-231.tg13.kandu.no. +232 IN PTR 31-169-55-232.tg13.kandu.no. +233 IN PTR 31-169-55-233.tg13.kandu.no. +234 IN PTR 31-169-55-234.tg13.kandu.no. +235 IN PTR 31-169-55-235.tg13.kandu.no. +236 IN PTR 31-169-55-236.tg13.kandu.no. +237 IN PTR 31-169-55-237.tg13.kandu.no. +238 IN PTR 31-169-55-238.tg13.kandu.no. +239 IN PTR 31-169-55-239.tg13.kandu.no. +240 IN PTR 31-169-55-240.tg13.kandu.no. +241 IN PTR 31-169-55-241.tg13.kandu.no. +242 IN PTR 31-169-55-242.tg13.kandu.no. +243 IN PTR 31-169-55-243.tg13.kandu.no. +244 IN PTR 31-169-55-244.tg13.kandu.no. +245 IN PTR 31-169-55-245.tg13.kandu.no. +246 IN PTR 31-169-55-246.tg13.kandu.no. +247 IN PTR 31-169-55-247.tg13.kandu.no. +248 IN PTR 31-169-55-248.tg13.kandu.no. +249 IN PTR 31-169-55-249.tg13.kandu.no. +250 IN PTR 31-169-55-250.tg13.kandu.no. +251 IN PTR 31-169-55-251.tg13.kandu.no. +252 IN PTR 31-169-55-252.tg13.kandu.no. +253 IN PTR 31-169-55-253.tg13.kandu.no. +254 IN PTR 31-169-55-254.tg13.kandu.no. diff --git a/bind/master/bind.keys b/bind/master/bind.keys new file mode 100644 index 0000000..b003c53 --- /dev/null +++ b/bind/master/bind.keys @@ -0,0 +1,49 @@ +/* $Id: bind.keys,v 1.5.42.2 2011-01-04 19:14:48 each Exp $ */ +# The bind.keys file is used to override built-in DNSSEC trust anchors +# which are included as part of BIND 9. As of the current release (BIND +# 9.7), the only trust anchor it sets is the one for the ISC DNSSEC +# Lookaside Validation zone ("dlv.isc.org"). Trust anchors for any other +# zones MUST be configured elsewhere; if they are configured here, they +# will not be recognized or used by named. +# +# This file also contains a copy of the trust anchor for the DNS root zone +# ("."). However, named does not use it; it is provided here for +# informational purposes only. To switch on DNSSEC validation at the +# root, the root key below can be copied into named.conf. +# +# The built-in DLV trust anchor in this file is used directly by named. +# However, it is not activated unless specifically switched on. To use +# the DLV key, set "dnssec-lookaside auto;" in the named.conf options. +# Without this option being set, the key in this file is ignored. +# +# This file is NOT expected to be user-configured. +# +# These keys are current as of January 2011. If any key fails to +# initialize correctly, it may have expired. In that event you should +# replace this file with a current version. The latest version of +# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys. + +managed-keys { + # ISC DLV: See https://www.isc.org/solutions/dlv for details. + # NOTE: This key is activated by setting "dnssec-lookaside auto;" + # in named.conf. + dlv.isc.org. initial-key 257 3 5 "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 + brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ + 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 + ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk + Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM + QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt + TDN0YUuWrBNh"; + + # ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml + # for current trust anchor information. + # NOTE: This key is activated by setting "dnssec-validation auto;" + # in named.conf. + . initial-key 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF + FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX + bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD + X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz + W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS + Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq + QxA+Uk1ihz0="; +}; diff --git a/bind/master/conf-master/ap-dist0.conf b/bind/master/conf-master/ap-dist0.conf new file mode 100644 index 0000000..128e996 --- /dev/null +++ b/bind/master/conf-master/ap-dist0.conf @@ -0,0 +1,7 @@ +zone "ap-dist0.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-dist0.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/ap-dist1.conf b/bind/master/conf-master/ap-dist1.conf new file mode 100644 index 0000000..a1720ec --- /dev/null +++ b/bind/master/conf-master/ap-dist1.conf @@ -0,0 +1,7 @@ +zone "ap-dist1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-dist1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/ap-dist2.conf b/bind/master/conf-master/ap-dist2.conf new file mode 100644 index 0000000..1e5a8b7 --- /dev/null +++ b/bind/master/conf-master/ap-dist2.conf @@ -0,0 +1,7 @@ +zone "ap-dist2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-dist2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/ap-dist3.conf b/bind/master/conf-master/ap-dist3.conf new file mode 100644 index 0000000..9aeb118 --- /dev/null +++ b/bind/master/conf-master/ap-dist3.conf @@ -0,0 +1,7 @@ +zone "ap-dist3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-dist3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/ap-dist4.conf b/bind/master/conf-master/ap-dist4.conf new file mode 100644 index 0000000..d9d1dd1 --- /dev/null +++ b/bind/master/conf-master/ap-dist4.conf @@ -0,0 +1,7 @@ +zone "ap-dist4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ap-dist4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/care.conf b/bind/master/conf-master/care.conf new file mode 100644 index 0000000..0bad1bd --- /dev/null +++ b/bind/master/conf-master/care.conf @@ -0,0 +1,7 @@ +zone "care.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/care.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/chillout.conf b/bind/master/conf-master/chillout.conf new file mode 100644 index 0000000..0de90ca --- /dev/null +++ b/bind/master/conf-master/chillout.conf @@ -0,0 +1,7 @@ +zone "chillout.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/chillout.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/creativia.conf b/bind/master/conf-master/creativia.conf new file mode 100644 index 0000000..5237a84 --- /dev/null +++ b/bind/master/conf-master/creativia.conf @@ -0,0 +1,7 @@ +zone "creativia.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/creativia.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/crew1.conf b/bind/master/conf-master/crew1.conf new file mode 100644 index 0000000..e257add --- /dev/null +++ b/bind/master/conf-master/crew1.conf @@ -0,0 +1,7 @@ +zone "crew1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/crew1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/crew2.conf b/bind/master/conf-master/crew2.conf new file mode 100644 index 0000000..e4cb846 --- /dev/null +++ b/bind/master/conf-master/crew2.conf @@ -0,0 +1,7 @@ +zone "crew2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/crew2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/crew3.conf b/bind/master/conf-master/crew3.conf new file mode 100644 index 0000000..69df488 --- /dev/null +++ b/bind/master/conf-master/crew3.conf @@ -0,0 +1,7 @@ +zone "crew3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/crew3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/crew4.conf b/bind/master/conf-master/crew4.conf new file mode 100644 index 0000000..bc139e0 --- /dev/null +++ b/bind/master/conf-master/crew4.conf @@ -0,0 +1,7 @@ +zone "crew4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/crew4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/crew5.conf b/bind/master/conf-master/crew5.conf new file mode 100644 index 0000000..7a40125 --- /dev/null +++ b/bind/master/conf-master/crew5.conf @@ -0,0 +1,7 @@ +zone "crew5.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/crew5.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/crew6.conf b/bind/master/conf-master/crew6.conf new file mode 100644 index 0000000..dfb9ae1 --- /dev/null +++ b/bind/master/conf-master/crew6.conf @@ -0,0 +1,7 @@ +zone "crew6.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/crew6.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/defektraid.conf b/bind/master/conf-master/defektraid.conf new file mode 100644 index 0000000..df0c6f4 --- /dev/null +++ b/bind/master/conf-master/defektraid.conf @@ -0,0 +1,7 @@ +zone "defektraid.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/defektraid.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e1-3.conf b/bind/master/conf-master/e1-3.conf new file mode 100644 index 0000000..1ea1345 --- /dev/null +++ b/bind/master/conf-master/e1-3.conf @@ -0,0 +1,7 @@ +zone "e1-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e1-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e1-4.conf b/bind/master/conf-master/e1-4.conf new file mode 100644 index 0000000..3610d07 --- /dev/null +++ b/bind/master/conf-master/e1-4.conf @@ -0,0 +1,7 @@ +zone "e1-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e1-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e11-1.conf b/bind/master/conf-master/e11-1.conf new file mode 100644 index 0000000..6e0db55 --- /dev/null +++ b/bind/master/conf-master/e11-1.conf @@ -0,0 +1,7 @@ +zone "e11-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e11-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e11-2.conf b/bind/master/conf-master/e11-2.conf new file mode 100644 index 0000000..5e2f700 --- /dev/null +++ b/bind/master/conf-master/e11-2.conf @@ -0,0 +1,7 @@ +zone "e11-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e11-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e11-3.conf b/bind/master/conf-master/e11-3.conf new file mode 100644 index 0000000..944cc0f --- /dev/null +++ b/bind/master/conf-master/e11-3.conf @@ -0,0 +1,7 @@ +zone "e11-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e11-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e11-4.conf b/bind/master/conf-master/e11-4.conf new file mode 100644 index 0000000..957ace1 --- /dev/null +++ b/bind/master/conf-master/e11-4.conf @@ -0,0 +1,7 @@ +zone "e11-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e11-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e13-1.conf b/bind/master/conf-master/e13-1.conf new file mode 100644 index 0000000..e4058a3 --- /dev/null +++ b/bind/master/conf-master/e13-1.conf @@ -0,0 +1,7 @@ +zone "e13-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e13-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e13-2.conf b/bind/master/conf-master/e13-2.conf new file mode 100644 index 0000000..5f0fb11 --- /dev/null +++ b/bind/master/conf-master/e13-2.conf @@ -0,0 +1,7 @@ +zone "e13-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e13-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e13-3.conf b/bind/master/conf-master/e13-3.conf new file mode 100644 index 0000000..ead4ebb --- /dev/null +++ b/bind/master/conf-master/e13-3.conf @@ -0,0 +1,7 @@ +zone "e13-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e13-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e13-4.conf b/bind/master/conf-master/e13-4.conf new file mode 100644 index 0000000..3e11ce3 --- /dev/null +++ b/bind/master/conf-master/e13-4.conf @@ -0,0 +1,7 @@ +zone "e13-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e13-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e15-1.conf b/bind/master/conf-master/e15-1.conf new file mode 100644 index 0000000..a1b2682 --- /dev/null +++ b/bind/master/conf-master/e15-1.conf @@ -0,0 +1,7 @@ +zone "e15-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e15-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e15-2.conf b/bind/master/conf-master/e15-2.conf new file mode 100644 index 0000000..6bdfe02 --- /dev/null +++ b/bind/master/conf-master/e15-2.conf @@ -0,0 +1,7 @@ +zone "e15-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e15-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e15-3.conf b/bind/master/conf-master/e15-3.conf new file mode 100644 index 0000000..7cbd21b --- /dev/null +++ b/bind/master/conf-master/e15-3.conf @@ -0,0 +1,7 @@ +zone "e15-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e15-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e15-4.conf b/bind/master/conf-master/e15-4.conf new file mode 100644 index 0000000..2db4e99 --- /dev/null +++ b/bind/master/conf-master/e15-4.conf @@ -0,0 +1,7 @@ +zone "e15-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e15-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e17-1.conf b/bind/master/conf-master/e17-1.conf new file mode 100644 index 0000000..61a976d --- /dev/null +++ b/bind/master/conf-master/e17-1.conf @@ -0,0 +1,7 @@ +zone "e17-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e17-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e17-2.conf b/bind/master/conf-master/e17-2.conf new file mode 100644 index 0000000..68650e1 --- /dev/null +++ b/bind/master/conf-master/e17-2.conf @@ -0,0 +1,7 @@ +zone "e17-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e17-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e17-3.conf b/bind/master/conf-master/e17-3.conf new file mode 100644 index 0000000..bf8f7f8 --- /dev/null +++ b/bind/master/conf-master/e17-3.conf @@ -0,0 +1,7 @@ +zone "e17-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e17-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e17-4.conf b/bind/master/conf-master/e17-4.conf new file mode 100644 index 0000000..bfa94df --- /dev/null +++ b/bind/master/conf-master/e17-4.conf @@ -0,0 +1,7 @@ +zone "e17-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e17-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e19-1.conf b/bind/master/conf-master/e19-1.conf new file mode 100644 index 0000000..c0894c1 --- /dev/null +++ b/bind/master/conf-master/e19-1.conf @@ -0,0 +1,7 @@ +zone "e19-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e19-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e19-2.conf b/bind/master/conf-master/e19-2.conf new file mode 100644 index 0000000..f46509b --- /dev/null +++ b/bind/master/conf-master/e19-2.conf @@ -0,0 +1,7 @@ +zone "e19-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e19-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e19-3.conf b/bind/master/conf-master/e19-3.conf new file mode 100644 index 0000000..6232f26 --- /dev/null +++ b/bind/master/conf-master/e19-3.conf @@ -0,0 +1,7 @@ +zone "e19-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e19-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e19-4.conf b/bind/master/conf-master/e19-4.conf new file mode 100644 index 0000000..c8359ca --- /dev/null +++ b/bind/master/conf-master/e19-4.conf @@ -0,0 +1,7 @@ +zone "e19-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e19-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e21-1.conf b/bind/master/conf-master/e21-1.conf new file mode 100644 index 0000000..51a1162 --- /dev/null +++ b/bind/master/conf-master/e21-1.conf @@ -0,0 +1,7 @@ +zone "e21-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e21-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e21-2.conf b/bind/master/conf-master/e21-2.conf new file mode 100644 index 0000000..b5003be --- /dev/null +++ b/bind/master/conf-master/e21-2.conf @@ -0,0 +1,7 @@ +zone "e21-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e21-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e21-3.conf b/bind/master/conf-master/e21-3.conf new file mode 100644 index 0000000..4b31944 --- /dev/null +++ b/bind/master/conf-master/e21-3.conf @@ -0,0 +1,7 @@ +zone "e21-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e21-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e21-4.conf b/bind/master/conf-master/e21-4.conf new file mode 100644 index 0000000..e294e06 --- /dev/null +++ b/bind/master/conf-master/e21-4.conf @@ -0,0 +1,7 @@ +zone "e21-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e21-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e23-1.conf b/bind/master/conf-master/e23-1.conf new file mode 100644 index 0000000..f094709 --- /dev/null +++ b/bind/master/conf-master/e23-1.conf @@ -0,0 +1,7 @@ +zone "e23-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e23-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e23-2.conf b/bind/master/conf-master/e23-2.conf new file mode 100644 index 0000000..c19004f --- /dev/null +++ b/bind/master/conf-master/e23-2.conf @@ -0,0 +1,7 @@ +zone "e23-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e23-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e23-3.conf b/bind/master/conf-master/e23-3.conf new file mode 100644 index 0000000..7e8cc6f --- /dev/null +++ b/bind/master/conf-master/e23-3.conf @@ -0,0 +1,7 @@ +zone "e23-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e23-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e23-4.conf b/bind/master/conf-master/e23-4.conf new file mode 100644 index 0000000..17bc2fa --- /dev/null +++ b/bind/master/conf-master/e23-4.conf @@ -0,0 +1,7 @@ +zone "e23-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e23-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e25-1.conf b/bind/master/conf-master/e25-1.conf new file mode 100644 index 0000000..353a0bf --- /dev/null +++ b/bind/master/conf-master/e25-1.conf @@ -0,0 +1,7 @@ +zone "e25-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e25-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e25-2.conf b/bind/master/conf-master/e25-2.conf new file mode 100644 index 0000000..fe58cc1 --- /dev/null +++ b/bind/master/conf-master/e25-2.conf @@ -0,0 +1,7 @@ +zone "e25-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e25-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e25-3.conf b/bind/master/conf-master/e25-3.conf new file mode 100644 index 0000000..2e641ae --- /dev/null +++ b/bind/master/conf-master/e25-3.conf @@ -0,0 +1,7 @@ +zone "e25-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e25-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e25-4.conf b/bind/master/conf-master/e25-4.conf new file mode 100644 index 0000000..72343f2 --- /dev/null +++ b/bind/master/conf-master/e25-4.conf @@ -0,0 +1,7 @@ +zone "e25-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e25-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e27-1.conf b/bind/master/conf-master/e27-1.conf new file mode 100644 index 0000000..4bdae3c --- /dev/null +++ b/bind/master/conf-master/e27-1.conf @@ -0,0 +1,7 @@ +zone "e27-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e27-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e27-2.conf b/bind/master/conf-master/e27-2.conf new file mode 100644 index 0000000..b3cf265 --- /dev/null +++ b/bind/master/conf-master/e27-2.conf @@ -0,0 +1,7 @@ +zone "e27-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e27-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e29-1.conf b/bind/master/conf-master/e29-1.conf new file mode 100644 index 0000000..ff50105 --- /dev/null +++ b/bind/master/conf-master/e29-1.conf @@ -0,0 +1,7 @@ +zone "e29-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e29-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e29-2.conf b/bind/master/conf-master/e29-2.conf new file mode 100644 index 0000000..a0292bf --- /dev/null +++ b/bind/master/conf-master/e29-2.conf @@ -0,0 +1,7 @@ +zone "e29-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e29-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e3-3.conf b/bind/master/conf-master/e3-3.conf new file mode 100644 index 0000000..e03510a --- /dev/null +++ b/bind/master/conf-master/e3-3.conf @@ -0,0 +1,7 @@ +zone "e3-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e3-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e3-4.conf b/bind/master/conf-master/e3-4.conf new file mode 100644 index 0000000..b5d4104 --- /dev/null +++ b/bind/master/conf-master/e3-4.conf @@ -0,0 +1,7 @@ +zone "e3-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e3-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e31-1.conf b/bind/master/conf-master/e31-1.conf new file mode 100644 index 0000000..9c0e873 --- /dev/null +++ b/bind/master/conf-master/e31-1.conf @@ -0,0 +1,7 @@ +zone "e31-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e31-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e31-2.conf b/bind/master/conf-master/e31-2.conf new file mode 100644 index 0000000..8c32533 --- /dev/null +++ b/bind/master/conf-master/e31-2.conf @@ -0,0 +1,7 @@ +zone "e31-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e31-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e33-1.conf b/bind/master/conf-master/e33-1.conf new file mode 100644 index 0000000..29e56cf --- /dev/null +++ b/bind/master/conf-master/e33-1.conf @@ -0,0 +1,7 @@ +zone "e33-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e33-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e33-2.conf b/bind/master/conf-master/e33-2.conf new file mode 100644 index 0000000..55d1c18 --- /dev/null +++ b/bind/master/conf-master/e33-2.conf @@ -0,0 +1,7 @@ +zone "e33-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e33-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e35-1.conf b/bind/master/conf-master/e35-1.conf new file mode 100644 index 0000000..936f0a3 --- /dev/null +++ b/bind/master/conf-master/e35-1.conf @@ -0,0 +1,7 @@ +zone "e35-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e35-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e35-2.conf b/bind/master/conf-master/e35-2.conf new file mode 100644 index 0000000..779fae5 --- /dev/null +++ b/bind/master/conf-master/e35-2.conf @@ -0,0 +1,7 @@ +zone "e35-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e35-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e37-1.conf b/bind/master/conf-master/e37-1.conf new file mode 100644 index 0000000..5e1cd6f --- /dev/null +++ b/bind/master/conf-master/e37-1.conf @@ -0,0 +1,7 @@ +zone "e37-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e37-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e37-2.conf b/bind/master/conf-master/e37-2.conf new file mode 100644 index 0000000..264ee23 --- /dev/null +++ b/bind/master/conf-master/e37-2.conf @@ -0,0 +1,7 @@ +zone "e37-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e37-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e39-1.conf b/bind/master/conf-master/e39-1.conf new file mode 100644 index 0000000..dbcfe63 --- /dev/null +++ b/bind/master/conf-master/e39-1.conf @@ -0,0 +1,7 @@ +zone "e39-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e39-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e39-2.conf b/bind/master/conf-master/e39-2.conf new file mode 100644 index 0000000..fdb5813 --- /dev/null +++ b/bind/master/conf-master/e39-2.conf @@ -0,0 +1,7 @@ +zone "e39-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e39-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e41-1.conf b/bind/master/conf-master/e41-1.conf new file mode 100644 index 0000000..1b3ce67 --- /dev/null +++ b/bind/master/conf-master/e41-1.conf @@ -0,0 +1,7 @@ +zone "e41-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e41-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e41-2.conf b/bind/master/conf-master/e41-2.conf new file mode 100644 index 0000000..c93b026 --- /dev/null +++ b/bind/master/conf-master/e41-2.conf @@ -0,0 +1,7 @@ +zone "e41-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e41-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e43-1.conf b/bind/master/conf-master/e43-1.conf new file mode 100644 index 0000000..141eb36 --- /dev/null +++ b/bind/master/conf-master/e43-1.conf @@ -0,0 +1,7 @@ +zone "e43-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e43-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e43-2.conf b/bind/master/conf-master/e43-2.conf new file mode 100644 index 0000000..2183773 --- /dev/null +++ b/bind/master/conf-master/e43-2.conf @@ -0,0 +1,7 @@ +zone "e43-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e43-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e43-3.conf b/bind/master/conf-master/e43-3.conf new file mode 100644 index 0000000..cd2e58a --- /dev/null +++ b/bind/master/conf-master/e43-3.conf @@ -0,0 +1,7 @@ +zone "e43-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e43-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e43-4.conf b/bind/master/conf-master/e43-4.conf new file mode 100644 index 0000000..3fe8285 --- /dev/null +++ b/bind/master/conf-master/e43-4.conf @@ -0,0 +1,7 @@ +zone "e43-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e43-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e45-1.conf b/bind/master/conf-master/e45-1.conf new file mode 100644 index 0000000..4dfb780 --- /dev/null +++ b/bind/master/conf-master/e45-1.conf @@ -0,0 +1,7 @@ +zone "e45-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e45-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e45-2.conf b/bind/master/conf-master/e45-2.conf new file mode 100644 index 0000000..ef12a1d --- /dev/null +++ b/bind/master/conf-master/e45-2.conf @@ -0,0 +1,7 @@ +zone "e45-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e45-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e45-3.conf b/bind/master/conf-master/e45-3.conf new file mode 100644 index 0000000..6816564 --- /dev/null +++ b/bind/master/conf-master/e45-3.conf @@ -0,0 +1,7 @@ +zone "e45-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e45-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e45-4.conf b/bind/master/conf-master/e45-4.conf new file mode 100644 index 0000000..1c18dec --- /dev/null +++ b/bind/master/conf-master/e45-4.conf @@ -0,0 +1,7 @@ +zone "e45-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e45-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e47-1.conf b/bind/master/conf-master/e47-1.conf new file mode 100644 index 0000000..c78e9d2 --- /dev/null +++ b/bind/master/conf-master/e47-1.conf @@ -0,0 +1,7 @@ +zone "e47-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e47-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e47-2.conf b/bind/master/conf-master/e47-2.conf new file mode 100644 index 0000000..bedb28b --- /dev/null +++ b/bind/master/conf-master/e47-2.conf @@ -0,0 +1,7 @@ +zone "e47-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e47-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e47-3.conf b/bind/master/conf-master/e47-3.conf new file mode 100644 index 0000000..21058f9 --- /dev/null +++ b/bind/master/conf-master/e47-3.conf @@ -0,0 +1,7 @@ +zone "e47-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e47-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e47-4.conf b/bind/master/conf-master/e47-4.conf new file mode 100644 index 0000000..3ca2d0f --- /dev/null +++ b/bind/master/conf-master/e47-4.conf @@ -0,0 +1,7 @@ +zone "e47-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e47-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e49-1.conf b/bind/master/conf-master/e49-1.conf new file mode 100644 index 0000000..3ca0d10 --- /dev/null +++ b/bind/master/conf-master/e49-1.conf @@ -0,0 +1,7 @@ +zone "e49-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e49-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e49-2.conf b/bind/master/conf-master/e49-2.conf new file mode 100644 index 0000000..336be6a --- /dev/null +++ b/bind/master/conf-master/e49-2.conf @@ -0,0 +1,7 @@ +zone "e49-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e49-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e49-3.conf b/bind/master/conf-master/e49-3.conf new file mode 100644 index 0000000..cb6ef54 --- /dev/null +++ b/bind/master/conf-master/e49-3.conf @@ -0,0 +1,7 @@ +zone "e49-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e49-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e49-4.conf b/bind/master/conf-master/e49-4.conf new file mode 100644 index 0000000..b5383a3 --- /dev/null +++ b/bind/master/conf-master/e49-4.conf @@ -0,0 +1,7 @@ +zone "e49-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e49-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e5-3.conf b/bind/master/conf-master/e5-3.conf new file mode 100644 index 0000000..5874214 --- /dev/null +++ b/bind/master/conf-master/e5-3.conf @@ -0,0 +1,7 @@ +zone "e5-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e5-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e5-4.conf b/bind/master/conf-master/e5-4.conf new file mode 100644 index 0000000..98f7408 --- /dev/null +++ b/bind/master/conf-master/e5-4.conf @@ -0,0 +1,7 @@ +zone "e5-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e5-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e51-1.conf b/bind/master/conf-master/e51-1.conf new file mode 100644 index 0000000..9e9a961 --- /dev/null +++ b/bind/master/conf-master/e51-1.conf @@ -0,0 +1,7 @@ +zone "e51-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e51-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e51-2.conf b/bind/master/conf-master/e51-2.conf new file mode 100644 index 0000000..b0be1c1 --- /dev/null +++ b/bind/master/conf-master/e51-2.conf @@ -0,0 +1,7 @@ +zone "e51-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e51-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e51-3.conf b/bind/master/conf-master/e51-3.conf new file mode 100644 index 0000000..d657bf2 --- /dev/null +++ b/bind/master/conf-master/e51-3.conf @@ -0,0 +1,7 @@ +zone "e51-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e51-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e51-4.conf b/bind/master/conf-master/e51-4.conf new file mode 100644 index 0000000..40a4767 --- /dev/null +++ b/bind/master/conf-master/e51-4.conf @@ -0,0 +1,7 @@ +zone "e51-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e51-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e53-1.conf b/bind/master/conf-master/e53-1.conf new file mode 100644 index 0000000..ddcd705 --- /dev/null +++ b/bind/master/conf-master/e53-1.conf @@ -0,0 +1,7 @@ +zone "e53-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e53-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e53-2.conf b/bind/master/conf-master/e53-2.conf new file mode 100644 index 0000000..2144a5c --- /dev/null +++ b/bind/master/conf-master/e53-2.conf @@ -0,0 +1,7 @@ +zone "e53-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e53-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e53-3.conf b/bind/master/conf-master/e53-3.conf new file mode 100644 index 0000000..6f744f7 --- /dev/null +++ b/bind/master/conf-master/e53-3.conf @@ -0,0 +1,7 @@ +zone "e53-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e53-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e53-4.conf b/bind/master/conf-master/e53-4.conf new file mode 100644 index 0000000..a61c1b6 --- /dev/null +++ b/bind/master/conf-master/e53-4.conf @@ -0,0 +1,7 @@ +zone "e53-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e53-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e55-1.conf b/bind/master/conf-master/e55-1.conf new file mode 100644 index 0000000..82e2a30 --- /dev/null +++ b/bind/master/conf-master/e55-1.conf @@ -0,0 +1,7 @@ +zone "e55-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e55-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e55-2.conf b/bind/master/conf-master/e55-2.conf new file mode 100644 index 0000000..d204695 --- /dev/null +++ b/bind/master/conf-master/e55-2.conf @@ -0,0 +1,7 @@ +zone "e55-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e55-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e55-3.conf b/bind/master/conf-master/e55-3.conf new file mode 100644 index 0000000..fe2af74 --- /dev/null +++ b/bind/master/conf-master/e55-3.conf @@ -0,0 +1,7 @@ +zone "e55-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e55-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e55-4.conf b/bind/master/conf-master/e55-4.conf new file mode 100644 index 0000000..a539533 --- /dev/null +++ b/bind/master/conf-master/e55-4.conf @@ -0,0 +1,7 @@ +zone "e55-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e55-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e57-1.conf b/bind/master/conf-master/e57-1.conf new file mode 100644 index 0000000..5956229 --- /dev/null +++ b/bind/master/conf-master/e57-1.conf @@ -0,0 +1,7 @@ +zone "e57-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e57-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e57-2.conf b/bind/master/conf-master/e57-2.conf new file mode 100644 index 0000000..1df48ea --- /dev/null +++ b/bind/master/conf-master/e57-2.conf @@ -0,0 +1,7 @@ +zone "e57-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e57-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e57-3.conf b/bind/master/conf-master/e57-3.conf new file mode 100644 index 0000000..2ed2c9a --- /dev/null +++ b/bind/master/conf-master/e57-3.conf @@ -0,0 +1,7 @@ +zone "e57-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e57-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e57-4.conf b/bind/master/conf-master/e57-4.conf new file mode 100644 index 0000000..906441f --- /dev/null +++ b/bind/master/conf-master/e57-4.conf @@ -0,0 +1,7 @@ +zone "e57-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e57-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e59-1.conf b/bind/master/conf-master/e59-1.conf new file mode 100644 index 0000000..16bf93a --- /dev/null +++ b/bind/master/conf-master/e59-1.conf @@ -0,0 +1,7 @@ +zone "e59-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e59-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e59-2.conf b/bind/master/conf-master/e59-2.conf new file mode 100644 index 0000000..f9930b3 --- /dev/null +++ b/bind/master/conf-master/e59-2.conf @@ -0,0 +1,7 @@ +zone "e59-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e59-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e59-3.conf b/bind/master/conf-master/e59-3.conf new file mode 100644 index 0000000..ce3ac8f --- /dev/null +++ b/bind/master/conf-master/e59-3.conf @@ -0,0 +1,7 @@ +zone "e59-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e59-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e59-4.conf b/bind/master/conf-master/e59-4.conf new file mode 100644 index 0000000..0d69eea --- /dev/null +++ b/bind/master/conf-master/e59-4.conf @@ -0,0 +1,7 @@ +zone "e59-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e59-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e61-1.conf b/bind/master/conf-master/e61-1.conf new file mode 100644 index 0000000..26ff5fd --- /dev/null +++ b/bind/master/conf-master/e61-1.conf @@ -0,0 +1,7 @@ +zone "e61-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e61-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e61-2.conf b/bind/master/conf-master/e61-2.conf new file mode 100644 index 0000000..b08ebd3 --- /dev/null +++ b/bind/master/conf-master/e61-2.conf @@ -0,0 +1,7 @@ +zone "e61-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e61-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e61-3.conf b/bind/master/conf-master/e61-3.conf new file mode 100644 index 0000000..02ce5d4 --- /dev/null +++ b/bind/master/conf-master/e61-3.conf @@ -0,0 +1,7 @@ +zone "e61-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e61-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e61-4.conf b/bind/master/conf-master/e61-4.conf new file mode 100644 index 0000000..ed43653 --- /dev/null +++ b/bind/master/conf-master/e61-4.conf @@ -0,0 +1,7 @@ +zone "e61-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e61-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e63-1.conf b/bind/master/conf-master/e63-1.conf new file mode 100644 index 0000000..ae9e505 --- /dev/null +++ b/bind/master/conf-master/e63-1.conf @@ -0,0 +1,7 @@ +zone "e63-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e63-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e63-2.conf b/bind/master/conf-master/e63-2.conf new file mode 100644 index 0000000..10af791 --- /dev/null +++ b/bind/master/conf-master/e63-2.conf @@ -0,0 +1,7 @@ +zone "e63-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e63-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e63-3.conf b/bind/master/conf-master/e63-3.conf new file mode 100644 index 0000000..8b16f42 --- /dev/null +++ b/bind/master/conf-master/e63-3.conf @@ -0,0 +1,7 @@ +zone "e63-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e63-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e63-4.conf b/bind/master/conf-master/e63-4.conf new file mode 100644 index 0000000..108f15d --- /dev/null +++ b/bind/master/conf-master/e63-4.conf @@ -0,0 +1,7 @@ +zone "e63-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e63-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e65-1.conf b/bind/master/conf-master/e65-1.conf new file mode 100644 index 0000000..92a1a9a --- /dev/null +++ b/bind/master/conf-master/e65-1.conf @@ -0,0 +1,7 @@ +zone "e65-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e65-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e65-2.conf b/bind/master/conf-master/e65-2.conf new file mode 100644 index 0000000..80d6e43 --- /dev/null +++ b/bind/master/conf-master/e65-2.conf @@ -0,0 +1,7 @@ +zone "e65-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e65-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e65-3.conf b/bind/master/conf-master/e65-3.conf new file mode 100644 index 0000000..a74b2bb --- /dev/null +++ b/bind/master/conf-master/e65-3.conf @@ -0,0 +1,7 @@ +zone "e65-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e65-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e65-4.conf b/bind/master/conf-master/e65-4.conf new file mode 100644 index 0000000..bc161d5 --- /dev/null +++ b/bind/master/conf-master/e65-4.conf @@ -0,0 +1,7 @@ +zone "e65-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e65-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e67-1.conf b/bind/master/conf-master/e67-1.conf new file mode 100644 index 0000000..6aeac2d --- /dev/null +++ b/bind/master/conf-master/e67-1.conf @@ -0,0 +1,7 @@ +zone "e67-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e67-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e67-2.conf b/bind/master/conf-master/e67-2.conf new file mode 100644 index 0000000..083bf2e --- /dev/null +++ b/bind/master/conf-master/e67-2.conf @@ -0,0 +1,7 @@ +zone "e67-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e67-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e67-3.conf b/bind/master/conf-master/e67-3.conf new file mode 100644 index 0000000..47bb2b0 --- /dev/null +++ b/bind/master/conf-master/e67-3.conf @@ -0,0 +1,7 @@ +zone "e67-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e67-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e67-4.conf b/bind/master/conf-master/e67-4.conf new file mode 100644 index 0000000..60f71f9 --- /dev/null +++ b/bind/master/conf-master/e67-4.conf @@ -0,0 +1,7 @@ +zone "e67-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e67-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e69-1.conf b/bind/master/conf-master/e69-1.conf new file mode 100644 index 0000000..28bc567 --- /dev/null +++ b/bind/master/conf-master/e69-1.conf @@ -0,0 +1,7 @@ +zone "e69-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e69-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e69-2.conf b/bind/master/conf-master/e69-2.conf new file mode 100644 index 0000000..3ab4477 --- /dev/null +++ b/bind/master/conf-master/e69-2.conf @@ -0,0 +1,7 @@ +zone "e69-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e69-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e69-3.conf b/bind/master/conf-master/e69-3.conf new file mode 100644 index 0000000..c0c89c9 --- /dev/null +++ b/bind/master/conf-master/e69-3.conf @@ -0,0 +1,7 @@ +zone "e69-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e69-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e69-4.conf b/bind/master/conf-master/e69-4.conf new file mode 100644 index 0000000..c93777b --- /dev/null +++ b/bind/master/conf-master/e69-4.conf @@ -0,0 +1,7 @@ +zone "e69-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e69-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e7-3.conf b/bind/master/conf-master/e7-3.conf new file mode 100644 index 0000000..fe9d33b --- /dev/null +++ b/bind/master/conf-master/e7-3.conf @@ -0,0 +1,7 @@ +zone "e7-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e7-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e7-4.conf b/bind/master/conf-master/e7-4.conf new file mode 100644 index 0000000..a203c0a --- /dev/null +++ b/bind/master/conf-master/e7-4.conf @@ -0,0 +1,7 @@ +zone "e7-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e7-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e71-1.conf b/bind/master/conf-master/e71-1.conf new file mode 100644 index 0000000..4ac985a --- /dev/null +++ b/bind/master/conf-master/e71-1.conf @@ -0,0 +1,7 @@ +zone "e71-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e71-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e71-2.conf b/bind/master/conf-master/e71-2.conf new file mode 100644 index 0000000..2ecb0c4 --- /dev/null +++ b/bind/master/conf-master/e71-2.conf @@ -0,0 +1,7 @@ +zone "e71-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e71-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e71-3.conf b/bind/master/conf-master/e71-3.conf new file mode 100644 index 0000000..3dcebfb --- /dev/null +++ b/bind/master/conf-master/e71-3.conf @@ -0,0 +1,7 @@ +zone "e71-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e71-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e71-4.conf b/bind/master/conf-master/e71-4.conf new file mode 100644 index 0000000..4219538 --- /dev/null +++ b/bind/master/conf-master/e71-4.conf @@ -0,0 +1,7 @@ +zone "e71-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e71-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e73-1.conf b/bind/master/conf-master/e73-1.conf new file mode 100644 index 0000000..676106a --- /dev/null +++ b/bind/master/conf-master/e73-1.conf @@ -0,0 +1,7 @@ +zone "e73-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e73-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e73-2.conf b/bind/master/conf-master/e73-2.conf new file mode 100644 index 0000000..d86e6e9 --- /dev/null +++ b/bind/master/conf-master/e73-2.conf @@ -0,0 +1,7 @@ +zone "e73-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e73-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e73-3.conf b/bind/master/conf-master/e73-3.conf new file mode 100644 index 0000000..d99ff3b --- /dev/null +++ b/bind/master/conf-master/e73-3.conf @@ -0,0 +1,7 @@ +zone "e73-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e73-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e73-4.conf b/bind/master/conf-master/e73-4.conf new file mode 100644 index 0000000..ea9c11e --- /dev/null +++ b/bind/master/conf-master/e73-4.conf @@ -0,0 +1,7 @@ +zone "e73-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e73-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e75-1.conf b/bind/master/conf-master/e75-1.conf new file mode 100644 index 0000000..472d744 --- /dev/null +++ b/bind/master/conf-master/e75-1.conf @@ -0,0 +1,7 @@ +zone "e75-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e75-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e75-2.conf b/bind/master/conf-master/e75-2.conf new file mode 100644 index 0000000..a672748 --- /dev/null +++ b/bind/master/conf-master/e75-2.conf @@ -0,0 +1,7 @@ +zone "e75-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e75-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e75-3.conf b/bind/master/conf-master/e75-3.conf new file mode 100644 index 0000000..0d062f3 --- /dev/null +++ b/bind/master/conf-master/e75-3.conf @@ -0,0 +1,7 @@ +zone "e75-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e75-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e75-4.conf b/bind/master/conf-master/e75-4.conf new file mode 100644 index 0000000..62dfdfc --- /dev/null +++ b/bind/master/conf-master/e75-4.conf @@ -0,0 +1,7 @@ +zone "e75-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e75-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e77-1.conf b/bind/master/conf-master/e77-1.conf new file mode 100644 index 0000000..5e972e9 --- /dev/null +++ b/bind/master/conf-master/e77-1.conf @@ -0,0 +1,7 @@ +zone "e77-1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e77-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e77-2.conf b/bind/master/conf-master/e77-2.conf new file mode 100644 index 0000000..ffc03b2 --- /dev/null +++ b/bind/master/conf-master/e77-2.conf @@ -0,0 +1,7 @@ +zone "e77-2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e77-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e9-3.conf b/bind/master/conf-master/e9-3.conf new file mode 100644 index 0000000..6b871df --- /dev/null +++ b/bind/master/conf-master/e9-3.conf @@ -0,0 +1,7 @@ +zone "e9-3.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e9-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/e9-4.conf b/bind/master/conf-master/e9-4.conf new file mode 100644 index 0000000..b220f5f --- /dev/null +++ b/bind/master/conf-master/e9-4.conf @@ -0,0 +1,7 @@ +zone "e9-4.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/e9-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/fugleberg1.conf b/bind/master/conf-master/fugleberg1.conf new file mode 100644 index 0000000..d75c4e4 --- /dev/null +++ b/bind/master/conf-master/fugleberg1.conf @@ -0,0 +1,7 @@ +zone "fugleberg1.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/fugleberg1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/fugleberg2.conf b/bind/master/conf-master/fugleberg2.conf new file mode 100644 index 0000000..6b78cb8 --- /dev/null +++ b/bind/master/conf-master/fugleberg2.conf @@ -0,0 +1,7 @@ +zone "fugleberg2.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/fugleberg2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/game.conf b/bind/master/conf-master/game.conf new file mode 100644 index 0000000..7a90aad --- /dev/null +++ b/bind/master/conf-master/game.conf @@ -0,0 +1,7 @@ +zone "game.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/game.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/gamehq.conf b/bind/master/conf-master/gamehq.conf new file mode 100644 index 0000000..8072e98 --- /dev/null +++ b/bind/master/conf-master/gamehq.conf @@ -0,0 +1,7 @@ +zone "gamehq.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/gamehq.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/lager.conf b/bind/master/conf-master/lager.conf new file mode 100644 index 0000000..474f7e5 --- /dev/null +++ b/bind/master/conf-master/lager.conf @@ -0,0 +1,7 @@ +zone "lager.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/lager.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/logistikk.conf b/bind/master/conf-master/logistikk.conf new file mode 100644 index 0000000..7211a84 --- /dev/null +++ b/bind/master/conf-master/logistikk.conf @@ -0,0 +1,7 @@ +zone "logistikk.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/logistikk.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/marsrele.conf b/bind/master/conf-master/marsrele.conf new file mode 100644 index 0000000..aac0a42 --- /dev/null +++ b/bind/master/conf-master/marsrele.conf @@ -0,0 +1,7 @@ +zone "marsrele.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/marsrele.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/noc.conf b/bind/master/conf-master/noc.conf new file mode 100644 index 0000000..6d49ca3 --- /dev/null +++ b/bind/master/conf-master/noc.conf @@ -0,0 +1,7 @@ +zone "noc.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/noc.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/presse.conf b/bind/master/conf-master/presse.conf new file mode 100644 index 0000000..410d075 --- /dev/null +++ b/bind/master/conf-master/presse.conf @@ -0,0 +1,7 @@ +zone "presse.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/presse.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/secmedic.conf b/bind/master/conf-master/secmedic.conf new file mode 100644 index 0000000..11a1d56 --- /dev/null +++ b/bind/master/conf-master/secmedic.conf @@ -0,0 +1,7 @@ +zone "secmedic.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/secmedic.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/sponsorvest.conf b/bind/master/conf-master/sponsorvest.conf new file mode 100644 index 0000000..7b2262d --- /dev/null +++ b/bind/master/conf-master/sponsorvest.conf @@ -0,0 +1,7 @@ +zone "sponsorvest.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/sponsorvest.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/stage.conf b/bind/master/conf-master/stage.conf new file mode 100644 index 0000000..3bd5f84 --- /dev/null +++ b/bind/master/conf-master/stage.conf @@ -0,0 +1,7 @@ +zone "stage.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/stage.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/stageboh.conf b/bind/master/conf-master/stageboh.conf new file mode 100644 index 0000000..9f871a6 --- /dev/null +++ b/bind/master/conf-master/stageboh.conf @@ -0,0 +1,7 @@ +zone "stageboh.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/stageboh.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/tele.conf b/bind/master/conf-master/tele.conf new file mode 100644 index 0000000..479381e --- /dev/null +++ b/bind/master/conf-master/tele.conf @@ -0,0 +1,7 @@ +zone "tele.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/tele.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/wlan.conf b/bind/master/conf-master/wlan.conf new file mode 100644 index 0000000..4e138f8 --- /dev/null +++ b/bind/master/conf-master/wlan.conf @@ -0,0 +1,7 @@ +zone "wlan.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/wlan.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/conf-master/ymse.conf b/bind/master/conf-master/ymse.conf new file mode 100644 index 0000000..3ebb5e5 --- /dev/null +++ b/bind/master/conf-master/ymse.conf @@ -0,0 +1,7 @@ +zone "ymse.tg13.gathering.org" { + type master; + notify yes; + allow-update { key DHCP_UPDATER; }; + file "dynamic/ymse.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/master/db.0 b/bind/master/db.0 new file mode 100644 index 0000000..e3aabdb --- /dev/null +++ b/bind/master/db.0 @@ -0,0 +1,12 @@ +; +; BIND reverse data file for broadcast zone +; +$TTL 604800 +@ IN SOA localhost. root.localhost. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS localhost. diff --git a/bind/master/db.127 b/bind/master/db.127 new file mode 100644 index 0000000..cd05bef --- /dev/null +++ b/bind/master/db.127 @@ -0,0 +1,13 @@ +; +; BIND reverse data file for local loopback interface +; +$TTL 604800 +@ IN SOA localhost. root.localhost. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS localhost. +1.0.0 IN PTR localhost. diff --git a/bind/master/db.255 b/bind/master/db.255 new file mode 100644 index 0000000..e3aabdb --- /dev/null +++ b/bind/master/db.255 @@ -0,0 +1,12 @@ +; +; BIND reverse data file for broadcast zone +; +$TTL 604800 +@ IN SOA localhost. root.localhost. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS localhost. diff --git a/bind/master/db.empty b/bind/master/db.empty new file mode 100644 index 0000000..8a12858 --- /dev/null +++ b/bind/master/db.empty @@ -0,0 +1,14 @@ +; BIND reverse data file for empty rfc1918 zone +; +; DO NOT EDIT THIS FILE - it is used for multiple zones. +; Instead, copy it, edit named.conf, and use that copy. +; +$TTL 86400 +@ IN SOA localhost. root.localhost. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 86400 ) ; Negative Cache TTL +; +@ IN NS localhost. diff --git a/bind/master/db.local b/bind/master/db.local new file mode 100644 index 0000000..2f272d4 --- /dev/null +++ b/bind/master/db.local @@ -0,0 +1,14 @@ +; +; BIND data file for local loopback interface +; +$TTL 604800 +@ IN SOA localhost. root.localhost. ( + 2 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS localhost. +@ IN A 127.0.0.1 +@ IN AAAA ::1 diff --git a/bind/master/db.root b/bind/master/db.root new file mode 100644 index 0000000..6c19741 --- /dev/null +++ b/bind/master/db.root @@ -0,0 +1,88 @@ +; This file holds the information on root name servers needed to +; initialize cache of Internet domain name servers +; (e.g. reference this file in the "cache . <file>" +; configuration file of BIND domain name servers). +; +; This file is made available by InterNIC +; under anonymous FTP as +; file /domain/named.cache +; on server FTP.INTERNIC.NET +; -OR- RS.INTERNIC.NET +; +; last update: Jan 3, 2013 +; related version of root zone: 2013010300 +; +; formerly NS.INTERNIC.NET +; +. 3600000 IN NS A.ROOT-SERVERS.NET. +A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 +A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30 +; +; FORMERLY NS1.ISI.EDU +; +. 3600000 NS B.ROOT-SERVERS.NET. +B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 +; +; FORMERLY C.PSI.NET +; +. 3600000 NS C.ROOT-SERVERS.NET. +C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 +; +; FORMERLY TERP.UMD.EDU +; +. 3600000 NS D.ROOT-SERVERS.NET. +D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13 +D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2D::D +; +; FORMERLY NS.NASA.GOV +; +. 3600000 NS E.ROOT-SERVERS.NET. +E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 +; +; FORMERLY NS.ISC.ORG +; +. 3600000 NS F.ROOT-SERVERS.NET. +F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 +F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2F::F +; +; FORMERLY NS.NIC.DDN.MIL +; +. 3600000 NS G.ROOT-SERVERS.NET. +G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 +; +; FORMERLY AOS.ARL.ARMY.MIL +; +. 3600000 NS H.ROOT-SERVERS.NET. +H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 +H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803F:235 +; +; FORMERLY NIC.NORDU.NET +; +. 3600000 NS I.ROOT-SERVERS.NET. +I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 +I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FE::53 +; +; OPERATED BY VERISIGN, INC. +; +. 3600000 NS J.ROOT-SERVERS.NET. +J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 +J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30 +; +; OPERATED BY RIPE NCC +; +. 3600000 NS K.ROOT-SERVERS.NET. +K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 +K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FD::1 +; +; OPERATED BY ICANN +; +. 3600000 NS L.ROOT-SERVERS.NET. +L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 +L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42 +; +; OPERATED BY WIDE +; +. 3600000 NS M.ROOT-SERVERS.NET. +M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 +M.ROOT-SERVERS.NET. 3600000 AAAA 2001:DC3::35 +; End of File diff --git a/bind/master/infra.tg13.gathering.org.zone b/bind/master/infra.tg13.gathering.org.zone new file mode 100644 index 0000000..5aa1a88 --- /dev/null +++ b/bind/master/infra.tg13.gathering.org.zone @@ -0,0 +1,110 @@ +$TTL 3600 +@ IN SOA winix.tg13.gathering.org. abuse.gathering.org. ( + 2013033101; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS winix.tg13.gathering.org. + IN NS tress90.tg13.gathering.org. + +; Generated by make-all-config.sh on the bootstrapping/nms server. +; Will not be overwritten unless it is missing ;) + + +; infra-bokser +telegw IN A 151.216.127.1 +telegw IN AAAA 2a02:ed02:FFFF::1 +nocgw IN A 151.216.127.2 +nocgw IN AAAA 2a02:ed02:FFFF::2 +camgw IN A 151.216.127.3 +camgw IN AAAA 2a02:ed02:FFFF::3 +stageboh IN A 151.216.127.4 +stageboh IN AAAA 2a02:ed02:FFFF::4 +wtfgw IN A 151.216.127.5 +wtfgw IN AAAA 2a02:ed02:FFFF::5 +logistikkgw IN A 151.216.127.6 +logistikkgw IN AAAA 2a02:ed02:FFFF::6 +corengw IN A 151.216.127.7 +corengw IN AAAA 2a02:ed02:FFFF::7 +coresgw IN A 151.216.127.8 +coresgw IN AAAA 2a02:ed02:FFFF::8 +crewgw IN A 151.216.127.9 +crewgw IN AAAA 2a02:ed02:FFFF::9 +tvgw IN A 151.216.127.10 +tvgw IN AAAA 2a02:ed02:FFFF::10 +gamegw IN A 151.216.127.11 +gamegw IN AAAA 2a02:ed02:FFFF::11 +resepsjongw IN A 151.216.127.12 +resepsjongw IN AAAA 2a02:ed02:FFFF::12 +pressegw IN A 151.216.127.13 +pressegw IN AAAA 2a02:ed02:FFFF::13 +sponsorgw IN A 151.216.127.14 +sponsorgw IN AAAA 2a02:ed02:FFFF::14 +komplettgw IN A 151.216.127.15 +komplettgw IN AAAA 2a02:ed02:FFFF::15 +eldregw IN A 151.216.127.16 +eldregw IN AAAA 2a02:ed02:FFFF::16 +distro0 IN A 151.216.127.17 +distro0 IN AAAA 2a02:ed02:FFFF::17 +distro1 IN A 151.216.127.18 +distro1 IN AAAA 2a02:ed02:FFFF::18 +distro2 IN A 151.216.127.19 +distro2 IN AAAA 2a02:ed02:FFFF::19 +distro3 IN A 151.216.127.20 +distro3 IN AAAA 2a02:ed02:FFFF::20 +distro4 IN A 151.216.127.21 +distro4 IN AAAA 2a02:ed02:FFFF::21 +vss-core IN A 151.216.123.254 +vss-core IN AAAA 2A02:ED02:123::254 + +; linknett +telegw-po1 IN A 185.12.59.2 +telegw-po1 IN AAAA 2a02:ed01::2 +nocgw-po1 IN A 151.216.0.3 + +telegw-nocgw IN A 151.216.0.2 +nocgw-telegw IN A 151.216.0.3 +telegw-cam IN A 151.216.0.4 +cam-telegw IN A 151.216.0.5 +nocgw-coren IN A 151.216.0.6 +coren-nocgw IN A 151.216.0.7 +telegw-pressegw IN A 151.216.0.8 +pressegw-telegw IN A 151.216.0.9 +coren-gamegw IN A 151.216.0.10 +gamegw-coren IN A 151.216.0.11 +cores-crewgw IN A 151.216.0.12 +crewgw-cores IN A 151.216.0.13 +camgw-crewgw IN A 151.216.0.14 +crewgw-camgw IN A 151.216.0.15 +logistikkgw-wtfgw IN A 151.216.0.18 +wtfgw-logistikkgw IN A 151.216.0.19 +wtfgw-stagebohgw IN A 151.216.0.20 +stagebohgw-wtfgw IN A 151.216.0.21 +camgw-creachillgw IN A 151.216.0.22 +creachillgw-camgw IN A 151.216.0.23 +nocgw-coresgw IN A 151.216.0.24 +coresgw-nocgw IN A 151.216.0.25 +telegw-resepsjongw IN A 151.216.0.26 +resepsjongw-telegw IN A 151.216.0.27 +telegw-gamegw IN A 151.216.0.28 +gamegw-telegw IN A 151.216.0.29 +telegw-asr1k IN A 151.216.0.30 +asr1k-telegw IN A 151.216.0.31 +nocgw-sponsorgw IN A 151.216.0.32 +sponsorgw-nocgw IN A 151.216.0.33 +wtfgw-gamegw IN A 151.216.0.34 +gamegw-wtfgw IN A 151.216.0.35 +corengw-komplettgw IN A 151.216.0.36 +komplettgw-corengw IN A 151.216.0.37 +nocgw-itvmrr IN A 151.216.0.38 +itvmrr-nocgw IN A 151.216.0.39 +camgw-logistikkgw IN A 151.216.0.46 +logistikkgw-camgw IN A 151.216.0.47 +camgw-crewgw IN A 151.216.0.48 +crewgw-camgw IN A 151.216.0.49 +telegw-partygw IN A 151.216.0.54 +partygw-telegw IN A 151.216.0.55 +telegw-noshutnat IN A 151.216.0.56 +noshutnat-telegw IN A 151.216.0.57 diff --git a/bind/master/named.conf b/bind/master/named.conf new file mode 100644 index 0000000..54adfdf --- /dev/null +++ b/bind/master/named.conf @@ -0,0 +1,55 @@ +// This named.conf was generated by make-named.pl at 20130327-1708 +// The current version of make-named.pl should not overwrite this file. +acl tg-nett { 151.216.0.0/17; 2a02:ed02::/32; 127.0.0.0/8; ::1; 31.169.55.0/24; }; +acl ns-xfr { 194.19.3.20; 151.216.125.2; 2a02:ed02:125::2; 151.216.126.2; 2a02:ed02:126::2; 151.216.124.0/24; }; +acl ripe-xfr { 194.19.3.20; 151.216.125.2; 2a02:ed02:125::2; 151.216.126.2; 2a02:ed02:126::2; 193.0.0.0/22; }; + +options { + directory "/etc/bind"; + allow-recursion { tg-nett; }; + allow-query { any; }; + allow-transfer { ns-xfr; }; + recursion yes; + auth-nxdomain no; + listen-on-v6 { any; }; +}; + +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret <removed>; +}; + +zone "tg13.gathering.org" { + type master; + file "tg13.gathering.org.zone"; + notify yes; + allow-transfer { ns-xfr; }; +}; + +zone "infra.tg13.gathering.org" { + type master; + file "infra.tg13.gathering.org.zone"; + notify yes; + allow-transfer { ns-xfr; }; +}; + +zone "2.0.d.e.2.0.a.2.ip6.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "2.0.d.e.2.0.a.2.ip6.arpa.zone"; + allow-transfer { ns-xfr; ripe-xfr; }; +}; + +# ekstra /24-nett fra Blix +zone "55.169.31.in-addr.arpa" { + type master; + file "55.169.31.in-addr.arpa.zone"; + notify yes; + allow-transfer { ns-xfr; ripe-xfr; }; +}; + +include "/etc/bind/named.conf.default-zones"; +include "/etc/bind/steamorigin-zones"; +include "named.reverse4.conf"; +include "named.master-include.conf"; diff --git a/bind/master/named.conf.default-zones b/bind/master/named.conf.default-zones new file mode 100644 index 0000000..355338b --- /dev/null +++ b/bind/master/named.conf.default-zones @@ -0,0 +1,30 @@ +// prime the server with knowledge of the root servers +zone "." { + type hint; + file "/etc/bind/db.root"; +}; + +// be authoritative for the localhost forward and reverse zones, and for +// broadcast zones as per RFC 1912 + +zone "localhost" { + type master; + file "/etc/bind/db.local"; +}; + +zone "127.in-addr.arpa" { + type master; + file "/etc/bind/db.127"; +}; + +zone "0.in-addr.arpa" { + type master; + file "/etc/bind/db.0"; +}; + +zone "255.in-addr.arpa" { + type master; + file "/etc/bind/db.255"; +}; + + diff --git a/bind/master/named.conf.local b/bind/master/named.conf.local new file mode 100644 index 0000000..7a57b10 --- /dev/null +++ b/bind/master/named.conf.local @@ -0,0 +1,8 @@ +// +// Do any local configuration here +// + +// Consider adding the 1918 zones here, if they are not used in your +// organization +//include "/etc/bind/zones.rfc1918"; + diff --git a/bind/master/named.conf.options b/bind/master/named.conf.options new file mode 100644 index 0000000..170486b --- /dev/null +++ b/bind/master/named.conf.options @@ -0,0 +1,19 @@ +options { + directory "/var/cache/bind"; + + // If there is a firewall between you and nameservers you want + // to talk to, you may need to fix the firewall to allow multiple + // ports to talk. See http://www.kb.cert.org/vuls/id/800113 + + // If your ISP provided one or more IP addresses for stable + // nameservers, you probably want to use them as forwarders. + // Uncomment the following block, and insert the addresses replacing + // the all-0's placeholder. + + // forwarders { + // 0.0.0.0; + // }; + + auth-nxdomain no; # conform to RFC1035 + listen-on-v6 { any; }; +}; diff --git a/bind/master/named.master-include.conf b/bind/master/named.master-include.conf new file mode 100644 index 0000000..0f7f9e7 --- /dev/null +++ b/bind/master/named.master-include.conf @@ -0,0 +1,159 @@ +include "/etc/bind/conf-master/ap-dist0.conf"; +include "/etc/bind/conf-master/ap-dist1.conf"; +include "/etc/bind/conf-master/ap-dist2.conf"; +include "/etc/bind/conf-master/ap-dist3.conf"; +include "/etc/bind/conf-master/ap-dist4.conf"; +include "/etc/bind/conf-master/care.conf"; +include "/etc/bind/conf-master/chillout.conf"; +include "/etc/bind/conf-master/creativia.conf"; +include "/etc/bind/conf-master/crew1.conf"; +include "/etc/bind/conf-master/crew2.conf"; +include "/etc/bind/conf-master/crew3.conf"; +include "/etc/bind/conf-master/crew4.conf"; +include "/etc/bind/conf-master/crew5.conf"; +include "/etc/bind/conf-master/crew6.conf"; +include "/etc/bind/conf-master/defektraid.conf"; +include "/etc/bind/conf-master/e1-3.conf"; +include "/etc/bind/conf-master/e1-4.conf"; +include "/etc/bind/conf-master/e11-1.conf"; +include "/etc/bind/conf-master/e11-2.conf"; +include "/etc/bind/conf-master/e11-3.conf"; +include "/etc/bind/conf-master/e11-4.conf"; +include "/etc/bind/conf-master/e13-1.conf"; +include "/etc/bind/conf-master/e13-2.conf"; +include "/etc/bind/conf-master/e13-3.conf"; +include "/etc/bind/conf-master/e13-4.conf"; +include "/etc/bind/conf-master/e15-1.conf"; +include "/etc/bind/conf-master/e15-2.conf"; +include "/etc/bind/conf-master/e15-3.conf"; +include "/etc/bind/conf-master/e15-4.conf"; +include "/etc/bind/conf-master/e17-1.conf"; +include "/etc/bind/conf-master/e17-2.conf"; +include "/etc/bind/conf-master/e17-3.conf"; +include "/etc/bind/conf-master/e17-4.conf"; +include "/etc/bind/conf-master/e19-1.conf"; +include "/etc/bind/conf-master/e19-2.conf"; +include "/etc/bind/conf-master/e19-3.conf"; +include "/etc/bind/conf-master/e19-4.conf"; +include "/etc/bind/conf-master/e21-1.conf"; +include "/etc/bind/conf-master/e21-2.conf"; +include "/etc/bind/conf-master/e21-3.conf"; +include "/etc/bind/conf-master/e21-4.conf"; +include "/etc/bind/conf-master/e23-1.conf"; +include "/etc/bind/conf-master/e23-2.conf"; +include "/etc/bind/conf-master/e23-3.conf"; +include "/etc/bind/conf-master/e23-4.conf"; +include "/etc/bind/conf-master/e25-1.conf"; +include "/etc/bind/conf-master/e25-2.conf"; +include "/etc/bind/conf-master/e25-3.conf"; +include "/etc/bind/conf-master/e25-4.conf"; +include "/etc/bind/conf-master/e27-1.conf"; +include "/etc/bind/conf-master/e27-2.conf"; +include "/etc/bind/conf-master/e29-1.conf"; +include "/etc/bind/conf-master/e29-2.conf"; +include "/etc/bind/conf-master/e3-3.conf"; +include "/etc/bind/conf-master/e3-4.conf"; +include "/etc/bind/conf-master/e31-1.conf"; +include "/etc/bind/conf-master/e31-2.conf"; +include "/etc/bind/conf-master/e33-1.conf"; +include "/etc/bind/conf-master/e33-2.conf"; +include "/etc/bind/conf-master/e35-1.conf"; +include "/etc/bind/conf-master/e35-2.conf"; +include "/etc/bind/conf-master/e37-1.conf"; +include "/etc/bind/conf-master/e37-2.conf"; +include "/etc/bind/conf-master/e39-1.conf"; +include "/etc/bind/conf-master/e39-2.conf"; +include "/etc/bind/conf-master/e41-1.conf"; +include "/etc/bind/conf-master/e41-2.conf"; +include "/etc/bind/conf-master/e43-1.conf"; +include "/etc/bind/conf-master/e43-2.conf"; +include "/etc/bind/conf-master/e43-3.conf"; +include "/etc/bind/conf-master/e43-4.conf"; +include "/etc/bind/conf-master/e45-1.conf"; +include "/etc/bind/conf-master/e45-2.conf"; +include "/etc/bind/conf-master/e45-3.conf"; +include "/etc/bind/conf-master/e45-4.conf"; +include "/etc/bind/conf-master/e47-1.conf"; +include "/etc/bind/conf-master/e47-2.conf"; +include "/etc/bind/conf-master/e47-3.conf"; +include "/etc/bind/conf-master/e47-4.conf"; +include "/etc/bind/conf-master/e49-1.conf"; +include "/etc/bind/conf-master/e49-2.conf"; +include "/etc/bind/conf-master/e49-3.conf"; +include "/etc/bind/conf-master/e49-4.conf"; +include "/etc/bind/conf-master/e5-3.conf"; +include "/etc/bind/conf-master/e5-4.conf"; +include "/etc/bind/conf-master/e51-1.conf"; +include "/etc/bind/conf-master/e51-2.conf"; +include "/etc/bind/conf-master/e51-3.conf"; +include "/etc/bind/conf-master/e51-4.conf"; +include "/etc/bind/conf-master/e53-1.conf"; +include "/etc/bind/conf-master/e53-2.conf"; +include "/etc/bind/conf-master/e53-3.conf"; +include "/etc/bind/conf-master/e53-4.conf"; +include "/etc/bind/conf-master/e55-1.conf"; +include "/etc/bind/conf-master/e55-2.conf"; +include "/etc/bind/conf-master/e55-3.conf"; +include "/etc/bind/conf-master/e55-4.conf"; +include "/etc/bind/conf-master/e57-1.conf"; +include "/etc/bind/conf-master/e57-2.conf"; +include "/etc/bind/conf-master/e57-3.conf"; +include "/etc/bind/conf-master/e57-4.conf"; +include "/etc/bind/conf-master/e59-1.conf"; +include "/etc/bind/conf-master/e59-2.conf"; +include "/etc/bind/conf-master/e59-3.conf"; +include "/etc/bind/conf-master/e59-4.conf"; +include "/etc/bind/conf-master/e61-1.conf"; +include "/etc/bind/conf-master/e61-2.conf"; +include "/etc/bind/conf-master/e61-3.conf"; +include "/etc/bind/conf-master/e61-4.conf"; +include "/etc/bind/conf-master/e63-1.conf"; +include "/etc/bind/conf-master/e63-2.conf"; +include "/etc/bind/conf-master/e63-3.conf"; +include "/etc/bind/conf-master/e63-4.conf"; +include "/etc/bind/conf-master/e65-1.conf"; +include "/etc/bind/conf-master/e65-2.conf"; +include "/etc/bind/conf-master/e65-3.conf"; +include "/etc/bind/conf-master/e65-4.conf"; +include "/etc/bind/conf-master/e67-1.conf"; +include "/etc/bind/conf-master/e67-2.conf"; +include "/etc/bind/conf-master/e67-3.conf"; +include "/etc/bind/conf-master/e67-4.conf"; +include "/etc/bind/conf-master/e69-1.conf"; +include "/etc/bind/conf-master/e69-2.conf"; +include "/etc/bind/conf-master/e69-3.conf"; +include "/etc/bind/conf-master/e69-4.conf"; +include "/etc/bind/conf-master/e7-3.conf"; +include "/etc/bind/conf-master/e7-4.conf"; +include "/etc/bind/conf-master/e71-1.conf"; +include "/etc/bind/conf-master/e71-2.conf"; +include "/etc/bind/conf-master/e71-3.conf"; +include "/etc/bind/conf-master/e71-4.conf"; +include "/etc/bind/conf-master/e73-1.conf"; +include "/etc/bind/conf-master/e73-2.conf"; +include "/etc/bind/conf-master/e73-3.conf"; +include "/etc/bind/conf-master/e73-4.conf"; +include "/etc/bind/conf-master/e75-1.conf"; +include "/etc/bind/conf-master/e75-2.conf"; +include "/etc/bind/conf-master/e75-3.conf"; +include "/etc/bind/conf-master/e75-4.conf"; +include "/etc/bind/conf-master/e77-1.conf"; +include "/etc/bind/conf-master/e77-2.conf"; +include "/etc/bind/conf-master/e9-3.conf"; +include "/etc/bind/conf-master/e9-4.conf"; +include "/etc/bind/conf-master/fugleberg1.conf"; +include "/etc/bind/conf-master/fugleberg2.conf"; +include "/etc/bind/conf-master/game.conf"; +include "/etc/bind/conf-master/gamehq.conf"; +include "/etc/bind/conf-master/lager.conf"; +include "/etc/bind/conf-master/logistikk.conf"; +include "/etc/bind/conf-master/marsrele.conf"; +include "/etc/bind/conf-master/noc.conf"; +include "/etc/bind/conf-master/presse.conf"; +include "/etc/bind/conf-master/secmedic.conf"; +include "/etc/bind/conf-master/sponsorvest.conf"; +include "/etc/bind/conf-master/stage.conf"; +include "/etc/bind/conf-master/stageboh.conf"; +include "/etc/bind/conf-master/tele.conf"; +include "/etc/bind/conf-master/wlan.conf"; +include "/etc/bind/conf-master/ymse.conf"; diff --git a/bind/master/named.reverse4.conf b/bind/master/named.reverse4.conf new file mode 100644 index 0000000..d8669f8 --- /dev/null +++ b/bind/master/named.reverse4.conf @@ -0,0 +1,1024 @@ +zone "0.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/0.216.151.in-addr.arpa.zone"; +}; + +zone "1.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/1.216.151.in-addr.arpa.zone"; +}; + +zone "2.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/2.216.151.in-addr.arpa.zone"; +}; + +zone "3.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/3.216.151.in-addr.arpa.zone"; +}; + +zone "4.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/4.216.151.in-addr.arpa.zone"; +}; + +zone "5.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/5.216.151.in-addr.arpa.zone"; +}; + +zone "6.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/6.216.151.in-addr.arpa.zone"; +}; + +zone "7.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/7.216.151.in-addr.arpa.zone"; +}; + +zone "8.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/8.216.151.in-addr.arpa.zone"; +}; + +zone "9.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/9.216.151.in-addr.arpa.zone"; +}; + +zone "10.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/10.216.151.in-addr.arpa.zone"; +}; + +zone "11.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/11.216.151.in-addr.arpa.zone"; +}; + +zone "12.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/12.216.151.in-addr.arpa.zone"; +}; + +zone "13.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/13.216.151.in-addr.arpa.zone"; +}; + +zone "14.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/14.216.151.in-addr.arpa.zone"; +}; + +zone "15.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/15.216.151.in-addr.arpa.zone"; +}; + +zone "16.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/16.216.151.in-addr.arpa.zone"; +}; + +zone "17.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/17.216.151.in-addr.arpa.zone"; +}; + +zone "18.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/18.216.151.in-addr.arpa.zone"; +}; + +zone "19.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/19.216.151.in-addr.arpa.zone"; +}; + +zone "20.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/20.216.151.in-addr.arpa.zone"; +}; + +zone "21.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/21.216.151.in-addr.arpa.zone"; +}; + +zone "22.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/22.216.151.in-addr.arpa.zone"; +}; + +zone "23.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/23.216.151.in-addr.arpa.zone"; +}; + +zone "24.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/24.216.151.in-addr.arpa.zone"; +}; + +zone "25.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/25.216.151.in-addr.arpa.zone"; +}; + +zone "26.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/26.216.151.in-addr.arpa.zone"; +}; + +zone "27.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/27.216.151.in-addr.arpa.zone"; +}; + +zone "28.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/28.216.151.in-addr.arpa.zone"; +}; + +zone "29.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/29.216.151.in-addr.arpa.zone"; +}; + +zone "30.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/30.216.151.in-addr.arpa.zone"; +}; + +zone "31.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/31.216.151.in-addr.arpa.zone"; +}; + +zone "32.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/32.216.151.in-addr.arpa.zone"; +}; + +zone "33.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/33.216.151.in-addr.arpa.zone"; +}; + +zone "34.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/34.216.151.in-addr.arpa.zone"; +}; + +zone "35.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/35.216.151.in-addr.arpa.zone"; +}; + +zone "36.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/36.216.151.in-addr.arpa.zone"; +}; + +zone "37.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/37.216.151.in-addr.arpa.zone"; +}; + +zone "38.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/38.216.151.in-addr.arpa.zone"; +}; + +zone "39.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/39.216.151.in-addr.arpa.zone"; +}; + +zone "40.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/40.216.151.in-addr.arpa.zone"; +}; + +zone "41.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/41.216.151.in-addr.arpa.zone"; +}; + +zone "42.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/42.216.151.in-addr.arpa.zone"; +}; + +zone "43.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/43.216.151.in-addr.arpa.zone"; +}; + +zone "44.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/44.216.151.in-addr.arpa.zone"; +}; + +zone "45.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/45.216.151.in-addr.arpa.zone"; +}; + +zone "46.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/46.216.151.in-addr.arpa.zone"; +}; + +zone "47.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/47.216.151.in-addr.arpa.zone"; +}; + +zone "48.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/48.216.151.in-addr.arpa.zone"; +}; + +zone "49.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/49.216.151.in-addr.arpa.zone"; +}; + +zone "50.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/50.216.151.in-addr.arpa.zone"; +}; + +zone "51.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/51.216.151.in-addr.arpa.zone"; +}; + +zone "52.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/52.216.151.in-addr.arpa.zone"; +}; + +zone "53.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/53.216.151.in-addr.arpa.zone"; +}; + +zone "54.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/54.216.151.in-addr.arpa.zone"; +}; + +zone "55.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/55.216.151.in-addr.arpa.zone"; +}; + +zone "56.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/56.216.151.in-addr.arpa.zone"; +}; + +zone "57.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/57.216.151.in-addr.arpa.zone"; +}; + +zone "58.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/58.216.151.in-addr.arpa.zone"; +}; + +zone "59.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/59.216.151.in-addr.arpa.zone"; +}; + +zone "60.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/60.216.151.in-addr.arpa.zone"; +}; + +zone "61.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/61.216.151.in-addr.arpa.zone"; +}; + +zone "62.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/62.216.151.in-addr.arpa.zone"; +}; + +zone "63.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/63.216.151.in-addr.arpa.zone"; +}; + +zone "64.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/64.216.151.in-addr.arpa.zone"; +}; + +zone "65.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/65.216.151.in-addr.arpa.zone"; +}; + +zone "66.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/66.216.151.in-addr.arpa.zone"; +}; + +zone "67.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/67.216.151.in-addr.arpa.zone"; +}; + +zone "68.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/68.216.151.in-addr.arpa.zone"; +}; + +zone "69.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/69.216.151.in-addr.arpa.zone"; +}; + +zone "70.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/70.216.151.in-addr.arpa.zone"; +}; + +zone "71.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/71.216.151.in-addr.arpa.zone"; +}; + +zone "72.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/72.216.151.in-addr.arpa.zone"; +}; + +zone "73.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/73.216.151.in-addr.arpa.zone"; +}; + +zone "74.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/74.216.151.in-addr.arpa.zone"; +}; + +zone "75.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/75.216.151.in-addr.arpa.zone"; +}; + +zone "76.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/76.216.151.in-addr.arpa.zone"; +}; + +zone "77.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/77.216.151.in-addr.arpa.zone"; +}; + +zone "78.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/78.216.151.in-addr.arpa.zone"; +}; + +zone "79.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/79.216.151.in-addr.arpa.zone"; +}; + +zone "80.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/80.216.151.in-addr.arpa.zone"; +}; + +zone "81.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/81.216.151.in-addr.arpa.zone"; +}; + +zone "82.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/82.216.151.in-addr.arpa.zone"; +}; + +zone "83.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/83.216.151.in-addr.arpa.zone"; +}; + +zone "84.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/84.216.151.in-addr.arpa.zone"; +}; + +zone "85.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/85.216.151.in-addr.arpa.zone"; +}; + +zone "86.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/86.216.151.in-addr.arpa.zone"; +}; + +zone "87.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/87.216.151.in-addr.arpa.zone"; +}; + +zone "88.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/88.216.151.in-addr.arpa.zone"; +}; + +zone "89.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/89.216.151.in-addr.arpa.zone"; +}; + +zone "90.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/90.216.151.in-addr.arpa.zone"; +}; + +zone "91.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/91.216.151.in-addr.arpa.zone"; +}; + +zone "92.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/92.216.151.in-addr.arpa.zone"; +}; + +zone "93.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/93.216.151.in-addr.arpa.zone"; +}; + +zone "94.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/94.216.151.in-addr.arpa.zone"; +}; + +zone "95.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/95.216.151.in-addr.arpa.zone"; +}; + +zone "96.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/96.216.151.in-addr.arpa.zone"; +}; + +zone "97.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/97.216.151.in-addr.arpa.zone"; +}; + +zone "98.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/98.216.151.in-addr.arpa.zone"; +}; + +zone "99.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/99.216.151.in-addr.arpa.zone"; +}; + +zone "100.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/100.216.151.in-addr.arpa.zone"; +}; + +zone "101.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/101.216.151.in-addr.arpa.zone"; +}; + +zone "102.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/102.216.151.in-addr.arpa.zone"; +}; + +zone "103.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/103.216.151.in-addr.arpa.zone"; +}; + +zone "104.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/104.216.151.in-addr.arpa.zone"; +}; + +zone "105.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/105.216.151.in-addr.arpa.zone"; +}; + +zone "106.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/106.216.151.in-addr.arpa.zone"; +}; + +zone "107.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/107.216.151.in-addr.arpa.zone"; +}; + +zone "108.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/108.216.151.in-addr.arpa.zone"; +}; + +zone "109.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/109.216.151.in-addr.arpa.zone"; +}; + +zone "110.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/110.216.151.in-addr.arpa.zone"; +}; + +zone "111.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/111.216.151.in-addr.arpa.zone"; +}; + +zone "112.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/112.216.151.in-addr.arpa.zone"; +}; + +zone "113.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/113.216.151.in-addr.arpa.zone"; +}; + +zone "114.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/114.216.151.in-addr.arpa.zone"; +}; + +zone "115.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/115.216.151.in-addr.arpa.zone"; +}; + +zone "116.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/116.216.151.in-addr.arpa.zone"; +}; + +zone "117.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/117.216.151.in-addr.arpa.zone"; +}; + +zone "118.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/118.216.151.in-addr.arpa.zone"; +}; + +zone "119.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/119.216.151.in-addr.arpa.zone"; +}; + +zone "120.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/120.216.151.in-addr.arpa.zone"; +}; + +zone "121.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/121.216.151.in-addr.arpa.zone"; +}; + +zone "122.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/122.216.151.in-addr.arpa.zone"; +}; + +zone "123.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/123.216.151.in-addr.arpa.zone"; +}; + +zone "124.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/124.216.151.in-addr.arpa.zone"; +}; + +zone "125.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/125.216.151.in-addr.arpa.zone"; +}; + +zone "126.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/126.216.151.in-addr.arpa.zone"; +}; + +zone "127.216.151.in-addr.arpa" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + allow-transfer { 151.216.125.2; 193.0.0.0/22; 151.216.124.0/24; 2a02:ed02:124::/64; }; + file "reverse/127.216.151.in-addr.arpa.zone"; +}; + diff --git a/bind/master/rndc.key b/bind/master/rndc.key new file mode 100644 index 0000000..6ad396d --- /dev/null +++ b/bind/master/rndc.key @@ -0,0 +1,4 @@ +key "rndc-key" { + algorithm hmac-md5; + secret "<removed>"; +}; diff --git a/bind/master/steamorigin-zones b/bind/master/steamorigin-zones new file mode 100644 index 0000000..b1d61f5 --- /dev/null +++ b/bind/master/steamorigin-zones @@ -0,0 +1,61 @@ + +zone "valve.vo.llnwd.net" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "steampowered.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "steamcommunity.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; + +zone "origin.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "ea.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; + + +zone "www.ea.com.edgekey.net" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "e6909.g.akamaiedge.net" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "ecommerce-origin-1434850512.us-east-1.elb.amazonaws.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "prod-chat-orgin-1410280267.us-east-1.elb.amazonaws.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "prod-avatar-origin-1061716926.us-east-1.elb.amazonaws.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "prod-friends-origin-1309711156.us-east-1.elb.amazonaws.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "prod-loginregistration-origin-1419075154.us-east-1.elb.amazonaws.com" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "static.ea.com.edgesuite.net" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; +zone "a1560.g.akamai.net" { + type forward; + forwarders { 2001:67c:29f4::51; }; +}; + diff --git a/bind/master/tg13.gathering.org.zone b/bind/master/tg13.gathering.org.zone new file mode 100644 index 0000000..af2255d --- /dev/null +++ b/bind/master/tg13.gathering.org.zone @@ -0,0 +1,91 @@ +$TTL 3600 +@ IN SOA winix.tg13.gathering.org. abuse.gathering.org. ( + 2013032901; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS ns1.tg13.gathering.org. + IN NS ns2.tg13.gathering.org. + +ns1 IN A 151.216.126.2 +ns1 IN AAAA 2a02:ed02:126::2 +ns2 IN A 151.216.125.2 +ns2 IN AAAA 2a02:ed02:125::2 +winix IN A 151.216.126.2 +winix IN AAAA 2a02:ed02:126::2 +davetele IN A 151.216.126.4 +davetele IN AAAA 2a02:ed02:126::4 +tress90 IN A 151.216.125.2 +tress90 IN AAAA 2a02:ed02:125::2 +upstart IN A 151.216.125.3 +upstart IN AAAA 2a02:ed02:125::3 + +; Generated by make-all-config.sh on the bootstrapping/nms server. +; Will not be overwritten unless it is missing ;) + +krosus IN A 151.216.125.4 +krosus IN AAAA 2a02:ed02:125::4 +flexus IN A 151.216.125.5 +flexus IN AAAA 2a02:ed02:125::5 +wannabe IN A 151.216.125.6 +wannabe IN AAAA 2a02:ed02:125::6 +altinn IN A 151.216.125.7 +altinn IN AAAA 2a02:ed02:125::7 +au2sys IN A 151.216.125.8 +au2sys IN AAAA 2a02:ed02:125::8 + +kliniskarbeidsflate IN A 151.216.125.9 +kliniskarbeidsflate IN AAAA 2a02:ed02:125::9 +; Enkoder hos EBU i OB-bussen +politietno IN A 151.216.114.254 +politietno IN AAAA 2a02:ed02:114::254 + + +golf IN A 151.216.125.12 +golf IN AAAA 2a02:ed02:125::12 +tgjump IN A 151.216.125.14 +tgjump IN AAAA 2a02:ed02:125::14 +optimus IN A 151.216.125.15 +optimus IN AAAA 2a02:ed02:125::15 +mse IN A 151.216.125.16 +mse IN AAAA 2a02:ed02:125::16 +avinor1 IN A 151.216.125.21 +avinor2 IN A 151.216.125.22 +bigbrother IN A 151.216.125.17 + +nam3 IN A 151.216.126.3 +nam3 IN AAAA 2a02:ed02:126::3 + +stats IN CNAME tgjump.tg13.gathering.org. + +stillcam IN A 212.62.229.140 +stillcam IN AAAA 2001:470:1f0b:c1::1 + +fuglecam IN A 151.216.99.254 +fuglecam IN AAAA 2a02:ed02:992:0:922b:34ff:fe5c:49d4 + +; Printer for Content +oi.content IN AAAA 2a02:ed02:992:0:21b:a9ff:fed5:1f18 + +; Services +tech IN CNAME flexus.tg13.gathering.org. +nms IN CNAME flexus.tg13.gathering.org. +nms-public IN CNAME flexus.tg13.gathering.org. +stream IN CNAME krosus.tg13.gathering.org. +smtp IN CNAME tress90.tg13.gathering.org. + +; wuhuWTF +compo IN A 151.216.55.54 +compo IN AAAA 2A02:ED02:55:0:5054:FF:FEF4:FA3C +wuhu-admin IN CNAME compo.tg13.gathering.org. +tgpc IN A 151.216.55.61 +tgpc IN AAAA 2A02:ED02:55:0:5054:FF:FEB7:4598 +hack IN A 151.216.55.56 + +; tng +tng IN CNAME altinn.tg13.gathering.org. + +; server lek +nav IN CNAME altinn.tg13.gathering.org. diff --git a/bind/master/zones.rfc1918 b/bind/master/zones.rfc1918 new file mode 100644 index 0000000..03b5546 --- /dev/null +++ b/bind/master/zones.rfc1918 @@ -0,0 +1,20 @@ +zone "10.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; + +zone "16.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "17.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "18.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "19.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "20.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "21.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "22.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "23.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "24.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "25.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "26.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "27.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "28.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "29.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "30.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "31.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; + +zone "168.192.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; diff --git a/bind/slave/bind.keys b/bind/slave/bind.keys new file mode 100644 index 0000000..b003c53 --- /dev/null +++ b/bind/slave/bind.keys @@ -0,0 +1,49 @@ +/* $Id: bind.keys,v 1.5.42.2 2011-01-04 19:14:48 each Exp $ */ +# The bind.keys file is used to override built-in DNSSEC trust anchors +# which are included as part of BIND 9. As of the current release (BIND +# 9.7), the only trust anchor it sets is the one for the ISC DNSSEC +# Lookaside Validation zone ("dlv.isc.org"). Trust anchors for any other +# zones MUST be configured elsewhere; if they are configured here, they +# will not be recognized or used by named. +# +# This file also contains a copy of the trust anchor for the DNS root zone +# ("."). However, named does not use it; it is provided here for +# informational purposes only. To switch on DNSSEC validation at the +# root, the root key below can be copied into named.conf. +# +# The built-in DLV trust anchor in this file is used directly by named. +# However, it is not activated unless specifically switched on. To use +# the DLV key, set "dnssec-lookaside auto;" in the named.conf options. +# Without this option being set, the key in this file is ignored. +# +# This file is NOT expected to be user-configured. +# +# These keys are current as of January 2011. If any key fails to +# initialize correctly, it may have expired. In that event you should +# replace this file with a current version. The latest version of +# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys. + +managed-keys { + # ISC DLV: See https://www.isc.org/solutions/dlv for details. + # NOTE: This key is activated by setting "dnssec-lookaside auto;" + # in named.conf. + dlv.isc.org. initial-key 257 3 5 "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 + brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ + 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 + ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk + Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM + QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt + TDN0YUuWrBNh"; + + # ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml + # for current trust anchor information. + # NOTE: This key is activated by setting "dnssec-validation auto;" + # in named.conf. + . initial-key 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF + FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX + bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD + X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz + W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS + Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq + QxA+Uk1ihz0="; +}; diff --git a/bind/slave/conf-slave/ap-dist0.conf b/bind/slave/conf-slave/ap-dist0.conf new file mode 100644 index 0000000..6cb150c --- /dev/null +++ b/bind/slave/conf-slave/ap-dist0.conf @@ -0,0 +1,7 @@ +zone "ap-dist0.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/ap-dist0.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/ap-dist1.conf b/bind/slave/conf-slave/ap-dist1.conf new file mode 100644 index 0000000..657aaac --- /dev/null +++ b/bind/slave/conf-slave/ap-dist1.conf @@ -0,0 +1,7 @@ +zone "ap-dist1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/ap-dist1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/ap-dist2.conf b/bind/slave/conf-slave/ap-dist2.conf new file mode 100644 index 0000000..96ac51e --- /dev/null +++ b/bind/slave/conf-slave/ap-dist2.conf @@ -0,0 +1,7 @@ +zone "ap-dist2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/ap-dist2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/ap-dist3.conf b/bind/slave/conf-slave/ap-dist3.conf new file mode 100644 index 0000000..1807f13 --- /dev/null +++ b/bind/slave/conf-slave/ap-dist3.conf @@ -0,0 +1,7 @@ +zone "ap-dist3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/ap-dist3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/ap-dist4.conf b/bind/slave/conf-slave/ap-dist4.conf new file mode 100644 index 0000000..0cebd7f --- /dev/null +++ b/bind/slave/conf-slave/ap-dist4.conf @@ -0,0 +1,7 @@ +zone "ap-dist4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/ap-dist4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/care.conf b/bind/slave/conf-slave/care.conf new file mode 100644 index 0000000..c42c48c --- /dev/null +++ b/bind/slave/conf-slave/care.conf @@ -0,0 +1,7 @@ +zone "care.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/care.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/chillout.conf b/bind/slave/conf-slave/chillout.conf new file mode 100644 index 0000000..5cd6569 --- /dev/null +++ b/bind/slave/conf-slave/chillout.conf @@ -0,0 +1,7 @@ +zone "chillout.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/chillout.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/creativia.conf b/bind/slave/conf-slave/creativia.conf new file mode 100644 index 0000000..668bc7d --- /dev/null +++ b/bind/slave/conf-slave/creativia.conf @@ -0,0 +1,7 @@ +zone "creativia.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/creativia.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/crew1.conf b/bind/slave/conf-slave/crew1.conf new file mode 100644 index 0000000..d30580a --- /dev/null +++ b/bind/slave/conf-slave/crew1.conf @@ -0,0 +1,7 @@ +zone "crew1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/crew1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/crew2.conf b/bind/slave/conf-slave/crew2.conf new file mode 100644 index 0000000..dc08880 --- /dev/null +++ b/bind/slave/conf-slave/crew2.conf @@ -0,0 +1,7 @@ +zone "crew2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/crew2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/crew3.conf b/bind/slave/conf-slave/crew3.conf new file mode 100644 index 0000000..456a90b --- /dev/null +++ b/bind/slave/conf-slave/crew3.conf @@ -0,0 +1,7 @@ +zone "crew3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/crew3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/crew4.conf b/bind/slave/conf-slave/crew4.conf new file mode 100644 index 0000000..56ad6c0 --- /dev/null +++ b/bind/slave/conf-slave/crew4.conf @@ -0,0 +1,7 @@ +zone "crew4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/crew4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/crew5.conf b/bind/slave/conf-slave/crew5.conf new file mode 100644 index 0000000..b562849 --- /dev/null +++ b/bind/slave/conf-slave/crew5.conf @@ -0,0 +1,7 @@ +zone "crew5.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/crew5.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/crew6.conf b/bind/slave/conf-slave/crew6.conf new file mode 100644 index 0000000..6bf3b9f --- /dev/null +++ b/bind/slave/conf-slave/crew6.conf @@ -0,0 +1,7 @@ +zone "crew6.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/crew6.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/defektraid.conf b/bind/slave/conf-slave/defektraid.conf new file mode 100644 index 0000000..fee8190 --- /dev/null +++ b/bind/slave/conf-slave/defektraid.conf @@ -0,0 +1,7 @@ +zone "defektraid.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/defektraid.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e1-3.conf b/bind/slave/conf-slave/e1-3.conf new file mode 100644 index 0000000..b32ca6c --- /dev/null +++ b/bind/slave/conf-slave/e1-3.conf @@ -0,0 +1,7 @@ +zone "e1-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e1-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e1-4.conf b/bind/slave/conf-slave/e1-4.conf new file mode 100644 index 0000000..f24e839 --- /dev/null +++ b/bind/slave/conf-slave/e1-4.conf @@ -0,0 +1,7 @@ +zone "e1-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e1-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e11-1.conf b/bind/slave/conf-slave/e11-1.conf new file mode 100644 index 0000000..2a4f1a1 --- /dev/null +++ b/bind/slave/conf-slave/e11-1.conf @@ -0,0 +1,7 @@ +zone "e11-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e11-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e11-2.conf b/bind/slave/conf-slave/e11-2.conf new file mode 100644 index 0000000..0872ce0 --- /dev/null +++ b/bind/slave/conf-slave/e11-2.conf @@ -0,0 +1,7 @@ +zone "e11-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e11-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e11-3.conf b/bind/slave/conf-slave/e11-3.conf new file mode 100644 index 0000000..a88eff2 --- /dev/null +++ b/bind/slave/conf-slave/e11-3.conf @@ -0,0 +1,7 @@ +zone "e11-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e11-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e11-4.conf b/bind/slave/conf-slave/e11-4.conf new file mode 100644 index 0000000..8ab56ee --- /dev/null +++ b/bind/slave/conf-slave/e11-4.conf @@ -0,0 +1,7 @@ +zone "e11-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e11-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e13-1.conf b/bind/slave/conf-slave/e13-1.conf new file mode 100644 index 0000000..089e887 --- /dev/null +++ b/bind/slave/conf-slave/e13-1.conf @@ -0,0 +1,7 @@ +zone "e13-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e13-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e13-2.conf b/bind/slave/conf-slave/e13-2.conf new file mode 100644 index 0000000..e766fc3 --- /dev/null +++ b/bind/slave/conf-slave/e13-2.conf @@ -0,0 +1,7 @@ +zone "e13-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e13-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e13-3.conf b/bind/slave/conf-slave/e13-3.conf new file mode 100644 index 0000000..e8f71e0 --- /dev/null +++ b/bind/slave/conf-slave/e13-3.conf @@ -0,0 +1,7 @@ +zone "e13-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e13-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e13-4.conf b/bind/slave/conf-slave/e13-4.conf new file mode 100644 index 0000000..268659b --- /dev/null +++ b/bind/slave/conf-slave/e13-4.conf @@ -0,0 +1,7 @@ +zone "e13-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e13-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e15-1.conf b/bind/slave/conf-slave/e15-1.conf new file mode 100644 index 0000000..1259ee2 --- /dev/null +++ b/bind/slave/conf-slave/e15-1.conf @@ -0,0 +1,7 @@ +zone "e15-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e15-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e15-2.conf b/bind/slave/conf-slave/e15-2.conf new file mode 100644 index 0000000..fa1762a --- /dev/null +++ b/bind/slave/conf-slave/e15-2.conf @@ -0,0 +1,7 @@ +zone "e15-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e15-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e15-3.conf b/bind/slave/conf-slave/e15-3.conf new file mode 100644 index 0000000..3c57263 --- /dev/null +++ b/bind/slave/conf-slave/e15-3.conf @@ -0,0 +1,7 @@ +zone "e15-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e15-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e15-4.conf b/bind/slave/conf-slave/e15-4.conf new file mode 100644 index 0000000..f91bf19 --- /dev/null +++ b/bind/slave/conf-slave/e15-4.conf @@ -0,0 +1,7 @@ +zone "e15-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e15-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e17-1.conf b/bind/slave/conf-slave/e17-1.conf new file mode 100644 index 0000000..52f7c74 --- /dev/null +++ b/bind/slave/conf-slave/e17-1.conf @@ -0,0 +1,7 @@ +zone "e17-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e17-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e17-2.conf b/bind/slave/conf-slave/e17-2.conf new file mode 100644 index 0000000..c1c99e7 --- /dev/null +++ b/bind/slave/conf-slave/e17-2.conf @@ -0,0 +1,7 @@ +zone "e17-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e17-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e17-3.conf b/bind/slave/conf-slave/e17-3.conf new file mode 100644 index 0000000..f80c69a --- /dev/null +++ b/bind/slave/conf-slave/e17-3.conf @@ -0,0 +1,7 @@ +zone "e17-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e17-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e17-4.conf b/bind/slave/conf-slave/e17-4.conf new file mode 100644 index 0000000..0494bce --- /dev/null +++ b/bind/slave/conf-slave/e17-4.conf @@ -0,0 +1,7 @@ +zone "e17-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e17-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e19-1.conf b/bind/slave/conf-slave/e19-1.conf new file mode 100644 index 0000000..d5ba505 --- /dev/null +++ b/bind/slave/conf-slave/e19-1.conf @@ -0,0 +1,7 @@ +zone "e19-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e19-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e19-2.conf b/bind/slave/conf-slave/e19-2.conf new file mode 100644 index 0000000..515ddf8 --- /dev/null +++ b/bind/slave/conf-slave/e19-2.conf @@ -0,0 +1,7 @@ +zone "e19-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e19-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e19-3.conf b/bind/slave/conf-slave/e19-3.conf new file mode 100644 index 0000000..b09d915 --- /dev/null +++ b/bind/slave/conf-slave/e19-3.conf @@ -0,0 +1,7 @@ +zone "e19-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e19-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e19-4.conf b/bind/slave/conf-slave/e19-4.conf new file mode 100644 index 0000000..df1c48b --- /dev/null +++ b/bind/slave/conf-slave/e19-4.conf @@ -0,0 +1,7 @@ +zone "e19-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e19-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e21-1.conf b/bind/slave/conf-slave/e21-1.conf new file mode 100644 index 0000000..21eb664 --- /dev/null +++ b/bind/slave/conf-slave/e21-1.conf @@ -0,0 +1,7 @@ +zone "e21-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e21-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e21-2.conf b/bind/slave/conf-slave/e21-2.conf new file mode 100644 index 0000000..4278ba6 --- /dev/null +++ b/bind/slave/conf-slave/e21-2.conf @@ -0,0 +1,7 @@ +zone "e21-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e21-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e21-3.conf b/bind/slave/conf-slave/e21-3.conf new file mode 100644 index 0000000..85e116e --- /dev/null +++ b/bind/slave/conf-slave/e21-3.conf @@ -0,0 +1,7 @@ +zone "e21-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e21-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e21-4.conf b/bind/slave/conf-slave/e21-4.conf new file mode 100644 index 0000000..1a5c247 --- /dev/null +++ b/bind/slave/conf-slave/e21-4.conf @@ -0,0 +1,7 @@ +zone "e21-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e21-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e23-1.conf b/bind/slave/conf-slave/e23-1.conf new file mode 100644 index 0000000..7a6d56c --- /dev/null +++ b/bind/slave/conf-slave/e23-1.conf @@ -0,0 +1,7 @@ +zone "e23-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e23-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e23-2.conf b/bind/slave/conf-slave/e23-2.conf new file mode 100644 index 0000000..a98f4e7 --- /dev/null +++ b/bind/slave/conf-slave/e23-2.conf @@ -0,0 +1,7 @@ +zone "e23-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e23-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e23-3.conf b/bind/slave/conf-slave/e23-3.conf new file mode 100644 index 0000000..391dd08 --- /dev/null +++ b/bind/slave/conf-slave/e23-3.conf @@ -0,0 +1,7 @@ +zone "e23-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e23-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e23-4.conf b/bind/slave/conf-slave/e23-4.conf new file mode 100644 index 0000000..311fa59 --- /dev/null +++ b/bind/slave/conf-slave/e23-4.conf @@ -0,0 +1,7 @@ +zone "e23-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e23-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e25-1.conf b/bind/slave/conf-slave/e25-1.conf new file mode 100644 index 0000000..ff327b0 --- /dev/null +++ b/bind/slave/conf-slave/e25-1.conf @@ -0,0 +1,7 @@ +zone "e25-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e25-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e25-2.conf b/bind/slave/conf-slave/e25-2.conf new file mode 100644 index 0000000..9d77158 --- /dev/null +++ b/bind/slave/conf-slave/e25-2.conf @@ -0,0 +1,7 @@ +zone "e25-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e25-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e25-3.conf b/bind/slave/conf-slave/e25-3.conf new file mode 100644 index 0000000..805de20 --- /dev/null +++ b/bind/slave/conf-slave/e25-3.conf @@ -0,0 +1,7 @@ +zone "e25-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e25-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e25-4.conf b/bind/slave/conf-slave/e25-4.conf new file mode 100644 index 0000000..9b2c652 --- /dev/null +++ b/bind/slave/conf-slave/e25-4.conf @@ -0,0 +1,7 @@ +zone "e25-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e25-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e27-1.conf b/bind/slave/conf-slave/e27-1.conf new file mode 100644 index 0000000..72f0ea7 --- /dev/null +++ b/bind/slave/conf-slave/e27-1.conf @@ -0,0 +1,7 @@ +zone "e27-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e27-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e27-2.conf b/bind/slave/conf-slave/e27-2.conf new file mode 100644 index 0000000..a798852 --- /dev/null +++ b/bind/slave/conf-slave/e27-2.conf @@ -0,0 +1,7 @@ +zone "e27-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e27-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e29-1.conf b/bind/slave/conf-slave/e29-1.conf new file mode 100644 index 0000000..20eb035 --- /dev/null +++ b/bind/slave/conf-slave/e29-1.conf @@ -0,0 +1,7 @@ +zone "e29-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e29-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e29-2.conf b/bind/slave/conf-slave/e29-2.conf new file mode 100644 index 0000000..d7cb7c7 --- /dev/null +++ b/bind/slave/conf-slave/e29-2.conf @@ -0,0 +1,7 @@ +zone "e29-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e29-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e3-3.conf b/bind/slave/conf-slave/e3-3.conf new file mode 100644 index 0000000..960faa0 --- /dev/null +++ b/bind/slave/conf-slave/e3-3.conf @@ -0,0 +1,7 @@ +zone "e3-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e3-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e3-4.conf b/bind/slave/conf-slave/e3-4.conf new file mode 100644 index 0000000..6dd6e8e --- /dev/null +++ b/bind/slave/conf-slave/e3-4.conf @@ -0,0 +1,7 @@ +zone "e3-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e3-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e31-1.conf b/bind/slave/conf-slave/e31-1.conf new file mode 100644 index 0000000..5706910 --- /dev/null +++ b/bind/slave/conf-slave/e31-1.conf @@ -0,0 +1,7 @@ +zone "e31-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e31-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e31-2.conf b/bind/slave/conf-slave/e31-2.conf new file mode 100644 index 0000000..013aad3 --- /dev/null +++ b/bind/slave/conf-slave/e31-2.conf @@ -0,0 +1,7 @@ +zone "e31-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e31-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e33-1.conf b/bind/slave/conf-slave/e33-1.conf new file mode 100644 index 0000000..f99f582 --- /dev/null +++ b/bind/slave/conf-slave/e33-1.conf @@ -0,0 +1,7 @@ +zone "e33-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e33-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e33-2.conf b/bind/slave/conf-slave/e33-2.conf new file mode 100644 index 0000000..f0aa378 --- /dev/null +++ b/bind/slave/conf-slave/e33-2.conf @@ -0,0 +1,7 @@ +zone "e33-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e33-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e35-1.conf b/bind/slave/conf-slave/e35-1.conf new file mode 100644 index 0000000..4a26cfe --- /dev/null +++ b/bind/slave/conf-slave/e35-1.conf @@ -0,0 +1,7 @@ +zone "e35-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e35-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e35-2.conf b/bind/slave/conf-slave/e35-2.conf new file mode 100644 index 0000000..b46070c --- /dev/null +++ b/bind/slave/conf-slave/e35-2.conf @@ -0,0 +1,7 @@ +zone "e35-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e35-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e37-1.conf b/bind/slave/conf-slave/e37-1.conf new file mode 100644 index 0000000..1cf7c8b --- /dev/null +++ b/bind/slave/conf-slave/e37-1.conf @@ -0,0 +1,7 @@ +zone "e37-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e37-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e37-2.conf b/bind/slave/conf-slave/e37-2.conf new file mode 100644 index 0000000..9f69ae7 --- /dev/null +++ b/bind/slave/conf-slave/e37-2.conf @@ -0,0 +1,7 @@ +zone "e37-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e37-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e39-1.conf b/bind/slave/conf-slave/e39-1.conf new file mode 100644 index 0000000..c05033c --- /dev/null +++ b/bind/slave/conf-slave/e39-1.conf @@ -0,0 +1,7 @@ +zone "e39-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e39-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e39-2.conf b/bind/slave/conf-slave/e39-2.conf new file mode 100644 index 0000000..047959c --- /dev/null +++ b/bind/slave/conf-slave/e39-2.conf @@ -0,0 +1,7 @@ +zone "e39-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e39-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e41-1.conf b/bind/slave/conf-slave/e41-1.conf new file mode 100644 index 0000000..fea60b1 --- /dev/null +++ b/bind/slave/conf-slave/e41-1.conf @@ -0,0 +1,7 @@ +zone "e41-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e41-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e41-2.conf b/bind/slave/conf-slave/e41-2.conf new file mode 100644 index 0000000..9da06c5 --- /dev/null +++ b/bind/slave/conf-slave/e41-2.conf @@ -0,0 +1,7 @@ +zone "e41-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e41-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e43-1.conf b/bind/slave/conf-slave/e43-1.conf new file mode 100644 index 0000000..82f9ada --- /dev/null +++ b/bind/slave/conf-slave/e43-1.conf @@ -0,0 +1,7 @@ +zone "e43-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e43-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e43-2.conf b/bind/slave/conf-slave/e43-2.conf new file mode 100644 index 0000000..59aaae2 --- /dev/null +++ b/bind/slave/conf-slave/e43-2.conf @@ -0,0 +1,7 @@ +zone "e43-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e43-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e43-3.conf b/bind/slave/conf-slave/e43-3.conf new file mode 100644 index 0000000..bb30b66 --- /dev/null +++ b/bind/slave/conf-slave/e43-3.conf @@ -0,0 +1,7 @@ +zone "e43-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e43-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e43-4.conf b/bind/slave/conf-slave/e43-4.conf new file mode 100644 index 0000000..b46d34c --- /dev/null +++ b/bind/slave/conf-slave/e43-4.conf @@ -0,0 +1,7 @@ +zone "e43-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e43-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e45-1.conf b/bind/slave/conf-slave/e45-1.conf new file mode 100644 index 0000000..ef06167 --- /dev/null +++ b/bind/slave/conf-slave/e45-1.conf @@ -0,0 +1,7 @@ +zone "e45-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e45-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e45-2.conf b/bind/slave/conf-slave/e45-2.conf new file mode 100644 index 0000000..c19e209 --- /dev/null +++ b/bind/slave/conf-slave/e45-2.conf @@ -0,0 +1,7 @@ +zone "e45-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e45-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e45-3.conf b/bind/slave/conf-slave/e45-3.conf new file mode 100644 index 0000000..66378c7 --- /dev/null +++ b/bind/slave/conf-slave/e45-3.conf @@ -0,0 +1,7 @@ +zone "e45-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e45-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e45-4.conf b/bind/slave/conf-slave/e45-4.conf new file mode 100644 index 0000000..92f8dfc --- /dev/null +++ b/bind/slave/conf-slave/e45-4.conf @@ -0,0 +1,7 @@ +zone "e45-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e45-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e47-1.conf b/bind/slave/conf-slave/e47-1.conf new file mode 100644 index 0000000..6562fda --- /dev/null +++ b/bind/slave/conf-slave/e47-1.conf @@ -0,0 +1,7 @@ +zone "e47-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e47-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e47-2.conf b/bind/slave/conf-slave/e47-2.conf new file mode 100644 index 0000000..080c195 --- /dev/null +++ b/bind/slave/conf-slave/e47-2.conf @@ -0,0 +1,7 @@ +zone "e47-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e47-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e47-3.conf b/bind/slave/conf-slave/e47-3.conf new file mode 100644 index 0000000..a144fe0 --- /dev/null +++ b/bind/slave/conf-slave/e47-3.conf @@ -0,0 +1,7 @@ +zone "e47-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e47-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e47-4.conf b/bind/slave/conf-slave/e47-4.conf new file mode 100644 index 0000000..af177fb --- /dev/null +++ b/bind/slave/conf-slave/e47-4.conf @@ -0,0 +1,7 @@ +zone "e47-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e47-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e49-1.conf b/bind/slave/conf-slave/e49-1.conf new file mode 100644 index 0000000..7ceb877 --- /dev/null +++ b/bind/slave/conf-slave/e49-1.conf @@ -0,0 +1,7 @@ +zone "e49-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e49-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e49-2.conf b/bind/slave/conf-slave/e49-2.conf new file mode 100644 index 0000000..9757070 --- /dev/null +++ b/bind/slave/conf-slave/e49-2.conf @@ -0,0 +1,7 @@ +zone "e49-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e49-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e49-3.conf b/bind/slave/conf-slave/e49-3.conf new file mode 100644 index 0000000..04fec88 --- /dev/null +++ b/bind/slave/conf-slave/e49-3.conf @@ -0,0 +1,7 @@ +zone "e49-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e49-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e49-4.conf b/bind/slave/conf-slave/e49-4.conf new file mode 100644 index 0000000..ced68b7 --- /dev/null +++ b/bind/slave/conf-slave/e49-4.conf @@ -0,0 +1,7 @@ +zone "e49-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e49-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e5-3.conf b/bind/slave/conf-slave/e5-3.conf new file mode 100644 index 0000000..22c9f01 --- /dev/null +++ b/bind/slave/conf-slave/e5-3.conf @@ -0,0 +1,7 @@ +zone "e5-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e5-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e5-4.conf b/bind/slave/conf-slave/e5-4.conf new file mode 100644 index 0000000..088380c --- /dev/null +++ b/bind/slave/conf-slave/e5-4.conf @@ -0,0 +1,7 @@ +zone "e5-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e5-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e51-1.conf b/bind/slave/conf-slave/e51-1.conf new file mode 100644 index 0000000..ba6f76f --- /dev/null +++ b/bind/slave/conf-slave/e51-1.conf @@ -0,0 +1,7 @@ +zone "e51-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e51-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e51-2.conf b/bind/slave/conf-slave/e51-2.conf new file mode 100644 index 0000000..9895e5f --- /dev/null +++ b/bind/slave/conf-slave/e51-2.conf @@ -0,0 +1,7 @@ +zone "e51-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e51-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e51-3.conf b/bind/slave/conf-slave/e51-3.conf new file mode 100644 index 0000000..50c249b --- /dev/null +++ b/bind/slave/conf-slave/e51-3.conf @@ -0,0 +1,7 @@ +zone "e51-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e51-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e51-4.conf b/bind/slave/conf-slave/e51-4.conf new file mode 100644 index 0000000..2598407 --- /dev/null +++ b/bind/slave/conf-slave/e51-4.conf @@ -0,0 +1,7 @@ +zone "e51-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e51-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e53-1.conf b/bind/slave/conf-slave/e53-1.conf new file mode 100644 index 0000000..2b88c48 --- /dev/null +++ b/bind/slave/conf-slave/e53-1.conf @@ -0,0 +1,7 @@ +zone "e53-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e53-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e53-2.conf b/bind/slave/conf-slave/e53-2.conf new file mode 100644 index 0000000..b93f388 --- /dev/null +++ b/bind/slave/conf-slave/e53-2.conf @@ -0,0 +1,7 @@ +zone "e53-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e53-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e53-3.conf b/bind/slave/conf-slave/e53-3.conf new file mode 100644 index 0000000..efb8a17 --- /dev/null +++ b/bind/slave/conf-slave/e53-3.conf @@ -0,0 +1,7 @@ +zone "e53-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e53-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e53-4.conf b/bind/slave/conf-slave/e53-4.conf new file mode 100644 index 0000000..74e65fa --- /dev/null +++ b/bind/slave/conf-slave/e53-4.conf @@ -0,0 +1,7 @@ +zone "e53-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e53-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e55-1.conf b/bind/slave/conf-slave/e55-1.conf new file mode 100644 index 0000000..3d5e7f8 --- /dev/null +++ b/bind/slave/conf-slave/e55-1.conf @@ -0,0 +1,7 @@ +zone "e55-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e55-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e55-2.conf b/bind/slave/conf-slave/e55-2.conf new file mode 100644 index 0000000..815138f --- /dev/null +++ b/bind/slave/conf-slave/e55-2.conf @@ -0,0 +1,7 @@ +zone "e55-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e55-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e55-3.conf b/bind/slave/conf-slave/e55-3.conf new file mode 100644 index 0000000..5da6c91 --- /dev/null +++ b/bind/slave/conf-slave/e55-3.conf @@ -0,0 +1,7 @@ +zone "e55-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e55-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e55-4.conf b/bind/slave/conf-slave/e55-4.conf new file mode 100644 index 0000000..bc37351 --- /dev/null +++ b/bind/slave/conf-slave/e55-4.conf @@ -0,0 +1,7 @@ +zone "e55-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e55-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e57-1.conf b/bind/slave/conf-slave/e57-1.conf new file mode 100644 index 0000000..33ef734 --- /dev/null +++ b/bind/slave/conf-slave/e57-1.conf @@ -0,0 +1,7 @@ +zone "e57-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e57-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e57-2.conf b/bind/slave/conf-slave/e57-2.conf new file mode 100644 index 0000000..e175561 --- /dev/null +++ b/bind/slave/conf-slave/e57-2.conf @@ -0,0 +1,7 @@ +zone "e57-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e57-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e57-3.conf b/bind/slave/conf-slave/e57-3.conf new file mode 100644 index 0000000..19f1456 --- /dev/null +++ b/bind/slave/conf-slave/e57-3.conf @@ -0,0 +1,7 @@ +zone "e57-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e57-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e57-4.conf b/bind/slave/conf-slave/e57-4.conf new file mode 100644 index 0000000..7624646 --- /dev/null +++ b/bind/slave/conf-slave/e57-4.conf @@ -0,0 +1,7 @@ +zone "e57-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e57-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e59-1.conf b/bind/slave/conf-slave/e59-1.conf new file mode 100644 index 0000000..970d5ca --- /dev/null +++ b/bind/slave/conf-slave/e59-1.conf @@ -0,0 +1,7 @@ +zone "e59-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e59-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e59-2.conf b/bind/slave/conf-slave/e59-2.conf new file mode 100644 index 0000000..c797ef8 --- /dev/null +++ b/bind/slave/conf-slave/e59-2.conf @@ -0,0 +1,7 @@ +zone "e59-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e59-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e59-3.conf b/bind/slave/conf-slave/e59-3.conf new file mode 100644 index 0000000..36b17e5 --- /dev/null +++ b/bind/slave/conf-slave/e59-3.conf @@ -0,0 +1,7 @@ +zone "e59-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e59-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e59-4.conf b/bind/slave/conf-slave/e59-4.conf new file mode 100644 index 0000000..85c005a --- /dev/null +++ b/bind/slave/conf-slave/e59-4.conf @@ -0,0 +1,7 @@ +zone "e59-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e59-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e61-1.conf b/bind/slave/conf-slave/e61-1.conf new file mode 100644 index 0000000..982baee --- /dev/null +++ b/bind/slave/conf-slave/e61-1.conf @@ -0,0 +1,7 @@ +zone "e61-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e61-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e61-2.conf b/bind/slave/conf-slave/e61-2.conf new file mode 100644 index 0000000..6d59df1 --- /dev/null +++ b/bind/slave/conf-slave/e61-2.conf @@ -0,0 +1,7 @@ +zone "e61-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e61-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e61-3.conf b/bind/slave/conf-slave/e61-3.conf new file mode 100644 index 0000000..54c958a --- /dev/null +++ b/bind/slave/conf-slave/e61-3.conf @@ -0,0 +1,7 @@ +zone "e61-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e61-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e61-4.conf b/bind/slave/conf-slave/e61-4.conf new file mode 100644 index 0000000..b3d2da7 --- /dev/null +++ b/bind/slave/conf-slave/e61-4.conf @@ -0,0 +1,7 @@ +zone "e61-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e61-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e63-1.conf b/bind/slave/conf-slave/e63-1.conf new file mode 100644 index 0000000..67708e9 --- /dev/null +++ b/bind/slave/conf-slave/e63-1.conf @@ -0,0 +1,7 @@ +zone "e63-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e63-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e63-2.conf b/bind/slave/conf-slave/e63-2.conf new file mode 100644 index 0000000..504ec09 --- /dev/null +++ b/bind/slave/conf-slave/e63-2.conf @@ -0,0 +1,7 @@ +zone "e63-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e63-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e63-3.conf b/bind/slave/conf-slave/e63-3.conf new file mode 100644 index 0000000..6610f52 --- /dev/null +++ b/bind/slave/conf-slave/e63-3.conf @@ -0,0 +1,7 @@ +zone "e63-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e63-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e63-4.conf b/bind/slave/conf-slave/e63-4.conf new file mode 100644 index 0000000..4fe4dcf --- /dev/null +++ b/bind/slave/conf-slave/e63-4.conf @@ -0,0 +1,7 @@ +zone "e63-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e63-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e65-1.conf b/bind/slave/conf-slave/e65-1.conf new file mode 100644 index 0000000..8fbbfe7 --- /dev/null +++ b/bind/slave/conf-slave/e65-1.conf @@ -0,0 +1,7 @@ +zone "e65-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e65-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e65-2.conf b/bind/slave/conf-slave/e65-2.conf new file mode 100644 index 0000000..574b3f5 --- /dev/null +++ b/bind/slave/conf-slave/e65-2.conf @@ -0,0 +1,7 @@ +zone "e65-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e65-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e65-3.conf b/bind/slave/conf-slave/e65-3.conf new file mode 100644 index 0000000..f1b5f56 --- /dev/null +++ b/bind/slave/conf-slave/e65-3.conf @@ -0,0 +1,7 @@ +zone "e65-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e65-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e65-4.conf b/bind/slave/conf-slave/e65-4.conf new file mode 100644 index 0000000..5a813aa --- /dev/null +++ b/bind/slave/conf-slave/e65-4.conf @@ -0,0 +1,7 @@ +zone "e65-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e65-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e67-1.conf b/bind/slave/conf-slave/e67-1.conf new file mode 100644 index 0000000..4a75285 --- /dev/null +++ b/bind/slave/conf-slave/e67-1.conf @@ -0,0 +1,7 @@ +zone "e67-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e67-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e67-2.conf b/bind/slave/conf-slave/e67-2.conf new file mode 100644 index 0000000..281e94c --- /dev/null +++ b/bind/slave/conf-slave/e67-2.conf @@ -0,0 +1,7 @@ +zone "e67-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e67-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e67-3.conf b/bind/slave/conf-slave/e67-3.conf new file mode 100644 index 0000000..5c3cc69 --- /dev/null +++ b/bind/slave/conf-slave/e67-3.conf @@ -0,0 +1,7 @@ +zone "e67-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e67-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e67-4.conf b/bind/slave/conf-slave/e67-4.conf new file mode 100644 index 0000000..89093c5 --- /dev/null +++ b/bind/slave/conf-slave/e67-4.conf @@ -0,0 +1,7 @@ +zone "e67-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e67-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e69-1.conf b/bind/slave/conf-slave/e69-1.conf new file mode 100644 index 0000000..f261b89 --- /dev/null +++ b/bind/slave/conf-slave/e69-1.conf @@ -0,0 +1,7 @@ +zone "e69-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e69-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e69-2.conf b/bind/slave/conf-slave/e69-2.conf new file mode 100644 index 0000000..db517c3 --- /dev/null +++ b/bind/slave/conf-slave/e69-2.conf @@ -0,0 +1,7 @@ +zone "e69-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e69-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e69-3.conf b/bind/slave/conf-slave/e69-3.conf new file mode 100644 index 0000000..df212d7 --- /dev/null +++ b/bind/slave/conf-slave/e69-3.conf @@ -0,0 +1,7 @@ +zone "e69-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e69-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e69-4.conf b/bind/slave/conf-slave/e69-4.conf new file mode 100644 index 0000000..4ae60fa --- /dev/null +++ b/bind/slave/conf-slave/e69-4.conf @@ -0,0 +1,7 @@ +zone "e69-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e69-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e7-3.conf b/bind/slave/conf-slave/e7-3.conf new file mode 100644 index 0000000..4693800 --- /dev/null +++ b/bind/slave/conf-slave/e7-3.conf @@ -0,0 +1,7 @@ +zone "e7-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e7-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e7-4.conf b/bind/slave/conf-slave/e7-4.conf new file mode 100644 index 0000000..41455fd --- /dev/null +++ b/bind/slave/conf-slave/e7-4.conf @@ -0,0 +1,7 @@ +zone "e7-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e7-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e71-1.conf b/bind/slave/conf-slave/e71-1.conf new file mode 100644 index 0000000..71ddb54 --- /dev/null +++ b/bind/slave/conf-slave/e71-1.conf @@ -0,0 +1,7 @@ +zone "e71-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e71-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e71-2.conf b/bind/slave/conf-slave/e71-2.conf new file mode 100644 index 0000000..94d8520 --- /dev/null +++ b/bind/slave/conf-slave/e71-2.conf @@ -0,0 +1,7 @@ +zone "e71-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e71-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e71-3.conf b/bind/slave/conf-slave/e71-3.conf new file mode 100644 index 0000000..b3c1c59 --- /dev/null +++ b/bind/slave/conf-slave/e71-3.conf @@ -0,0 +1,7 @@ +zone "e71-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e71-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e71-4.conf b/bind/slave/conf-slave/e71-4.conf new file mode 100644 index 0000000..f6bdd4f --- /dev/null +++ b/bind/slave/conf-slave/e71-4.conf @@ -0,0 +1,7 @@ +zone "e71-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e71-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e73-1.conf b/bind/slave/conf-slave/e73-1.conf new file mode 100644 index 0000000..230edcd --- /dev/null +++ b/bind/slave/conf-slave/e73-1.conf @@ -0,0 +1,7 @@ +zone "e73-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e73-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e73-2.conf b/bind/slave/conf-slave/e73-2.conf new file mode 100644 index 0000000..2fead83 --- /dev/null +++ b/bind/slave/conf-slave/e73-2.conf @@ -0,0 +1,7 @@ +zone "e73-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e73-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e73-3.conf b/bind/slave/conf-slave/e73-3.conf new file mode 100644 index 0000000..f28825e --- /dev/null +++ b/bind/slave/conf-slave/e73-3.conf @@ -0,0 +1,7 @@ +zone "e73-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e73-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e73-4.conf b/bind/slave/conf-slave/e73-4.conf new file mode 100644 index 0000000..a0586d7 --- /dev/null +++ b/bind/slave/conf-slave/e73-4.conf @@ -0,0 +1,7 @@ +zone "e73-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e73-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e75-1.conf b/bind/slave/conf-slave/e75-1.conf new file mode 100644 index 0000000..bcdd0fe --- /dev/null +++ b/bind/slave/conf-slave/e75-1.conf @@ -0,0 +1,7 @@ +zone "e75-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e75-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e75-2.conf b/bind/slave/conf-slave/e75-2.conf new file mode 100644 index 0000000..0631366 --- /dev/null +++ b/bind/slave/conf-slave/e75-2.conf @@ -0,0 +1,7 @@ +zone "e75-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e75-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e75-3.conf b/bind/slave/conf-slave/e75-3.conf new file mode 100644 index 0000000..4ce2c1d --- /dev/null +++ b/bind/slave/conf-slave/e75-3.conf @@ -0,0 +1,7 @@ +zone "e75-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e75-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e75-4.conf b/bind/slave/conf-slave/e75-4.conf new file mode 100644 index 0000000..e361095 --- /dev/null +++ b/bind/slave/conf-slave/e75-4.conf @@ -0,0 +1,7 @@ +zone "e75-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e75-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e77-1.conf b/bind/slave/conf-slave/e77-1.conf new file mode 100644 index 0000000..898f8d9 --- /dev/null +++ b/bind/slave/conf-slave/e77-1.conf @@ -0,0 +1,7 @@ +zone "e77-1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e77-1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e77-2.conf b/bind/slave/conf-slave/e77-2.conf new file mode 100644 index 0000000..70d651b --- /dev/null +++ b/bind/slave/conf-slave/e77-2.conf @@ -0,0 +1,7 @@ +zone "e77-2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e77-2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e9-3.conf b/bind/slave/conf-slave/e9-3.conf new file mode 100644 index 0000000..fff493a --- /dev/null +++ b/bind/slave/conf-slave/e9-3.conf @@ -0,0 +1,7 @@ +zone "e9-3.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e9-3.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/e9-4.conf b/bind/slave/conf-slave/e9-4.conf new file mode 100644 index 0000000..42374e8 --- /dev/null +++ b/bind/slave/conf-slave/e9-4.conf @@ -0,0 +1,7 @@ +zone "e9-4.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/e9-4.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/fugleberg1.conf b/bind/slave/conf-slave/fugleberg1.conf new file mode 100644 index 0000000..b5b39cf --- /dev/null +++ b/bind/slave/conf-slave/fugleberg1.conf @@ -0,0 +1,7 @@ +zone "fugleberg1.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/fugleberg1.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/fugleberg2.conf b/bind/slave/conf-slave/fugleberg2.conf new file mode 100644 index 0000000..e3ffcad --- /dev/null +++ b/bind/slave/conf-slave/fugleberg2.conf @@ -0,0 +1,7 @@ +zone "fugleberg2.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/fugleberg2.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/game.conf b/bind/slave/conf-slave/game.conf new file mode 100644 index 0000000..04fdc30 --- /dev/null +++ b/bind/slave/conf-slave/game.conf @@ -0,0 +1,7 @@ +zone "game.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/game.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/gamehq.conf b/bind/slave/conf-slave/gamehq.conf new file mode 100644 index 0000000..11c35c2 --- /dev/null +++ b/bind/slave/conf-slave/gamehq.conf @@ -0,0 +1,7 @@ +zone "gamehq.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/gamehq.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/lager.conf b/bind/slave/conf-slave/lager.conf new file mode 100644 index 0000000..cec1eb0 --- /dev/null +++ b/bind/slave/conf-slave/lager.conf @@ -0,0 +1,7 @@ +zone "lager.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/lager.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/logistikk.conf b/bind/slave/conf-slave/logistikk.conf new file mode 100644 index 0000000..84ff89f --- /dev/null +++ b/bind/slave/conf-slave/logistikk.conf @@ -0,0 +1,7 @@ +zone "logistikk.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/logistikk.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/marsrele.conf b/bind/slave/conf-slave/marsrele.conf new file mode 100644 index 0000000..56639ea --- /dev/null +++ b/bind/slave/conf-slave/marsrele.conf @@ -0,0 +1,7 @@ +zone "marsrele.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/marsrele.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/noc.conf b/bind/slave/conf-slave/noc.conf new file mode 100644 index 0000000..955695e --- /dev/null +++ b/bind/slave/conf-slave/noc.conf @@ -0,0 +1,7 @@ +zone "noc.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/noc.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/presse.conf b/bind/slave/conf-slave/presse.conf new file mode 100644 index 0000000..81ceebe --- /dev/null +++ b/bind/slave/conf-slave/presse.conf @@ -0,0 +1,7 @@ +zone "presse.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/presse.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/secmedic.conf b/bind/slave/conf-slave/secmedic.conf new file mode 100644 index 0000000..4f32330 --- /dev/null +++ b/bind/slave/conf-slave/secmedic.conf @@ -0,0 +1,7 @@ +zone "secmedic.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/secmedic.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/sponsorvest.conf b/bind/slave/conf-slave/sponsorvest.conf new file mode 100644 index 0000000..4f4a255 --- /dev/null +++ b/bind/slave/conf-slave/sponsorvest.conf @@ -0,0 +1,7 @@ +zone "sponsorvest.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/sponsorvest.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/stage.conf b/bind/slave/conf-slave/stage.conf new file mode 100644 index 0000000..c459678 --- /dev/null +++ b/bind/slave/conf-slave/stage.conf @@ -0,0 +1,7 @@ +zone "stage.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/stage.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/stageboh.conf b/bind/slave/conf-slave/stageboh.conf new file mode 100644 index 0000000..7081f38 --- /dev/null +++ b/bind/slave/conf-slave/stageboh.conf @@ -0,0 +1,7 @@ +zone "stageboh.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/stageboh.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/tele.conf b/bind/slave/conf-slave/tele.conf new file mode 100644 index 0000000..1484d25 --- /dev/null +++ b/bind/slave/conf-slave/tele.conf @@ -0,0 +1,7 @@ +zone "tele.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/tele.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/wlan.conf b/bind/slave/conf-slave/wlan.conf new file mode 100644 index 0000000..4a6b83d --- /dev/null +++ b/bind/slave/conf-slave/wlan.conf @@ -0,0 +1,7 @@ +zone "wlan.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/wlan.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/conf-slave/ymse.conf b/bind/slave/conf-slave/ymse.conf new file mode 100644 index 0000000..bf26b4c --- /dev/null +++ b/bind/slave/conf-slave/ymse.conf @@ -0,0 +1,7 @@ +zone "ymse.tg13.gathering.org" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/ymse.tg13.gathering.org.zone"; + allow-transfer { ns-xfr; }; +}; diff --git a/bind/slave/db.0 b/bind/slave/db.0 new file mode 100644 index 0000000..e3aabdb --- /dev/null +++ b/bind/slave/db.0 @@ -0,0 +1,12 @@ +; +; BIND reverse data file for broadcast zone +; +$TTL 604800 +@ IN SOA localhost. root.localhost. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS localhost. diff --git a/bind/slave/db.127 b/bind/slave/db.127 new file mode 100644 index 0000000..cd05bef --- /dev/null +++ b/bind/slave/db.127 @@ -0,0 +1,13 @@ +; +; BIND reverse data file for local loopback interface +; +$TTL 604800 +@ IN SOA localhost. root.localhost. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS localhost. +1.0.0 IN PTR localhost. diff --git a/bind/slave/db.255 b/bind/slave/db.255 new file mode 100644 index 0000000..e3aabdb --- /dev/null +++ b/bind/slave/db.255 @@ -0,0 +1,12 @@ +; +; BIND reverse data file for broadcast zone +; +$TTL 604800 +@ IN SOA localhost. root.localhost. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS localhost. diff --git a/bind/slave/db.empty b/bind/slave/db.empty new file mode 100644 index 0000000..8a12858 --- /dev/null +++ b/bind/slave/db.empty @@ -0,0 +1,14 @@ +; BIND reverse data file for empty rfc1918 zone +; +; DO NOT EDIT THIS FILE - it is used for multiple zones. +; Instead, copy it, edit named.conf, and use that copy. +; +$TTL 86400 +@ IN SOA localhost. root.localhost. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 86400 ) ; Negative Cache TTL +; +@ IN NS localhost. diff --git a/bind/slave/db.local b/bind/slave/db.local new file mode 100644 index 0000000..2f272d4 --- /dev/null +++ b/bind/slave/db.local @@ -0,0 +1,14 @@ +; +; BIND data file for local loopback interface +; +$TTL 604800 +@ IN SOA localhost. root.localhost. ( + 2 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS localhost. +@ IN A 127.0.0.1 +@ IN AAAA ::1 diff --git a/bind/slave/db.root b/bind/slave/db.root new file mode 100644 index 0000000..6c19741 --- /dev/null +++ b/bind/slave/db.root @@ -0,0 +1,88 @@ +; This file holds the information on root name servers needed to +; initialize cache of Internet domain name servers +; (e.g. reference this file in the "cache . <file>" +; configuration file of BIND domain name servers). +; +; This file is made available by InterNIC +; under anonymous FTP as +; file /domain/named.cache +; on server FTP.INTERNIC.NET +; -OR- RS.INTERNIC.NET +; +; last update: Jan 3, 2013 +; related version of root zone: 2013010300 +; +; formerly NS.INTERNIC.NET +; +. 3600000 IN NS A.ROOT-SERVERS.NET. +A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 +A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30 +; +; FORMERLY NS1.ISI.EDU +; +. 3600000 NS B.ROOT-SERVERS.NET. +B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 +; +; FORMERLY C.PSI.NET +; +. 3600000 NS C.ROOT-SERVERS.NET. +C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 +; +; FORMERLY TERP.UMD.EDU +; +. 3600000 NS D.ROOT-SERVERS.NET. +D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13 +D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2D::D +; +; FORMERLY NS.NASA.GOV +; +. 3600000 NS E.ROOT-SERVERS.NET. +E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 +; +; FORMERLY NS.ISC.ORG +; +. 3600000 NS F.ROOT-SERVERS.NET. +F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 +F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2F::F +; +; FORMERLY NS.NIC.DDN.MIL +; +. 3600000 NS G.ROOT-SERVERS.NET. +G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 +; +; FORMERLY AOS.ARL.ARMY.MIL +; +. 3600000 NS H.ROOT-SERVERS.NET. +H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 +H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803F:235 +; +; FORMERLY NIC.NORDU.NET +; +. 3600000 NS I.ROOT-SERVERS.NET. +I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 +I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FE::53 +; +; OPERATED BY VERISIGN, INC. +; +. 3600000 NS J.ROOT-SERVERS.NET. +J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 +J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30 +; +; OPERATED BY RIPE NCC +; +. 3600000 NS K.ROOT-SERVERS.NET. +K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 +K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FD::1 +; +; OPERATED BY ICANN +; +. 3600000 NS L.ROOT-SERVERS.NET. +L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 +L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42 +; +; OPERATED BY WIDE +; +. 3600000 NS M.ROOT-SERVERS.NET. +M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 +M.ROOT-SERVERS.NET. 3600000 AAAA 2001:DC3::35 +; End of File diff --git a/bind/slave/named.conf b/bind/slave/named.conf new file mode 100644 index 0000000..c960730 --- /dev/null +++ b/bind/slave/named.conf @@ -0,0 +1,57 @@ +// This named.conf was generated by make-named.pl at 20130327-1708 +// The current version of make-named.pl should not overwrite this file. +acl tg-nett { 151.216.0.0/17; 2a02:ed02::/32; 127.0.0.0/8; ::1; 31.169.55.0/24; }; +acl ns-xfr { 194.19.3.20; 151.216.125.2; 2a02:ed02:125::2; 151.216.126.2; 2a02:ed02:126::2; 151.216.124.0/24; }; +acl ripe-xfr { 194.19.3.20; 151.216.125.2; 2a02:ed02:125::2; 151.216.126.2; 2a02:ed02:126::2; 193.0.0.0/22; }; + +options { + directory "/etc/bind"; + allow-recursion { tg-nett; }; + allow-query { any; }; + allow-transfer { ns-xfr; }; + recursion yes; + auth-nxdomain no; + listen-on-v6 { any; }; +}; + +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret <removed>; +}; + +masters bootstrap { 151.216.126.2; }; + +zone "tg13.gathering.org" { + type slave; + file "slave/tg13.gathering.org"; + notify no; + masters { bootstrap; }; +}; + +zone "infra.tg13.gathering.org" { + type slave; + file "slave/infra.tg13.gathering.org"; + notify no; + masters { bootstrap; }; +}; + +zone "2.0.d.e.2.0.a.2.ip6.arpa" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/2.0.d.e.2.0.a.2.ip6.arpa:"; + allow-transfer { ns-xfr; ripe-xfr; }; +}; + +include "named.conf.default-zones"; +include "named.slave-reverse4.conf"; +include "named.slave-include.conf"; + +# ekstra /24-nett fra Blix +zone "55.169.31.in-addr.arpa" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/55.169.31.in-addr.arpa"; + allow-transfer { ns-xfr; ripe-xfr; }; +}; diff --git a/bind/slave/named.conf.default-zones b/bind/slave/named.conf.default-zones new file mode 100644 index 0000000..355338b --- /dev/null +++ b/bind/slave/named.conf.default-zones @@ -0,0 +1,30 @@ +// prime the server with knowledge of the root servers +zone "." { + type hint; + file "/etc/bind/db.root"; +}; + +// be authoritative for the localhost forward and reverse zones, and for +// broadcast zones as per RFC 1912 + +zone "localhost" { + type master; + file "/etc/bind/db.local"; +}; + +zone "127.in-addr.arpa" { + type master; + file "/etc/bind/db.127"; +}; + +zone "0.in-addr.arpa" { + type master; + file "/etc/bind/db.0"; +}; + +zone "255.in-addr.arpa" { + type master; + file "/etc/bind/db.255"; +}; + + diff --git a/bind/slave/named.conf.local b/bind/slave/named.conf.local new file mode 100644 index 0000000..7a57b10 --- /dev/null +++ b/bind/slave/named.conf.local @@ -0,0 +1,8 @@ +// +// Do any local configuration here +// + +// Consider adding the 1918 zones here, if they are not used in your +// organization +//include "/etc/bind/zones.rfc1918"; + diff --git a/bind/slave/named.conf.options b/bind/slave/named.conf.options new file mode 100644 index 0000000..af79758 --- /dev/null +++ b/bind/slave/named.conf.options @@ -0,0 +1,20 @@ +options { + directory "/var/cache/bind"; + + // If there is a firewall between you and nameservers you want + // to talk to, you may need to fix the firewall to allow multiple + // ports to talk. See http://www.kb.cert.org/vuls/id/800113 + + // If your ISP provided one or more IP addresses for stable + // nameservers, you probably want to use them as forwarders. + // Uncomment the following block, and insert the addresses replacing + // the all-0's placeholder. + + // forwarders { + // 0.0.0.0; + // }; + + auth-nxdomain no; # conform to RFC1035 + listen-on-v6 { any; }; +}; + diff --git a/bind/slave/named.slave-include.conf b/bind/slave/named.slave-include.conf new file mode 100644 index 0000000..2284b6e --- /dev/null +++ b/bind/slave/named.slave-include.conf @@ -0,0 +1,159 @@ +include "/etc/bind/conf-slave/ap-dist0.conf"; +include "/etc/bind/conf-slave/ap-dist1.conf"; +include "/etc/bind/conf-slave/ap-dist2.conf"; +include "/etc/bind/conf-slave/ap-dist3.conf"; +include "/etc/bind/conf-slave/ap-dist4.conf"; +include "/etc/bind/conf-slave/care.conf"; +include "/etc/bind/conf-slave/chillout.conf"; +include "/etc/bind/conf-slave/creativia.conf"; +include "/etc/bind/conf-slave/crew1.conf"; +include "/etc/bind/conf-slave/crew2.conf"; +include "/etc/bind/conf-slave/crew3.conf"; +include "/etc/bind/conf-slave/crew4.conf"; +include "/etc/bind/conf-slave/crew5.conf"; +include "/etc/bind/conf-slave/crew6.conf"; +include "/etc/bind/conf-slave/defektraid.conf"; +include "/etc/bind/conf-slave/e1-3.conf"; +include "/etc/bind/conf-slave/e1-4.conf"; +include "/etc/bind/conf-slave/e11-1.conf"; +include "/etc/bind/conf-slave/e11-2.conf"; +include "/etc/bind/conf-slave/e11-3.conf"; +include "/etc/bind/conf-slave/e11-4.conf"; +include "/etc/bind/conf-slave/e13-1.conf"; +include "/etc/bind/conf-slave/e13-2.conf"; +include "/etc/bind/conf-slave/e13-3.conf"; +include "/etc/bind/conf-slave/e13-4.conf"; +include "/etc/bind/conf-slave/e15-1.conf"; +include "/etc/bind/conf-slave/e15-2.conf"; +include "/etc/bind/conf-slave/e15-3.conf"; +include "/etc/bind/conf-slave/e15-4.conf"; +include "/etc/bind/conf-slave/e17-1.conf"; +include "/etc/bind/conf-slave/e17-2.conf"; +include "/etc/bind/conf-slave/e17-3.conf"; +include "/etc/bind/conf-slave/e17-4.conf"; +include "/etc/bind/conf-slave/e19-1.conf"; +include "/etc/bind/conf-slave/e19-2.conf"; +include "/etc/bind/conf-slave/e19-3.conf"; +include "/etc/bind/conf-slave/e19-4.conf"; +include "/etc/bind/conf-slave/e21-1.conf"; +include "/etc/bind/conf-slave/e21-2.conf"; +include "/etc/bind/conf-slave/e21-3.conf"; +include "/etc/bind/conf-slave/e21-4.conf"; +include "/etc/bind/conf-slave/e23-1.conf"; +include "/etc/bind/conf-slave/e23-2.conf"; +include "/etc/bind/conf-slave/e23-3.conf"; +include "/etc/bind/conf-slave/e23-4.conf"; +include "/etc/bind/conf-slave/e25-1.conf"; +include "/etc/bind/conf-slave/e25-2.conf"; +include "/etc/bind/conf-slave/e25-3.conf"; +include "/etc/bind/conf-slave/e25-4.conf"; +include "/etc/bind/conf-slave/e27-1.conf"; +include "/etc/bind/conf-slave/e27-2.conf"; +include "/etc/bind/conf-slave/e29-1.conf"; +include "/etc/bind/conf-slave/e29-2.conf"; +include "/etc/bind/conf-slave/e3-3.conf"; +include "/etc/bind/conf-slave/e3-4.conf"; +include "/etc/bind/conf-slave/e31-1.conf"; +include "/etc/bind/conf-slave/e31-2.conf"; +include "/etc/bind/conf-slave/e33-1.conf"; +include "/etc/bind/conf-slave/e33-2.conf"; +include "/etc/bind/conf-slave/e35-1.conf"; +include "/etc/bind/conf-slave/e35-2.conf"; +include "/etc/bind/conf-slave/e37-1.conf"; +include "/etc/bind/conf-slave/e37-2.conf"; +include "/etc/bind/conf-slave/e39-1.conf"; +include "/etc/bind/conf-slave/e39-2.conf"; +include "/etc/bind/conf-slave/e41-1.conf"; +include "/etc/bind/conf-slave/e41-2.conf"; +include "/etc/bind/conf-slave/e43-1.conf"; +include "/etc/bind/conf-slave/e43-2.conf"; +include "/etc/bind/conf-slave/e43-3.conf"; +include "/etc/bind/conf-slave/e43-4.conf"; +include "/etc/bind/conf-slave/e45-1.conf"; +include "/etc/bind/conf-slave/e45-2.conf"; +include "/etc/bind/conf-slave/e45-3.conf"; +include "/etc/bind/conf-slave/e45-4.conf"; +include "/etc/bind/conf-slave/e47-1.conf"; +include "/etc/bind/conf-slave/e47-2.conf"; +include "/etc/bind/conf-slave/e47-3.conf"; +include "/etc/bind/conf-slave/e47-4.conf"; +include "/etc/bind/conf-slave/e49-1.conf"; +include "/etc/bind/conf-slave/e49-2.conf"; +include "/etc/bind/conf-slave/e49-3.conf"; +include "/etc/bind/conf-slave/e49-4.conf"; +include "/etc/bind/conf-slave/e5-3.conf"; +include "/etc/bind/conf-slave/e5-4.conf"; +include "/etc/bind/conf-slave/e51-1.conf"; +include "/etc/bind/conf-slave/e51-2.conf"; +include "/etc/bind/conf-slave/e51-3.conf"; +include "/etc/bind/conf-slave/e51-4.conf"; +include "/etc/bind/conf-slave/e53-1.conf"; +include "/etc/bind/conf-slave/e53-2.conf"; +include "/etc/bind/conf-slave/e53-3.conf"; +include "/etc/bind/conf-slave/e53-4.conf"; +include "/etc/bind/conf-slave/e55-1.conf"; +include "/etc/bind/conf-slave/e55-2.conf"; +include "/etc/bind/conf-slave/e55-3.conf"; +include "/etc/bind/conf-slave/e55-4.conf"; +include "/etc/bind/conf-slave/e57-1.conf"; +include "/etc/bind/conf-slave/e57-2.conf"; +include "/etc/bind/conf-slave/e57-3.conf"; +include "/etc/bind/conf-slave/e57-4.conf"; +include "/etc/bind/conf-slave/e59-1.conf"; +include "/etc/bind/conf-slave/e59-2.conf"; +include "/etc/bind/conf-slave/e59-3.conf"; +include "/etc/bind/conf-slave/e59-4.conf"; +include "/etc/bind/conf-slave/e61-1.conf"; +include "/etc/bind/conf-slave/e61-2.conf"; +include "/etc/bind/conf-slave/e61-3.conf"; +include "/etc/bind/conf-slave/e61-4.conf"; +include "/etc/bind/conf-slave/e63-1.conf"; +include "/etc/bind/conf-slave/e63-2.conf"; +include "/etc/bind/conf-slave/e63-3.conf"; +include "/etc/bind/conf-slave/e63-4.conf"; +include "/etc/bind/conf-slave/e65-1.conf"; +include "/etc/bind/conf-slave/e65-2.conf"; +include "/etc/bind/conf-slave/e65-3.conf"; +include "/etc/bind/conf-slave/e65-4.conf"; +include "/etc/bind/conf-slave/e67-1.conf"; +include "/etc/bind/conf-slave/e67-2.conf"; +include "/etc/bind/conf-slave/e67-3.conf"; +include "/etc/bind/conf-slave/e67-4.conf"; +include "/etc/bind/conf-slave/e69-1.conf"; +include "/etc/bind/conf-slave/e69-2.conf"; +include "/etc/bind/conf-slave/e69-3.conf"; +include "/etc/bind/conf-slave/e69-4.conf"; +include "/etc/bind/conf-slave/e7-3.conf"; +include "/etc/bind/conf-slave/e7-4.conf"; +include "/etc/bind/conf-slave/e71-1.conf"; +include "/etc/bind/conf-slave/e71-2.conf"; +include "/etc/bind/conf-slave/e71-3.conf"; +include "/etc/bind/conf-slave/e71-4.conf"; +include "/etc/bind/conf-slave/e73-1.conf"; +include "/etc/bind/conf-slave/e73-2.conf"; +include "/etc/bind/conf-slave/e73-3.conf"; +include "/etc/bind/conf-slave/e73-4.conf"; +include "/etc/bind/conf-slave/e75-1.conf"; +include "/etc/bind/conf-slave/e75-2.conf"; +include "/etc/bind/conf-slave/e75-3.conf"; +include "/etc/bind/conf-slave/e75-4.conf"; +include "/etc/bind/conf-slave/e77-1.conf"; +include "/etc/bind/conf-slave/e77-2.conf"; +include "/etc/bind/conf-slave/e9-3.conf"; +include "/etc/bind/conf-slave/e9-4.conf"; +include "/etc/bind/conf-slave/fugleberg1.conf"; +include "/etc/bind/conf-slave/fugleberg2.conf"; +include "/etc/bind/conf-slave/game.conf"; +include "/etc/bind/conf-slave/gamehq.conf"; +include "/etc/bind/conf-slave/lager.conf"; +include "/etc/bind/conf-slave/logistikk.conf"; +include "/etc/bind/conf-slave/marsrele.conf"; +include "/etc/bind/conf-slave/noc.conf"; +include "/etc/bind/conf-slave/presse.conf"; +include "/etc/bind/conf-slave/secmedic.conf"; +include "/etc/bind/conf-slave/sponsorvest.conf"; +include "/etc/bind/conf-slave/stage.conf"; +include "/etc/bind/conf-slave/stageboh.conf"; +include "/etc/bind/conf-slave/tele.conf"; +include "/etc/bind/conf-slave/wlan.conf"; +include "/etc/bind/conf-slave/ymse.conf"; diff --git a/bind/slave/named.slave-reverse4.conf b/bind/slave/named.slave-reverse4.conf new file mode 100644 index 0000000..263b90c --- /dev/null +++ b/bind/slave/named.slave-reverse4.conf @@ -0,0 +1,1024 @@ +zone "0.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/0.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "1.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/1.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "2.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/2.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "3.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/3.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "4.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/4.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "5.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/5.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "6.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/6.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "7.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/7.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "8.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/8.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "9.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/9.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "10.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/10.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "11.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/11.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "12.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/12.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "13.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/13.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "14.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/14.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "15.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/15.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "16.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/16.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "17.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/17.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "18.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/18.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "19.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/19.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "20.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/20.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "21.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/21.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "22.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/22.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "23.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/23.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "24.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/24.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "25.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/25.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "26.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/26.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "27.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/27.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "28.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/28.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "29.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/29.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "30.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/30.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "31.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/31.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "32.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/32.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "33.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/33.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "34.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/34.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "35.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/35.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "36.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/36.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "37.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/37.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "38.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/38.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "39.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/39.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "40.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/40.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "41.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/41.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "42.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/42.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "43.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/43.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "44.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/44.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "45.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/45.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "46.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/46.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "47.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/47.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "48.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/48.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "49.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/49.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "50.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/50.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "51.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/51.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "52.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/52.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "53.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/53.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "54.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/54.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "55.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/55.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "56.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/56.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "57.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/57.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "58.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/58.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "59.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/59.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "60.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/60.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "61.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/61.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "62.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/62.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "63.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/63.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "64.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/64.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "65.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/65.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "66.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/66.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "67.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/67.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "68.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/68.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "69.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/69.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "70.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/70.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "71.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/71.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "72.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/72.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "73.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/73.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "74.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/74.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "75.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/75.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "76.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/76.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "77.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/77.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "78.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/78.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "79.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/79.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "80.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/80.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "81.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/81.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "82.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/82.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "83.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/83.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "84.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/84.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "85.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/85.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "86.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/86.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "87.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/87.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "88.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/88.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "89.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/89.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "90.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/90.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "91.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/91.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "92.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/92.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "93.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/93.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "94.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/94.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "95.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/95.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "96.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/96.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "97.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/97.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "98.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/98.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "99.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/99.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "100.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/100.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "101.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/101.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "102.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/102.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "103.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/103.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "104.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/104.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "105.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/105.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "106.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/106.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "107.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/107.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "108.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/108.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "109.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/109.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "110.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/110.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "111.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/111.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "112.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/112.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "113.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/113.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "114.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/114.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "115.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/115.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "116.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/116.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "117.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/117.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "118.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/118.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "119.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/119.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "120.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/120.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "121.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/121.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "122.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/122.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "123.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/123.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "124.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/124.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "125.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/125.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "126.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/126.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + +zone "127.216.151.in-addr.arpa" { + type slave; + notify no; + file "slave/127.216.151.in-addr.arpa.cache"; + masters { bootstrap; }; + allow-transfer { 193.0.0.0/22; }; +}; + diff --git a/bind/slave/rndc.key b/bind/slave/rndc.key new file mode 100644 index 0000000..6ad396d --- /dev/null +++ b/bind/slave/rndc.key @@ -0,0 +1,4 @@ +key "rndc-key" { + algorithm hmac-md5; + secret "<removed>"; +}; diff --git a/bind/slave/zones.rfc1918 b/bind/slave/zones.rfc1918 new file mode 100644 index 0000000..03b5546 --- /dev/null +++ b/bind/slave/zones.rfc1918 @@ -0,0 +1,20 @@ +zone "10.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; + +zone "16.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "17.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "18.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "19.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "20.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "21.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "22.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "23.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "24.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "25.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "26.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "27.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "28.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "29.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "30.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; +zone "31.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; + +zone "168.192.in-addr.arpa" { type master; file "/etc/bind/db.empty"; }; diff --git a/clients/accesspoints.pl b/clients/accesspoints.pl new file mode 100755 index 0000000..d998252 --- /dev/null +++ b/clients/accesspoints.pl @@ -0,0 +1,76 @@ +#! /usr/bin/perl +use strict; +use warnings; +use BER; +use DBI; +use POSIX; +use Time::HiRes; +use Net::Ping; +require 'SNMP_Session.pm'; + +use lib '../include'; +use nms; +use threads; + +poll_loop(); + +sub poll_loop { + my $dbh = nms::db_connect(); + my $qcores = $dbh->prepare('SELECT DISTINCT coreswitches.sysname, coreswitches.switch, coreswitches.ip, coreswitches.community FROM uplinks JOIN switches AS coreswitches ON (uplinks.coreswitch = coreswitches.switch)'); + my $qaps = $dbh->prepare("SELECT switches.sysname, switches.switch, uplinks.blade, uplinks.port FROM uplinks NATURAL JOIN switches WHERE uplinks.coreswitch = ?"); + my $qpoll = $dbh->prepare("UPDATE ap_poll SET model=?, last_poll=now() WHERE switch = ?"); + + while (1) { + $qcores->execute(); + my $cores = $qcores->fetchall_hashref("sysname"); + + foreach my $core (keys %$cores) { + my $ip = $cores->{$core}{'ip'}; + my $community = $cores->{$core}{'community'}; + printf "Polling %s (%s)\n", $core, $ip; + eval { + my $session = SNMPv2c_Session->open($ip, $community, 161) or die "Couldn't talk to switch"; + $qaps->execute($cores->{$core}{'switch'}); + while (my $aps = $qaps->fetchrow_hashref()) { + my $sysname = $aps->{'sysname'}; + my $blade = $aps->{'blade'}; + my $port = $aps->{'port'}; + my $oid = BER::encode_oid(1,3,6,1,2,1,105,1,1,1,9,$blade,$port); # POWER-ETHERNET-MIB...pethPsePortType + my $mode = fetch_snmp($session, $oid); + $qpoll->execute($mode, $aps->{'switch'}); + printf "%s (%s:%s/%s): %s\n", $sysname, $core, $blade, $port, $mode; + } + }; + if ($@) { + mylog("ERROR: $@ (during poll of $ip)"); + $dbh->rollback; + } + } + sleep 2; + } +} + +# Kokt fra snmpfetch.pl, vi bør nok lage et lib +sub fetch_snmp { + my ($session, $oid) = @_; + + if ($session->get_request_response($oid)) { + my ($bindings) = $session->decode_get_response ($session->{pdu_buffer}); + my $binding; + while ($bindings ne '') { + ($binding,$bindings) = &decode_sequence ($bindings); + my ($oid,$value) = &decode_by_template ($binding, "%O%@"); + return BER::pretty_print($value); + } + } + die "Couldn't get info from switch"; +} + +sub mylog { + my $msg = shift; + my $time = POSIX::ctime(time); + $time =~ s/\n.*$//; + printf STDERR "[%s] %s\n", $time, $msg; +} + + diff --git a/clients/admintool.sh b/clients/admintool.sh new file mode 100755 index 0000000..889dd19 --- /dev/null +++ b/clients/admintool.sh @@ -0,0 +1,19 @@ +while :; do + ( + for i in $( cut -d" " -f1 pingswitches.txt ); do + ADMINADDR=$( echo $i | perl -pi -le '@x = split /\./; $x[3] += 2; $_ = join(".", @x);' ) + ( ( + if ping -c2 -W3 -q $ADMINADDR >/dev/null; then + grep $i pingswitches.txt | sed 's/^/PONGER: /' + else + grep $i pingswitches.txt | sed 's/^/PONGER IKKE: /' + fi + ) & ) + done + ) > pong.new + while pidof ping > /dev/null; do sleep 1; done + mv pong.new pong + echo "sleeping" + sleep 10 +done + diff --git a/clients/dhcptail.pl b/clients/dhcptail.pl new file mode 100755 index 0000000..e7898aa --- /dev/null +++ b/clients/dhcptail.pl @@ -0,0 +1,74 @@ +#! /usr/bin/perl +use DBI; +use POSIX; +use lib '../include'; +use nms; +use strict; +use warnings; + +BEGIN { + require "../include/config.pm"; + eval { + require "../include/config.local.pm"; + }; +} + +my $year = $nms::config::tgname; +$year =~ s/tg/20/; # hihi + +my %months = ( + Jan => 1, + Feb => 2, + Mar => 3, + Apr => 4, + May => 5, + Jun => 6, + Jul => 7, + Aug => 8, + Sep => 9, + Oct => 10, + Nov => 11, + Dec => 12 +); + +my ($dbh, $q, $cq); +open(SYSLOG, "tail -n 9999999 -F /var/log/syslog |") or die "Unable to tail syslog: $!"; +while (<SYSLOG>) { + /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d+)\s+(\d+:\d+:\d+).*DHCPACK on (\d+\.\d+\.\d+\.\d+) to (\S+)/ or next; + my $date = $year . "-" . $months{$1} . "-" . $2 . " " . $3; + my $machine = $5; + my $owner_color; + + if ($machine eq '00:15:c5:42:ce:e9') { + $owner_color = '#00ff00'; # Steinar + } elsif ($machine eq '00:1e:37:1c:d2:65') { + $owner_color = '#c0ffee'; # Trygve + } elsif ($machine eq '00:16:d3:ce:8f:a7') { + $owner_color = '#f00f00'; # Jon + } elsif ($machine eq '00:16:d4:0c:8a:1c') { + $owner_color = '#ff99ff'; # Jørgen + } elsif ($machine eq '00:18:8b:aa:2f:f8') { + $owner_color = '#663300'; # Kjetil + } elsif ($machine eq '00:15:58:29:14:e3') { + $owner_color = '#f1720f'; # BÃ¥rd + } else { + $owner_color = "#000000"; # Unknown + } + + if (!defined($dbh) || !$dbh->ping) { + $dbh = nms::db_connect(); + $q = $dbh->prepare("UPDATE dhcp SET last_ack=? WHERE ?::inet << network AND ( last_ack < ? OR last_ack IS NULL )") + or die "Couldn't prepare query"; + $cq = $dbh->prepare("UPDATE dhcp SET owner_color=? WHERE ?::inet << network AND owner_color IS NULL") + or die "Couldn't prepare query"; + } + + print STDERR "$date $4\n"; + $q->execute($date, $4, $date) + or die "Couldn't push $1 into database"; + if (defined($owner_color)) { + $cq->execute($owner_color, $4) + or die "Couldn't push $1 into database"; + } +} +close SYSLOG; diff --git a/clients/ipv6-dns.pl b/clients/ipv6-dns.pl new file mode 100755 index 0000000..d965acc --- /dev/null +++ b/clients/ipv6-dns.pl @@ -0,0 +1,133 @@ +#! /usr/bin/perl +use DBI; +use Net::DNS; +use Net::IP; +use lib '../include'; +use nms; +use strict; +use warnings; + +BEGIN { + require "../include/config.pm"; + eval { + require "../include/config.local.pm"; + }; +} + +my $dbh = nms::db_connect() or die "Can't connect to database"; +my $res = Net::DNS::Resolver->new; + +$res->nameservers("$nms::config::pri_a.$nms::config::tgname.gathering.org"); + +my $kname = 'DHCP_UPDATER'; + +sub get_reverse { + my ($ip) = shift; + $ip = new Net::IP($ip) or return 0; + my $a = $res->query($ip->reverse_ip, 'PTR') or return 0; + foreach my $n ($a->answer) { + return $n->{'ptrdname'}; # Return first element, ignore the rest (= + } + return 0; +} + +sub any_quad_a { + my ($host) = shift; + my $a = $res->query($host, 'AAAA') or return 0; + foreach my $n ($a->answer) { + return 1 if ($n->{'type'} eq 'AAAA'); + } + return 0; +} + +print "Running automagic IPv6 DNS updates\n"; +while (1) { + + # Fetch visible IPv6 addresses from the last three minutes + my $q = $dbh->prepare("SELECT DISTINCT ON (ipv6.mac) ipv6.address AS v6, ipv6.mac, ipv4.address AS v4, ipv6.time - ipv6.age*'1 second'::interval FROM ipv6 LEFT JOIN ipv4 ON ipv4.mac = ipv6.mac WHERE ipv6.time > NOW()-'3 min'::interval ORDER BY ipv6.mac, ipv6.time DESC, mac") + or die "Can't prepare query"; + $q->execute() or die "Can't execute query"; + + my $aaaas = 0; + my $aaaa_errors = 0; + my $ptrs = 0; + my $ptr_errors = 0; + my $update; + my $v6; + while (my $ref = $q->fetchrow_hashref()) { + my $hostname = get_reverse($ref->{'v4'}); + if ($hostname) { + $v6 = $ref->{'v6'}; + my @parts = split('\.', $hostname); + my $hostname = shift @parts; + my $domain = join('.', @parts); + my $v6arpa = (new Net::IP($v6))->reverse_ip; + + # Don't add records for nets we don't control + next if not $v6arpa =~ m/$nms::config::ipv6zone/; + + # Add IPv6 reverse + if (!get_reverse($ref->{'v6'})) { + $update = Net::DNS::Update->new($nms::config::ipv6zone); + $update->push(pre => nxrrset("$v6arpa IN PTR")); # Only update if the RR is nonexistent + $update->push(update => rr_add("$v6arpa IN PTR $hostname.$domain.")); + $update->sign_tsig($kname, $nms::config::ddns_key); + my $reply = $res->send($update); + if ($reply->header->rcode eq 'NOERROR') { + $ptrs++; + } else { + $ptr_errors++; + } + } + + # Add IPv6 forward + if (!any_quad_a("$hostname.$domain")) { + $update = Net::DNS::Update->new($domain); + $update->push(pre => nxrrset("$hostname.$domain. IN AAAA $v6")); # Only update if the RR is nonexistent + $update->push(update => rr_add("$hostname.$domain. IN AAAA $v6")); + $update->sign_tsig($kname, $nms::config::ddns_key); + my $reply = $res->send($update); + if ($reply->header->rcode eq 'NOERROR') { + $aaaas++; + } else { + $aaaa_errors++; + } + } + } + } + print "Added $ptrs PTR records. $ptr_errors errors occured.\n"; + print "Added $aaaas AAAA records. $aaaa_errors errors occured.\n"; + + + # Remove old PTR records, that is, for hosts we haven't seen the last four + # hours, but not older than four and a half hours, as it would take forever to + # try to delete everything. FIXME: Query the zone file and diff against the + # database, to avoid running as many NS-updates as tuples in the result set. + + $q = $dbh->prepare("SELECT DISTINCT address AS v6 FROM ipv6 WHERE time < NOW() - '4 hours'::interval AND time > NOW() - '4 hours 30 minutes'::interval") + or die "Can't prepare query"; + $q->execute() or die "Can't execute query"; + + my $i = 0; + my $errors = 0; + while (my $ref = $q->fetchrow_hashref()) { + $v6 = $ref->{'v6'}; + if (get_reverse($v6)) { + my $v6arpa = (new Net::IP($v6))->reverse_ip; + my $update = Net::DNS::Update->new($nms::config::ipv6zone); + $update->push(pre => yxrrset("$v6arpa PTR")); # Only update if the RR exists + $update->push(update => rr_del("$v6arpa IN PTR")); + $update->sign_tsig($kname, $nms::config::ddns_key); + my $reply = $res->send($update); + if ($reply->header->rcode eq 'NOERROR') { + $i++; + } else { + $errors++; + } + } + } + + print "Deleted $i old PTR records. $errors errors occured.\n"; + print "Sleeping for two minutes.\n"; + sleep(120); +} diff --git a/clients/ipv6-stats.pl b/clients/ipv6-stats.pl new file mode 100755 index 0000000..59dacbd --- /dev/null +++ b/clients/ipv6-stats.pl @@ -0,0 +1,89 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use lib '../include'; +use nms qw(switch_connect switch_exec switch_disconnect); +use Net::Telnet::Cisco; + +BEGIN { + require "../include/config.pm"; + eval { + require "../include/config.local.pm"; + }; +} + +# +# Fetch list of MAC addresses and IPv6 addresses +# +sub query_router { + my ($host) = @_; + + my $ios = Net::Telnet::Cisco->new( + Host => $host, + Errmode => 'return'); + if (not defined $ios) { + warn "Can't connect to $host: $!, skipping"; + return (); + } + if (not $ios->login($nms::config::ios_user, $nms::config::ios_pass)) { + warn "Can't login to $host. Wrong username or password?"; + return (); + } + $ios->autopage(0); + $ios->cmd("terminal length 0"); + my @v6data = $ios->cmd('show ipv6 neighbors') + or warn "$host wouldn't let me run show ipv6 neighbors."; + my @v4data = $ios->cmd('show ip arp') + or warn "$host wouldn't let me run show ip arp."; + + # Remove useless header and footer +# shift @v6data; + pop @v6data; +# shift @v4data; + pop @v4data; + + return { 'v6' => \@v6data, 'v4' => \@v4data }; +} + +while (1) { + print "Gathering IPv6 and IPv4 stats\n"; + # Connect to DB + my $dbh = nms::db_connect(); + $dbh->{AutoCommit} = 0; + + my ($v4, $v6) = 0; + foreach my $router (@nms::config::distrobox_ips) { + my $data = query_router($router); + # IPv6 + foreach my $line (@{$data->{'v6'}}) { + my ($address, $age, $mac, undef, undef) = split('\s+', $line); + if ($mac =~ /[a-f0-9]{4}\.[a-f0-9]{4}\.[a-f0-9]{4}/ && # Sanity check MAC address + $address !~ /^FE.*/) { # Filter out non-routable addresses + my $q = $dbh->prepare('INSERT INTO ipv6 (address, age, mac, time) VALUES (?, ?, ?, timeofday()::timestamp)') + or die "Can't prepare query: $!"; + $q->execute($address, $age, $mac) + or die "Can't execute query: $!"; + $v6++; + } + } + # IPv4 + foreach my $line (@{$data->{'v4'}}) { + my (undef, $address, $age, $mac, undef, undef) = split('\s+', $line); + if ($mac =~ /[a-f0-9]{4}\.[a-f0-9]{4}\.[a-f0-9]{4}/) {# Sanity check MAC address + $age = 0 if $age eq '-'; + my $q = $dbh->prepare('INSERT INTO ipv4 (address, age, mac, time) VALUES (?, ?, ?, timeofday()::timestamp)') + or die "Can't prepare query: $!"; + $q->execute($address, $age, $mac) + or die "Can't execute query: $!"; + $v4++; + } + } + } + print "Added $v6 IPv6 addresses and $v4 IPv4 addresses.\n"; + $dbh->commit; + $dbh->disconnect; + + print "Sleeping for two minutes.\n"; + sleep 120; # Sleep for two minutes +} diff --git a/clients/portnames.pl b/clients/portnames.pl new file mode 100755 index 0000000..2b29189 --- /dev/null +++ b/clients/portnames.pl @@ -0,0 +1,18 @@ +#! /usr/bin/perl + +my ($host,$switchtype,$community) = @ARGV; + +open SNMP, "snmpwalk -Os -c $community -v 2c $host ifDescr |" + or die "snmpwalk: $!"; + +print "begin;\n"; +print "delete from portnames where switchtype='$switchtype';\n"; + +while (<SNMP>) { + chomp; + /^ifDescr\.(\d+) = STRING: (.*)$/ or next; + + print "insert into portnames (switchtype,port,description) values ('$switchtype',$1,'$2 (port $1)');\n"; +} + +print "end;\n"; diff --git a/clients/smanagrun.pl b/clients/smanagrun.pl new file mode 100755 index 0000000..4d03696 --- /dev/null +++ b/clients/smanagrun.pl @@ -0,0 +1,167 @@ +#!/usr/bin/perl +# +# + +use warnings; +use strict; +use Net::Telnet; +use DBI; +use POSIX; +use lib '../include'; +use nms; +use Data::Dumper::Simple; + +BEGIN { + require "../include/config.pm"; + eval { + require "../include/config.local.pm"; + }; +} +# Tweak and check +my $password = ''; +my $timeout = 15; +my $delaytime = 30; +my $poll_frequency = 60; + +my $dbh = db_connect(); +$dbh->{AutoCommit} = 0; + +my $spoll = $dbh->prepare(" +SELECT + addr, + sysname +FROM + squeue +WHERE + processed = 'f' AND + disabled = 'f' AND + (locked='f' OR now() - updated > '10 minutes'::interval) AND + (delay IS NULL OR delay < now()) +ORDER BY + priority DESC, + added +LIMIT 1"); +my $sgetallpoll = $dbh->prepare(" +SELECT + id, + gid, + addr, + sysname, + cmd +FROM + squeue +WHERE + sysname = ? AND + disabled = 'f' AND + processed = 'f' +ORDER BY + priority DESC, + added"); + +my $slock = $dbh->prepare("UPDATE squeue SET locked = 't', updated=now() WHERE sysname = ?") + or die "Unable to prepare slock"; +my $sunlock = $dbh->prepare("UPDATE squeue SET locked = 'f', updated=now() WHERE sysname = ?") + or die "Unable to prepare sunlock"; +my $sresult = $dbh->prepare("UPDATE squeue SET updated = now(), result = ?, + processed = 't' WHERE id = ?") + or die "Unable to prepare sresult"; +my $sdelay = $dbh->prepare("UPDATE squeue SET delay = now() + delaytime, updated=now(), result = ? WHERE sysname = ?") + or die "Unable to prepae sdelay"; + +## Send a command to switch and return the data recvied from the switch +#sub switch_exec($$) { +# my ($cmd, $conn) = @_; +# +# # Send the command and get data from switch +# my @data = $conn->cmd($cmd); +# my @lines = (); +# foreach my $line (@data) { +# # Remove escape-7 sequence +# $line =~ s/\x1b\x37//g; +# push (@lines, $line); +# } +# +# return @data; +#} +# +#sub switch_connect($) { +# my ($ip) = @_; +# +# my $conn = new Net::Telnet( Timeout => $timeout, +# Dump_Log => '/tmp/dumplog-queue', +# Errmode => 'return', +# Prompt => '/DGS-3100\#/i'); +# my $ret = $conn->open( Host => $ip); +# if (!$ret || $ret != 1) { +# return (undef); +# } +# # XXX: Just send the password as text, I did not figure out how to +# # handle authentication with only password through $conn->login(). +# #$conn->login(»·Prompt => '/password[: ]*$/i', +# # Name => $password, +# # Password => $password); +# $conn->cmd($password); +# # Get rid of banner +# $conn->get; +# return ($conn); +#} +# +sub mylog { + my $msg = shift; + my $time = POSIX::ctime(time); + $time =~ s/\n.*$//; + printf STDERR "[%s] %s\n", $time, $msg; +} + +while (1) { + $spoll->execute() or die "Could not execute spoll"; + my $switch = $spoll->fetchrow_hashref(); + if (!defined($switch)) { + $dbh->commit; + mylog("No available switches in pool, sleeping."); + sleep 10; + next; + } + $slock->execute($switch->{sysname}); + $dbh->commit(); + + if ($switch->{'locked'}) { + mylog("WARNING: Lock timed out on $switch->{'ip'}, breaking lock"); + } + + mylog("Connecting to $switch->{sysname} on $switch->{addr}"); + my $conn = switch_connect($switch->{addr}); + if (!defined($conn)) { + mylog("Could not connect to ".$switch->{sysname}."(".$switch->{addr}.")"); + $sdelay->execute("Could not connect to switch, delaying...", $switch->{sysname}); + $sunlock->execute($switch->{sysname}); + $dbh->commit(); + next; + } + my $error; + $error = $sgetallpoll->execute($switch->{sysname}); + if (!$error) { + print "Could not execute sgetallpoll\n".$dbh->errstr(); + $conn->close; + next; + } + while (my $row = $sgetallpoll->fetchrow_hashref()) { + print "sysname: ".$row->{sysname}." cmd: ".$row->{cmd}."\n"; + my @data; + my @commands = split(/[\r\n\000]+/, $row->{cmd}); + for my $cmd (@commands) { + next unless $cmd =~ /\S/; # ignorer linjer med kun whitespace + push @data, "# $cmd"; + if ($cmd =~ s/^!//) { + push @data, switch_exec($cmd, $conn, 1); + } else { + push @data, switch_exec($cmd, $conn); + } + } + my $result = join("\n", @data); + $sresult->execute($result, $row->{id}); + } + $conn->close(); + $sunlock->execute($switch->{sysname}); +} + diff --git a/clients/snmp.sql b/clients/snmp.sql new file mode 100644 index 0000000..47b4458 --- /dev/null +++ b/clients/snmp.sql @@ -0,0 +1,24 @@ +create table switchtypes ( + switchtype varchar not null primary key, + ports varchar not null +); + +create table switches ( + switch serial not null primary key, + ip inet not null, + sysname varchar not null, + switchtype varchar not null references switchtypes, + last_updated timestamp, + locked boolean not null default 'f' +); + +create table poll ( + time timestamp not null, + switch integer not null references switches, + port integer not null, + bytes_in bigint not null, + bytes_out bigint not null, + + primary key ( time, switch, port ) +); +create index poll_switch_port on poll ( switch, port ); diff --git a/clients/snmpfetch.pl b/clients/snmpfetch.pl new file mode 100755 index 0000000..487ae11 --- /dev/null +++ b/clients/snmpfetch.pl @@ -0,0 +1,281 @@ +#! /usr/bin/perl +use BER; +use DBI; +use POSIX; +use Time::HiRes; +use Net::Telnet; +use strict; +use warnings; +require 'SNMP_Session.pm'; + +use lib '../include'; +use nms; +use threads; + +# normal mode: fetch switches from the database +# instant mode: poll the switches specified on the command line +if (defined($ARGV[0])) { + poll_loop(@ARGV); +} else { + my $threads = 50; + for (1..$threads) { + threads->create(\&poll_loop); + } + poll_loop(); +} + +sub poll_loop { + my @switches = @_; + my $instant = (scalar @switches > 0); + my $timeout = 15; + + my $dbh = nms::db_connect(); + $dbh->{AutoCommit} = 0; + + my $qualification; + if ($instant) { + $qualification = "sysname=?"; + } else { + $qualification = <<"EOF"; + (last_updated IS NULL OR now() - last_updated > poll_frequency) + AND (locked='f' OR now() - last_updated > '15 minutes'::interval) + AND ip is not null +EOF + } + + my $qswitch = $dbh->prepare(<<"EOF") +SELECT + *, + DATE_TRUNC('second', now() - last_updated - poll_frequency) AS overdue +FROM + switches + NATURAL LEFT JOIN switchtypes +WHERE $qualification +ORDER BY + priority DESC, + overdue DESC +LIMIT 1 +FOR UPDATE OF switches +EOF + or die "Couldn't prepare qswitch"; + my $qlock = $dbh->prepare("UPDATE switches SET locked='t', last_updated=now() WHERE switch=?") + or die "Couldn't prepare qlock"; + my $qunlock = $dbh->prepare("UPDATE switches SET locked='f', last_updated=now() WHERE switch=?") + or die "Couldn't prepare qunlock"; + my $qpoll = $dbh->prepare("INSERT INTO polls (time, switch, port, bytes_in, bytes_out, errors_in, errors_out) VALUES (timeofday()::timestamp,?,?,?,?,?,?)") + or die "Couldn't prepare qpoll"; + my $qtemppoll = $dbh->prepare("INSERT INTO temppoll (time, switch, temp) VALUES (timeofday()::timestamp,?::text::int,?::text::float)") + or die "Couldn't prepare qtemppoll"; + my $qcpupoll = $dbh->prepare("INSERT INTO cpuloadpoll (time, switch, entity, value) VALUES (timeofday()::timestamp,?::text::int,?,?)") + or die "Couldn't prepare qtemppoll"; + + while (1) { + my $sysname; + if ($instant) { + $sysname = shift @ARGV; + exit if (!defined($sysname)); + $qswitch->execute($sysname) + or die "Couldn't get switch"; + } else { + # Find a switch to grab + $qswitch->execute() + or die "Couldn't get switch"; + } + my $switch = $qswitch->fetchrow_hashref(); + + if (!defined($switch)) { + $dbh->commit; + + if ($instant) { + mylog("No such switch $sysname available, quitting."); + exit; + } else { + mylog("No available switches in pool, sleeping."); + sleep 15; + next; + } + } + + $qlock->execute($switch->{'switch'}) + or die "Couldn't lock switch"; + $dbh->commit; + + if ($switch->{'locked'}) { + mylog("WARNING: Lock timed out on $switch->{'ip'}, breaking lock"); + } + + my $msg; + if (defined($switch->{'overdue'})) { + $msg = sprintf "Polling ports %s on %s (%s), %s overdue.", + $switch->{'ports'}, $switch->{'ip'}, $switch->{'sysname'}, $switch->{'overdue'}; + } else { + $msg = sprintf "Polling ports %s on %s (%s), never polled before.", + $switch->{'ports'}, $switch->{'ip'}, $switch->{'sysname'}; + } + mylog($msg); + + my $ip = $switch->{'ip'}; + + if ($ip eq '127.0.0.1') { + mylog("Polling disabled for this switch, skipping."); + $qunlock->execute($switch->{'switch'}) + or die "Couldn't unlock switch"; + $dbh->commit; + next; + } + + my $community = $switch->{'community'}; + my $start = [Time::HiRes::gettimeofday]; + eval { + my $session; + if ($switch->{'wide_counters'}) { + $session = SNMPv2c_Session->open($ip, $community, 161) + or die "Couldn't talk to switch"; + } else { + $session = SNMP_Session->open($ip, $community, 161) + or die "Couldn't talk to switch"; + } + my @ports = expand_ports($switch->{'ports'}); + + for my $port (@ports) { + my $in = fetch_data($session, $port, 0, $switch->{'wide_counters'}); + die $switch->{'switch'}.":$port: failed reading in" if !defined $in; + my $out = fetch_data($session, $port, 1, $switch->{'wide_counters'}); + die $switch->{'switch'}.":$port: failed reading out" if !defined $out; + my $ine = fetch_errors($session, $port, 0); + die $switch->{'switch'}. ":$port: failed reading in-errors" if !defined $ine; + my $oute = fetch_errors($session, $port, 1); + die $switch->{'switch'}. ":$port: failed reading out-errors" if !defined $oute; + + $qpoll->execute($switch->{'switch'}, $port, $in, $out, $ine, $oute) || die "%s:%s: %s\n", $switch->{'switch'}, $port, $in; + } + $session->close; + }; + if ($@) { + mylog("ERROR: $@ (during poll of $ip)"); + $dbh->rollback; + } + + my $elapsed = Time::HiRes::tv_interval($start); + $msg = sprintf "Polled $switch->{'ip'} in %5.3f seconds.", $elapsed; + mylog($msg); + + $qunlock->execute($switch->{'switch'}) + or warn "Couldn't unlock switch"; + $dbh->commit; + } +} + +sub fetch_data { + my ($session, $port, $out, $wide_counters) = @_; + + my $oid; + if ($wide_counters) { + if ($out) { + $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 10, $port); # interfaces.ifTable.ifEntry.ifHCOutOctets + } else { + $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 31, 1, 1, 1, 6, $port); # interfaces.ifTable.ifEntry.ifHCInOctets + } + } else { + if ($out) { + $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 2, 2, 1, 16, $port); # interfaces.ifTable.ifEntry.ifOutOctets + } else { + $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 2, 2, 1, 10, $port); # interfaces.ifTable.ifEntry.ifInOctets + } + } + + return fetch_snmp($session, $oid); +} +sub fetch_errors { + my ($session, $port, $out) = @_; + + my $oid; + if ($out) { + $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 2, 2, 1, 20, $port); # interfaces.ifTable.ifEntry.ifOutErrors + } else { + $oid = BER::encode_oid(1, 3, 6, 1, 2, 1, 2, 2, 1, 14, $port); # interfaces.ifTable.ifEntry.ifInErrors + } + + return fetch_snmp($session, $oid); +} + +sub fetch_snmp { + my ($session, $oid) = @_; + + if ($session->get_request_response($oid)) { + my ($bindings) = $session->decode_get_response ($session->{pdu_buffer}); + my $binding; + while ($bindings ne '') { + ($binding,$bindings) = &decode_sequence ($bindings); + my ($oid,$value) = &decode_by_template ($binding, "%O%@"); + return BER::pretty_print($value); + } + } + die "Couldn't get info from switch"; +} + +sub expand_ports { + my $in = shift; + my @ranges = split /,/, $in; + my @ret = (); + + for my $range (@ranges) { + if ($range =~ /^\d+$/) { + push @ret, $range; + } elsif ($range =~ /^(\d+)-(\d+)$/) { + for my $i ($1..$2) { + push @ret, $i; + } + } else { + die "Couldn't understand '$range' in ports"; + } + } + + return (sort { $a <=> $b } @ret); +} + +sub mylog { + my $msg = shift; + my $time = POSIX::ctime(time); + $time =~ s/\n.*$//; + printf STDERR "[%s] %s\n", $time, $msg; +} + +#sub switch_exec { +# my ($cmd, $conn) = @_; +# +# # Send the command and get data from switch +## $conn->dump_log(*STDOUT); +# my @data = $conn->cmd($cmd); +# my @lines = (); +# foreach my $line (@data) { +# # Remove escape-7 sequence +# $line =~ s/\x1b\x37//g; +# push @lines, $line; +# } +# +# return @lines; +#} + +#sub switch_connect { +# my ($ip) = @_; +# +# my $conn = new Net::Telnet( Timeout => $timeout, +# Dump_Log => '/tmp/dumplog-tempfetch', +# Errmode => 'return', +# Prompt => '/es-3024|e(\-)?\d+\-\dsw>/i'); +# my $ret = $conn->open( Host => $ip); +# if (!$ret || $ret != 1) { +# return (0); +# } +# # XXX: Just send the password as text, I did not figure out how to +# # handle authentication with only password through $conn->login(). +# #$conn->login( Prompt => '/password[: ]*$/i', +# # Name => $password, +# # Password => $password); +# my @data = $conn->cmd($password); +# # Get rid of banner +# $conn->get; +# return $conn; +#} + diff --git a/clients/update-public-nms.sh b/clients/update-public-nms.sh new file mode 100755 index 0000000..ed1807c --- /dev/null +++ b/clients/update-public-nms.sh @@ -0,0 +1,12 @@ +#!/bin/sh +DIR=/srv/www/nms-public.tg13.gathering.org + +wget -qO$DIR/nettkart-trafikk.png.new http://nms.tg13.gathering.org/nettkart.pl +wget -qO$DIR/nettkart-dhcp.png.new http://nms.tg13.gathering.org/dhcpkart.pl +wget -qO$DIR/led.txt.new http://nms.tg13.gathering.org/led.pl +mv $DIR/nettkart-trafikk.png.new $DIR/nettkart-trafikk.png +mv $DIR/nettkart-dhcp.png.new $DIR/nettkart-dhcp.png +mv $DIR/led.txt.new $DIR/led.txt + +/usr/bin/perl -i -pe 'use POSIX qw(strftime); my $timestamp = strftime("%a, %d %b %Y %H:%M:%S %z", localtime(time())); s/Sist oppdatert:.*/Sist oppdatert: $timestamp/g;' /srv/www/nms-public.tg13.gathering.org/dhcp.html +/usr/bin/perl -i -pe 'use POSIX qw(strftime); my $timestamp = strftime("%a, %d %b %Y %H:%M:%S %z", localtime(time())); s/Sist oppdatert:.*/Sist oppdatert: $timestamp/g;' /srv/www/nms-public.tg13.gathering.org/trafikk.html diff --git a/clients/update-switch-placements.pl b/clients/update-switch-placements.pl new file mode 100644 index 0000000..d635f87 --- /dev/null +++ b/clients/update-switch-placements.pl @@ -0,0 +1,53 @@ +#! /usr/bin/perl + +print "begin;\n"; +print "delete from placements;\n"; + +open PATCHLIST, "../patchlist.txt" + or die "../patchlist.txt: $!"; + +my $RANGE = "87.76."; + +my $i = 1; +while (<PATCHLIST>) { + chomp; + my ($name, $distro, $port) = split / /; + + $name =~ /e(\d+)-(\d+)/; + my ($e, $s) = ($1, $2); + + my $x = int(168 + $e * 11); + my $y; + + $x += 1 if ($e >= 11); + $x += 2 if ($e >= 15); + $x += 2 if ($e >= 15 && $e < 45 && $s > 2); + $x += 2 if ($e >= 21); + $x += 2 if ($e >= 27 && $e < 45 && $s > 2); + $x += 9 if ($e >= 29); + $x += 1 if ($e >= 31); + $x += 2 if ($e >= 35); + $x += 15 if ($e >= 45); + $x += 2 if ($e >= 51); + $x += 11 if ($e >= 61); + $x += 1 if ($e >= 67); + $x += 1 if ($e >= 71); + $x += 1 if ($e >= 75); + $x += 1 if ($e >= 81); + + if ($s > 2) { + $y = 152 + 88 - 88 * ($s-3); + } else { + $y = 357 + 88 - 88 * ($s-1); + } + + my $xx = $x + 16; + my $yy = $y + 88; + + # Justeringer + + print "insert into placements (switch, placement) values ($i, box '(($x,$y),($xx,$yy))');\n"; + $i++; +} + +print "end;\n"; diff --git a/dhcp/README b/dhcp/README new file mode 100644 index 0000000..9675ea0 --- /dev/null +++ b/dhcp/README @@ -0,0 +1,7 @@ +P + +"Jag fÃ¥r ingen DHCP!" -- http://files.jocke.no/b/ingen-dhcp.jpg + +This directory is a copy of our install, please do not use these directly! +It is provided to show you what the scripts are generating for you… + diff --git a/dhcp/ciscowlc.conf b/dhcp/ciscowlc.conf new file mode 100644 index 0000000..2e06179 --- /dev/null +++ b/dhcp/ciscowlc.conf @@ -0,0 +1,9 @@ +option space CiscoAP; +option CiscoAP.server-address code 241 = array of ip-address; +set vendor-string = option vendor-class-identifier; + +class "cisco-aps" { + match if substring (option vendor-class-identifier, 0, 8) = "Cisco AP"; + vendor-option-space CiscoAP; + option CiscoAP.server-address 151.216.125.21,151.216.125.22; +} diff --git a/dhcp/conf.d/ap-dist0.conf b/dhcp/conf.d/ap-dist0.conf new file mode 100644 index 0000000..e370d08 --- /dev/null +++ b/dhcp/conf.d/ap-dist0.conf @@ -0,0 +1,14 @@ +zone ap-dist0.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.116.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.116.1; + option domain-name "ap-dist0.tg13.gathering.org"; + ddns-domainname "ap-dist0.tg13.gathering.org"; + range 151.216.116.5 151.216.116.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/ap-dist1.conf b/dhcp/conf.d/ap-dist1.conf new file mode 100644 index 0000000..5294af2 --- /dev/null +++ b/dhcp/conf.d/ap-dist1.conf @@ -0,0 +1,14 @@ +zone ap-dist1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.116.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.116.65; + option domain-name "ap-dist1.tg13.gathering.org"; + ddns-domainname "ap-dist1.tg13.gathering.org"; + range 151.216.116.69 151.216.116.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/ap-dist2.conf b/dhcp/conf.d/ap-dist2.conf new file mode 100644 index 0000000..0a16ca9 --- /dev/null +++ b/dhcp/conf.d/ap-dist2.conf @@ -0,0 +1,14 @@ +zone ap-dist2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.116.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.116.129; + option domain-name "ap-dist2.tg13.gathering.org"; + ddns-domainname "ap-dist2.tg13.gathering.org"; + range 151.216.116.133 151.216.116.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/ap-dist3.conf b/dhcp/conf.d/ap-dist3.conf new file mode 100644 index 0000000..ec88126 --- /dev/null +++ b/dhcp/conf.d/ap-dist3.conf @@ -0,0 +1,14 @@ +zone ap-dist3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.116.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.116.193; + option domain-name "ap-dist3.tg13.gathering.org"; + ddns-domainname "ap-dist3.tg13.gathering.org"; + range 151.216.116.197 151.216.116.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/ap-dist4.conf b/dhcp/conf.d/ap-dist4.conf new file mode 100644 index 0000000..8e76846 --- /dev/null +++ b/dhcp/conf.d/ap-dist4.conf @@ -0,0 +1,14 @@ +zone ap-dist4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.117.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.117.1; + option domain-name "ap-dist4.tg13.gathering.org"; + ddns-domainname "ap-dist4.tg13.gathering.org"; + range 151.216.117.5 151.216.117.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/care.conf b/dhcp/conf.d/care.conf new file mode 100644 index 0000000..8f9ae38 --- /dev/null +++ b/dhcp/conf.d/care.conf @@ -0,0 +1,14 @@ +zone care.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.104.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.104.1; + option domain-name "care.tg13.gathering.org"; + ddns-domainname "care.tg13.gathering.org"; + range 151.216.104.5 151.216.104.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/chillout.conf b/dhcp/conf.d/chillout.conf new file mode 100644 index 0000000..a1c8828 --- /dev/null +++ b/dhcp/conf.d/chillout.conf @@ -0,0 +1,18 @@ +zone chillout.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.55.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.55.1; + option domain-name "chillout.tg13.gathering.org"; + ddns-domainname "chillout.tg13.gathering.org"; + range 151.216.55.5 151.216.55.254; + ignore client-updates; +} + +host compo { hardware ethernet 52:54:00:f4:fa:3c; fixed-address 151.216.55.54; } +host tgpc { hardware ethernet 52:54:00:b7:45:98; fixed-address 151.216.55.61; } +host hack { hardware ethernet 52:54:00:84:ba:b9; fixed-address 151.216.55.56; } + diff --git a/dhcp/conf.d/creativia.conf b/dhcp/conf.d/creativia.conf new file mode 100644 index 0000000..d9d4bf1 --- /dev/null +++ b/dhcp/conf.d/creativia.conf @@ -0,0 +1,14 @@ +zone creativia.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.50.0 netmask 255.255.254.0 { + authoritative; + option routers 151.216.50.1; + option domain-name "creativia.tg13.gathering.org"; + ddns-domainname "creativia.tg13.gathering.org"; + range 151.216.50.21 151.216.51.253; + ignore client-updates; +} + diff --git a/dhcp/conf.d/crew1.conf b/dhcp/conf.d/crew1.conf new file mode 100644 index 0000000..0065c70 --- /dev/null +++ b/dhcp/conf.d/crew1.conf @@ -0,0 +1,14 @@ +zone crew1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.46.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.46.1; + option domain-name "crew1.tg13.gathering.org"; + ddns-domainname "crew1.tg13.gathering.org"; + range 151.216.46.5 151.216.46.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/crew2.conf b/dhcp/conf.d/crew2.conf new file mode 100644 index 0000000..86687c6 --- /dev/null +++ b/dhcp/conf.d/crew2.conf @@ -0,0 +1,14 @@ +zone crew2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.46.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.46.129; + option domain-name "crew2.tg13.gathering.org"; + ddns-domainname "crew2.tg13.gathering.org"; + range 151.216.46.133 151.216.46.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/crew3.conf b/dhcp/conf.d/crew3.conf new file mode 100644 index 0000000..94472b5 --- /dev/null +++ b/dhcp/conf.d/crew3.conf @@ -0,0 +1,14 @@ +zone crew3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.47.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.47.1; + option domain-name "crew3.tg13.gathering.org"; + ddns-domainname "crew3.tg13.gathering.org"; + range 151.216.47.5 151.216.47.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/crew4.conf b/dhcp/conf.d/crew4.conf new file mode 100644 index 0000000..4abbfb1 --- /dev/null +++ b/dhcp/conf.d/crew4.conf @@ -0,0 +1,14 @@ +zone crew4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.47.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.47.129; + option domain-name "crew4.tg13.gathering.org"; + ddns-domainname "crew4.tg13.gathering.org"; + range 151.216.47.133 151.216.47.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/crew5.conf b/dhcp/conf.d/crew5.conf new file mode 100644 index 0000000..177340d --- /dev/null +++ b/dhcp/conf.d/crew5.conf @@ -0,0 +1,14 @@ +zone crew5.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.48.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.48.1; + option domain-name "crew5.tg13.gathering.org"; + ddns-domainname "crew5.tg13.gathering.org"; + range 151.216.48.5 151.216.48.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/crew6.conf b/dhcp/conf.d/crew6.conf new file mode 100644 index 0000000..5857c12 --- /dev/null +++ b/dhcp/conf.d/crew6.conf @@ -0,0 +1,14 @@ +zone crew6.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.48.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.48.129; + option domain-name "crew6.tg13.gathering.org"; + ddns-domainname "crew6.tg13.gathering.org"; + range 151.216.48.133 151.216.48.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/defektraid.conf b/dhcp/conf.d/defektraid.conf new file mode 100644 index 0000000..6754fdb --- /dev/null +++ b/dhcp/conf.d/defektraid.conf @@ -0,0 +1,14 @@ +zone defektraid.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.56.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.56.1; + option domain-name "defektraid.tg13.gathering.org"; + ddns-domainname "defektraid.tg13.gathering.org"; + range 151.216.56.5 151.216.56.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e1-3.conf b/dhcp/conf.d/e1-3.conf new file mode 100644 index 0000000..3b4b1ee --- /dev/null +++ b/dhcp/conf.d/e1-3.conf @@ -0,0 +1,14 @@ +zone e1-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.1.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.1.1; + option domain-name "e1-3.tg13.gathering.org"; + ddns-domainname "e1-3.tg13.gathering.org"; + range 151.216.1.5 151.216.1.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e1-4.conf b/dhcp/conf.d/e1-4.conf new file mode 100644 index 0000000..58c2468 --- /dev/null +++ b/dhcp/conf.d/e1-4.conf @@ -0,0 +1,14 @@ +zone e1-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.1.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.1.65; + option domain-name "e1-4.tg13.gathering.org"; + ddns-domainname "e1-4.tg13.gathering.org"; + range 151.216.1.69 151.216.1.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e11-1.conf b/dhcp/conf.d/e11-1.conf new file mode 100644 index 0000000..101b566 --- /dev/null +++ b/dhcp/conf.d/e11-1.conf @@ -0,0 +1,14 @@ +zone e11-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.3.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.3.129; + option domain-name "e11-1.tg13.gathering.org"; + ddns-domainname "e11-1.tg13.gathering.org"; + range 151.216.3.133 151.216.3.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e11-2.conf b/dhcp/conf.d/e11-2.conf new file mode 100644 index 0000000..7bfaa16 --- /dev/null +++ b/dhcp/conf.d/e11-2.conf @@ -0,0 +1,14 @@ +zone e11-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.3.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.3.193; + option domain-name "e11-2.tg13.gathering.org"; + ddns-domainname "e11-2.tg13.gathering.org"; + range 151.216.3.197 151.216.3.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e11-3.conf b/dhcp/conf.d/e11-3.conf new file mode 100644 index 0000000..61f2b31 --- /dev/null +++ b/dhcp/conf.d/e11-3.conf @@ -0,0 +1,14 @@ +zone e11-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.4.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.4.1; + option domain-name "e11-3.tg13.gathering.org"; + ddns-domainname "e11-3.tg13.gathering.org"; + range 151.216.4.5 151.216.4.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e11-4.conf b/dhcp/conf.d/e11-4.conf new file mode 100644 index 0000000..bb36c33 --- /dev/null +++ b/dhcp/conf.d/e11-4.conf @@ -0,0 +1,14 @@ +zone e11-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.4.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.4.65; + option domain-name "e11-4.tg13.gathering.org"; + ddns-domainname "e11-4.tg13.gathering.org"; + range 151.216.4.69 151.216.4.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e13-1.conf b/dhcp/conf.d/e13-1.conf new file mode 100644 index 0000000..40e2ed6 --- /dev/null +++ b/dhcp/conf.d/e13-1.conf @@ -0,0 +1,14 @@ +zone e13-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.4.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.4.129; + option domain-name "e13-1.tg13.gathering.org"; + ddns-domainname "e13-1.tg13.gathering.org"; + range 151.216.4.133 151.216.4.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e13-2.conf b/dhcp/conf.d/e13-2.conf new file mode 100644 index 0000000..efbf536 --- /dev/null +++ b/dhcp/conf.d/e13-2.conf @@ -0,0 +1,14 @@ +zone e13-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.4.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.4.193; + option domain-name "e13-2.tg13.gathering.org"; + ddns-domainname "e13-2.tg13.gathering.org"; + range 151.216.4.197 151.216.4.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e13-3.conf b/dhcp/conf.d/e13-3.conf new file mode 100644 index 0000000..779d607 --- /dev/null +++ b/dhcp/conf.d/e13-3.conf @@ -0,0 +1,14 @@ +zone e13-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.5.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.5.1; + option domain-name "e13-3.tg13.gathering.org"; + ddns-domainname "e13-3.tg13.gathering.org"; + range 151.216.5.5 151.216.5.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e13-4.conf b/dhcp/conf.d/e13-4.conf new file mode 100644 index 0000000..432173d --- /dev/null +++ b/dhcp/conf.d/e13-4.conf @@ -0,0 +1,14 @@ +zone e13-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.5.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.5.65; + option domain-name "e13-4.tg13.gathering.org"; + ddns-domainname "e13-4.tg13.gathering.org"; + range 151.216.5.69 151.216.5.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e15-1.conf b/dhcp/conf.d/e15-1.conf new file mode 100644 index 0000000..4b377c0 --- /dev/null +++ b/dhcp/conf.d/e15-1.conf @@ -0,0 +1,14 @@ +zone e15-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.5.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.5.129; + option domain-name "e15-1.tg13.gathering.org"; + ddns-domainname "e15-1.tg13.gathering.org"; + range 151.216.5.133 151.216.5.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e15-2.conf b/dhcp/conf.d/e15-2.conf new file mode 100644 index 0000000..5cfa45f --- /dev/null +++ b/dhcp/conf.d/e15-2.conf @@ -0,0 +1,14 @@ +zone e15-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.5.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.5.193; + option domain-name "e15-2.tg13.gathering.org"; + ddns-domainname "e15-2.tg13.gathering.org"; + range 151.216.5.197 151.216.5.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e15-3.conf b/dhcp/conf.d/e15-3.conf new file mode 100644 index 0000000..2463d5d --- /dev/null +++ b/dhcp/conf.d/e15-3.conf @@ -0,0 +1,14 @@ +zone e15-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.6.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.6.1; + option domain-name "e15-3.tg13.gathering.org"; + ddns-domainname "e15-3.tg13.gathering.org"; + range 151.216.6.5 151.216.6.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e15-4.conf b/dhcp/conf.d/e15-4.conf new file mode 100644 index 0000000..5a3895b --- /dev/null +++ b/dhcp/conf.d/e15-4.conf @@ -0,0 +1,14 @@ +zone e15-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.6.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.6.65; + option domain-name "e15-4.tg13.gathering.org"; + ddns-domainname "e15-4.tg13.gathering.org"; + range 151.216.6.69 151.216.6.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e17-1.conf b/dhcp/conf.d/e17-1.conf new file mode 100644 index 0000000..1ad1721 --- /dev/null +++ b/dhcp/conf.d/e17-1.conf @@ -0,0 +1,14 @@ +zone e17-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.6.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.6.129; + option domain-name "e17-1.tg13.gathering.org"; + ddns-domainname "e17-1.tg13.gathering.org"; + range 151.216.6.133 151.216.6.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e17-2.conf b/dhcp/conf.d/e17-2.conf new file mode 100644 index 0000000..96e1627 --- /dev/null +++ b/dhcp/conf.d/e17-2.conf @@ -0,0 +1,14 @@ +zone e17-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.6.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.6.193; + option domain-name "e17-2.tg13.gathering.org"; + ddns-domainname "e17-2.tg13.gathering.org"; + range 151.216.6.197 151.216.6.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e17-3.conf b/dhcp/conf.d/e17-3.conf new file mode 100644 index 0000000..0db96f9 --- /dev/null +++ b/dhcp/conf.d/e17-3.conf @@ -0,0 +1,14 @@ +zone e17-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.7.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.7.1; + option domain-name "e17-3.tg13.gathering.org"; + ddns-domainname "e17-3.tg13.gathering.org"; + range 151.216.7.5 151.216.7.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e17-4.conf b/dhcp/conf.d/e17-4.conf new file mode 100644 index 0000000..e191771 --- /dev/null +++ b/dhcp/conf.d/e17-4.conf @@ -0,0 +1,14 @@ +zone e17-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.7.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.7.65; + option domain-name "e17-4.tg13.gathering.org"; + ddns-domainname "e17-4.tg13.gathering.org"; + range 151.216.7.69 151.216.7.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e19-1.conf b/dhcp/conf.d/e19-1.conf new file mode 100644 index 0000000..0940e48 --- /dev/null +++ b/dhcp/conf.d/e19-1.conf @@ -0,0 +1,14 @@ +zone e19-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.7.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.7.129; + option domain-name "e19-1.tg13.gathering.org"; + ddns-domainname "e19-1.tg13.gathering.org"; + range 151.216.7.133 151.216.7.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e19-2.conf b/dhcp/conf.d/e19-2.conf new file mode 100644 index 0000000..5210c72 --- /dev/null +++ b/dhcp/conf.d/e19-2.conf @@ -0,0 +1,14 @@ +zone e19-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.7.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.7.193; + option domain-name "e19-2.tg13.gathering.org"; + ddns-domainname "e19-2.tg13.gathering.org"; + range 151.216.7.197 151.216.7.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e19-3.conf b/dhcp/conf.d/e19-3.conf new file mode 100644 index 0000000..462ecd4 --- /dev/null +++ b/dhcp/conf.d/e19-3.conf @@ -0,0 +1,14 @@ +zone e19-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.8.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.8.1; + option domain-name "e19-3.tg13.gathering.org"; + ddns-domainname "e19-3.tg13.gathering.org"; + range 151.216.8.5 151.216.8.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e19-4.conf b/dhcp/conf.d/e19-4.conf new file mode 100644 index 0000000..f4962c4 --- /dev/null +++ b/dhcp/conf.d/e19-4.conf @@ -0,0 +1,14 @@ +zone e19-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.8.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.8.65; + option domain-name "e19-4.tg13.gathering.org"; + ddns-domainname "e19-4.tg13.gathering.org"; + range 151.216.8.69 151.216.8.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e21-1.conf b/dhcp/conf.d/e21-1.conf new file mode 100644 index 0000000..1d62d54 --- /dev/null +++ b/dhcp/conf.d/e21-1.conf @@ -0,0 +1,14 @@ +zone e21-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.8.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.8.129; + option domain-name "e21-1.tg13.gathering.org"; + ddns-domainname "e21-1.tg13.gathering.org"; + range 151.216.8.133 151.216.8.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e21-2.conf b/dhcp/conf.d/e21-2.conf new file mode 100644 index 0000000..60d80d0 --- /dev/null +++ b/dhcp/conf.d/e21-2.conf @@ -0,0 +1,14 @@ +zone e21-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.8.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.8.193; + option domain-name "e21-2.tg13.gathering.org"; + ddns-domainname "e21-2.tg13.gathering.org"; + range 151.216.8.197 151.216.8.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e21-3.conf b/dhcp/conf.d/e21-3.conf new file mode 100644 index 0000000..2ef40b0 --- /dev/null +++ b/dhcp/conf.d/e21-3.conf @@ -0,0 +1,14 @@ +zone e21-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.9.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.9.1; + option domain-name "e21-3.tg13.gathering.org"; + ddns-domainname "e21-3.tg13.gathering.org"; + range 151.216.9.5 151.216.9.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e21-4.conf b/dhcp/conf.d/e21-4.conf new file mode 100644 index 0000000..84b41ce --- /dev/null +++ b/dhcp/conf.d/e21-4.conf @@ -0,0 +1,14 @@ +zone e21-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.9.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.9.65; + option domain-name "e21-4.tg13.gathering.org"; + ddns-domainname "e21-4.tg13.gathering.org"; + range 151.216.9.69 151.216.9.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e23-1.conf b/dhcp/conf.d/e23-1.conf new file mode 100644 index 0000000..7ce1f65 --- /dev/null +++ b/dhcp/conf.d/e23-1.conf @@ -0,0 +1,14 @@ +zone e23-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.9.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.9.129; + option domain-name "e23-1.tg13.gathering.org"; + ddns-domainname "e23-1.tg13.gathering.org"; + range 151.216.9.133 151.216.9.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e23-2.conf b/dhcp/conf.d/e23-2.conf new file mode 100644 index 0000000..458282c --- /dev/null +++ b/dhcp/conf.d/e23-2.conf @@ -0,0 +1,14 @@ +zone e23-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.9.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.9.193; + option domain-name "e23-2.tg13.gathering.org"; + ddns-domainname "e23-2.tg13.gathering.org"; + range 151.216.9.197 151.216.9.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e23-3.conf b/dhcp/conf.d/e23-3.conf new file mode 100644 index 0000000..8d0bd2e --- /dev/null +++ b/dhcp/conf.d/e23-3.conf @@ -0,0 +1,14 @@ +zone e23-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.10.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.10.1; + option domain-name "e23-3.tg13.gathering.org"; + ddns-domainname "e23-3.tg13.gathering.org"; + range 151.216.10.5 151.216.10.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e23-4.conf b/dhcp/conf.d/e23-4.conf new file mode 100644 index 0000000..6f85540 --- /dev/null +++ b/dhcp/conf.d/e23-4.conf @@ -0,0 +1,14 @@ +zone e23-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.10.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.10.65; + option domain-name "e23-4.tg13.gathering.org"; + ddns-domainname "e23-4.tg13.gathering.org"; + range 151.216.10.69 151.216.10.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e25-1.conf b/dhcp/conf.d/e25-1.conf new file mode 100644 index 0000000..ea2f617 --- /dev/null +++ b/dhcp/conf.d/e25-1.conf @@ -0,0 +1,14 @@ +zone e25-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.10.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.10.129; + option domain-name "e25-1.tg13.gathering.org"; + ddns-domainname "e25-1.tg13.gathering.org"; + range 151.216.10.133 151.216.10.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e25-2.conf b/dhcp/conf.d/e25-2.conf new file mode 100644 index 0000000..05a8e35 --- /dev/null +++ b/dhcp/conf.d/e25-2.conf @@ -0,0 +1,14 @@ +zone e25-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.10.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.10.193; + option domain-name "e25-2.tg13.gathering.org"; + ddns-domainname "e25-2.tg13.gathering.org"; + range 151.216.10.197 151.216.10.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e25-3.conf b/dhcp/conf.d/e25-3.conf new file mode 100644 index 0000000..5e134e2 --- /dev/null +++ b/dhcp/conf.d/e25-3.conf @@ -0,0 +1,14 @@ +zone e25-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.11.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.11.1; + option domain-name "e25-3.tg13.gathering.org"; + ddns-domainname "e25-3.tg13.gathering.org"; + range 151.216.11.5 151.216.11.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e25-4.conf b/dhcp/conf.d/e25-4.conf new file mode 100644 index 0000000..2b7ea20 --- /dev/null +++ b/dhcp/conf.d/e25-4.conf @@ -0,0 +1,14 @@ +zone e25-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.11.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.11.65; + option domain-name "e25-4.tg13.gathering.org"; + ddns-domainname "e25-4.tg13.gathering.org"; + range 151.216.11.69 151.216.11.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e27-1.conf b/dhcp/conf.d/e27-1.conf new file mode 100644 index 0000000..d08ae0b --- /dev/null +++ b/dhcp/conf.d/e27-1.conf @@ -0,0 +1,14 @@ +zone e27-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.11.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.11.129; + option domain-name "e27-1.tg13.gathering.org"; + ddns-domainname "e27-1.tg13.gathering.org"; + range 151.216.11.133 151.216.11.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e27-2.conf b/dhcp/conf.d/e27-2.conf new file mode 100644 index 0000000..71e41bc --- /dev/null +++ b/dhcp/conf.d/e27-2.conf @@ -0,0 +1,14 @@ +zone e27-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.11.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.11.193; + option domain-name "e27-2.tg13.gathering.org"; + ddns-domainname "e27-2.tg13.gathering.org"; + range 151.216.11.197 151.216.11.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e29-1.conf b/dhcp/conf.d/e29-1.conf new file mode 100644 index 0000000..19c69aa --- /dev/null +++ b/dhcp/conf.d/e29-1.conf @@ -0,0 +1,14 @@ +zone e29-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.12.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.12.1; + option domain-name "e29-1.tg13.gathering.org"; + ddns-domainname "e29-1.tg13.gathering.org"; + range 151.216.12.5 151.216.12.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e29-2.conf b/dhcp/conf.d/e29-2.conf new file mode 100644 index 0000000..838f6d1 --- /dev/null +++ b/dhcp/conf.d/e29-2.conf @@ -0,0 +1,14 @@ +zone e29-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.12.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.12.65; + option domain-name "e29-2.tg13.gathering.org"; + ddns-domainname "e29-2.tg13.gathering.org"; + range 151.216.12.69 151.216.12.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e3-3.conf b/dhcp/conf.d/e3-3.conf new file mode 100644 index 0000000..68d65f0 --- /dev/null +++ b/dhcp/conf.d/e3-3.conf @@ -0,0 +1,14 @@ +zone e3-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.1.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.1.129; + option domain-name "e3-3.tg13.gathering.org"; + ddns-domainname "e3-3.tg13.gathering.org"; + range 151.216.1.133 151.216.1.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e3-4.conf b/dhcp/conf.d/e3-4.conf new file mode 100644 index 0000000..cbb0fb5 --- /dev/null +++ b/dhcp/conf.d/e3-4.conf @@ -0,0 +1,14 @@ +zone e3-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.1.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.1.193; + option domain-name "e3-4.tg13.gathering.org"; + ddns-domainname "e3-4.tg13.gathering.org"; + range 151.216.1.197 151.216.1.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e31-1.conf b/dhcp/conf.d/e31-1.conf new file mode 100644 index 0000000..aa78d55 --- /dev/null +++ b/dhcp/conf.d/e31-1.conf @@ -0,0 +1,14 @@ +zone e31-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.12.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.12.129; + option domain-name "e31-1.tg13.gathering.org"; + ddns-domainname "e31-1.tg13.gathering.org"; + range 151.216.12.133 151.216.12.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e31-2.conf b/dhcp/conf.d/e31-2.conf new file mode 100644 index 0000000..ee8533e --- /dev/null +++ b/dhcp/conf.d/e31-2.conf @@ -0,0 +1,14 @@ +zone e31-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.12.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.12.193; + option domain-name "e31-2.tg13.gathering.org"; + ddns-domainname "e31-2.tg13.gathering.org"; + range 151.216.12.197 151.216.12.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e33-1.conf b/dhcp/conf.d/e33-1.conf new file mode 100644 index 0000000..b0807ee --- /dev/null +++ b/dhcp/conf.d/e33-1.conf @@ -0,0 +1,14 @@ +zone e33-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.13.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.13.1; + option domain-name "e33-1.tg13.gathering.org"; + ddns-domainname "e33-1.tg13.gathering.org"; + range 151.216.13.5 151.216.13.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e33-2.conf b/dhcp/conf.d/e33-2.conf new file mode 100644 index 0000000..d3ca1ce --- /dev/null +++ b/dhcp/conf.d/e33-2.conf @@ -0,0 +1,14 @@ +zone e33-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.13.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.13.65; + option domain-name "e33-2.tg13.gathering.org"; + ddns-domainname "e33-2.tg13.gathering.org"; + range 151.216.13.69 151.216.13.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e35-1.conf b/dhcp/conf.d/e35-1.conf new file mode 100644 index 0000000..b66a9fe --- /dev/null +++ b/dhcp/conf.d/e35-1.conf @@ -0,0 +1,14 @@ +zone e35-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.13.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.13.129; + option domain-name "e35-1.tg13.gathering.org"; + ddns-domainname "e35-1.tg13.gathering.org"; + range 151.216.13.133 151.216.13.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e35-2.conf b/dhcp/conf.d/e35-2.conf new file mode 100644 index 0000000..c890146 --- /dev/null +++ b/dhcp/conf.d/e35-2.conf @@ -0,0 +1,14 @@ +zone e35-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.13.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.13.193; + option domain-name "e35-2.tg13.gathering.org"; + ddns-domainname "e35-2.tg13.gathering.org"; + range 151.216.13.197 151.216.13.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e37-1.conf b/dhcp/conf.d/e37-1.conf new file mode 100644 index 0000000..b4b19ed --- /dev/null +++ b/dhcp/conf.d/e37-1.conf @@ -0,0 +1,14 @@ +zone e37-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.14.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.14.1; + option domain-name "e37-1.tg13.gathering.org"; + ddns-domainname "e37-1.tg13.gathering.org"; + range 151.216.14.5 151.216.14.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e37-2.conf b/dhcp/conf.d/e37-2.conf new file mode 100644 index 0000000..6186b64 --- /dev/null +++ b/dhcp/conf.d/e37-2.conf @@ -0,0 +1,14 @@ +zone e37-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.14.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.14.65; + option domain-name "e37-2.tg13.gathering.org"; + ddns-domainname "e37-2.tg13.gathering.org"; + range 151.216.14.69 151.216.14.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e39-1.conf b/dhcp/conf.d/e39-1.conf new file mode 100644 index 0000000..64f3f8a --- /dev/null +++ b/dhcp/conf.d/e39-1.conf @@ -0,0 +1,14 @@ +zone e39-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.14.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.14.129; + option domain-name "e39-1.tg13.gathering.org"; + ddns-domainname "e39-1.tg13.gathering.org"; + range 151.216.14.133 151.216.14.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e39-2.conf b/dhcp/conf.d/e39-2.conf new file mode 100644 index 0000000..f170fa5 --- /dev/null +++ b/dhcp/conf.d/e39-2.conf @@ -0,0 +1,14 @@ +zone e39-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.14.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.14.193; + option domain-name "e39-2.tg13.gathering.org"; + ddns-domainname "e39-2.tg13.gathering.org"; + range 151.216.14.197 151.216.14.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e41-1.conf b/dhcp/conf.d/e41-1.conf new file mode 100644 index 0000000..60047a5 --- /dev/null +++ b/dhcp/conf.d/e41-1.conf @@ -0,0 +1,14 @@ +zone e41-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.15.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.15.1; + option domain-name "e41-1.tg13.gathering.org"; + ddns-domainname "e41-1.tg13.gathering.org"; + range 151.216.15.5 151.216.15.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e41-2.conf b/dhcp/conf.d/e41-2.conf new file mode 100644 index 0000000..8bf803d --- /dev/null +++ b/dhcp/conf.d/e41-2.conf @@ -0,0 +1,14 @@ +zone e41-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.15.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.15.65; + option domain-name "e41-2.tg13.gathering.org"; + ddns-domainname "e41-2.tg13.gathering.org"; + range 151.216.15.69 151.216.15.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e43-1.conf b/dhcp/conf.d/e43-1.conf new file mode 100644 index 0000000..0859e67 --- /dev/null +++ b/dhcp/conf.d/e43-1.conf @@ -0,0 +1,14 @@ +zone e43-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.15.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.15.129; + option domain-name "e43-1.tg13.gathering.org"; + ddns-domainname "e43-1.tg13.gathering.org"; + range 151.216.15.133 151.216.15.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e43-2.conf b/dhcp/conf.d/e43-2.conf new file mode 100644 index 0000000..f5632c4 --- /dev/null +++ b/dhcp/conf.d/e43-2.conf @@ -0,0 +1,14 @@ +zone e43-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.15.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.15.193; + option domain-name "e43-2.tg13.gathering.org"; + ddns-domainname "e43-2.tg13.gathering.org"; + range 151.216.15.197 151.216.15.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e43-3.conf b/dhcp/conf.d/e43-3.conf new file mode 100644 index 0000000..cbb22b5 --- /dev/null +++ b/dhcp/conf.d/e43-3.conf @@ -0,0 +1,14 @@ +zone e43-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.16.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.16.1; + option domain-name "e43-3.tg13.gathering.org"; + ddns-domainname "e43-3.tg13.gathering.org"; + range 151.216.16.5 151.216.16.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e43-4.conf b/dhcp/conf.d/e43-4.conf new file mode 100644 index 0000000..3c1bb39 --- /dev/null +++ b/dhcp/conf.d/e43-4.conf @@ -0,0 +1,14 @@ +zone e43-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.16.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.16.65; + option domain-name "e43-4.tg13.gathering.org"; + ddns-domainname "e43-4.tg13.gathering.org"; + range 151.216.16.69 151.216.16.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e45-1.conf b/dhcp/conf.d/e45-1.conf new file mode 100644 index 0000000..0214ecd --- /dev/null +++ b/dhcp/conf.d/e45-1.conf @@ -0,0 +1,14 @@ +zone e45-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.16.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.16.129; + option domain-name "e45-1.tg13.gathering.org"; + ddns-domainname "e45-1.tg13.gathering.org"; + range 151.216.16.133 151.216.16.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e45-2.conf b/dhcp/conf.d/e45-2.conf new file mode 100644 index 0000000..e881d34 --- /dev/null +++ b/dhcp/conf.d/e45-2.conf @@ -0,0 +1,14 @@ +zone e45-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.16.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.16.193; + option domain-name "e45-2.tg13.gathering.org"; + ddns-domainname "e45-2.tg13.gathering.org"; + range 151.216.16.197 151.216.16.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e45-3.conf b/dhcp/conf.d/e45-3.conf new file mode 100644 index 0000000..e686d74 --- /dev/null +++ b/dhcp/conf.d/e45-3.conf @@ -0,0 +1,14 @@ +zone e45-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.17.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.17.1; + option domain-name "e45-3.tg13.gathering.org"; + ddns-domainname "e45-3.tg13.gathering.org"; + range 151.216.17.5 151.216.17.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e45-4.conf b/dhcp/conf.d/e45-4.conf new file mode 100644 index 0000000..d3855c3 --- /dev/null +++ b/dhcp/conf.d/e45-4.conf @@ -0,0 +1,14 @@ +zone e45-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.17.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.17.65; + option domain-name "e45-4.tg13.gathering.org"; + ddns-domainname "e45-4.tg13.gathering.org"; + range 151.216.17.69 151.216.17.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e47-1.conf b/dhcp/conf.d/e47-1.conf new file mode 100644 index 0000000..6786b65 --- /dev/null +++ b/dhcp/conf.d/e47-1.conf @@ -0,0 +1,14 @@ +zone e47-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.17.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.17.129; + option domain-name "e47-1.tg13.gathering.org"; + ddns-domainname "e47-1.tg13.gathering.org"; + range 151.216.17.133 151.216.17.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e47-2.conf b/dhcp/conf.d/e47-2.conf new file mode 100644 index 0000000..57b3830 --- /dev/null +++ b/dhcp/conf.d/e47-2.conf @@ -0,0 +1,14 @@ +zone e47-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.17.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.17.193; + option domain-name "e47-2.tg13.gathering.org"; + ddns-domainname "e47-2.tg13.gathering.org"; + range 151.216.17.197 151.216.17.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e47-3.conf b/dhcp/conf.d/e47-3.conf new file mode 100644 index 0000000..acb3f53 --- /dev/null +++ b/dhcp/conf.d/e47-3.conf @@ -0,0 +1,14 @@ +zone e47-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.18.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.18.1; + option domain-name "e47-3.tg13.gathering.org"; + ddns-domainname "e47-3.tg13.gathering.org"; + range 151.216.18.5 151.216.18.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e47-4.conf b/dhcp/conf.d/e47-4.conf new file mode 100644 index 0000000..5fe0ac3 --- /dev/null +++ b/dhcp/conf.d/e47-4.conf @@ -0,0 +1,14 @@ +zone e47-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.18.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.18.65; + option domain-name "e47-4.tg13.gathering.org"; + ddns-domainname "e47-4.tg13.gathering.org"; + range 151.216.18.69 151.216.18.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e49-1.conf b/dhcp/conf.d/e49-1.conf new file mode 100644 index 0000000..4471449 --- /dev/null +++ b/dhcp/conf.d/e49-1.conf @@ -0,0 +1,14 @@ +zone e49-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.18.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.18.129; + option domain-name "e49-1.tg13.gathering.org"; + ddns-domainname "e49-1.tg13.gathering.org"; + range 151.216.18.133 151.216.18.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e49-2.conf b/dhcp/conf.d/e49-2.conf new file mode 100644 index 0000000..138feeb --- /dev/null +++ b/dhcp/conf.d/e49-2.conf @@ -0,0 +1,14 @@ +zone e49-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.18.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.18.193; + option domain-name "e49-2.tg13.gathering.org"; + ddns-domainname "e49-2.tg13.gathering.org"; + range 151.216.18.197 151.216.18.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e49-3.conf b/dhcp/conf.d/e49-3.conf new file mode 100644 index 0000000..0856374 --- /dev/null +++ b/dhcp/conf.d/e49-3.conf @@ -0,0 +1,14 @@ +zone e49-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.19.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.19.1; + option domain-name "e49-3.tg13.gathering.org"; + ddns-domainname "e49-3.tg13.gathering.org"; + range 151.216.19.5 151.216.19.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e49-4.conf b/dhcp/conf.d/e49-4.conf new file mode 100644 index 0000000..d4dfd47 --- /dev/null +++ b/dhcp/conf.d/e49-4.conf @@ -0,0 +1,14 @@ +zone e49-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.19.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.19.65; + option domain-name "e49-4.tg13.gathering.org"; + ddns-domainname "e49-4.tg13.gathering.org"; + range 151.216.19.69 151.216.19.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e5-3.conf b/dhcp/conf.d/e5-3.conf new file mode 100644 index 0000000..cf6fd80 --- /dev/null +++ b/dhcp/conf.d/e5-3.conf @@ -0,0 +1,14 @@ +zone e5-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.2.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.2.1; + option domain-name "e5-3.tg13.gathering.org"; + ddns-domainname "e5-3.tg13.gathering.org"; + range 151.216.2.5 151.216.2.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e5-4.conf b/dhcp/conf.d/e5-4.conf new file mode 100644 index 0000000..754d883 --- /dev/null +++ b/dhcp/conf.d/e5-4.conf @@ -0,0 +1,14 @@ +zone e5-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.2.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.2.65; + option domain-name "e5-4.tg13.gathering.org"; + ddns-domainname "e5-4.tg13.gathering.org"; + range 151.216.2.69 151.216.2.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e51-1.conf b/dhcp/conf.d/e51-1.conf new file mode 100644 index 0000000..b50439d --- /dev/null +++ b/dhcp/conf.d/e51-1.conf @@ -0,0 +1,14 @@ +zone e51-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.19.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.19.129; + option domain-name "e51-1.tg13.gathering.org"; + ddns-domainname "e51-1.tg13.gathering.org"; + range 151.216.19.133 151.216.19.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e51-2.conf b/dhcp/conf.d/e51-2.conf new file mode 100644 index 0000000..17bbe65 --- /dev/null +++ b/dhcp/conf.d/e51-2.conf @@ -0,0 +1,14 @@ +zone e51-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.19.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.19.193; + option domain-name "e51-2.tg13.gathering.org"; + ddns-domainname "e51-2.tg13.gathering.org"; + range 151.216.19.197 151.216.19.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e51-3.conf b/dhcp/conf.d/e51-3.conf new file mode 100644 index 0000000..52cbdd2 --- /dev/null +++ b/dhcp/conf.d/e51-3.conf @@ -0,0 +1,14 @@ +zone e51-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.20.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.20.1; + option domain-name "e51-3.tg13.gathering.org"; + ddns-domainname "e51-3.tg13.gathering.org"; + range 151.216.20.5 151.216.20.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e51-4.conf b/dhcp/conf.d/e51-4.conf new file mode 100644 index 0000000..b7fb7b3 --- /dev/null +++ b/dhcp/conf.d/e51-4.conf @@ -0,0 +1,14 @@ +zone e51-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.20.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.20.65; + option domain-name "e51-4.tg13.gathering.org"; + ddns-domainname "e51-4.tg13.gathering.org"; + range 151.216.20.69 151.216.20.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e53-1.conf b/dhcp/conf.d/e53-1.conf new file mode 100644 index 0000000..4abbc9f --- /dev/null +++ b/dhcp/conf.d/e53-1.conf @@ -0,0 +1,14 @@ +zone e53-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.20.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.20.129; + option domain-name "e53-1.tg13.gathering.org"; + ddns-domainname "e53-1.tg13.gathering.org"; + range 151.216.20.133 151.216.20.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e53-2.conf b/dhcp/conf.d/e53-2.conf new file mode 100644 index 0000000..9b31e74 --- /dev/null +++ b/dhcp/conf.d/e53-2.conf @@ -0,0 +1,14 @@ +zone e53-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.20.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.20.193; + option domain-name "e53-2.tg13.gathering.org"; + ddns-domainname "e53-2.tg13.gathering.org"; + range 151.216.20.197 151.216.20.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e53-3.conf b/dhcp/conf.d/e53-3.conf new file mode 100644 index 0000000..9011399 --- /dev/null +++ b/dhcp/conf.d/e53-3.conf @@ -0,0 +1,14 @@ +zone e53-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.21.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.21.1; + option domain-name "e53-3.tg13.gathering.org"; + ddns-domainname "e53-3.tg13.gathering.org"; + range 151.216.21.5 151.216.21.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e53-4.conf b/dhcp/conf.d/e53-4.conf new file mode 100644 index 0000000..b551888 --- /dev/null +++ b/dhcp/conf.d/e53-4.conf @@ -0,0 +1,14 @@ +zone e53-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.21.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.21.65; + option domain-name "e53-4.tg13.gathering.org"; + ddns-domainname "e53-4.tg13.gathering.org"; + range 151.216.21.69 151.216.21.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e55-1.conf b/dhcp/conf.d/e55-1.conf new file mode 100644 index 0000000..b6ee46d --- /dev/null +++ b/dhcp/conf.d/e55-1.conf @@ -0,0 +1,14 @@ +zone e55-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.21.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.21.129; + option domain-name "e55-1.tg13.gathering.org"; + ddns-domainname "e55-1.tg13.gathering.org"; + range 151.216.21.133 151.216.21.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e55-2.conf b/dhcp/conf.d/e55-2.conf new file mode 100644 index 0000000..bcd889b --- /dev/null +++ b/dhcp/conf.d/e55-2.conf @@ -0,0 +1,14 @@ +zone e55-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.21.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.21.193; + option domain-name "e55-2.tg13.gathering.org"; + ddns-domainname "e55-2.tg13.gathering.org"; + range 151.216.21.197 151.216.21.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e55-3.conf b/dhcp/conf.d/e55-3.conf new file mode 100644 index 0000000..148f442 --- /dev/null +++ b/dhcp/conf.d/e55-3.conf @@ -0,0 +1,14 @@ +zone e55-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.22.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.22.1; + option domain-name "e55-3.tg13.gathering.org"; + ddns-domainname "e55-3.tg13.gathering.org"; + range 151.216.22.5 151.216.22.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e55-4.conf b/dhcp/conf.d/e55-4.conf new file mode 100644 index 0000000..cdbb728 --- /dev/null +++ b/dhcp/conf.d/e55-4.conf @@ -0,0 +1,14 @@ +zone e55-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.22.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.22.65; + option domain-name "e55-4.tg13.gathering.org"; + ddns-domainname "e55-4.tg13.gathering.org"; + range 151.216.22.69 151.216.22.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e57-1.conf b/dhcp/conf.d/e57-1.conf new file mode 100644 index 0000000..1f0c5cb --- /dev/null +++ b/dhcp/conf.d/e57-1.conf @@ -0,0 +1,14 @@ +zone e57-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.22.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.22.129; + option domain-name "e57-1.tg13.gathering.org"; + ddns-domainname "e57-1.tg13.gathering.org"; + range 151.216.22.133 151.216.22.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e57-2.conf b/dhcp/conf.d/e57-2.conf new file mode 100644 index 0000000..a2a73cd --- /dev/null +++ b/dhcp/conf.d/e57-2.conf @@ -0,0 +1,14 @@ +zone e57-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.22.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.22.193; + option domain-name "e57-2.tg13.gathering.org"; + ddns-domainname "e57-2.tg13.gathering.org"; + range 151.216.22.197 151.216.22.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e57-3.conf b/dhcp/conf.d/e57-3.conf new file mode 100644 index 0000000..318d60a --- /dev/null +++ b/dhcp/conf.d/e57-3.conf @@ -0,0 +1,14 @@ +zone e57-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.23.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.23.1; + option domain-name "e57-3.tg13.gathering.org"; + ddns-domainname "e57-3.tg13.gathering.org"; + range 151.216.23.5 151.216.23.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e57-4.conf b/dhcp/conf.d/e57-4.conf new file mode 100644 index 0000000..3db7c69 --- /dev/null +++ b/dhcp/conf.d/e57-4.conf @@ -0,0 +1,14 @@ +zone e57-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.23.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.23.65; + option domain-name "e57-4.tg13.gathering.org"; + ddns-domainname "e57-4.tg13.gathering.org"; + range 151.216.23.69 151.216.23.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e59-1.conf b/dhcp/conf.d/e59-1.conf new file mode 100644 index 0000000..8251763 --- /dev/null +++ b/dhcp/conf.d/e59-1.conf @@ -0,0 +1,14 @@ +zone e59-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.23.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.23.129; + option domain-name "e59-1.tg13.gathering.org"; + ddns-domainname "e59-1.tg13.gathering.org"; + range 151.216.23.133 151.216.23.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e59-2.conf b/dhcp/conf.d/e59-2.conf new file mode 100644 index 0000000..cb78cfe --- /dev/null +++ b/dhcp/conf.d/e59-2.conf @@ -0,0 +1,14 @@ +zone e59-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.23.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.23.193; + option domain-name "e59-2.tg13.gathering.org"; + ddns-domainname "e59-2.tg13.gathering.org"; + range 151.216.23.197 151.216.23.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e59-3.conf b/dhcp/conf.d/e59-3.conf new file mode 100644 index 0000000..5f8b18a --- /dev/null +++ b/dhcp/conf.d/e59-3.conf @@ -0,0 +1,14 @@ +zone e59-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.24.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.24.1; + option domain-name "e59-3.tg13.gathering.org"; + ddns-domainname "e59-3.tg13.gathering.org"; + range 151.216.24.5 151.216.24.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e59-4.conf b/dhcp/conf.d/e59-4.conf new file mode 100644 index 0000000..0f6303d --- /dev/null +++ b/dhcp/conf.d/e59-4.conf @@ -0,0 +1,14 @@ +zone e59-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.24.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.24.65; + option domain-name "e59-4.tg13.gathering.org"; + ddns-domainname "e59-4.tg13.gathering.org"; + range 151.216.24.69 151.216.24.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e61-1.conf b/dhcp/conf.d/e61-1.conf new file mode 100644 index 0000000..93eaf53 --- /dev/null +++ b/dhcp/conf.d/e61-1.conf @@ -0,0 +1,14 @@ +zone e61-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.24.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.24.129; + option domain-name "e61-1.tg13.gathering.org"; + ddns-domainname "e61-1.tg13.gathering.org"; + range 151.216.24.133 151.216.24.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e61-2.conf b/dhcp/conf.d/e61-2.conf new file mode 100644 index 0000000..56c2bd6 --- /dev/null +++ b/dhcp/conf.d/e61-2.conf @@ -0,0 +1,14 @@ +zone e61-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.24.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.24.193; + option domain-name "e61-2.tg13.gathering.org"; + ddns-domainname "e61-2.tg13.gathering.org"; + range 151.216.24.197 151.216.24.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e61-3.conf b/dhcp/conf.d/e61-3.conf new file mode 100644 index 0000000..1fe77ac --- /dev/null +++ b/dhcp/conf.d/e61-3.conf @@ -0,0 +1,14 @@ +zone e61-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.25.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.25.1; + option domain-name "e61-3.tg13.gathering.org"; + ddns-domainname "e61-3.tg13.gathering.org"; + range 151.216.25.5 151.216.25.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e61-4.conf b/dhcp/conf.d/e61-4.conf new file mode 100644 index 0000000..38767d1 --- /dev/null +++ b/dhcp/conf.d/e61-4.conf @@ -0,0 +1,14 @@ +zone e61-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.25.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.25.65; + option domain-name "e61-4.tg13.gathering.org"; + ddns-domainname "e61-4.tg13.gathering.org"; + range 151.216.25.69 151.216.25.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e63-1.conf b/dhcp/conf.d/e63-1.conf new file mode 100644 index 0000000..b52c705 --- /dev/null +++ b/dhcp/conf.d/e63-1.conf @@ -0,0 +1,14 @@ +zone e63-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.25.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.25.129; + option domain-name "e63-1.tg13.gathering.org"; + ddns-domainname "e63-1.tg13.gathering.org"; + range 151.216.25.133 151.216.25.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e63-2.conf b/dhcp/conf.d/e63-2.conf new file mode 100644 index 0000000..07d669f --- /dev/null +++ b/dhcp/conf.d/e63-2.conf @@ -0,0 +1,14 @@ +zone e63-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.25.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.25.193; + option domain-name "e63-2.tg13.gathering.org"; + ddns-domainname "e63-2.tg13.gathering.org"; + range 151.216.25.197 151.216.25.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e63-3.conf b/dhcp/conf.d/e63-3.conf new file mode 100644 index 0000000..0f570ab --- /dev/null +++ b/dhcp/conf.d/e63-3.conf @@ -0,0 +1,14 @@ +zone e63-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.26.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.26.1; + option domain-name "e63-3.tg13.gathering.org"; + ddns-domainname "e63-3.tg13.gathering.org"; + range 151.216.26.5 151.216.26.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e63-4.conf b/dhcp/conf.d/e63-4.conf new file mode 100644 index 0000000..427908a --- /dev/null +++ b/dhcp/conf.d/e63-4.conf @@ -0,0 +1,14 @@ +zone e63-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.26.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.26.65; + option domain-name "e63-4.tg13.gathering.org"; + ddns-domainname "e63-4.tg13.gathering.org"; + range 151.216.26.69 151.216.26.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e65-1.conf b/dhcp/conf.d/e65-1.conf new file mode 100644 index 0000000..ae4e114 --- /dev/null +++ b/dhcp/conf.d/e65-1.conf @@ -0,0 +1,14 @@ +zone e65-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.26.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.26.129; + option domain-name "e65-1.tg13.gathering.org"; + ddns-domainname "e65-1.tg13.gathering.org"; + range 151.216.26.133 151.216.26.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e65-2.conf b/dhcp/conf.d/e65-2.conf new file mode 100644 index 0000000..d23cfa5 --- /dev/null +++ b/dhcp/conf.d/e65-2.conf @@ -0,0 +1,14 @@ +zone e65-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.26.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.26.193; + option domain-name "e65-2.tg13.gathering.org"; + ddns-domainname "e65-2.tg13.gathering.org"; + range 151.216.26.197 151.216.26.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e65-3.conf b/dhcp/conf.d/e65-3.conf new file mode 100644 index 0000000..6d2aa36 --- /dev/null +++ b/dhcp/conf.d/e65-3.conf @@ -0,0 +1,14 @@ +zone e65-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.27.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.27.1; + option domain-name "e65-3.tg13.gathering.org"; + ddns-domainname "e65-3.tg13.gathering.org"; + range 151.216.27.5 151.216.27.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e65-4.conf b/dhcp/conf.d/e65-4.conf new file mode 100644 index 0000000..542be9a --- /dev/null +++ b/dhcp/conf.d/e65-4.conf @@ -0,0 +1,14 @@ +zone e65-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.27.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.27.65; + option domain-name "e65-4.tg13.gathering.org"; + ddns-domainname "e65-4.tg13.gathering.org"; + range 151.216.27.69 151.216.27.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e67-1.conf b/dhcp/conf.d/e67-1.conf new file mode 100644 index 0000000..a689665 --- /dev/null +++ b/dhcp/conf.d/e67-1.conf @@ -0,0 +1,14 @@ +zone e67-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.27.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.27.129; + option domain-name "e67-1.tg13.gathering.org"; + ddns-domainname "e67-1.tg13.gathering.org"; + range 151.216.27.133 151.216.27.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e67-2.conf b/dhcp/conf.d/e67-2.conf new file mode 100644 index 0000000..a34df75 --- /dev/null +++ b/dhcp/conf.d/e67-2.conf @@ -0,0 +1,14 @@ +zone e67-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.27.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.27.193; + option domain-name "e67-2.tg13.gathering.org"; + ddns-domainname "e67-2.tg13.gathering.org"; + range 151.216.27.197 151.216.27.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e67-3.conf b/dhcp/conf.d/e67-3.conf new file mode 100644 index 0000000..e505ddb --- /dev/null +++ b/dhcp/conf.d/e67-3.conf @@ -0,0 +1,14 @@ +zone e67-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.28.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.28.1; + option domain-name "e67-3.tg13.gathering.org"; + ddns-domainname "e67-3.tg13.gathering.org"; + range 151.216.28.5 151.216.28.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e67-4.conf b/dhcp/conf.d/e67-4.conf new file mode 100644 index 0000000..8096ddc --- /dev/null +++ b/dhcp/conf.d/e67-4.conf @@ -0,0 +1,14 @@ +zone e67-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.28.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.28.65; + option domain-name "e67-4.tg13.gathering.org"; + ddns-domainname "e67-4.tg13.gathering.org"; + range 151.216.28.69 151.216.28.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e69-1.conf b/dhcp/conf.d/e69-1.conf new file mode 100644 index 0000000..0a10a9f --- /dev/null +++ b/dhcp/conf.d/e69-1.conf @@ -0,0 +1,14 @@ +zone e69-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.28.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.28.129; + option domain-name "e69-1.tg13.gathering.org"; + ddns-domainname "e69-1.tg13.gathering.org"; + range 151.216.28.133 151.216.28.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e69-2.conf b/dhcp/conf.d/e69-2.conf new file mode 100644 index 0000000..b4eaf6a --- /dev/null +++ b/dhcp/conf.d/e69-2.conf @@ -0,0 +1,14 @@ +zone e69-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.28.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.28.193; + option domain-name "e69-2.tg13.gathering.org"; + ddns-domainname "e69-2.tg13.gathering.org"; + range 151.216.28.197 151.216.28.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e69-3.conf b/dhcp/conf.d/e69-3.conf new file mode 100644 index 0000000..bb0a368 --- /dev/null +++ b/dhcp/conf.d/e69-3.conf @@ -0,0 +1,14 @@ +zone e69-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.29.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.29.1; + option domain-name "e69-3.tg13.gathering.org"; + ddns-domainname "e69-3.tg13.gathering.org"; + range 151.216.29.5 151.216.29.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e69-4.conf b/dhcp/conf.d/e69-4.conf new file mode 100644 index 0000000..c335f7a --- /dev/null +++ b/dhcp/conf.d/e69-4.conf @@ -0,0 +1,14 @@ +zone e69-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.29.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.29.65; + option domain-name "e69-4.tg13.gathering.org"; + ddns-domainname "e69-4.tg13.gathering.org"; + range 151.216.29.69 151.216.29.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e7-3.conf b/dhcp/conf.d/e7-3.conf new file mode 100644 index 0000000..e3c5aa0 --- /dev/null +++ b/dhcp/conf.d/e7-3.conf @@ -0,0 +1,14 @@ +zone e7-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.2.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.2.129; + option domain-name "e7-3.tg13.gathering.org"; + ddns-domainname "e7-3.tg13.gathering.org"; + range 151.216.2.133 151.216.2.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e7-4.conf b/dhcp/conf.d/e7-4.conf new file mode 100644 index 0000000..80ce037 --- /dev/null +++ b/dhcp/conf.d/e7-4.conf @@ -0,0 +1,14 @@ +zone e7-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.2.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.2.193; + option domain-name "e7-4.tg13.gathering.org"; + ddns-domainname "e7-4.tg13.gathering.org"; + range 151.216.2.197 151.216.2.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e71-1.conf b/dhcp/conf.d/e71-1.conf new file mode 100644 index 0000000..34478a8 --- /dev/null +++ b/dhcp/conf.d/e71-1.conf @@ -0,0 +1,14 @@ +zone e71-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.29.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.29.129; + option domain-name "e71-1.tg13.gathering.org"; + ddns-domainname "e71-1.tg13.gathering.org"; + range 151.216.29.133 151.216.29.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e71-2.conf b/dhcp/conf.d/e71-2.conf new file mode 100644 index 0000000..2763460 --- /dev/null +++ b/dhcp/conf.d/e71-2.conf @@ -0,0 +1,14 @@ +zone e71-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.29.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.29.193; + option domain-name "e71-2.tg13.gathering.org"; + ddns-domainname "e71-2.tg13.gathering.org"; + range 151.216.29.197 151.216.29.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e71-3.conf b/dhcp/conf.d/e71-3.conf new file mode 100644 index 0000000..dcd66d3 --- /dev/null +++ b/dhcp/conf.d/e71-3.conf @@ -0,0 +1,14 @@ +zone e71-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.30.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.30.1; + option domain-name "e71-3.tg13.gathering.org"; + ddns-domainname "e71-3.tg13.gathering.org"; + range 151.216.30.5 151.216.30.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e71-4.conf b/dhcp/conf.d/e71-4.conf new file mode 100644 index 0000000..8dda936 --- /dev/null +++ b/dhcp/conf.d/e71-4.conf @@ -0,0 +1,14 @@ +zone e71-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.30.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.30.65; + option domain-name "e71-4.tg13.gathering.org"; + ddns-domainname "e71-4.tg13.gathering.org"; + range 151.216.30.69 151.216.30.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e73-1.conf b/dhcp/conf.d/e73-1.conf new file mode 100644 index 0000000..5675ddc --- /dev/null +++ b/dhcp/conf.d/e73-1.conf @@ -0,0 +1,14 @@ +zone e73-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.30.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.30.129; + option domain-name "e73-1.tg13.gathering.org"; + ddns-domainname "e73-1.tg13.gathering.org"; + range 151.216.30.133 151.216.30.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e73-2.conf b/dhcp/conf.d/e73-2.conf new file mode 100644 index 0000000..cb376a9 --- /dev/null +++ b/dhcp/conf.d/e73-2.conf @@ -0,0 +1,14 @@ +zone e73-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.30.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.30.193; + option domain-name "e73-2.tg13.gathering.org"; + ddns-domainname "e73-2.tg13.gathering.org"; + range 151.216.30.197 151.216.30.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e73-3.conf b/dhcp/conf.d/e73-3.conf new file mode 100644 index 0000000..369fbb3 --- /dev/null +++ b/dhcp/conf.d/e73-3.conf @@ -0,0 +1,14 @@ +zone e73-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.31.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.31.1; + option domain-name "e73-3.tg13.gathering.org"; + ddns-domainname "e73-3.tg13.gathering.org"; + range 151.216.31.5 151.216.31.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e73-4.conf b/dhcp/conf.d/e73-4.conf new file mode 100644 index 0000000..bc22c1c --- /dev/null +++ b/dhcp/conf.d/e73-4.conf @@ -0,0 +1,14 @@ +zone e73-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.31.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.31.65; + option domain-name "e73-4.tg13.gathering.org"; + ddns-domainname "e73-4.tg13.gathering.org"; + range 151.216.31.69 151.216.31.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e75-1.conf b/dhcp/conf.d/e75-1.conf new file mode 100644 index 0000000..d8cf0cd --- /dev/null +++ b/dhcp/conf.d/e75-1.conf @@ -0,0 +1,14 @@ +zone e75-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.31.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.31.129; + option domain-name "e75-1.tg13.gathering.org"; + ddns-domainname "e75-1.tg13.gathering.org"; + range 151.216.31.133 151.216.31.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e75-2.conf b/dhcp/conf.d/e75-2.conf new file mode 100644 index 0000000..be6c23d --- /dev/null +++ b/dhcp/conf.d/e75-2.conf @@ -0,0 +1,14 @@ +zone e75-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.31.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.31.193; + option domain-name "e75-2.tg13.gathering.org"; + ddns-domainname "e75-2.tg13.gathering.org"; + range 151.216.31.197 151.216.31.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e75-3.conf b/dhcp/conf.d/e75-3.conf new file mode 100644 index 0000000..e5e859e --- /dev/null +++ b/dhcp/conf.d/e75-3.conf @@ -0,0 +1,14 @@ +zone e75-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.32.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.32.1; + option domain-name "e75-3.tg13.gathering.org"; + ddns-domainname "e75-3.tg13.gathering.org"; + range 151.216.32.5 151.216.32.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e75-4.conf b/dhcp/conf.d/e75-4.conf new file mode 100644 index 0000000..6d1811f --- /dev/null +++ b/dhcp/conf.d/e75-4.conf @@ -0,0 +1,14 @@ +zone e75-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.32.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.32.65; + option domain-name "e75-4.tg13.gathering.org"; + ddns-domainname "e75-4.tg13.gathering.org"; + range 151.216.32.69 151.216.32.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e77-1.conf b/dhcp/conf.d/e77-1.conf new file mode 100644 index 0000000..0d99446 --- /dev/null +++ b/dhcp/conf.d/e77-1.conf @@ -0,0 +1,14 @@ +zone e77-1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.32.128 netmask 255.255.255.192 { + authoritative; + option routers 151.216.32.129; + option domain-name "e77-1.tg13.gathering.org"; + ddns-domainname "e77-1.tg13.gathering.org"; + range 151.216.32.133 151.216.32.190; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e77-2.conf b/dhcp/conf.d/e77-2.conf new file mode 100644 index 0000000..b989747 --- /dev/null +++ b/dhcp/conf.d/e77-2.conf @@ -0,0 +1,14 @@ +zone e77-2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.32.192 netmask 255.255.255.192 { + authoritative; + option routers 151.216.32.193; + option domain-name "e77-2.tg13.gathering.org"; + ddns-domainname "e77-2.tg13.gathering.org"; + range 151.216.32.197 151.216.32.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e9-3.conf b/dhcp/conf.d/e9-3.conf new file mode 100644 index 0000000..fd1f08e --- /dev/null +++ b/dhcp/conf.d/e9-3.conf @@ -0,0 +1,14 @@ +zone e9-3.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.3.0 netmask 255.255.255.192 { + authoritative; + option routers 151.216.3.1; + option domain-name "e9-3.tg13.gathering.org"; + ddns-domainname "e9-3.tg13.gathering.org"; + range 151.216.3.5 151.216.3.62; + ignore client-updates; +} + diff --git a/dhcp/conf.d/e9-4.conf b/dhcp/conf.d/e9-4.conf new file mode 100644 index 0000000..ae6638b --- /dev/null +++ b/dhcp/conf.d/e9-4.conf @@ -0,0 +1,14 @@ +zone e9-4.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.3.64 netmask 255.255.255.192 { + authoritative; + option routers 151.216.3.65; + option domain-name "e9-4.tg13.gathering.org"; + ddns-domainname "e9-4.tg13.gathering.org"; + range 151.216.3.69 151.216.3.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/fugleberg1.conf b/dhcp/conf.d/fugleberg1.conf new file mode 100644 index 0000000..c3e6488 --- /dev/null +++ b/dhcp/conf.d/fugleberg1.conf @@ -0,0 +1,14 @@ +zone fugleberg1.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.99.0 netmask 255.255.255.128 { + authoritative; + option routers 151.216.99.1; + option domain-name "fugleberg1.tg13.gathering.org"; + ddns-domainname "fugleberg1.tg13.gathering.org"; + range 151.216.99.5 151.216.99.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/fugleberg2.conf b/dhcp/conf.d/fugleberg2.conf new file mode 100644 index 0000000..1a223ab --- /dev/null +++ b/dhcp/conf.d/fugleberg2.conf @@ -0,0 +1,15 @@ +zone fugleberg2.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.99.128 netmask 255.255.255.128 { + authoritative; + option routers 151.216.99.129; + option domain-name "fugleberg2.tg13.gathering.org"; + ddns-domainname "fugleberg2.tg13.gathering.org"; + range 151.216.99.133 151.216.99.254; + ignore client-updates; +} + +host fuglecam { hardware ethernet 90:2b:34:5c:49:d4; fixed-address 151.216.99.254; } diff --git a/dhcp/conf.d/game.conf b/dhcp/conf.d/game.conf new file mode 100644 index 0000000..23fbf84 --- /dev/null +++ b/dhcp/conf.d/game.conf @@ -0,0 +1,14 @@ +zone game.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.101.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.101.1; + option domain-name "game.tg13.gathering.org"; + ddns-domainname "game.tg13.gathering.org"; + range 151.216.101.5 151.216.101.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/gamehq.conf b/dhcp/conf.d/gamehq.conf new file mode 100644 index 0000000..a4ab629 --- /dev/null +++ b/dhcp/conf.d/gamehq.conf @@ -0,0 +1,14 @@ +zone gamehq.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.54.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.54.1; + option domain-name "gamehq.tg13.gathering.org"; + ddns-domainname "gamehq.tg13.gathering.org"; + range 151.216.54.5 151.216.54.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/lager.conf b/dhcp/conf.d/lager.conf new file mode 100644 index 0000000..094e1d4 --- /dev/null +++ b/dhcp/conf.d/lager.conf @@ -0,0 +1,14 @@ +zone lager.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.113.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.113.1; + option domain-name "lager.tg13.gathering.org"; + ddns-domainname "lager.tg13.gathering.org"; + range 151.216.113.5 151.216.113.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/logistikk.conf b/dhcp/conf.d/logistikk.conf new file mode 100644 index 0000000..1c9eeae --- /dev/null +++ b/dhcp/conf.d/logistikk.conf @@ -0,0 +1,14 @@ +zone logistikk.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.96.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.96.1; + option domain-name "logistikk.tg13.gathering.org"; + ddns-domainname "logistikk.tg13.gathering.org"; + range 151.216.96.5 151.216.96.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/marsrele.conf b/dhcp/conf.d/marsrele.conf new file mode 100644 index 0000000..23b502c --- /dev/null +++ b/dhcp/conf.d/marsrele.conf @@ -0,0 +1,14 @@ +zone marsrele.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.118.0 netmask 255.255.255.128 { + authoritative; + option routers 151.216.118.1; + option domain-name "marsrele.tg13.gathering.org"; + ddns-domainname "marsrele.tg13.gathering.org"; + range 151.216.118.5 151.216.118.126; + ignore client-updates; +} + diff --git a/dhcp/conf.d/noc.conf b/dhcp/conf.d/noc.conf new file mode 100644 index 0000000..1694bf0 --- /dev/null +++ b/dhcp/conf.d/noc.conf @@ -0,0 +1,34 @@ +zone noc.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.124.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.124.1; + option domain-name "noc.tg13.gathering.org"; + option domain-search "tg13.gathering.org", "infra.tg13.gathering.org", "noc.tg13.gathering.org"; + ddns-domainname "noc.tg13.gathering.org"; + + # Steam/Origin testing + # VIKTIG med deny før allow :-)) + pool { + allow members of "steam-clients"; + range 151.216.124.5 151.216.124.15; + } + pool { + deny members of "steam-clients"; + range 151.216.124.16 151.216.124.254; + } + + # dette fungerer ikke :-)) + #steam-clients + #if (substring (option host-name, 0, 4) = "ior-") { + # range 151.216.124.5 151.216.124.15; + #} else { + # range 151.216.124.16 151.216.124.254; + #} + ignore client-updates; +} + +host widecam.noc { hardware ethernet 00:02:d1:15:64:80; fixed-address 151.216.124.79; } diff --git a/dhcp/conf.d/presse.conf b/dhcp/conf.d/presse.conf new file mode 100644 index 0000000..8cdad57 --- /dev/null +++ b/dhcp/conf.d/presse.conf @@ -0,0 +1,14 @@ +zone presse.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.98.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.98.1; + option domain-name "presse.tg13.gathering.org"; + ddns-domainname "presse.tg13.gathering.org"; + range 151.216.98.5 151.216.98.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/secmedic.conf b/dhcp/conf.d/secmedic.conf new file mode 100644 index 0000000..0976053 --- /dev/null +++ b/dhcp/conf.d/secmedic.conf @@ -0,0 +1,14 @@ +zone secmedic.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.112.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.112.1; + option domain-name "secmedic.tg13.gathering.org"; + ddns-domainname "secmedic.tg13.gathering.org"; + range 151.216.112.5 151.216.112.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/sponsorvest.conf b/dhcp/conf.d/sponsorvest.conf new file mode 100644 index 0000000..65362d1 --- /dev/null +++ b/dhcp/conf.d/sponsorvest.conf @@ -0,0 +1,16 @@ +zone sponsorvest.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.105.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.105.1; + option domain-name "sponsorvest.tg13.gathering.org"; + ddns-domainname "sponsorvest.tg13.gathering.org"; + range 151.216.105.5 151.216.105.254; + ignore client-updates; +} + +host hacklol { hardware ethernet 00:24:7e:dd:e3:4c; fixed-address 151.216.105.9; } + diff --git a/dhcp/conf.d/stage.conf b/dhcp/conf.d/stage.conf new file mode 100644 index 0000000..bdfd3bc --- /dev/null +++ b/dhcp/conf.d/stage.conf @@ -0,0 +1,16 @@ +zone stage.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.114.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.114.1; + option domain-name "stage.tg13.gathering.org"; + ddns-domainname "stage.tg13.gathering.org"; + range 151.216.114.5 151.216.114.254; + ignore client-updates; +} + +host timer.stage { hardware ethernet 00:0c:29:6c:dd:ab; fixed-address 151.216.114.250; } +host politietno.stage { hardware ethernet 00:25:90:c1:bd:21; fixed-address 151.216.114.254; } diff --git a/dhcp/conf.d/stageboh.conf b/dhcp/conf.d/stageboh.conf new file mode 100644 index 0000000..62cc404 --- /dev/null +++ b/dhcp/conf.d/stageboh.conf @@ -0,0 +1,15 @@ +zone stageboh.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.107.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.107.1; + option domain-name "stageboh.tg13.gathering.org"; + ddns-domainname "stageboh.tg13.gathering.org"; + range 151.216.107.5 151.216.107.254; + ignore client-updates; +} + +host linux.stageboh { hardware ethernet f4:ce:46:7f:9c:7a; fixed-address 151.216.107.14; } diff --git a/dhcp/conf.d/tele.conf b/dhcp/conf.d/tele.conf new file mode 100644 index 0000000..b5b2dd6 --- /dev/null +++ b/dhcp/conf.d/tele.conf @@ -0,0 +1,14 @@ +zone tele.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.126.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.126.1; + option domain-name "tele.tg13.gathering.org"; + ddns-domainname "tele.tg13.gathering.org"; + range 151.216.126.5 151.216.126.254; + ignore client-updates; +} + diff --git a/dhcp/conf.d/wlan.conf b/dhcp/conf.d/wlan.conf new file mode 100644 index 0000000..c3d779d --- /dev/null +++ b/dhcp/conf.d/wlan.conf @@ -0,0 +1,14 @@ +zone wlan.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.64.0 netmask 255.255.224.0 { + authoritative; + option routers 151.216.64.1; + option domain-name "wlan.tg13.gathering.org"; + ddns-domainname "wlan.tg13.gathering.org"; + range 151.216.64.5 151.216.95.253; + ignore client-updates; +} + diff --git a/dhcp/conf.d/ymse.conf b/dhcp/conf.d/ymse.conf new file mode 100644 index 0000000..06854df --- /dev/null +++ b/dhcp/conf.d/ymse.conf @@ -0,0 +1,15 @@ +zone ymse.tg13.gathering.org { + primary 127.0.0.1; + key DHCP_UPDATER; +} + +subnet 151.216.115.0 netmask 255.255.255.0 { + authoritative; + option routers 151.216.115.1; + option domain-name "ymse.tg13.gathering.org"; + ddns-domainname "ymse.tg13.gathering.org"; + range 151.216.115.5 151.216.115.254; + ignore client-updates; +} + +host recording02.stageboh { hardware ethernet 80:ee:73:33:8e:e4; fixed-address 151.216.115.254; } diff --git a/dhcp/dhcpd.conf b/dhcp/dhcpd.conf new file mode 100644 index 0000000..a907a0d --- /dev/null +++ b/dhcp/dhcpd.conf @@ -0,0 +1,30 @@ +# GENERATED BY make-dhcpd.pl +# +# Central concept: as little config in the main .conf, +# include almost everything from separate files.. +# +# log-facility local7; +option domain-name "tg13.gathering.org"; +option domain-name-servers 151.216.126.2, 151.216.125.2; +default-lease-time 3600; +max-lease-time 7200; +authoritative; + +ddns-update-style interim; +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret <removed>; +} + +subnet 151.216.126.0 netmask 255.255.255.0 {} + +class "steam-clients" { + match if ((substring(option host-name, 0, 4) = "ior-")); +} + +include "/etc/dhcp/revzones.conf"; +include "/etc/dhcp/generated-include.conf"; +include "/etc/dhcp/pxe-boot.conf"; +include "/etc/dhcp/ciscowlc.conf"; + + diff --git a/dhcp/generated-include.conf b/dhcp/generated-include.conf new file mode 100644 index 0000000..a334283 --- /dev/null +++ b/dhcp/generated-include.conf @@ -0,0 +1,159 @@ +include "/etc/dhcp/conf.d/ap-dist0.conf"; +include "/etc/dhcp/conf.d/ap-dist1.conf"; +include "/etc/dhcp/conf.d/ap-dist2.conf"; +include "/etc/dhcp/conf.d/ap-dist3.conf"; +include "/etc/dhcp/conf.d/ap-dist4.conf"; +include "/etc/dhcp/conf.d/care.conf"; +include "/etc/dhcp/conf.d/chillout.conf"; +include "/etc/dhcp/conf.d/creativia.conf"; +include "/etc/dhcp/conf.d/crew1.conf"; +include "/etc/dhcp/conf.d/crew2.conf"; +include "/etc/dhcp/conf.d/crew3.conf"; +include "/etc/dhcp/conf.d/crew4.conf"; +include "/etc/dhcp/conf.d/crew5.conf"; +include "/etc/dhcp/conf.d/crew6.conf"; +include "/etc/dhcp/conf.d/defektraid.conf"; +include "/etc/dhcp/conf.d/e1-3.conf"; +include "/etc/dhcp/conf.d/e1-4.conf"; +include "/etc/dhcp/conf.d/e11-1.conf"; +include "/etc/dhcp/conf.d/e11-2.conf"; +include "/etc/dhcp/conf.d/e11-3.conf"; +include "/etc/dhcp/conf.d/e11-4.conf"; +include "/etc/dhcp/conf.d/e13-1.conf"; +include "/etc/dhcp/conf.d/e13-2.conf"; +include "/etc/dhcp/conf.d/e13-3.conf"; +include "/etc/dhcp/conf.d/e13-4.conf"; +include "/etc/dhcp/conf.d/e15-1.conf"; +include "/etc/dhcp/conf.d/e15-2.conf"; +include "/etc/dhcp/conf.d/e15-3.conf"; +include "/etc/dhcp/conf.d/e15-4.conf"; +include "/etc/dhcp/conf.d/e17-1.conf"; +include "/etc/dhcp/conf.d/e17-2.conf"; +include "/etc/dhcp/conf.d/e17-3.conf"; +include "/etc/dhcp/conf.d/e17-4.conf"; +include "/etc/dhcp/conf.d/e19-1.conf"; +include "/etc/dhcp/conf.d/e19-2.conf"; +include "/etc/dhcp/conf.d/e19-3.conf"; +include "/etc/dhcp/conf.d/e19-4.conf"; +include "/etc/dhcp/conf.d/e21-1.conf"; +include "/etc/dhcp/conf.d/e21-2.conf"; +include "/etc/dhcp/conf.d/e21-3.conf"; +include "/etc/dhcp/conf.d/e21-4.conf"; +include "/etc/dhcp/conf.d/e23-1.conf"; +include "/etc/dhcp/conf.d/e23-2.conf"; +include "/etc/dhcp/conf.d/e23-3.conf"; +include "/etc/dhcp/conf.d/e23-4.conf"; +include "/etc/dhcp/conf.d/e25-1.conf"; +include "/etc/dhcp/conf.d/e25-2.conf"; +include "/etc/dhcp/conf.d/e25-3.conf"; +include "/etc/dhcp/conf.d/e25-4.conf"; +include "/etc/dhcp/conf.d/e27-1.conf"; +include "/etc/dhcp/conf.d/e27-2.conf"; +include "/etc/dhcp/conf.d/e29-1.conf"; +include "/etc/dhcp/conf.d/e29-2.conf"; +include "/etc/dhcp/conf.d/e3-3.conf"; +include "/etc/dhcp/conf.d/e3-4.conf"; +include "/etc/dhcp/conf.d/e31-1.conf"; +include "/etc/dhcp/conf.d/e31-2.conf"; +include "/etc/dhcp/conf.d/e33-1.conf"; +include "/etc/dhcp/conf.d/e33-2.conf"; +include "/etc/dhcp/conf.d/e35-1.conf"; +include "/etc/dhcp/conf.d/e35-2.conf"; +include "/etc/dhcp/conf.d/e37-1.conf"; +include "/etc/dhcp/conf.d/e37-2.conf"; +include "/etc/dhcp/conf.d/e39-1.conf"; +include "/etc/dhcp/conf.d/e39-2.conf"; +include "/etc/dhcp/conf.d/e41-1.conf"; +include "/etc/dhcp/conf.d/e41-2.conf"; +include "/etc/dhcp/conf.d/e43-1.conf"; +include "/etc/dhcp/conf.d/e43-2.conf"; +include "/etc/dhcp/conf.d/e43-3.conf"; +include "/etc/dhcp/conf.d/e43-4.conf"; +include "/etc/dhcp/conf.d/e45-1.conf"; +include "/etc/dhcp/conf.d/e45-2.conf"; +include "/etc/dhcp/conf.d/e45-3.conf"; +include "/etc/dhcp/conf.d/e45-4.conf"; +include "/etc/dhcp/conf.d/e47-1.conf"; +include "/etc/dhcp/conf.d/e47-2.conf"; +include "/etc/dhcp/conf.d/e47-3.conf"; +include "/etc/dhcp/conf.d/e47-4.conf"; +include "/etc/dhcp/conf.d/e49-1.conf"; +include "/etc/dhcp/conf.d/e49-2.conf"; +include "/etc/dhcp/conf.d/e49-3.conf"; +include "/etc/dhcp/conf.d/e49-4.conf"; +include "/etc/dhcp/conf.d/e5-3.conf"; +include "/etc/dhcp/conf.d/e5-4.conf"; +include "/etc/dhcp/conf.d/e51-1.conf"; +include "/etc/dhcp/conf.d/e51-2.conf"; +include "/etc/dhcp/conf.d/e51-3.conf"; +include "/etc/dhcp/conf.d/e51-4.conf"; +include "/etc/dhcp/conf.d/e53-1.conf"; +include "/etc/dhcp/conf.d/e53-2.conf"; +include "/etc/dhcp/conf.d/e53-3.conf"; +include "/etc/dhcp/conf.d/e53-4.conf"; +include "/etc/dhcp/conf.d/e55-1.conf"; +include "/etc/dhcp/conf.d/e55-2.conf"; +include "/etc/dhcp/conf.d/e55-3.conf"; +include "/etc/dhcp/conf.d/e55-4.conf"; +include "/etc/dhcp/conf.d/e57-1.conf"; +include "/etc/dhcp/conf.d/e57-2.conf"; +include "/etc/dhcp/conf.d/e57-3.conf"; +include "/etc/dhcp/conf.d/e57-4.conf"; +include "/etc/dhcp/conf.d/e59-1.conf"; +include "/etc/dhcp/conf.d/e59-2.conf"; +include "/etc/dhcp/conf.d/e59-3.conf"; +include "/etc/dhcp/conf.d/e59-4.conf"; +include "/etc/dhcp/conf.d/e61-1.conf"; +include "/etc/dhcp/conf.d/e61-2.conf"; +include "/etc/dhcp/conf.d/e61-3.conf"; +include "/etc/dhcp/conf.d/e61-4.conf"; +include "/etc/dhcp/conf.d/e63-1.conf"; +include "/etc/dhcp/conf.d/e63-2.conf"; +include "/etc/dhcp/conf.d/e63-3.conf"; +include "/etc/dhcp/conf.d/e63-4.conf"; +include "/etc/dhcp/conf.d/e65-1.conf"; +include "/etc/dhcp/conf.d/e65-2.conf"; +include "/etc/dhcp/conf.d/e65-3.conf"; +include "/etc/dhcp/conf.d/e65-4.conf"; +include "/etc/dhcp/conf.d/e67-1.conf"; +include "/etc/dhcp/conf.d/e67-2.conf"; +include "/etc/dhcp/conf.d/e67-3.conf"; +include "/etc/dhcp/conf.d/e67-4.conf"; +include "/etc/dhcp/conf.d/e69-1.conf"; +include "/etc/dhcp/conf.d/e69-2.conf"; +include "/etc/dhcp/conf.d/e69-3.conf"; +include "/etc/dhcp/conf.d/e69-4.conf"; +include "/etc/dhcp/conf.d/e7-3.conf"; +include "/etc/dhcp/conf.d/e7-4.conf"; +include "/etc/dhcp/conf.d/e71-1.conf"; +include "/etc/dhcp/conf.d/e71-2.conf"; +include "/etc/dhcp/conf.d/e71-3.conf"; +include "/etc/dhcp/conf.d/e71-4.conf"; +include "/etc/dhcp/conf.d/e73-1.conf"; +include "/etc/dhcp/conf.d/e73-2.conf"; +include "/etc/dhcp/conf.d/e73-3.conf"; +include "/etc/dhcp/conf.d/e73-4.conf"; +include "/etc/dhcp/conf.d/e75-1.conf"; +include "/etc/dhcp/conf.d/e75-2.conf"; +include "/etc/dhcp/conf.d/e75-3.conf"; +include "/etc/dhcp/conf.d/e75-4.conf"; +include "/etc/dhcp/conf.d/e77-1.conf"; +include "/etc/dhcp/conf.d/e77-2.conf"; +include "/etc/dhcp/conf.d/e9-3.conf"; +include "/etc/dhcp/conf.d/e9-4.conf"; +include "/etc/dhcp/conf.d/fugleberg1.conf"; +include "/etc/dhcp/conf.d/fugleberg2.conf"; +include "/etc/dhcp/conf.d/game.conf"; +include "/etc/dhcp/conf.d/gamehq.conf"; +include "/etc/dhcp/conf.d/lager.conf"; +include "/etc/dhcp/conf.d/logistikk.conf"; +include "/etc/dhcp/conf.d/marsrele.conf"; +include "/etc/dhcp/conf.d/noc.conf"; +include "/etc/dhcp/conf.d/presse.conf"; +include "/etc/dhcp/conf.d/secmedic.conf"; +include "/etc/dhcp/conf.d/sponsorvest.conf"; +include "/etc/dhcp/conf.d/stage.conf"; +include "/etc/dhcp/conf.d/stageboh.conf"; +include "/etc/dhcp/conf.d/tele.conf"; +include "/etc/dhcp/conf.d/wlan.conf"; +include "/etc/dhcp/conf.d/ymse.conf"; diff --git a/dhcp/pxe-boot.conf b/dhcp/pxe-boot.conf new file mode 100644 index 0000000..2641447 --- /dev/null +++ b/dhcp/pxe-boot.conf @@ -0,0 +1,2 @@ +next-server 151.216.125.3; +filename "pxelinux.0"; diff --git a/dhcp/revzones.conf b/dhcp/revzones.conf new file mode 100644 index 0000000..796d523 --- /dev/null +++ b/dhcp/revzones.conf @@ -0,0 +1,128 @@ +zone 0.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 1.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 2.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 3.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 4.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 5.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 6.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 7.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 8.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 9.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 10.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 11.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 12.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 13.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 14.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 15.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 16.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 17.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 18.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 19.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 20.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 21.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 22.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 23.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 24.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 25.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 26.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 27.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 28.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 29.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 30.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 31.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 32.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 33.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 34.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 35.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 36.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 37.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 38.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 39.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 40.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 41.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 42.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 43.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 44.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 45.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 46.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 47.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 48.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 49.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 50.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 51.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 52.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 53.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 54.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 55.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 56.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 57.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 58.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 59.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 60.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 61.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 62.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 63.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 64.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 65.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 66.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 67.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 68.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 69.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 70.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 71.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 72.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 73.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 74.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 75.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 76.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 77.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 78.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 79.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 80.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 81.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 82.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 83.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 84.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 85.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 86.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 87.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 88.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 89.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 90.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 91.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 92.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 93.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 94.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 95.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 96.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 97.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 98.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 99.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 100.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 101.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 102.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 103.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 104.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 105.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 106.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 107.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 108.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 109.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 110.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 111.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 112.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 113.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 114.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 115.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 116.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 117.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 118.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 119.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 120.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 121.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 122.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 123.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 124.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 125.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 126.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } +zone 127.216.151.in-addr.arpa { primary 127.0.0.1; key DHCP_UPDATER; } diff --git a/dlink-ng/dlink-ng.pl b/dlink-ng/dlink-ng.pl new file mode 100755 index 0000000..e395df9 --- /dev/null +++ b/dlink-ng/dlink-ng.pl @@ -0,0 +1,1097 @@ +#!/usr/bin/perl -I /root/tgmanage/ +use warnings; +use strict; +use lib '..'; +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} +use Net::Telnet::Cisco; +use Net::Ping; +use Net::IP; +use Term::ANSIColor; +use threads; +use threads::shared; +use Thread::Queue; +use Getopt::Long; + +# Options +my $cisco_user = "$nms::config::ios_user"; # Username used when logging into the swithces +my $cisco_pass = "$nms::config::ios_pass"; # Password used when logging into the switches +my $domain_name = ".infra.$nms::config::tgname.gathering.org"; # DNS-name to append to hostnames +my $dlink_def_user = "admin"; # Default user for a factory-default D-Link +my $dlink_def_ip = "10.90.90.90"; # IP for a factory-default D-Link +my $dlink_def_mask = "255.255.255.0"; # Mask for a factory-default D-Link +my $dlink_router_ip = "10.90.90.91"; # IP to use on the router/core +my $dlink_prefix = "30"; # Prefix to use when setting D-Link IP +my $dhcprelay4_pri = "$nms::config::dhcp_server1"; # Primary ip helper-address / ip dhcp relay address +my $dhcprelay4_sec = "$nms::config::dhcp_server2"; # Secondary ip helper-address / ip dhcp relay address +my $dhcprelay6_pri = ""; # Primary ipv6 dhcp relay +my $dhcprelay6_sec = ""; # Secondary ipv6 dhcp relay +my $vrf_prefix = "dlink"; # What to prefix the VRF-number (Thread ID) with +my $max_threads = 20; # Max threads to use +my $dlink_host_suffix = "_DGS-3100"; # Suffix for hostname on the D-Link switches (needed by NMS) +my $log_dir = "dlink-ng/log"; # Path to logfiles +my $default_coreswos = "ios"; # Default OS on coresw +my $dlink_lacp_start = '45'; # First port for LACP-group on D-Links +my $dlink_lacp_end = '48'; # Last port for LACP-group on D-Links +my $skip_last_port = 1; # Skip last port -- set up as access port +my $access_vlan = '3602'; # VLAN to use for skipped port + +# Stuff +my $switchq = Thread::Queue->new(); # Queue to put switches in +my $switches : shared = 0; # Number of successful switches +my $failed_switches : shared = 0; # Number of failed switches +my $total_time : shared = 0; # Total time spent for all switches +my %telnet_sessions : shared; # Number of sessions currently in use +my $DLINK_TEMPLATE; # Filehandle used for reading D-Link template + +# Custom Portchannel-config +my $po_config = { + ios => [ + "logging event link-status", + #"ip access-group end-user-protection in", + #"ip directed-broadcast 2000", + #"ipv6 nd prefix default 300 300 no-autoconfig", + #"ipv6 nd managed-config-flag", + #"ipv6 nd other-config-flag", + #"ipv6 dhcp relay destination $dhcprelay6_pri", + #"ipv6 dhcp relay destination $dhcprelay6_sec" + ], + nx => [ + "", + ], +}; + +# Custom last port config +my $last_port_config = { + ios => [ + "logging event link-status", + "switchport mode access", + "switchport access vlan $access_vlan", + "spanning-tree bpduguard enable", + ], + nx => [ + "", + ], +}; + +# Define what OS-version a coresw runs +# NX, XR, XE, etc +# The regex is matched against $coreswip +my $os_regex = { + nx => 'flexusnexus', +}; + +# Configure settings for each OS +my $os_info = { + ios => { + max_sessions => 10, + }, + nx => { + # define 64 sessions on nxos + # nx-os# conf t + # nx-os(config)# feature dhcp + # nx-os(config)# line vty + # nx-os(config-line)# session-limit 64 + max_sessions => 50, + }, +}; + +# Autoflush +$| = 1; + +# Get options +my ($cisco_config, $single_switch, $dlink_config, $save_config, $skipped_port_only, $skipped_port_desc_only, $no_skip); +if (@ARGV > 0) { + GetOptions( + 'c|cisco|ciscoconfig' => \$cisco_config, # Configure on the Cisco-side only (Portchannel, interfaces, etc) + 's|switch=s' => \$single_switch, # Configure a single switch + 'd|dlink|dlinkconfig=s' => \$dlink_config, # Push D-Link-template-config to D-Link (not used @ TG) + 'w|write' => \$save_config, # Write config on Cisco-side + 'portskip' => \$skipped_port_only, # Configure the skipped port only (Cisco-side) + 'skipdesc' => \$skipped_port_desc_only, # Configure the skipped port description only (Cisco-side) + 'noskip' => \$no_skip # Override $skip_last_port + ) +} + +# Exit if D-Link template file doesn't exist +if ($dlink_config){ + unless(-e $dlink_config){ + die("File '$dlink_config' does not exists. Aborting.\n"); + } +} + +# Exit if $cisco_config and $skipped_port_only or $skipped_port_desc_only is set +if ($cisco_config && ($skipped_port_only || $skipped_port_desc_only)){ + die("\$cisco_config and \$skipped_port_only (or \$skipped_port_desc_only) can't be used together.\n"); +} + +# Update $skip_last_port if $no_skip is set +if ($no_skip){ + $skip_last_port = 0; +} + +# If skipdesc, assume $skipped_port_only +if ($skipped_port_desc_only){ + $skipped_port_only = 1; +} + +# Print stuff +sub log_it{ + my ($logtype, $color, $switchname, $msg) = @_; + printf ("%-38s %s\n", colored("$logtype", "$color") . "/" . colored("$switchname", "bold") . ":", "$msg"); +} + +# INFO-logs +sub info{ + my ($switchname, $msg) = @_; + log_it("INFO", "blue", $switchname, $msg); + return 1; +} + +# ERROR-logs +sub error{ + my ($switchname, $msg) = @_; + printf ("%-38s %s\n", colored("ERROR", "red") . "/" . colored("$switchname", "bold") . ":", "$msg"); + return 0; +} + +# Debug from Net::Telnet::Cisco +sub debug{ + my ($switchname, $errmsg) = @_; + + if ($errmsg){ + foreach my $line (split('\\n', $errmsg)){ + error($switchname, $line); + } + } +} + +# Abort +sub abort{ + my ($switchname, $t1, $t2) = @_; + + $t1->close if defined($t1); + $t2->close if defined($t2); + + return error($switchname, "Aborting."); +} + +# Set coreswos +sub set_coreswos{ + my $coreswip = shift; + + my $os = $default_coreswos; + + foreach my $swos ( sort keys %$os_regex ){ + $os = $swos if ($coreswip =~ m/$os_regex->{$swos}/); + } + + return $os; +} + +# Is NX-OS? +sub is_nx{ + my $coreswos = shift; + return 1 if ($coreswos =~ m/^nx$/i); + return 0; +} + +# Cisco-ping +sub cisco_ping{ + my ($cisco, $ip, $timeout, $coreswos, $vrf) = @_; + my $cmd; + + if (is_nx($coreswos)){ + $cmd = "ping $ip count 1 timeout 1"; + $cmd .= " vrf ${vrf_prefix}${vrf}" if ($vrf && defined($vrf)); + } else { + # IOS + $cmd = "ping"; + $cmd .= " vrf ${vrf_prefix}${vrf}" if ($vrf && defined($vrf)); + $cmd .= " $ip repeat 1 timeout 1"; + } + + my $pong = 0; + my $tries = 0; + while (($pong == 0) && ($tries < $timeout)){ + my @res = $cisco->cmd($cmd); + + # if blank, try again + # happens at least on ME3600X + next unless @res; + + # sleep if it complains about no valid source address + # % VRF does not have a usable source address + # this is caused by no link, or network not propagated + # observed on WS-C6506-E with sup720 running 122-33.SXJ5 + sleep 1 if ("@res" =~ m/VRF does not have a usable source address/); + + if (is_nx($coreswos)){ + $pong = 1 if ($res[1] =~ m/^64 bytes from $ip/i); + } else { + $pong = 1 if ($res[-1] =~ m/^\s*Success rate is 100 percent/i); + } + $tries++; + } + return $pong; +} + +# Net::Ping-ping +sub pong{ + my ($ip, $timeout) = @_; + my $pong = 0; + my $tries = 0; + + while(($pong == 0) && ($tries < $timeout)){ + my $p = Net::Ping->new(); + + if ($p->ping($ip, 5)) { + $pong = 1; + } + + $tries++; + } + return $pong; +} + +# Create login to D-Link +sub dlink_login{ + my ($switch, $ip, $vrf, $telnet_source) = @_; + + my $dlink = Net::Telnet::Cisco->new( + Host => $switch->{coreswip} . $domain_name, + Errmode => 'return', + output_log => "$log_dir/output-$switch->{coreswip}.log", + input_log => "$log_dir/input-$switch->{coreswip}.log", + Prompt => '/\S+[#>]/', + Timeout => 60 + ); + + unless (defined($dlink)) { + return error($switch->{switchname}, "Could not connect to '$switch->{coreswip}'."); + } + + info($switch->{switchname}, "Logging in to coreswitch '$switch->{coreswip}' to telnet to D-Link."); + + unless ($dlink->login($cisco_user, $cisco_pass)){ + $dlink->close; + return error($switch->{switchname}, "Can't log in to coreswitch '$switch->{coreswip}' (to telnet to D-Link)."); + } + + $dlink->enable; + debug($switch->{switchname}, $dlink->errmsg); + + my $cmd; + if (is_nx($switch->{coreswos})){ + $cmd = "telnet $ip"; + $cmd .= " vrf ${vrf_prefix}${vrf}" if ($vrf && defined($vrf)); + $cmd .= " source $telnet_source" if ($telnet_source && defined($telnet_source)); + } else { + # IOS + $cmd = "telnet $ip"; + $cmd .= " /vrf ${vrf_prefix}${vrf}" if ($vrf && defined($vrf)); + $cmd .= " /source-interface $telnet_source" if ($telnet_source && defined($telnet_source)); + } + + info($switch->{switchname}, "Telneting to D-Link."); + $dlink->print($cmd); + + info($switch->{switchname}, "Waiting for login prompt."); + $dlink->waitfor('/User ?Name:/') + or return abort($switch->{switchname}, $dlink); + + info($switch->{switchname}, "Got login prompt, logging in."); + telnet_print($switch, $dlink, '', $dlink_def_user, 0) + or return abort($switch->{switchname}, $dlink); + + info($switch->{switchname}, "Waiting for prompt."); + $dlink->waitfor('/\S+\#/') + or return abort($switch->{switchname}, $dlink); + + # disable CLI paging + telnet_print($switch, $dlink, '', "disable clipaging") + or return abort($switch->{switchname}, $dlink); + + info($switch->{switchname}, "Logged in to D-Link"); + return $dlink; +} + +# Execute telnet-command +sub telnet_cmd{ + my ($switch, $telnet, $cmd) = @_; + + unless ($telnet->cmd($cmd)){ + error($switch->{switchname}, "Command '$cmd' failed"); + debug($switch->{switchname}, $telnet->errmsg); + return 0; + } + + return 1; +} + +# Execute telnet-print +sub telnet_print{ + my ($switch, $telnet, $telnet2, $cmd, $waitfor) = @_; + + unless (defined($waitfor)){ + $waitfor = 1; + } + + unless ($telnet->print($cmd)){ + error($switch->{switchname}, "Command '$cmd' failed."); + debug($switch->{switchname}, $telnet->errmsg); + return 0; + } + + if ($waitfor){ + $telnet->waitfor('/\S+\#/') or return 0; + } + + return 1; +} + +# Make sure interface actually is shut +sub no_no_shut{ + my ($switch, $cisco, $port) = @_; + + info($switch->{switchname}, "Making sure interface $port /REALLY/ gets shut."); + + # There is a few reasons as to why we want to do this. + # On some boxes/OSes, default config for an interface is 'no shut'. + # On some boxes/OSes, the 'shut' command isn't applied right away after + # you do a 'shut'. + + my $tries = 0; + my $return = 0; + + while (1){ + if($tries >= 5){ + # max 5 tries + last; + } + + sleep 1; # wait a bit + + telnet_cmd($switch, $cisco, "shut") + or return abort($switch->{switchname}, $cisco); + + # now we need to check that the 'running config' actually reflects this + + my @shut_info = $cisco->cmd("do sh run int $port | i shutdown"); + + unless(@shut_info){ + $tries++; + next; + } + + my $shut = "@shut_info"; + chomp($shut); + + if ($shut =~ m/shutdown/i){ + $return = 1; + last; + } else { + $tries++; + next; + } + } + + return $return; +} + +# Reset all interfaces +sub reset_interfaces{ + my ($switch, $cisco) = @_; + + # Take down interface + info($switch->{switchname}, "Resetting interfaces."); + + telnet_cmd($switch, $cisco, "conf t") + or return abort($switch->{switchname}, $cisco); + + # Remove old config/return to defaults on interfaces + # We also shut them to avoid D-Link looping + foreach my $port (@{$switch->{ports}}){ + telnet_cmd($switch, $cisco, "default int $port") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "int $port") + or return abort($switch->{switchname}, $cisco); + no_no_shut($switch, $cisco, $port) + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "no switchport") + or return abort($switch->{switchname}, $cisco); + } + + # Remove portchannel + if(is_nx($switch->{coreswos})){ + # NX-OS + telnet_cmd($switch, $cisco, "no int Po$switch->{etherchannel}") + or return abort($switch->{switchname}, $cisco); + } else { + # IOS fails on the next command, if the portchannel doesn't exist + # Ignore error on this command + $cisco->cmd("no int Po$switch->{etherchannel}"); + } + + telnet_cmd($switch, $cisco, "end") + or return abort($switch->{switchname}, $cisco); + + return 1; +} + +# Push D-Link template config to a D-Link +sub push_dlink_template_config{ + my $switch = shift; # switchinfo + + # No need to bounce via Cisco-box; login directly to D-Link + my $dlink = Net::Telnet::Cisco->new( + Host => $switch->{ipv4address}, + Errmode => 'return', + output_log => "$log_dir/output-$switch->{ipv4address}.log", + input_log => "$log_dir/input-$switch->{ipv4address}.log", + Prompt => '/\S+[#>]/', + Timeout => 60 + ); + + unless (defined($dlink)) { + return error($switch->{switchname}, "Could not connect to '$switch->{switchname}' ($switch->{ipv4})."); + } + + info($switch->{switchname}, "Logging in to D-Link '$switch->{switchname}' ($switch->{ipv4address})."); + $dlink->waitfor('/User ?Name:/') + or return abort($switch->{switchname}, $dlink); + + info($switch->{switchname}, "Got login prompt, logging in."); + telnet_print($switch, $dlink, '', $dlink_def_user, 0) + or return abort($switch->{switchname}, $dlink); + + info($switch->{switchname}, "Waiting for prompt."); + $dlink->waitfor('/\S+\#/') + or return abort($switch->{switchname}, $dlink); + + # disable CLI paging + telnet_print($switch, $dlink, '', "disable clipaging") + or return abort($switch->{switchname}, $dlink); + + info($switch->{switchname}, "Logged in to D-Link"); + + # Done logging in, let's configure stuff + info($switch->{switchname}, "Opening D-Link template file ($dlink_config)."); + open $DLINK_TEMPLATE, '<', $dlink_config or return error($switch->{switchname}, "Couldn't open D-Link template ($dlink_config): $!"); + + info($switch->{switchname}, "Applying config from D-Link template file ($dlink_config)."); + + while (my $line=<$DLINK_TEMPLATE>) { + chomp $line; + + next if ($line =~ m/^\s*(((#|\!).*)|$)/); # skip if comment, or blank line + + telnet_print($switch, $dlink, '', $line) + or return abort($switch->{switchname}, $dlink); + + sleep 1; # The D-Link's are a bit slow... + } + + close $DLINK_TEMPLATE or return error($switch->{switchname}, "Couldn't close D-Link template ($dlink_config): $!"); + + info($switch->{switchname}, "Done applying config from D-Link template file ($dlink_config). Saving..."); + + # Save config + logout + telnet_print($switch, $dlink, '', "save", 0) + or return abort($switch->{switchname}, $dlink); + telnet_print($switch, $dlink, '', "Y") + or return abort($switch->{switchname}, $dlink); + telnet_print($switch, $dlink, '', "logout") + or return abort($switch->{switchname}, $dlink); + + # Done + log_it("SUCCESS", "green", $switch->{switchname}, "Done pushing D-Link template config to switch $switch->{switchname} ($switch->{ipv4address}). \\o/"); + $dlink->close; + return 1; +} + +# Setup a switch +sub setup{ + my $switch = shift; # switchinfo + my $vrf = threads->tid(); # use thread ID as VRF-number + + # Remove last port if we're skipping it + my $skipped_port; + if ($skip_last_port){ + $skipped_port = pop(@{$switch->{ports}}); + } + + if($skipped_port_only){ + info($switch->{switchname}, "Configuring skipped port only."); + } + + if($cisco_config){ + info($switch->{switchname}, "Configuring things on the Cisco-side only."); + } + + unless($cisco_config || $skipped_port_only){ + info($switch->{switchname}, "Starting configuration of $switch->{switchname} ($switch->{ipv4address})."); + info($switch->{switchname}, "Trying to ping $switch->{ipv4address}."); + + if (pong($switch->{ipv4address}, 1)){ + # push template-config to D-Link if template-file is given as argument + if($dlink_config){ + log_it("INFO", "green", $switch->{switchname}, "Switch $switch->{switchname} ($switch->{ipv4address}) is already responding to ping! \\o/"); + info($switch->{switchname}, "Going to push D-Link template config to switch $switch->{switchname} ($switch->{ipv4address})"); + return push_dlink_template_config($switch); + } else { + # if not + log_it("INFO", "green", $switch->{switchname}, "Skipping $switch->{switchname} ($switch->{ipv4address}): is already responding to ping! \\o/"); + return 1; + } + } + + info($switch->{switchname}, "Not responding to ping, configuring device."); + } + + info($switch->{switchname}, "Connecting to coreswitch '$switch->{coreswip}'."); + + my $cisco = Net::Telnet::Cisco->new( + Host => $switch->{coreswip} . $domain_name, + Errmode => 'return', + output_log => "$log_dir/output-$switch->{coreswip}.log", + input_log => "$log_dir/input-$switch->{coreswip}.log", + Prompt => '/\S+[#>]/', + Timeout => 60 + ); + + unless (defined($cisco)){ + return error($switch->{switchname}, "Could not connect to '$switch->{coreswip}'."); + } + + info($switch->{switchname}, "Logging in to coreswitch '$switch->{coreswip}'."); + + unless ($cisco->login($cisco_user, $cisco_pass)){ + $cisco->close; + return error($switch->{switchname}, "Can't log in to '$switch->{coreswip}'."); + } + + $cisco->enable; + debug($switch->{switchname}, $cisco->errmsg); + + # Disable paging + telnet_cmd($switch, $cisco, "terminal length 0") + or return abort($switch->{switchname}, $cisco); + + unless($cisco_config || $skipped_port_only){ + # Prepare ports + reset_interfaces($switch, $cisco) + or return abort($switch->{switchname}, $cisco); + + # Set up port 1 for D-Link telneting + telnet_cmd($switch, $cisco, "conf t") + or return abort($switch->{switchname}, $cisco); + + info($switch->{switchname}, "Enabling VRF (${vrf_prefix}${vrf}). Applying to interface."); + if(is_nx($switch->{coreswos})){ + # Remove previous VRF + # No error-check on the next command, as NX-OS + # spits out "% VRF dlink-X not found" + # making Net::Telnet::Cisco think it's an error + + # Extra overhead to delete, not used + #$cisco->cmd("no vrf context ${vrf_prefix}${vrf}"); + #sleep 10; # NX-OS seems to need some time to delete a VRF + + # Create VRF + telnet_cmd($switch, $cisco, "vrf context ${vrf_prefix}${vrf}") + or return abort($switch->{switchname}, $cisco); + } else { + # IOS + # IOS fails on the next command, if the vrf doesn't exist + # Ignore error on this command + + # Extra overhead to delete, not used + #$cisco->cmd("no ip vrf ${vrf_prefix}${vrf}"); + + # Create VRF + telnet_cmd($switch, $cisco, "ip vrf ${vrf_prefix}${vrf}") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "rd $vrf:$vrf") + or return abort($switch->{switchname}, $cisco); + } + + # Configure port #1 + telnet_cmd($switch, $cisco, "int " . @{$switch->{ports}}[0]) + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "no switchport") + or return abort($switch->{switchname}, $cisco); + + if(is_nx($switch->{coreswos})){ + # No error-check on the next command, as NX-OS + # spits out "% Deleted all L3 config on interface Ethernet1/45" + # making Net::Telnet::Cisco think it's an error + + $cisco->cmd("vrf member ${vrf_prefix}${vrf}"); + } else { + # IOS + telnet_cmd($switch, $cisco, "ip vrf forwarding ${vrf_prefix}${vrf}") + or return abort($switch->{switchname}, $cisco); + } + + # Add temporary D-Link IP + info($switch->{switchname}, "Adding IP-address to interface."); + + telnet_cmd($switch, $cisco, "ip address $dlink_router_ip $dlink_def_mask") + or return abort($switch->{switchname}, $cisco); + + # 'no shut'-patrol reporting in! + telnet_cmd($switch, $cisco, "no shut") + or return abort($switch->{switchname}, $cisco); + + telnet_cmd($switch, $cisco, "end") + or return abort($switch->{switchname}, $cisco); + + info($switch->{switchname}, "Waiting for D-Link to answer on $dlink_def_ip in VRF ${vrf_prefix}${vrf} on port #1 (" . @{$switch->{ports}}[0] . ")."); + + # Use port 1 if ping succeeds + my $p_count = 0; + my $dlink_port = @{$switch->{ports}}[$p_count]; + + until (cisco_ping($cisco, $dlink_def_ip, 30, $switch->{coreswos}, $vrf)) { + # Did not ping, let's try next port + # We do this because port#1 might be damaged/not patched + + # First we need to check if there are more ports to test + if ($p_count >= $#{$switch->{ports}}){ + # Current port is last port available + # Since it did not ping, we reset all interfaces + + reset_interfaces($switch, $cisco) + or return abort($switch->{switchname}, $cisco); + $cisco->close; + return error($switch->{switchname}, "No more ports on $switch->{switchname}. Aborting."); + } + + # Use next port + $p_count++; + + info($switch->{switchname}, "D-Link on port #" . ($p_count) . " ($dlink_port) did not respond. Trying next port (" . @{$switch->{ports}}[$p_count] . ")."); + + # Try next port, reset old port + telnet_cmd($switch, $cisco, "conf t") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "default int $dlink_port") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "int $dlink_port") + or return abort($switch->{switchname}, $cisco); + no_no_shut($switch, $cisco, $dlink_port) + or return abort($switch->{switchname}, $cisco); + + # Set new port + $dlink_port = @{$switch->{ports}}[$p_count]; + + # Configure new port + telnet_cmd($switch, $cisco, "int $dlink_port") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "no switchport") + or return abort($switch->{switchname}, $cisco); + + if(is_nx($switch->{coreswos})){ + # No error-check on the next command, as NX-OS + # spits out "% Deleted all L3 config on interface Ethernet1/45" + # making Net::Telnet::Cisco think it's an error + + $cisco->cmd("vrf member ${vrf_prefix}${vrf}"); + } else { + # IOS + telnet_cmd($switch, $cisco, "ip vrf forwarding ${vrf_prefix}${vrf}") + or return abort($switch->{switchname}, $cisco); + } + + telnet_cmd($switch, $cisco, "ip address $dlink_router_ip $dlink_def_mask") + or return abort($switch->{switchname}, $cisco); + # 'no shut'-patrol reporting in! + telnet_cmd($switch, $cisco, "no shut") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "end") + or return abort($switch->{switchname}, $cisco); + + info($switch->{switchname}, "Waiting for D-Link to answer on $dlink_def_ip in VRF ${vrf_prefix}${vrf} on port #" . ($p_count+1) . " (" . @{$switch->{ports}}[$p_count] . ")."); + } + + # Telnet to D-Link + info($switch->{switchname}, "Starting D-Link config phase 1."); + my $dlink = dlink_login($switch, $dlink_def_ip, $vrf) + or return abort($switch->{switchname}, $cisco); + + info($switch->{switchname}, "Setting hostname to $switch->{switchname}${dlink_host_suffix}"); + telnet_print($switch, $dlink, $cisco, "config snmp system_name $switch->{switchname}${dlink_host_suffix}") + or return abort($switch->{switchname}, $cisco, $dlink); + + info($switch->{switchname}, "Adding LACP. Enabling STP."); + telnet_print($switch, $dlink, $cisco, "create link_aggregation group_id 1 type lacp") + or return abort($switch->{switchname}, $cisco, $dlink); + telnet_print($switch, $dlink, $cisco, "config link_aggregation group_id 1 ports 1:($dlink_lacp_start-$dlink_lacp_end)") + or return abort($switch->{switchname}, $cisco, $dlink); + telnet_print($switch, $dlink, $cisco, "enable stp") + or return abort($switch->{switchname}, $cisco, $dlink); + + info($switch->{switchname}, "STP enabled, logging in again."); + $dlink->close; + + unless (cisco_ping($cisco, $dlink_def_ip, 60, $switch->{coreswos}, $vrf)) { + reset_interfaces($switch, $cisco) + or return abort($switch->{switchname}, $cisco); + $cisco->close; + return error($switch->{switchname}, "Can't login to $switch->{switchname} on $dlink_def_ip, aborting."); + } + + $dlink = dlink_login($switch, $dlink_def_ip, $vrf) or return abort($switch->{switchname}, $cisco); + + info($switch->{switchname}, "Running STP config."); + telnet_print($switch, $dlink, $cisco, "config stp version mstp") + or return abort($switch->{switchname}, $cisco, $dlink); + telnet_print($switch, $dlink, $cisco, "config stp priority 61440 instance_id 0") + or return abort($switch->{switchname}, $cisco, $dlink); + telnet_print($switch, $dlink, $cisco, "config stp ports 1:(1-44) edge true") + or return abort($switch->{switchname}, $cisco, $dlink); + telnet_print($switch, $dlink, $cisco, "enable lldp") + or return abort($switch->{switchname}, $cisco, $dlink); + + info($switch->{switchname}, "Setting IP address."); + telnet_print($switch, $dlink, $cisco, "config ipif System ipaddress $switch->{ipv4address}/$dlink_prefix vlan default") + or return abort($switch->{switchname}, $cisco, $dlink); + + info($switch->{switchname}, "Closing D-Link link."); + $dlink->close; + + info($switch->{switchname}, "Configuring IP on gateway."); + telnet_cmd($switch, $cisco, "conf t") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "default int $dlink_port") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "int $dlink_port") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "no switchport") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "ip address $switch->{ipv4gateway} $switch->{netmask}") + or return abort($switch->{switchname}, $cisco); + # 'no shut'-patrol reporting in! + telnet_cmd($switch, $cisco, "no shut") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "end") + or return abort($switch->{switchname}, $cisco); + + # Wait for network convergence + info($switch->{switchname}, "Waiting for network to converge."); + unless (cisco_ping($cisco, $switch->{ipv4address}, 60, $switch->{coreswos})) { + reset_interfaces($switch, $cisco) + or return abort($switch->{switchname}, $cisco); + $cisco->close; + return error($switch->{switchname}, "Can't ping $switch->{switchname} on $switch->{ipv4address}, aborting."); + } + + # Do it again! + info($switch->{switchname}, "D-Link config phase 2."); + $dlink = dlink_login($switch, $switch->{ipv4address}, '', $dlink_port) or return abort($switch->{switchname}, $cisco); + + info($switch->{switchname}, "Setting default route on switch. Saving config."); + telnet_print($switch, $dlink, $cisco, "create iproute default $switch->{ipv4gateway}") + or return abort($switch->{switchname}, $cisco, $dlink); + telnet_print($switch, $dlink, $cisco, "save", 0) + or return abort($switch->{switchname}, $cisco, $dlink); + telnet_print($switch, $dlink, $cisco, "Y") + or return abort($switch->{switchname}, $cisco, $dlink); + telnet_print($switch, $dlink, $cisco, "logout") + or return abort($switch->{switchname}, $cisco, $dlink); + + info($switch->{switchname}, "Closing D-Link link."); + $dlink->close; + } + + unless($skipped_port_only){ + # Configure final IOS stuff + info($switch->{switchname}, "Final IOS config phase. Setting up all interfaces + Port-Channel."); + + # Reset interfaces + reset_interfaces($switch, $cisco) + or return abort($switch->{switchname}, $cisco); + + telnet_cmd($switch, $cisco, "conf t") + or return abort($switch->{switchname}, $cisco); + + # this needs to be done on IOS-XE + # Portchannel needs to exist before we can assign interfaces to it + telnet_cmd($switch, $cisco, "int Po$switch->{etherchannel}") + or return abort($switch->{switchname}, $cisco); + + # Rest of the config + my $etherchan_desc; + foreach my $port (@{$switch->{ports}}){ + telnet_cmd($switch, $cisco, "int $port") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "no switchport") + or return abort($switch->{switchname}, $cisco); + # 'no shut'-patrol reporting in! + telnet_cmd($switch, $cisco, "no shut") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "desc D-Link $switch->{switchname}; RJ-45; 1G;") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "channel-group $switch->{etherchannel} mode passive") + or return abort($switch->{switchname}, $cisco); + + # add port to descr + $etherchan_desc .= "$port; "; + } + + telnet_cmd($switch, $cisco, "int Po$switch->{etherchannel}") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "desc D-Link $switch->{switchname}; $etherchan_desc") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "ip address $switch->{ipv4gateway} $switch->{netmask}") + or return abort($switch->{switchname}, $cisco); + + # ipv6-stuff + unless (is_nx($switch->{coreswos})){ + # IOS + telnet_cmd($switch, $cisco, "ipv6 enable") + or return abort($switch->{switchname}, $cisco); + } + + telnet_cmd($switch, $cisco, "ipv6 address $switch->{ipv6address}") + or return abort($switch->{switchname}, $cisco); + + if (is_nx($switch->{coreswos})){ + telnet_cmd($switch, $cisco, "ip dhcp relay address $dhcprelay4_pri") + or return abort($switch->{switchname}, $cisco); + + # define secondary if present + if (defined($dhcprelay4_sec) && $dhcprelay4_sec){ + telnet_cmd($switch, $cisco, "ip dhcp relay address $dhcprelay4_sec") + or return abort($switch->{switchname}, $cisco); + } + } else { + # IOS + telnet_cmd($switch, $cisco, "ip helper-address $dhcprelay4_pri") + or return abort($switch->{switchname}, $cisco); + + # define secondary if present + if (defined($dhcprelay4_sec) && $dhcprelay4_sec){ + telnet_cmd($switch, $cisco, "ip helper-address $dhcprelay4_sec") + or return abort($switch->{switchname}, $cisco); + } + } + + # Custom Portchannel-config + # Dynamically applied depending on OS + foreach my $cmd (@{$po_config->{$switch->{coreswos}}}){ + telnet_cmd($switch, $cisco, $cmd) + or return abort($switch->{switchname}, $cisco); + } + + # 'no shut'-patrol reporting in! + telnet_cmd($switch, $cisco, "no shut") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "end") + or return abort($switch->{switchname}, $cisco); + } + + # If we skipped last port at the start, we configure it now + if (($skip_last_port && $skipped_port && defined($skipped_port)) || ($skipped_port_only && defined($skipped_port_only))){ + if ($skipped_port_desc_only){ + info($switch->{switchname}, "Configuring skipped port... (description only)"); + } else { + info($switch->{switchname}, "Configuring skipped port..."); + } + + telnet_cmd($switch, $cisco, "conf t") + or return abort($switch->{switchname}, $cisco); + unless ($skipped_port_desc_only){ + telnet_cmd($switch, $cisco, "default int $skipped_port") + or return abort($switch->{switchname}, $cisco); + } + + telnet_cmd($switch, $cisco, "int $skipped_port") + or return abort($switch->{switchname}, $cisco); + telnet_cmd($switch, $cisco, "desc AP \@ D-Link $switch->{switchname}; RJ-45; 1G;") + or return abort($switch->{switchname}, $cisco); + + unless ($skipped_port_desc_only){ + foreach my $cmd (@{$last_port_config->{$switch->{coreswos}}}){ + telnet_cmd($switch, $cisco, $cmd) + or return abort($switch->{switchname}, $cisco); + } + # 'no shut'-patrol reporting in! + telnet_cmd($switch, $cisco, "no shut") + or return abort($switch->{switchname}, $cisco); + } + telnet_cmd($switch, $cisco, "end") + or return abort($switch->{switchname}, $cisco); + } + + # If only cisco-config + if($cisco_config){ + log_it("CONFIG", "green", $switch->{switchname}, "Cisco-config relevant to switch '$switch->{switchname}' ($switch->{ipv4address}) done! \\o/"); + } + + # Check if all is OK, but not if configuring skipped port only + my $return = 0; + if ($skipped_port_only){ + info($switch->{switchname}, "Done doing skipped port config. Not checking if anything is online."); + $return = 1; + } else { + unless (pong($switch->{ipv4address}, 15)){ + if (cisco_ping($cisco, $switch->{ipv4address}, 60, $switch->{coreswos})) { + # we can reach from core, but not from other places, lets warn + log_it("ERROR", "red", $switch->{switchname}, "Switch $switch->{switchname} reachable only from core/distro."); + } else { + reset_interfaces($switch, $cisco) + or return abort($switch->{switchname}, $cisco); + $cisco->close; + return error($switch->{switchname}, "Can't ping $switch->{switchname} on $switch->{ipv4address}, aborting."); + } + } else { + # pingable, OK + log_it("SUCCESS", "green", $switch->{switchname}, "Switch $switch->{switchname} ($switch->{ipv4address}) set up! \\o/"); + + $return = 1; + + # push template-config to D-Link if template-file is given as argument + if($dlink_config){ + info($switch->{switchname}, "Going to push D-Link template config to switch $switch->{switchname} ($switch->{ipv4address})"); + $return = push_dlink_template_config($switch); + } + } + } + + if($save_config){ + # save the cisco-config + info($switch->{switchname}, "Saving config on core-switch ($switch->{coreswip})."); + telnet_cmd($switch, $cisco, "write") + or return abort($switch->{switchname}, $cisco); + } + + $cisco->close; + return $return; +} + +# Process switches +sub process_switches { + while (my $switch = $switchq->dequeue()){ + last if ($switch eq 'DONE'); # all done + + my $time_start = time(); + + # Wait till there is sessions/VTYs available + while (1){ + $telnet_sessions{$switch->{coreswip}} = 0 unless $telnet_sessions{$switch->{coreswip}}; + $telnet_sessions{$switch->{coreswip}} += 2; + + if ($telnet_sessions{$switch->{coreswip}} <= $os_info->{$switch->{coreswos}}{max_sessions}){ + # lower or equal to max_sessions on current switch + # lets move on + last; + } else { + # we would exceed max_sessions on current switch + # we wait until there is free sessions + info($switch->{switchname}, "There are no more free sessions left on '$switch->{coreswip}' ($switch->{coreswos}). Waiting..."); + $telnet_sessions{$switch->{coreswip}} -= 2; + sleep (int(rand(10)) + 10); + } + } + + info($switch->{switchname}, "Number of sessions on switch '$switch->{coreswip}': $telnet_sessions{$switch->{coreswip}}."); + + if (setup($switch)) { + # Count number of switches + $switches++; + + } else { + log_it("FAILED", "red", $switch->{switchname}, "Configuring $switch->{switchname} failed."); + + # Count failed switches + $failed_switches++; + } + + # Remove session + $telnet_sessions{$switch->{coreswip}} -= 2; + + # Summarize total time spent, used to calculate average per switch + $total_time += time() - $time_start; + } + + # detach thread -- we're done + threads->detach; +} + +# Let's start +my $time_start = time(); +log_it("INFO", "yellow", "dlink-ng", "Starting dlink-ng with $max_threads threads..."); +log_it("INFO", "yellow", "dlink-ng", "Configured to skip last port on all switches.") if $skip_last_port; + +# Let's add all switches to the queue +while (<STDIN>){ + next if /^(.*#|\s+$)/; # skip if comment, or blank line + + my ($switchname, $coreswip, $etherchannel, $cidr, $ipv4address, $ipv4gateway, $ipv6address, @ports) = split; + + # skip if less than 1 port is provided + if (scalar(@ports) < 1){ + log_it("FAILED", "red", $switchname, "Switch '$switchname' had less than 1 port configured. Skipping."); + next; + } + + # define OS of the coresw + my $coreswos = set_coreswos($switchname); + + # find netmask + my $netmask = Net::IP->new($cidr)->mask(); + + my %switch = ( + switchname => $switchname, + coreswip => $coreswip, + coreswos => $coreswos, + etherchannel => $etherchannel, + ipv4address => $ipv4address, + ipv4gateway => $ipv4gateway, + netmask => $netmask, + ipv6address => $ipv6address, + ports => \@ports, + ); + + # Only configure a single switch? + if (defined $single_switch){ + unless ($single_switch eq $switchname){ + next; + } + } + + # Add switch to queue + $switchq->enqueue(\%switch); +} + +# Let the threads know when they're done +$switchq->enqueue("DONE") for (1..$max_threads); + +# Start processing the queue +threads->create("process_switches") for (1..$max_threads); + +# Wait till all threads is done +sleep 5 while (threads->list(threads::running)); + +# If 0 switches +my $runtime = time() - $time_start; +my $total_switches = $switches + $failed_switches; +if($total_switches == 0){ + log_it("INFO", "yellow", "dlink-ng", "Finished!"); + log_it("INFO", "yellow", "dlink-ng", "Crunched 0 switches in $runtime seconds."); + exit 1; +} + +# Done +my $avg = sprintf("%.1f", $total_time / $total_switches); +log_it("INFO", "yellow", "dlink-ng", "Finished!"); +log_it("INFO", "yellow", "dlink-ng", "Crunched $total_switches switches in $runtime seconds."); +log_it("INFO", "yellow", "dlink-ng", "$switches of these were successful, while $failed_switches failed."); +log_it("INFO", "yellow", "dlink-ng", "Average of $avg seconds per switch."); + diff --git a/dlink-ng/make-dlink-config.pl b/dlink-ng/make-dlink-config.pl new file mode 100755 index 0000000..54284ac --- /dev/null +++ b/dlink-ng/make-dlink-config.pl @@ -0,0 +1,70 @@ +#!/usr/bin/perl -I /root/tgmanage/ +use strict; +use warnings; +use lib '..'; +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} + +unless (@ARGV > 0) { + print "No arguments. Need switches.txt and patchlist.txt.\n"; + exit 1; +} + +my $s = open(SWITCHES, "$ARGV[0]") or die ("Cannot open switches.txt"); +my $p = open(PATCH, "$ARGV[1]") or die ("Cannot open patchlist.txt"); + +my $portchannel_start = 10; +my %portchannels; +my $letter = "a"; + +my %switches; +while(<SWITCHES>) { + chomp; + my ($network, $netmask, $switchname, $mngmt_ip) = split; # $mngmt_ip is unused + $switches{$switchname} = { + network => $network, + netmask => $netmask, + }; +} +while (<PATCH>) { + chomp; + my ($switchname, $coregw, @ports) = split; + my $network = $switches{$switchname}{network}; + my $netmask = $switches{$switchname}{netmask}; + my ($o1, $o2, $o3, $o4) = split(/\./, $network); + + # TG13-fiks + # Distroene ble kalt 1-5, men planning-forvirring førte til renaming 0-4 + $coregw =~ s/^(distro)([0-9])$/$1 . ($2-1)/e; + + # portchannel per distro + $portchannels{$coregw} = $portchannel_start unless ($portchannels{$coregw} && defined($portchannels{$coregw})); + + if ($o4 eq "0") { + $letter = "a"; + } elsif ($o4 eq "64") { + $letter = "b"; + } elsif ($o4 eq "128") { + $letter = "c"; + } elsif ($o4 eq "192") { + $letter = "d"; + } + + my $v6addr = $nms::config::base_ipv6net . $o3 . $letter ."::1/64"; + + $o4 += 1; + my $gateway_addr = "$o1.$o2.$o3.$o4"; + $o4 += 1; + my $switch_addr = "$o1.$o2.$o3.$o4"; + + print "$switchname $coregw $portchannels{$coregw} $network/$netmask $switch_addr $gateway_addr $v6addr " . join(' ', @ports) . "\n"; + + # increase portchannel + $portchannels{$coregw}++; + + die("NO MORE ETHERCHANNELS!") if($portchannels{$coregw} > 64); # IOS-XE 4500 only supports 64 portchannels +}
\ No newline at end of file diff --git a/include/config.local.pm b/include/config.local.pm new file mode 100644 index 0000000..8e0eeee --- /dev/null +++ b/include/config.local.pm @@ -0,0 +1,100 @@ +#! /usr/bin/perl +use strict; +use warnings; +use DBI; +package nms::config; + +# Don't change this file for your local setup; use config.local.pm instead. + +our $db_name = "nms"; +our $db_host = "flexus.tg13.gathering.org"; +our $db_username = "nms"; +our $db_password = "<removed>"; + +our $dhcp_server1 = "151.216.126.2"; +our $dhcp_server2 = "151.216.125.17"; # Cisco ISE profiling + +our $ios_user = "nms"; +our $ios_pass = "<removed>"; + +# Tech:Net sets up at least a read-community for SNMP for use +# with dlink1g, nms and sosuch. This is the one: +our $snmp_community = "<removed>"; + +our $dlink1g_user = 'dlinkng'; +our $dlink1g_passwd = '<removed>'; + +# No longer in use as of '12 ? +# our $telegw_ip = "12.34.56.78"; +# our @telegw_wanlinks = ("gig1/1", "gig1/2"); + +our $tgname = "tg13"; + +our $pri_a = "winix"; +our $pri_ptr = "151.216.126.2"; +our $pri_v6 = "2a02:ed02:126::2"; +our $pri_net = "151.216.126.0/24"; +our $sec_a = "tress90"; +our $sec_ptr = "151.216.125.2"; +our $sec_v6 = "2a02:ed02:125::2"; + +# for RIPE to get reverse zones via DNS AXFR +our $ext_xfer = "193.0.0.0/22"; +our $ext_ns = "194.19.3.20"; + +# To generate new dnssec-key for ddns: +# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST DHCP_UPDATER +our $ddns_key = "<removed>"; +our $ddns_to = "127.0.0.1"; + +# Used by make-named.pl +our $noc_nett = "151.216.124.0/24"; +our $noc_nett_v6 = "2a02:ed02:124::/64"; + +# Ikke i bruk i '11 til revers-soner. +# Ikke i bruk i '12 heller +# PÃ¥ tide Ã¥ fjerne dette i '13? +# Ikke brukt i '13 heller +# PÃ¥ tide Ã¥ fjerne dette i '14????????? :-D :-P +#our $root_arpa = "22.89.in-addr.arpa"; +#our $ipv6nett = "2001:8c0:9840::/48"; + +our $base_ipv4net = "151.216.0.0"; +our $base_ipv4prefix = 17; + +our $base_ipv6net = "2a02:ed02:"; +our $base_ipv6prefix = 32; +our $ipv6zone = "2.0.d.e.2.0.a.2.ip6.arpa"; + +our $pxe_server = "151.216.125.3"; +our $ciscowlc_a = "151.216.127.15"; + + +# static_switches is supposed to be legacy, and should be safe to remove. +#130, 144, 145, 196, 197, 198, 199, 200, 203, 201, 206, 208, 209, 211, 213, +#our @static_switches = ( +# 130,144,145,190,200,201,203,206,208,209,210,211,213,215,216,217,218,219,220,221,223,250,252 +# ); +#our @static_nets = ( +# 0, 212, 254, 255 +# ); + +# Used by ipv6-stats, but never got updated for tg11-ip's. Commenting. +# The following is the list of routing netboxes (core, dist, tele, a.s.o) +our @distrobox_ips = ( + '151.216.127.17', # distro0 + '151.216.127.18', # distro1 + '151.216.127.19', # distro2 + '151.216.127.20', # distro3 + '151.216.127.21', # distro4 + '151.216.127.9', # crewgw + '151.216.127.11', # gamegw + '151.216.124.1', # nocgw + '151.216.127.6', # logistikkgw + '151.216.127.5', # wtfgw +); + +# Forwarding zones. +our @forwarding_zones = qw( ); + +1; diff --git a/include/config.pm b/include/config.pm new file mode 100644 index 0000000..17f2c68 --- /dev/null +++ b/include/config.pm @@ -0,0 +1,25 @@ +#! /usr/bin/perl +use strict; +use warnings; +use DBI; +package nms::config; + +# Don't change this file for your local setup; use config.local.pm instead. + +our $db_name = "<removed>"; +our $db_host = "nms.tg08.gathering.org"; +our $db_username = "<removed>"; +our $db_password = "<removed>"; + +our $zyxel_password = "<removed>"; +our $telnet_timeout = 300; + +# Tech:Net sets up at least a read-community for SNMP for use +our $ios_user = "<removed>"; +our $ios_pass = "<removed>"; + +# No longer in use as of '12 ? +#our $telegw_ip = "12.34.56.78"; +#our @telegw_wanlinks = ("gig1/1", "gig1/2"); + +1; diff --git a/include/nms.pm b/include/nms.pm new file mode 100644 index 0000000..9567bde --- /dev/null +++ b/include/nms.pm @@ -0,0 +1,104 @@ +#! /usr/bin/perl +use strict; +use warnings; +use DBI; +use Net::Telnet; +use Data::Dumper; +use FileHandle; +package nms; + + +use base 'Exporter'; +our @EXPORT = qw(switch_disconnect switch_connect switch_exec switch_timeout db_connect); + +BEGIN { + require "config.pm"; + eval { + require "config.local.pm"; + }; +} + +sub db_connect { + my $dbh = DBI->connect("dbi:Pg:" . + "dbname=" . $nms::config::db_name . + ";host=" . $nms::config::db_host, + $nms::config::db_username, + $nms::config::db_password) + or die "Couldn't connect to database"; + return $dbh; +} + +sub switch_connect($) { + my ($ip) = @_; + + my $dumplog = FileHandle->new; + $dumplog->open(">>/tmp/dumplog-queue") or die "/tmp/dumplog-queue: $!"; + $dumplog->print("\n\nConnecting to " . $ip . "\n\n"); + + my $inputlog = FileHandle->new; + $inputlog->open(">>/tmp/inputlog-queue") or die "/tmp/inputlog-queue: $!"; + $inputlog->print("\n\nConnecting to " . $ip . "\n\n"); + + my $conn = new Net::Telnet( Timeout => $nms::config::telnet_timeout, + Dump_Log => $dumplog, + Input_Log => $inputlog, + Errmode => 'return', + Prompt => '/DGS-3100# (?!\x1b\[K)/'); + my $ret = $conn->open( Host => $ip); + if (!$ret || $ret != 1) { + return (undef); + } + # Handle login with and without password + print "Logging in without password\n"; + $conn->waitfor('/User ?Name:/'); + $conn->print('admin'); + my (undef, $match) = $conn->waitfor('/DGS-3100#|Password:/'); + die 'Unexpected prompt after login attempt' if (not defined $match); + if ($match eq 'Password:') { + $conn->print('gurbagurba'); # Dette passordet skal feile + $conn->waitfor('/User ?Name:/'); + $conn->print($nms::config::dlink1g_user); + my (undef, $match) = $conn->waitfor('/DGS-3100#|Password:/'); + if ($match eq 'Password:') { + $conn->cmd($nms::config::dlink1g_passwd); + } + } + return ($conn); +} + +# Send a command to switch and return the data recvied from the switch +sub switch_exec { + my ($cmd, $conn, $print) = @_; + + # Send the command and get data from switch + my @data; + if (defined($print)) { + $conn->print($cmd); + return; + } else { + @data = $conn->cmd($cmd); + print $conn->errmsg, "\n"; + } + return @data; +# my @lines = (); +# foreach my $line (@data) { +# # Remove escape-7 sequence +## $line =~ s/\x1b\x37//g; +# push (@lines, $line); +# } +# return @lines; +} + +sub switch_timeout { + my ($timeout, $conn) = @_; + + $conn->timeout($timeout); + return ('Set timeout to ' . $timeout); +} + +sub switch_disconnect { + my ($conn) = @_; + $conn->close; +} + +1; diff --git a/include/tgmanage.cfg.sh b/include/tgmanage.cfg.sh new file mode 100644 index 0000000..a922f1c --- /dev/null +++ b/include/tgmanage.cfg.sh @@ -0,0 +1,19 @@ +# This file is autogenerated by tools/create-shellconf.pl, +# using data from nms::config. +# +# Do you need new common/configuration variables? +# Add/update include/config.local.pm and tools/create-shellconf.pl + +PRIMARY="winix.tg13.gathering.org" +SECONDARY="tress90.tg13.gathering.org" +TGNAME="tg13" + +PRI_PTR="151.216.126.2" +SEC_PTR="151.216.125.2" + +DDNS_KEY="<removed>" + +BASEV4="151.216.0.0" +PREFIXV4="17" +BASEV6="2a02:ed02:" +PREFIXV6="32" diff --git a/infra-dns.txt b/infra-dns.txt new file mode 100644 index 0000000..6297a16 --- /dev/null +++ b/infra-dns.txt @@ -0,0 +1,28 @@ +# telegw 151.216.127.1 2a02:ed02:FFFF::1 +# nocgw 151.216.127.2 2a02:ed02:FFFF::2 +# camgw 151.216.127.3 2a02:ed02:FFFF::3 +# stageboh 151.216.127.4 2a02:ed02:FFFF::4 +# wtfgw 151.216.127.5 2a02:ed02:FFFF::5 +# logistikkGW 151.216.127.6 2a02:ed02:FFFF::6 +# corengw 151.216.127.7 2a02:ed02:FFFF::7 +# coresgw 151.216.127.8 2a02:ed02:FFFF::8 +# crewgw 151.216.127.9 2a02:ed02:FFFF::9 +# tvgw 151.216.127.10 2a02:ed02:FFFF::10 +# gameGW 151.216.127.11 2a02:ed02:FFFF::11 +# resepsjonGW 151.216.127.12 2a02:ed02:FFFF::12 +# presseGW 151.216.127.13 2a02:ed02:FFFF::13 +# sponsorGW 151.216.127.14 2a02:ed02:FFFF::14 +# KomplettGW 151.216.127.15 2a02:ed02:FFFF::15 +# eldregw 151.216.127.16 2a02:ed02:FFFF::16 + distro0 151.216.127.17 2a02:ed02:FFFF::17 + distro1 151.216.127.18 2a02:ed02:FFFF::18 + distro2 151.216.127.19 2a02:ed02:FFFF::19 + distro3 151.216.127.20 2a02:ed02:FFFF::20 + distro4 151.216.127.21 2a02:ed02:FFFF::21 + +# telegw -- BLIX SINE +#telegw-po1 185.12.59.2 2a02:ed01::2 +# nocgw +#nocgw-po1 151.216.0.3 nope +#vss-core 151.216.123.254 2A02:ED02:123::254 + diff --git a/iptables-dnat-hack.txt b/iptables-dnat-hack.txt new file mode 100644 index 0000000..caa36a4 --- /dev/null +++ b/iptables-dnat-hack.txt @@ -0,0 +1,140 @@ +Since several services thought our IP's didn't belong to Norway, they sent us +to CDN's in Japan, Africa, and some other weird countries. NRK nett-tv also +didn't think we was in Norway, hence it did not let you stream things. Action +had to be taken. + +We had a /24 from our ISP that we knew would be recognized as Norwegian. We +therefore decided to NAT everything related to those services behind that /24. +We had to figure out all the destination prefixes used for the different +services, and only NAT sessions going to those networks. Tests showed that even +if Origin was being NATed behind "Norwegian IPs", it would still connect to +lol-CDN. We then decided to DNAT all connections to these specific IPs. We +found a suitable Origin-CDN hosted at Telenor/Canal Digital, that would accept +connections. + +In the process of setting this up, we found out that Cisco ASR1k doesn't (at +the time, at least) support more than _one_ DNAT-entry (with the same +destination, at least). iptables to the rescue. + +Two 10gig-interfaces was set up. One as the 'inside', and the other as the +'outside'. + +The solution worked flawlessly, and peaked at about ~2Gbps of traffic. + +## IPTABLES START +*filter +:INPUT DROP [0:0] +:FORWARD ACCEPT [497:117797] +:OUTPUT ACCEPT [0:0] +-A INPUT -i lo -j ACCEPT +-A INPUT -i gre5 -j ACCEPT +-A INPUT -i eth2 -j ACCEPT +-A INPUT -p icmp -j ACCEPT +-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT +-A INPUT -j DROP +-A FORWARD -i eth3 -o gre5 -m state --state RELATED,ESTABLISHED -j ACCEPT +-A FORWARD -i gre5 -o eth3 -j ACCEPT +-A OUTPUT -o lo -j ACCEPT +-A OUTPUT -j ACCEPT +COMMIT +# NAT +*nat +:PREROUTING ACCEPT [1073:112412] +:POSTROUTING ACCEPT [65:16154] +:OUTPUT ACCEPT [2:129] +:nataccept - [0:0] +-A PREROUTING -d 23.15.8.0/24 -j DNAT --to-destination 148.123.13.49 +-A PREROUTING -d 23.32.241.0/24 -j DNAT --to-destination 148.123.13.49 +-A PREROUTING -d 120.29.145.0/24 -j DNAT --to-destination 148.123.13.49 +-A PREROUTING -d 124.40.32.0/24 -j DNAT --to-destination 148.123.13.49 +-A PREROUTING -d 125.56.200.0/24 -j DNAT --to-destination 148.123.13.49 +-A POSTROUTING -s 151.216.0.0/17 -o eth3 -j nataccept +-A nataccept -j LOG --log-prefix "iptables nat accept " +-A nataccept -j SNAT --to-source 31.169.55.2-31.169.55.254 +COMMIT +## IPTABLES END + + +## Cisco ACL +! +ip access-list extended steamorigin + remark TEST + 10 permit ip 151.216.0.0 0.0.127.255 158.37.91.0 0.0.0.255 + remark ORIGIN + 100 permit ip 151.216.0.0 0.0.127.255 23.15.8.0 0.0.0.255 + 110 permit ip 151.216.0.0 0.0.127.255 23.21.0.0 0.0.255.255 + 120 permit ip 151.216.0.0 0.0.127.255 23.23.0.0 0.0.255.255 + 130 permit ip 151.216.0.0 0.0.127.255 23.32.241.0 0.0.0.255 + 140 permit ip 151.216.0.0 0.0.127.255 23.46.0.0 0.0.255.255 + 300 permit ip 151.216.0.0 0.0.127.255 50.16.0.0 0.0.255.255 + 310 permit ip 151.216.0.0 0.0.127.255 50.17.0.0 0.0.255.255 + 320 permit ip 151.216.0.0 0.0.127.255 54.225.0.0 0.0.255.255 + 400 permit ip 151.216.0.0 0.0.127.255 81.21.146.0 0.0.0.255 + 500 permit ip 151.216.0.0 0.0.127.255 107.20.244.0 0.0.0.255 + 510 permit ip 151.216.0.0 0.0.127.255 120.29.145.0 0.0.0.255 + 520 permit ip 151.216.0.0 0.0.127.255 124.40.32.0 0.0.0.255 + 530 permit ip 151.216.0.0 0.0.127.255 125.56.200.0 0.0.0.255 + 540 permit ip 151.216.0.0 0.0.127.255 164.177.139.0 0.0.0.255 + 550 permit ip 151.216.0.0 0.0.127.255 184.73.0.0 0.0.255.255 + 560 permit ip 151.216.0.0 0.0.127.255 204.236.239.0 0.0.0.255 + remark STEAM + 5100 permit ip 151.216.0.0 0.0.127.255 72.165.61.0 0.0.0.255 + 5110 permit ip 151.216.0.0 0.0.127.255 81.171.115.0 0.0.0.255 + 5120 permit ip 151.216.0.0 0.0.127.255 87.248.217.0 0.0.0.255 + 5300 permit ip 151.216.0.0 0.0.127.255 103.28.54.0 0.0.0.255 + 5310 permit ip 151.216.0.0 0.0.127.255 146.66.152.0 0.0.0.255 + 5500 permit ip 151.216.0.0 0.0.127.255 205.185.220.0 0.0.0.255 + 5510 permit ip 151.216.0.0 0.0.127.255 208.64.200.0 0.0.0.255 + 5520 permit ip 151.216.0.0 0.0.127.255 209.197.0.0 0.0.255.255 + 5530 permit ip 151.216.0.0 0.0.127.255 212.187.201.0 0.0.0.255 + remark NRK-TV + 9000 permit ip 151.216.0.0 0.0.127.255 23.8.146.0 0.0.0.255 + 9010 permit ip 151.216.0.0 0.0.127.255 46.137.77.0 0.0.0.255 + 9020 permit ip 151.216.0.0 0.0.127.255 50.16.209.0 0.0.0.255 + 9030 permit ip 151.216.0.0 0.0.127.255 50.16.231.0 0.0.0.255 + 9040 permit ip 151.216.0.0 0.0.127.255 50.17.243.0 0.0.0.255 + 9050 permit ip 151.216.0.0 0.0.127.255 54.225.239.0 0.0.0.255 + 9060 permit ip 151.216.0.0 0.0.127.255 54.243.145.0 0.0.0.255 + 9070 permit ip 151.216.0.0 0.0.127.255 54.243.68.0 0.0.0.255 + 9080 permit ip 151.216.0.0 0.0.127.255 65.52.155.0 0.0.0.255 + 9090 permit ip 151.216.0.0 0.0.127.255 77.88.106.0 0.0.0.255 + 9100 permit ip 151.216.0.0 0.0.127.255 82.96.58.0 0.0.0.255 + 9110 permit ip 151.216.0.0 0.0.127.255 94.245.71.0 0.0.0.255 + 9120 permit ip 151.216.0.0 0.0.127.255 160.68.205.0 0.0.0.255 + 9130 permit ip 151.216.0.0 0.0.127.255 174.129.219.0 0.0.0.255 + 9140 permit ip 151.216.0.0 0.0.127.255 184.28.17.0 0.0.0.255 + 9150 permit ip 151.216.0.0 0.0.127.255 184.73.220.0 0.0.0.255 + 9160 permit ip 151.216.0.0 0.0.127.255 204.245.63.0 0.0.0.255 + 9170 permit ip 151.216.0.0 0.0.127.255 204.236.234.0 0.0.0.255 +! + +## Cisco route-map +!!!! telegw; +! +route-map nat-madness permit 10 + match ip address steamorigin + set ip next-hop 151.216.0.57 +! +! +interface Port-channel2 + ip policy route-map nat-madness +! +interface Port-channel3 + ip policy route-map nat-madness +! +interface TenGigabitEthernet4/4 + ip policy route-map nat-madness +! + +!!!! nocgw +! +route-map nat-madness permit 10 + match ip address steamorigin + set ip next-hop 151.216.125.6 +! +! +interface vlan 124 + ip policy route-map nat-madness +! +! + diff --git a/mbd/access_list.pl b/mbd/access_list.pl new file mode 100644 index 0000000..89a8182 --- /dev/null +++ b/mbd/access_list.pl @@ -0,0 +1,294 @@ + +package Config; + +sub game_id { + my ($data, $offset) = @_; + my $id = ((ord(substr($data, $offset, 1)) << 8) | ord(substr($data, $offset + 1, 1))); + return $id; +} + +our @access_list = ( + # half-life - untested (packet dump only) + { + name => 'Half-Life', + ports => [ 27015 ], + sizes => [ 16 ] + }, + + # cs 1.6 - verified + # (funker muligens for _alle_ source-spill inkl. hl2/cs:s) + { + name => 'CS:Source', + ports => [ "26900..26903", "27015..27017" ], + sizes => [ 25 ], + filter => sub { return (game_id(shift, 4) == 0x4325); } + }, + { + name => 'Left 4 Dead', + ports => [ "26900..26903", "27015..27017" ], + sizes => [ 25 ], + filter => sub { return (game_id(shift, 4) == 0x43f3); } + }, + { + name => 'CS 1.6', + ports => [ "26900..26903", "27015..27017" ], + sizes => [ 25 ], + filter => sub { return (game_id(shift, 4) == 0x5453); } + }, + { + name => 'Unknown Source-based game (ID 0x4326)', + ports => [ "26900..26903", "27015..27017" ], + sizes => [ 25 ], + filter => sub { return (game_id(shift, 4) == 0x4326); } + }, + { + name => 'Other Source game (unknown game ID)', + ports => [ "26900..26903", "27015..27017" ], + sizes => [ 25 ], + }, + { + name => 'Other Source game (unknown game ID, odd length 33)', + ports => [ "26900..26903", "27015..27017" ], + sizes => [ 33 ], + }, + { + name => 'Other Source game (unknown game ID, odd length 58)', + ports => [ "26900..26903", "27015..27017" ], + sizes => [ 58 ], + }, + { + name => 'Other Source game (unknown game ID, odd length 15)', + ports => [ "26900..26903", "27015..27017" ], + sizes => [ 15 ], + }, + + # doom 3 - verified + { + name => 'Doom 3', + ports => [ "27666" ], + sizes => [ 14 ] + }, + + # quake 1 - verified + { + name => 'Quake 1', + ports => [ 26000 ], + sizes => [ 12 ] + }, + + # q3a - tested with demo only + # rtcw: enemy territory - untested (packet dump only) + { + name => 'Quake 3 Arena, RTCW: ET', +# ports => [ "27960..27969" ], + ports => [ "27960..27961" ], + sizes => [ 15 ] + }, + + # bf2 - tested with demo only + # bf2142 reportedly uses same engine + { + name => 'BF2/BF2142', + ports => [ "29900" ], + sizes => [ 8 ] + }, + + # bf1942 - unverified (packet dump only) + { + name => 'BF1942', + ports => [ "22000..22010" ], + sizes => [ 8 ] + }, + + # quake 4 - tested with demo only, MUST select "internet" + { + name => 'Quake 4', + ports => [ 27950, 28004 ], + sizes => [ 14 ] + }, + + # quake 2 - untested (packet dump only) + { + name => 'Quake 2', + ports => [ 27910 ], + sizes => [ 11 ] + }, + + # warcraft 3 - untested (packet dump only) + { + name => 'Warcraft 3: Reign of Chaos (1.00)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x3352 && ord(substr($data, 8, 1)) == 0; } + }, + { + name => 'Warcraft 3: Reign of Chaos (1.07)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x3352 && ord(substr($data, 8, 1)) == 7; } + }, + { + name => 'Warcraft 3: Reign of Chaos (1.20)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x3352 && ord(substr($data, 8, 1)) == 20; } + }, + { + name => 'Warcraft 3: Reign of Chaos (1.22)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x3352 && ord(substr($data, 8, 1)) == 22; } + }, + { + name => 'Warcraft 3: Reign of Chaos (1.23)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x3352 && ord(substr($data, 8, 1)) == 23; } + }, + { + name => 'Warcraft 3: Reign of Chaos (other patch level)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x3352; } + }, + { + name => 'Warcraft 3: The Frozen Throne (1.17)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x5058 && ord(substr($data, 8, 1)) == 17; } + }, + { + name => 'Warcraft 3: The Frozen Throne (1.18)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x5058 && ord(substr($data, 8, 1)) == 18; } + }, + { + name => 'Warcraft 3: The Frozen Throne (1.20)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x5058 && ord(substr($data, 8, 1)) == 20; } + }, + { + name => 'Warcraft 3: The Frozen Throne (1.21)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x5058 && ord(substr($data, 8, 1)) == 21; } + }, + { + name => 'Warcraft 3: The Frozen Throne (1.22)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x5058 && ord(substr($data, 8, 1)) == 22; } + }, + { + name => 'Warcraft 3: The Frozen Throne (1.23)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x5058 && ord(substr($data, 8, 1)) == 23; } + }, + { + name => 'Warcraft 3: The Frozen Throne (1.26)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x5058 && ord(substr($data, 8, 1)) == 26; } + }, + { + name => 'Warcraft 3: The Frozen Throne (other patch level)', + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) == 0x5058; } + }, + { + name => 'Warcraft 3 (unknown version)', +# ports => [ "6112..6119" ], + ports => [ 6112 ], + sizes => [ 16 ], + filter => sub { my $data = shift; return (ord(substr($data, 1, 1)) == 0x2f) && game_id($data, 4) != 0x5058 && game_id($data, 4) != 0x3352; } + }, + { + name => 'Warcraft 3 (unknown version, odd length)', + ports => [ 6112 ], + sizes => [ 19 ], + }, + + # ut2003/ut2004 - untested (packet dump only) + { + name => 'UT2003/UT2004', + ports => [ 10777 ], + sizes => [ 5 ] + }, + + # soldat - untested (packet dump only) + { + name => 'Soldat', + ports => [ 23073 ], + sizes => [ 8 ] + }, + + # starcraft - untested (packet dump only) + { + name => 'Starcraft', + ports => [ 6111, 6112 ], + sizes => [ 8 ], + filter => sub { return (game_id(shift, 0) == 0x08ef); } + }, + { + name => 'Starcraft: Brood War', + ports => [ 6111, 6112 ], + sizes => [ 8 ], + filter => sub { return (game_id(shift, 0) == 0xf733); } + }, + { + name => 'Starcraft (unknown game ID)', + ports => [ 6111, 6112 ], + sizes => [ 8 ], + filter => sub { my $id = game_id(shift, 0); return ($id != 0x08ef && $id != 0xf733); } + }, + + # trackmania nations - untested (packet dump only) + { + name => 'Trackmania Nations', + ports => [ "2350" ], + sizes => [ 42, 30 ] + }, + + # company of heroes - untested (packet dump only) + { + name => 'Company of Heroes', + ports => [ 9100 ], + sizes => [ 39 ] + }, + + # command & conquer 3 - untested (packet dump only, reported to have some kind + # of chat functionality) +# { +# name => 'Command & Conquer 3', +# ports => [ "8086..8093" ], +# sizes => [ 476 ], +# filter => sub { return 0; } +# }, + + # openttd + { + name => 'OpenTTD', + ports => [ 3979 ], + sizes => [ 3 ] + }, + + # CoD4 + { + name => 'Call of Duty 4', + ports => [ 28960 ], + sizes => [ 15 ], + }, + + # Far Cry 2 + { + name => 'Far Cry 2', + ports => [ 9004 ], + sizes => [ 114, 118, 122, 126 ], + }, + + # unreal tournament, port 9777? +) diff --git a/mbd/derpspan.c b/mbd/derpspan.c new file mode 100644 index 0000000..b9fb362 --- /dev/null +++ b/mbd/derpspan.c @@ -0,0 +1,48 @@ +// gcc -O2 -o derspan derspan.c -lpcap -std=gnu99 -Wall + +#include <pcap.h> +#include <stdlib.h> +#include <netinet/ip.h> +#include <stdint.h> +#include <stdio.h> + +int rawsock; + +void my_callback(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes) +{ + int len = h->caplen; + if (len < 40) { + //printf("skipped short packet\n"); + return; + } + if (bytes[14] != 0x88 || bytes[15] != 0xbe) { + //printf("skipped non-ethernet packet\n"); + return; + } + if (bytes[36] != 0x08 || bytes[37] != 0x00) { + //printf("skipped non-IPv4 packet\n"); + return; + } + + struct sockaddr_in self; + self.sin_family = AF_INET; + self.sin_addr.s_addr = htonl(0x7f000001); // localhost + self.sin_port = htons(1337); + + sendto(rawsock, bytes + 38, len - 38, 0, (struct sockaddr *)&self, sizeof(self)); +} + +int main(int argc, char **argv) +{ + rawsock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); + if (rawsock == -1) { + perror("socket"); + exit(0); + } + + pcap_t *pcap = pcap_open_live(argv[1], 1500, 1, 1000, NULL); + pcap_activate(pcap); + pcap_loop(pcap, -1, my_callback, NULL); + return 0; +} + diff --git a/mbd/generate-helper-list.pl b/mbd/generate-helper-list.pl new file mode 100755 index 0000000..fd89475 --- /dev/null +++ b/mbd/generate-helper-list.pl @@ -0,0 +1,15 @@ +#! /usr/bin/perl +use strict; +use warnings; +require './access_list.pl'; +require './nets.pl'; +require './mbd.pm'; + +my @ports = mbd::find_all_ports(); + +print "no ip forward-protocol udp 137\n"; +print "no ip forward-protocol udp 138\n"; + +for my $port (@ports) { + print "ip forward-protocol udp $port\n"; +} diff --git a/mbd/make-mbd-nets.pl b/mbd/make-mbd-nets.pl new file mode 100644 index 0000000..6af76f0 --- /dev/null +++ b/mbd/make-mbd-nets.pl @@ -0,0 +1,26 @@ +#!/usr/bin/perl -I /root/tgmanage/ +use strict; +use warnings; + +unless (@ARGV > 0) { + print "No arguments. Need netlist.txt.\n"; + exit 1; +} + +my $n = open(NETLIST, "$ARGV[0]") or die ("Cannot open netlist.txt"); + +print "# Autogenerated. Do not touch!\n"; +print "package Config;\n"; +print "our \@networks = (\n"; + +while(<NETLIST>) { + next if /^(.*#|\s+$)/; # skip if comment, or blank line + + chomp; + my ($network, $prefix, $switchname, undef) = split; + + print "\t\"$network/$prefix\",\n"; +} + +print ");\n"; +print "1;\n"; diff --git a/mbd/mbd-unicast-segfaulting.pl b/mbd/mbd-unicast-segfaulting.pl new file mode 100644 index 0000000..c167511 --- /dev/null +++ b/mbd/mbd-unicast-segfaulting.pl @@ -0,0 +1,273 @@ +#! /usr/bin/perl +use strict; +use warnings; +use Socket; +use Net::CIDR; +use Net::RawIP; +use Time::HiRes; +require './access_list.pl'; +require './nets.pl'; +require './survey.pl'; +require './mbd.pm'; +use lib '../include'; +use nms; +use strict; +use warnings; +use threads; + +# Mark packets with DSCP CS7 +my $tos = 56; + +my ($dbh, $q); + +sub fhbits { + my $bits = 0; + for my $fh (@_) { + vec($bits, fileno($fh), 1) = 1; + } + return $bits; +} + +# used for rate limiting +my %last_sent = (); + +# for own surveying +my %active_surveys = (); +my %last_survey = (); + +my %cidrcache = (); +sub cache_cidrlookup { + my ($addr, $net) = @_; + my $key = $addr . " " . $net; + + if (!exists($cidrcache{$key})) { + $cidrcache{$key} = Net::CIDR::cidrlookup($addr, $net); + } + return $cidrcache{$key}; +} + +my %rangecache = (); +sub cache_cidrrange { + my ($net) = @_; + + if (!exists($rangecache{$net})) { + my ($range) = Net::CIDR::cidr2range($net); + $range =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)-(\d+)\.(\d+)\.(\d+)\.(\d+)/ or die "Did not understand range: $range"; + my @range = (); + for my $l (($4+1)..($8-1)) { + push @range, "$1.$2.$3.$l"; + } + ($rangecache{$net}) = \@range; + } + + return @{$rangecache{$net}}; +} + +open LOG, ">>", "mbd.log"; + +my @ports = ( mbd::find_all_ports() , $Config::survey_port_low .. $Config::survey_port_high ); + +# Open a socket for each port +my @socks = (); +my $udp = getprotobyname("udp"); +for my $p (@ports) { + my $sock; + socket($sock, PF_INET, SOCK_DGRAM, $udp); + bind($sock, sockaddr_in($p, INADDR_ANY)); + push @socks, $sock; +} + +my $sendsock = Net::RawIP->new({udp => {}}); + +print "Listening on " . scalar @ports . " ports.\n"; + +# Main loop +while (1) { + my $rin = fhbits(@socks); + my $rout; + + my $nfound = select($rout=$rin, undef, undef, undef); + my $now = [Time::HiRes::gettimeofday]; + + # First of all, close any surveys that are due. + for my $sport (keys %active_surveys) { + my $age = Time::HiRes::tv_interval($active_surveys{$sport}{start}, $now); + if ($age > $Config::survey_time && $active_surveys{$sport}{active}) { + my $hexdump = join(' ', map { sprintf "0x%02x", ord($_) } (split //, $active_surveys{$sport}{data})); + print "Survey ($hexdump) for '" . $Config::access_list[$active_surveys{$sport}{entry}]->{name} . "'/" . + $active_surveys{$sport}{dport} . ": " . $active_surveys{$sport}{num} . " active servers.\n"; + $active_surveys{$sport}{active} = 0; + + # (re)connect to the database if needed + if (!defined($dbh) || !$dbh->ping) { + $dbh = nms::db_connect(); + $q = $dbh->prepare("INSERT INTO mbd_log (ts,game,port,description,active_servers) VALUES (CURRENT_TIMESTAMP,?,?,?,?)") + or die "Couldn't prepare query"; + } + $q->execute($active_surveys{$sport}{entry}, $active_surveys{$sport}{dport}, $Config::access_list[$active_surveys{$sport}{entry}]->{name}, $active_surveys{$sport}{num}); + } + if ($age > $Config::survey_time * 3.0) { + delete $active_surveys{$sport}; + } + } + + for my $sock (@socks) { + next unless (vec($rout, fileno($sock), 1) == 1); + + my $data; + my $addr = recv($sock, $data, 8192, 0); # jumbo broadcast! :-P + my ($sport, $saddr) = sockaddr_in($addr); + my ($dport, $daddr) = sockaddr_in(getsockname($sock)); + my $size = length($data); + + # Check if this is a survey reply + if ($dport >= $Config::survey_port_low && $dport <= $Config::survey_port_high) { + if (!exists($active_surveys{$dport})) { + print "WARNING: Unknown survey port $dport, ignoring\n"; + next; + } + if (!$active_surveys{$dport}{active}) { + # remains + next; + } + + ++$active_surveys{$dport}{num}; + + next; + } + + # Rate limiting + if (exists($last_sent{$saddr}{$dport})) { + my $elapsed = Time::HiRes::tv_interval($last_sent{$saddr}{$dport}, $now); + if ($elapsed < 1.0) { + print LOG "$dport $size 2\n"; + print inet_ntoa($saddr), ", $dport, $size bytes => rate-limited ($elapsed secs since last)\n"; + next; + } + } + + # We don't get the packet's destination address, but I guess this should do... + # Check against the ACL. + my $pass = 0; + my $entry = -1; + for my $rule (@Config::access_list) { + ++$entry; + + next unless (mbd::match_ranges($dport, $rule->{'ports'})); + next unless (mbd::match_ranges($size, $rule->{'sizes'})); + + if ($rule->{'filter'}) { + next unless ($rule->{'filter'}($data)); + } + + $pass = 1; + last; + } + + print LOG "$dport $size $pass\n"; + + if (!$pass) { + print inet_ntoa($saddr), ", $dport, $size bytes => filtered\n"; + next; + } + + $last_sent{$saddr}{$dport} = $now; + + # The packet is OK! Do we already have a recent enough survey + # for this port, or should we use this packet? + my $survey = 1; + if (exists($last_survey{$entry . "/" . $dport})) { + my $age = Time::HiRes::tv_interval($last_survey{$entry . "/" . $dport}, $now); + if ($age < $Config::survey_freq) { + $survey = 0; + } + } + + # New survey; find an unused port + my $survey_sport; + if ($survey) { + for my $port ($Config::survey_port_low..$Config::survey_port_high) { + if (!exists($active_surveys{$port})) { + $survey_sport = $port; + + $active_surveys{$port} = { + start => $now, + active => 1, + dport => $dport, + entry => $entry, + num => 0, + data => $data, + }; + $last_survey{$entry . "/" . $dport} = $now; + + last; + } + } + + if (!defined($survey_sport)) { + print "WARNING: no free survey source ports, not surveying.\n"; + $survey = 0; + } + } + + # precache + for my $net (@Config::networks) { + cache_cidrrange($net); + cache_cidrlookup(inet_ntoa($saddr), $net); + } + + threads->create(sub { + my $sendsock = Net::RawIP->new({udp => {}}); + my ($survey_sport, $dport, $data) = @_; + + my $num_nets = 0; + for my $net (@Config::networks) { + my @daddrs = cache_cidrrange($net); + + if ($survey) { + for my $daddr (@daddrs) { + $sendsock->set({ + ip => { + saddr => $Config::survey_ip, + daddr => $daddr, + tos => $tos + }, + udp => { + source => $survey_sport, + dest => $dport, + data => $data + } + }); + $sendsock->send; + } + } + + next if (cache_cidrlookup(inet_ntoa($saddr), $net)); + + for my $daddr (@daddrs) { + $sendsock->set({ + ip => { + saddr => inet_ntoa($saddr), + daddr => $daddr, + tos => $tos + }, + udp => { + source => $sport, + dest => $dport, + data => $data + } + }); + $sendsock->send; + } + + ++$num_nets; + } + if ($survey) { + print inet_ntoa($saddr), ", $dport, $size bytes => ($num_nets networks) [+survey from port $survey_sport]\n"; + } else { + print inet_ntoa($saddr), ", $dport, $size bytes => ($num_nets networks)\n"; + } + }, $survey_sport, $dport, $data)->detach(); + } +} + diff --git a/mbd/mbd-unicast.pl b/mbd/mbd-unicast.pl new file mode 100644 index 0000000..6e63dee --- /dev/null +++ b/mbd/mbd-unicast.pl @@ -0,0 +1,254 @@ +#! /usr/bin/perl +use strict; +use warnings; +use Socket; +use Net::CIDR; +use Net::RawIP; +use Time::HiRes; +require './access_list.pl'; +require './nets.pl'; +require './survey.pl'; +require './mbd.pm'; +use lib '../include'; +use nms; +use strict; +use warnings; +use threads; + +# Mark packets with DSCP CS7 +my $tos = 56; + +my ($dbh, $q); + +sub fhbits { + my $bits = 0; + for my $fh (@_) { + vec($bits, fileno($fh), 1) = 1; + } + return $bits; +} + +# used for rate limiting +my %last_sent = (); + +# for own surveying +my %active_surveys = (); +my %last_survey = (); + +my %cidrcache = (); +sub cache_cidrlookup { + my ($addr, $net) = @_; + my $key = $addr . " " . $net; + + if (!exists($cidrcache{$key})) { + $cidrcache{$key} = Net::CIDR::cidrlookup($addr, $net); + } + return $cidrcache{$key}; +} + +my %rangecache = (); +sub cache_cidrrange { + my ($net) = @_; + + if (!exists($rangecache{$net})) { + my ($range) = Net::CIDR::cidr2range($net); + $range =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)-(\d+)\.(\d+)\.(\d+)\.(\d+)/ or die "Did not understand range: $range"; + my @range = (); + for my $l (($4+1)..($8-1)) { + push @range, "$1.$2.$3.$l"; + } + ($rangecache{$net}) = \@range; + } + + return @{$rangecache{$net}}; +} + +open LOG, ">>", "mbd.log"; + +my @ports = ( mbd::find_all_ports() , $Config::survey_port_low .. $Config::survey_port_high ); + +# Open a socket for each port +my @socks = (); +my $udp = getprotobyname("udp"); +for my $p (@ports) { + my $sock; + socket($sock, PF_INET, SOCK_DGRAM, $udp); + bind($sock, sockaddr_in($p, INADDR_ANY)); + push @socks, $sock; +} + +my $sendsock = Net::RawIP->new({udp => {}}); + +print "Listening on " . scalar @ports . " ports.\n"; + +open PKTS, "| ./packetpusher" + or die "./packetpusher: $!"; + +# Main loop +while (1) { + my $rin = fhbits(@socks); + my $rout; + + my $nfound = select($rout=$rin, undef, undef, undef); + my $now = [Time::HiRes::gettimeofday]; + + # First of all, close any surveys that are due. + for my $sport (keys %active_surveys) { + my $age = Time::HiRes::tv_interval($active_surveys{$sport}{start}, $now); + if ($age > $Config::survey_time && $active_surveys{$sport}{active}) { + my $hexdump = join(' ', map { sprintf "0x%02x", ord($_) } (split //, $active_surveys{$sport}{data})); + print "Survey ($hexdump) for '" . $Config::access_list[$active_surveys{$sport}{entry}]->{name} . "'/" . + $active_surveys{$sport}{dport} . ": " . $active_surveys{$sport}{num} . " active servers.\n"; + $active_surveys{$sport}{active} = 0; + + # (re)connect to the database if needed + if (!defined($dbh) || !$dbh->ping) { + $dbh = nms::db_connect(); + $q = $dbh->prepare("INSERT INTO mbd_log (ts,game,port,description,active_servers) VALUES (CURRENT_TIMESTAMP,?,?,?,?)") + or die "Couldn't prepare query"; + } + $q->execute($active_surveys{$sport}{entry}, $active_surveys{$sport}{dport}, $Config::access_list[$active_surveys{$sport}{entry}]->{name}, $active_surveys{$sport}{num}); + } + if ($age > $Config::survey_time * 3.0) { + delete $active_surveys{$sport}; + } + } + + for my $sock (@socks) { + next unless (vec($rout, fileno($sock), 1) == 1); + + my $data; + my $addr = recv($sock, $data, 8192, 0); # jumbo broadcast! :-P + my ($sport, $saddr) = sockaddr_in($addr); + my ($dport, $daddr) = sockaddr_in(getsockname($sock)); + my $size = length($data); + + # Check if this is a survey reply + if ($dport >= $Config::survey_port_low && $dport <= $Config::survey_port_high) { + if (!exists($active_surveys{$dport})) { + print "WARNING: Unknown survey port $dport, ignoring\n"; + next; + } + if (!$active_surveys{$dport}{active}) { + # remains + next; + } + + ++$active_surveys{$dport}{num}; + + next; + } + + # Rate limiting + if (exists($last_sent{$saddr}{$dport})) { + my $elapsed = Time::HiRes::tv_interval($last_sent{$saddr}{$dport}, $now); + if ($elapsed < 1.0) { + print LOG "$dport $size 2\n"; + print inet_ntoa($saddr), ", $dport, $size bytes => rate-limited ($elapsed secs since last)\n"; + next; + } + } + + # We don't get the packet's destination address, but I guess this should do... + # Check against the ACL. + my $pass = 0; + my $entry = -1; + for my $rule (@Config::access_list) { + ++$entry; + + next unless (mbd::match_ranges($dport, $rule->{'ports'})); + next unless (mbd::match_ranges($size, $rule->{'sizes'})); + + if ($rule->{'filter'}) { + next unless ($rule->{'filter'}($data)); + } + + $pass = 1; + last; + } + + print LOG "$dport $size $pass\n"; + + if (!$pass) { + print inet_ntoa($saddr), ", $dport, $size bytes => filtered\n"; + next; + } + + $last_sent{$saddr}{$dport} = $now; + + # The packet is OK! Do we already have a recent enough survey + # for this port, or should we use this packet? + my $survey = 1; + if (exists($last_survey{$entry . "/" . $dport})) { + my $age = Time::HiRes::tv_interval($last_survey{$entry . "/" . $dport}, $now); + if ($age < $Config::survey_freq) { + $survey = 0; + } + } + + # New survey; find an unused port + my $survey_sport; + if ($survey) { + for my $port ($Config::survey_port_low..$Config::survey_port_high) { + if (!exists($active_surveys{$port})) { + $survey_sport = $port; + + $active_surveys{$port} = { + start => $now, + active => 1, + dport => $dport, + entry => $entry, + num => 0, + data => $data, + }; + $last_survey{$entry . "/" . $dport} = $now; + + last; + } + } + + if (!defined($survey_sport)) { + print "WARNING: no free survey source ports, not surveying.\n"; + $survey = 0; + } + } + + # precache + for my $net (@Config::networks) { + cache_cidrrange($net); + cache_cidrlookup(inet_ntoa($saddr), $net); + } + + my @packets = (); + + my $num_nets = 0; + for my $net (@Config::networks) { + my @daddrs = cache_cidrrange($net); + + if ($survey) { + for my $daddr (@daddrs) { + push @packets, [ $Config::survey_ip, $survey_sport, $daddr, $dport ]; + } + } + + next if (cache_cidrlookup(inet_ntoa($saddr), $net)); + + for my $daddr (@daddrs) { + push @packets, [ inet_ntoa($saddr), $sport, $daddr, $dport ]; + } + + ++$num_nets; + } + if ($survey) { + print inet_ntoa($saddr), ", $dport, $size bytes => ($num_nets networks) [+survey from port $survey_sport]\n"; + } else { + print inet_ntoa($saddr), ", $dport, $size bytes => ($num_nets networks)\n"; + } + + printf PKTS "%d %s\n", scalar @packets, unpack('h*', $data); + for my $pkt (@packets) { + printf PKTS "%s %s %s %s\n", $pkt->[0], $pkt->[1], $pkt->[2], $pkt->[3]; + } + } +} + diff --git a/mbd/mbd.pl b/mbd/mbd.pl new file mode 100644 index 0000000..065e76c --- /dev/null +++ b/mbd/mbd.pl @@ -0,0 +1,254 @@ +#! /usr/bin/perl +use strict; +use warnings; +use Socket; +use Net::CIDR; +use Net::RawIP; +use Time::HiRes; +require './access_list.pl'; +require './nets.pl'; +require './survey.pl'; +require './mbd.pm'; +use lib '../include'; +use nms; +use strict; +use warnings; + +# Mark packets with DSCP CS7 +my $tos = 56; + +my ($dbh, $q); + +sub fhbits { + my $bits = 0; + for my $fh (@_) { + vec($bits, fileno($fh), 1) = 1; + } + return $bits; +} + +# used for rate limiting +my %last_sent = (); + +# for own surveying +my %active_surveys = (); +my %last_survey = (); + +my %cidrcache = (); +sub cache_cidrlookup { + my ($addr, $net) = @_; + my $key = $addr . " " . $net; + + if (!exists($cidrcache{$key})) { + $cidrcache{$key} = Net::CIDR::cidrlookup($addr, $net); + } + return $cidrcache{$key}; +} + +my %rangecache = (); +sub cache_cidrrange { + my ($net) = @_; + + if (!exists($rangecache{$net})) { + ($rangecache{$net}) = Net::CIDR::cidr2range($net); + } + + return $rangecache{$net}; +} + +open LOG, ">>", "mbd.log"; + +my @ports = ( mbd::find_all_ports() , $Config::survey_port_low .. $Config::survey_port_high ); + +# Open a socket for each port +my @socks = (); +my $udp = getprotobyname("udp"); +for my $p (@ports) { + my $sock; + socket($sock, PF_INET, SOCK_DGRAM, $udp); + bind($sock, sockaddr_in($p, INADDR_ANY)); + push @socks, $sock; +} + +my $sendsock = Net::RawIP->new({udp => {}}); + +print "Listening on " . scalar @ports . " ports.\n"; + +# Main loop +while (1) { + my $rin = fhbits(@socks); + my $rout; + + my $nfound = select($rout=$rin, undef, undef, undef); + my $now = [Time::HiRes::gettimeofday]; + + # First of all, close any surveys that are due. + for my $sport (keys %active_surveys) { + my $age = Time::HiRes::tv_interval($active_surveys{$sport}{start}, $now); + if ($age > $Config::survey_time && $active_surveys{$sport}{active}) { + my $hexdump = join(' ', map { sprintf "0x%02x", ord($_) } (split //, $active_surveys{$sport}{data})); + print "Survey ($hexdump) for '" . $Config::access_list[$active_surveys{$sport}{entry}]->{name} . "'/" . + $active_surveys{$sport}{dport} . ": " . $active_surveys{$sport}{num} . " active servers.\n"; + $active_surveys{$sport}{active} = 0; + + # (re)connect to the database if needed + if (!defined($dbh) || !$dbh->ping) { + $dbh = nms::db_connect(); + $q = $dbh->prepare("INSERT INTO mbd_log (ts,game,port,description,active_servers) VALUES (CURRENT_TIMESTAMP,?,?,?,?)") + or die "Couldn't prepare query"; + } + $q->execute($active_surveys{$sport}{entry}, $active_surveys{$sport}{dport}, $Config::access_list[$active_surveys{$sport}{entry}]->{name}, $active_surveys{$sport}{num}); + } + if ($age > $Config::survey_time * 3.0) { + delete $active_surveys{$sport}; + } + } + + for my $sock (@socks) { + next unless (vec($rout, fileno($sock), 1) == 1); + + my $data; + my $addr = recv($sock, $data, 8192, 0); # jumbo broadcast! :-P + my ($sport, $saddr) = sockaddr_in($addr); + my ($dport, $daddr) = sockaddr_in(getsockname($sock)); + my $size = length($data); + + # Check if this is a survey reply + if ($dport >= $Config::survey_port_low && $dport <= $Config::survey_port_high) { + if (!exists($active_surveys{$dport})) { + print "WARNING: Unknown survey port $dport, ignoring\n"; + next; + } + if (!$active_surveys{$dport}{active}) { + # remains + next; + } + + ++$active_surveys{$dport}{num}; + + next; + } + + # Rate limiting + if (exists($last_sent{$saddr}{$dport})) { + my $elapsed = Time::HiRes::tv_interval($last_sent{$saddr}{$dport}, $now); + if ($elapsed < 1.0) { + print LOG "$dport $size 2\n"; + print inet_ntoa($saddr), ", $dport, $size bytes => rate-limited ($elapsed secs since last)\n"; + next; + } + } + + # We don't get the packet's destination address, but I guess this should do... + # Check against the ACL. + my $pass = 0; + my $entry = -1; + for my $rule (@Config::access_list) { + ++$entry; + + next unless (mbd::match_ranges($dport, $rule->{'ports'})); + next unless (mbd::match_ranges($size, $rule->{'sizes'})); + + if ($rule->{'filter'}) { + next unless ($rule->{'filter'}($data)); + } + + $pass = 1; + last; + } + + print LOG "$dport $size $pass\n"; + + if (!$pass) { + print inet_ntoa($saddr), ", $dport, $size bytes => filtered\n"; + next; + } + + $last_sent{$saddr}{$dport} = $now; + + # The packet is OK! Do we already have a recent enough survey + # for this port, or should we use this packet? + my $survey = 1; + if (exists($last_survey{$entry . "/" . $dport})) { + my $age = Time::HiRes::tv_interval($last_survey{$entry . "/" . $dport}, $now); + if ($age < $Config::survey_freq) { + $survey = 0; + } + } + + # New survey; find an unused port + my $survey_sport; + if ($survey) { + for my $port ($Config::survey_port_low..$Config::survey_port_high) { + if (!exists($active_surveys{$port})) { + $survey_sport = $port; + + $active_surveys{$port} = { + start => $now, + active => 1, + dport => $dport, + entry => $entry, + num => 0, + data => $data, + }; + $last_survey{$entry . "/" . $dport} = $now; + + last; + } + } + + if (!defined($survey_sport)) { + print "WARNING: no free survey source ports, not surveying.\n"; + $survey = 0; + } + } + + my $num_nets = 0; + for my $net (@Config::networks) { + my ($range) = cache_cidrrange($net); + $range =~ /-(.*?)$/; + my $broadcast = $1; + + if ($survey) { + $sendsock->set({ + ip => { + saddr => $Config::survey_ip, + daddr => $broadcast, + tos => $tos + }, + udp => { + source => $survey_sport, + dest => $dport, + data => $data + } + }); + $sendsock->send; + } + + next if (cache_cidrlookup(inet_ntoa($saddr), $net)); + + $sendsock->set({ + ip => { + saddr => inet_ntoa($saddr), + daddr => $broadcast, + tos => $tos + }, + udp => { + source => $sport, + dest => $dport, + data => $data + } + }); + $sendsock->send; + + ++$num_nets; + } + + if ($survey) { + print inet_ntoa($saddr), ", $dport, $size bytes => ($num_nets networks) [+survey from port $survey_sport]\n"; + } else { + print inet_ntoa($saddr), ", $dport, $size bytes => ($num_nets networks)\n"; + } + } +} + diff --git a/mbd/mbd.pm b/mbd/mbd.pm new file mode 100644 index 0000000..b844e5b --- /dev/null +++ b/mbd/mbd.pm @@ -0,0 +1,50 @@ +#! /usr/bin/perl +use strict; +use warnings; +use Socket; +use Net::CIDR; +use Net::RawIP; +require './access_list.pl'; +require './nets.pl'; + +package mbd; + +sub expand_range { + my $range = shift; + + if ($range =~ /^(\d+)\.\.(\d+)$/) { + return $1..$2; + } else { + return $range; + } +} + +sub match_ranges { + my ($elem, $ranges) = @_; + + for my $range (@$ranges) { + if ($range =~ /^(\d+)\.\.(\d+)$/) { + return 1 if ($elem >= $1 && $elem <= $2); + } else { + return 1 if ($elem == $range); + } + } + + return 0; +} + +sub find_all_ports { + # Find what ports we need to listen on + my %port_hash = (); + for my $e (@Config::access_list) { + for my $r (@{$e->{'ports'}}) { + for my $p (expand_range($r)) { + $port_hash{$p} = 1; + } + } + } + my @ports = sort { $a <=> $b } keys %port_hash; + return @ports; +} + +1; diff --git a/mbd/nets.pl b/mbd/nets.pl new file mode 100644 index 0000000..3298657 --- /dev/null +++ b/mbd/nets.pl @@ -0,0 +1,171 @@ +# Autogenerated. Do not touch! +package Config; +our @networks = ( + "176.110.98.0/24", + "176.110.99.0/24", + "176.110.100.0/24", + "176.110.102.0/24", + "176.110.103.0/24", + "176.110.106.0/24", + "176.110.107.0/24", + "176.110.108.0/22", + "176.110.112.0/24", + "176.110.113.0/24", + "176.110.114.0/24", + "176.110.115.0/24", + "176.110.116.0/24", + "176.110.117.0/24", + "176.110.118.0/24", + "176.110.119.0/24", + "176.110.120.0/24", + "176.110.121.0/24", + "176.110.122.0/24", + "176.110.123.0/24", + "176.110.124.0/24", + "176.110.126.0/24", + "176.110.2.0/25", + "176.110.2.128/25", + "176.110.4.0/25", + "176.110.4.128/25", + "176.110.6.0/25", + "176.110.6.128/25", + "176.110.8.0/25", + "176.110.8.128/25", + "176.110.10.0/25", + "176.110.10.128/25", + "176.110.11.0/25", + "176.110.11.128/25", + "176.110.12.0/25", + "176.110.12.128/25", + "176.110.13.0/25", + "176.110.13.128/25", + "176.110.14.0/25", + "176.110.14.128/25", + "176.110.15.0/25", + "176.110.15.128/25", + "176.110.16.0/25", + "176.110.16.128/25", + "176.110.17.0/25", + "176.110.17.128/25", + "176.110.18.0/25", + "176.110.18.128/25", + "176.110.19.0/25", + "176.110.19.128/25", + "176.110.20.0/25", + "176.110.20.128/25", + "176.110.21.0/25", + "176.110.21.128/25", + "176.110.22.0/25", + "176.110.22.128/25", + "176.110.23.0/25", + "176.110.23.128/25", + "176.110.24.0/25", + "176.110.24.128/25", + "176.110.25.0/25", + "176.110.25.128/25", + "176.110.26.0/25", + "176.110.26.128/25", + "176.110.27.0/25", + "176.110.27.128/25", + "176.110.29.0/25", + "176.110.29.128/25", + "176.110.31.0/25", + "176.110.31.128/25", + "176.110.33.0/25", + "176.110.33.128/25", + "176.110.35.0/25", + "176.110.35.128/25", + "176.110.37.0/25", + "176.110.37.128/25", + "176.110.39.0/25", + "176.110.39.128/25", + "176.110.41.0/25", + "176.110.41.128/25", + "176.110.43.0/25", + "176.110.43.128/25", + "176.110.44.0/25", + "176.110.44.128/25", + "176.110.45.0/25", + "176.110.45.128/25", + "176.110.46.0/25", + "176.110.46.128/25", + "176.110.47.0/25", + "176.110.47.128/25", + "176.110.48.0/25", + "176.110.48.128/25", + "176.110.49.0/25", + "176.110.49.128/25", + "176.110.50.0/25", + "176.110.50.128/25", + "176.110.51.0/25", + "176.110.51.128/25", + "176.110.52.0/25", + "176.110.52.128/25", + "176.110.53.0/25", + "176.110.53.128/25", + "176.110.54.0/25", + "176.110.54.128/25", + "176.110.55.0/25", + "176.110.55.128/25", + "176.110.56.0/25", + "176.110.56.128/25", + "176.110.57.0/25", + "176.110.57.128/25", + "176.110.58.0/25", + "176.110.58.128/25", + "176.110.59.0/25", + "176.110.59.128/25", + "176.110.60.0/25", + "176.110.60.128/25", + "176.110.61.0/25", + "176.110.61.128/25", + "176.110.62.0/25", + "176.110.62.128/25", + "176.110.63.0/25", + "176.110.63.128/25", + "176.110.64.0/25", + "176.110.64.128/25", + "176.110.65.0/25", + "176.110.65.128/25", + "176.110.66.0/25", + "176.110.66.128/25", + "176.110.67.0/25", + "176.110.67.128/25", + "176.110.68.0/25", + "176.110.68.128/25", + "176.110.69.0/25", + "176.110.69.128/25", + "176.110.70.0/25", + "176.110.70.128/25", + "176.110.71.0/25", + "176.110.71.128/25", + "176.110.72.0/25", + "176.110.72.128/25", + "176.110.73.0/25", + "176.110.73.128/25", + "176.110.74.0/25", + "176.110.74.128/25", + "176.110.75.0/25", + "176.110.75.128/25", + "176.110.76.0/25", + "176.110.76.128/25", + "176.110.77.0/25", + "176.110.77.128/25", + "176.110.79.0/25", + "176.110.79.128/25", + "176.110.81.0/25", + "176.110.81.128/25", + "176.110.83.0/25", + "176.110.83.128/25", + "176.110.84.0/25", + "176.110.84.128/25", + "176.110.85.0/25", + "176.110.85.128/25", + "176.110.86.0/25", + "176.110.86.128/25", + "176.110.87.0/25", + "176.110.87.128/25", + "176.110.88.0/25", + "176.110.88.128/25", +); +1; diff --git a/mbd/packetpusher.c b/mbd/packetpusher.c new file mode 100644 index 0000000..c21a084 --- /dev/null +++ b/mbd/packetpusher.c @@ -0,0 +1,127 @@ +#include <stdio.h> +#include <sys/socket.h> +#include <stdlib.h> +#include <string.h> +#include <netinet/in.h> +#include <netinet/ip.h> +#include <netinet/udp.h> +#include <stdint.h> +#include <arpa/inet.h> + +char encoded_pkt[4096], workspace[4096]; +unsigned char pkt[2048]; + +typedef uint32_t u_int32_t; + +u_int32_t checksum(unsigned char *buf, unsigned nbytes, u_int32_t sum) +{ + int i; + /* Checksum all the pairs of bytes first... */ + for (i = 0; i < (nbytes & ~1U); i += 2) { + sum += (u_int16_t)ntohs(*((u_int16_t *)(buf + i))); + if (sum > 0xFFFF) + sum -= 0xFFFF; + } + + /* + * If there's a single byte left over, checksum it, too. + * Network byte order is big-endian, so the remaining byte is + * the high byte. + */ + + if (i < nbytes) { + sum += buf[i] << 8; + if (sum > 0xFFFF) + sum -= 0xFFFF; + } + + return (sum); +} + +u_int32_t wrapsum(u_int32_t sum) +{ + sum = ~sum & 0xFFFF; + return (htons(sum)); +} + +int main(int argc, char **argv) +{ + int sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); + if (sock == -1) { + perror("socket"); + exit(1); + } + + for ( ;; ) { + int num_pkts; + int ret = scanf("%d %s", &num_pkts, encoded_pkt); + if (ret != 2) { + fprintf(stderr, "error parsing! ret=%d\n", ret); + exit(1); + } + if ((strlen(encoded_pkt) % 2) != 0) { + fprintf(stderr, "hex packet has odd length\n"); + exit(1); + } + + // de-hex packet + for (int i = 0; i < strlen(encoded_pkt); i += 2) { + char c[3]; + c[0] = encoded_pkt[i]; + c[1] = encoded_pkt[i + 1]; + c[2] = 0; + int h = strtol(c, NULL, 16); + pkt[i / 2] = h; + } + + int datalen = strlen(encoded_pkt) / 2; + + for (int i = 0; i < num_pkts; ++i) { + char from_ip[256], to_ip[256]; + int sport, dport; + if (scanf("%s %d %s %d", from_ip, &sport, to_ip, &dport) != 4) { + fprintf(stderr, "error parsing packet %d!\n", i); + exit(1); + } + + // IP header + struct iphdr *ip = (struct iphdr *)workspace; + ip->version = 4; + ip->ihl = 5; + ip->tos = 0; + ip->tot_len = htons(datalen + sizeof(struct iphdr) + sizeof(struct udphdr)); + ip->id = 0; + ip->frag_off = 0; + ip->ttl = 64; + ip->protocol = 17; // UDP + ip->saddr = inet_addr(from_ip); + ip->daddr = inet_addr(to_ip); + ip->check = 0; + ip->check = wrapsum(checksum((unsigned char *)ip, sizeof(*ip), 0)); + + // UDP header + struct udphdr *udp = (struct udphdr *)(workspace + sizeof(struct iphdr)); + udp->source = htons(sport); + udp->dest = htons(dport); + udp->len = htons(datalen + sizeof(struct udphdr)); + udp->check = 0; + + int sum = checksum((unsigned char *)&ip->saddr, 2 * sizeof(ip->saddr), IPPROTO_UDP + ntohs(udp->len)); + sum = checksum((unsigned char *)pkt, datalen, sum); + sum = checksum((unsigned char *)udp, sizeof(*udp), sum); + udp->check = wrapsum(sum); + + // Data + memcpy(workspace + sizeof(struct iphdr) + sizeof(struct udphdr), + pkt, datalen); + + // Send out the packet physically + struct sockaddr_in to; + to.sin_family = AF_INET; + to.sin_addr.s_addr = inet_addr(to_ip); + to.sin_port = htons(dport); + + sendto(sock, workspace, ntohs(ip->tot_len), 0, (struct sockaddr *)&to, sizeof(to)); + } + } +} diff --git a/mbd/survey.pl b/mbd/survey.pl new file mode 100644 index 0000000..be33038 --- /dev/null +++ b/mbd/survey.pl @@ -0,0 +1,10 @@ +package Config; + +our $survey_ip = "176.110.125.15"; +our $survey_port_low = 60100; +our $survey_port_high = 60200; +our $survey_freq = 60.0; +our $survey_time = 10.0; + +1; + diff --git a/netlist.txt b/netlist.txt new file mode 100644 index 0000000..268d85f --- /dev/null +++ b/netlist.txt @@ -0,0 +1,162 @@ +151.216.46.0 26 crew1 +151.216.46.128 26 crew2 +151.216.47.0 26 crew3 +151.216.47.128 26 crew4 +151.216.48.0 26 crew5 +151.216.48.128 26 crew6 +151.216.50.0 23 creativia +151.216.54.0 24 gamehq +151.216.55.0 24 chillout +151.216.56.0 26 defektraid +151.216.64.0 19 wlan +151.216.96.0 24 logistikk +151.216.98.0 24 presse +151.216.99.0 25 fugleberg1 +151.216.99.128 25 fugleberg2 +151.216.101.0 24 game +151.216.104.0 24 care +151.216.105.0 24 sponsorvest +151.216.107.0 24 stageboh +151.216.112.0 24 secmedic +151.216.113.0 24 lager +151.216.114.0 24 stage +151.216.115.0 24 ymse +151.216.116.0 26 ap-dist0 +151.216.116.64 26 ap-dist1 +151.216.116.128 26 ap-dist2 +151.216.116.192 26 ap-dist3 +151.216.117.0 26 ap-dist4 +151.216.118.0 25 marsrele +151.216.124.0 24 noc +# --> Denne er det ikke meningen Ã¥ rulle ut: 151.216.125.0 24 noc-server +151.216.126.0 24 tele +# Start av switches.txt fra planning.cpp +151.216.1.0 26 e1-3 x.x.x.x +151.216.1.64 26 e1-4 x.x.x.x +151.216.1.128 26 e3-3 x.x.x.x +151.216.1.192 26 e3-4 x.x.x.x +151.216.2.0 26 e5-3 x.x.x.x +151.216.2.64 26 e5-4 x.x.x.x +151.216.2.128 26 e7-3 x.x.x.x +151.216.2.192 26 e7-4 x.x.x.x +151.216.3.0 26 e9-3 x.x.x.x +151.216.3.64 26 e9-4 x.x.x.x +151.216.3.128 26 e11-1 x.x.x.x +151.216.3.192 26 e11-2 x.x.x.x +151.216.4.0 26 e11-3 x.x.x.x +151.216.4.64 26 e11-4 x.x.x.x +151.216.4.128 26 e13-1 x.x.x.x +151.216.4.192 26 e13-2 x.x.x.x +151.216.5.0 26 e13-3 x.x.x.x +151.216.5.64 26 e13-4 x.x.x.x +151.216.5.128 26 e15-1 x.x.x.x +151.216.5.192 26 e15-2 x.x.x.x +151.216.6.0 26 e15-3 x.x.x.x +151.216.6.64 26 e15-4 x.x.x.x +151.216.6.128 26 e17-1 x.x.x.x +151.216.6.192 26 e17-2 x.x.x.x +151.216.7.0 26 e17-3 x.x.x.x +151.216.7.64 26 e17-4 x.x.x.x +151.216.7.128 26 e19-1 x.x.x.x +151.216.7.192 26 e19-2 x.x.x.x +151.216.8.0 26 e19-3 x.x.x.x +151.216.8.64 26 e19-4 x.x.x.x +151.216.8.128 26 e21-1 x.x.x.x +151.216.8.192 26 e21-2 x.x.x.x +151.216.9.0 26 e21-3 x.x.x.x +151.216.9.64 26 e21-4 x.x.x.x +151.216.9.128 26 e23-1 x.x.x.x +151.216.9.192 26 e23-2 x.x.x.x +151.216.10.0 26 e23-3 x.x.x.x +151.216.10.64 26 e23-4 x.x.x.x +151.216.10.128 26 e25-1 x.x.x.x +151.216.10.192 26 e25-2 x.x.x.x +151.216.11.0 26 e25-3 x.x.x.x +151.216.11.64 26 e25-4 x.x.x.x +151.216.11.128 26 e27-1 x.x.x.x +151.216.11.192 26 e27-2 x.x.x.x +151.216.12.0 26 e29-1 x.x.x.x +151.216.12.64 26 e29-2 x.x.x.x +151.216.12.128 26 e31-1 x.x.x.x +151.216.12.192 26 e31-2 x.x.x.x +151.216.13.0 26 e33-1 x.x.x.x +151.216.13.64 26 e33-2 x.x.x.x +151.216.13.128 26 e35-1 x.x.x.x +151.216.13.192 26 e35-2 x.x.x.x +151.216.14.0 26 e37-1 x.x.x.x +151.216.14.64 26 e37-2 x.x.x.x +151.216.14.128 26 e39-1 x.x.x.x +151.216.14.192 26 e39-2 x.x.x.x +151.216.15.0 26 e41-1 x.x.x.x +151.216.15.64 26 e41-2 x.x.x.x +151.216.15.128 26 e43-1 x.x.x.x +151.216.15.192 26 e43-2 x.x.x.x +151.216.16.0 26 e43-3 x.x.x.x +151.216.16.64 26 e43-4 x.x.x.x +151.216.16.128 26 e45-1 x.x.x.x +151.216.16.192 26 e45-2 x.x.x.x +151.216.17.0 26 e45-3 x.x.x.x +151.216.17.64 26 e45-4 x.x.x.x +151.216.17.128 26 e47-1 x.x.x.x +151.216.17.192 26 e47-2 x.x.x.x +151.216.18.0 26 e47-3 x.x.x.x +151.216.18.64 26 e47-4 x.x.x.x +151.216.18.128 26 e49-1 x.x.x.x +151.216.18.192 26 e49-2 x.x.x.x +151.216.19.0 26 e49-3 x.x.x.x +151.216.19.64 26 e49-4 x.x.x.x +151.216.19.128 26 e51-1 x.x.x.x +151.216.19.192 26 e51-2 x.x.x.x +151.216.20.0 26 e51-3 x.x.x.x +151.216.20.64 26 e51-4 x.x.x.x +151.216.20.128 26 e53-1 x.x.x.x +151.216.20.192 26 e53-2 x.x.x.x +151.216.21.0 26 e53-3 x.x.x.x +151.216.21.64 26 e53-4 x.x.x.x +151.216.21.128 26 e55-1 x.x.x.x +151.216.21.192 26 e55-2 x.x.x.x +151.216.22.0 26 e55-3 x.x.x.x +151.216.22.64 26 e55-4 x.x.x.x +151.216.22.128 26 e57-1 x.x.x.x +151.216.22.192 26 e57-2 x.x.x.x +151.216.23.0 26 e57-3 x.x.x.x +151.216.23.64 26 e57-4 x.x.x.x +151.216.23.128 26 e59-1 x.x.x.x +151.216.23.192 26 e59-2 x.x.x.x +151.216.24.0 26 e59-3 x.x.x.x +151.216.24.64 26 e59-4 x.x.x.x +151.216.24.128 26 e61-1 x.x.x.x +151.216.24.192 26 e61-2 x.x.x.x +151.216.25.0 26 e61-3 x.x.x.x +151.216.25.64 26 e61-4 x.x.x.x +151.216.25.128 26 e63-1 x.x.x.x +151.216.25.192 26 e63-2 x.x.x.x +151.216.26.0 26 e63-3 x.x.x.x +151.216.26.64 26 e63-4 x.x.x.x +151.216.26.128 26 e65-1 x.x.x.x +151.216.26.192 26 e65-2 x.x.x.x +151.216.27.0 26 e65-3 x.x.x.x +151.216.27.64 26 e65-4 x.x.x.x +151.216.27.128 26 e67-1 x.x.x.x +151.216.27.192 26 e67-2 x.x.x.x +151.216.28.0 26 e67-3 x.x.x.x +151.216.28.64 26 e67-4 x.x.x.x +151.216.28.128 26 e69-1 x.x.x.x +151.216.28.192 26 e69-2 x.x.x.x +151.216.29.0 26 e69-3 x.x.x.x +151.216.29.64 26 e69-4 x.x.x.x +151.216.29.128 26 e71-1 x.x.x.x +151.216.29.192 26 e71-2 x.x.x.x +151.216.30.0 26 e71-3 x.x.x.x +151.216.30.64 26 e71-4 x.x.x.x +151.216.30.128 26 e73-1 x.x.x.x +151.216.30.192 26 e73-2 x.x.x.x +151.216.31.0 26 e73-3 x.x.x.x +151.216.31.64 26 e73-4 x.x.x.x +151.216.31.128 26 e75-1 x.x.x.x +151.216.31.192 26 e75-2 x.x.x.x +151.216.32.0 26 e75-3 x.x.x.x +151.216.32.64 26 e75-4 x.x.x.x +151.216.32.128 26 e77-1 x.x.x.x +151.216.32.192 26 e77-2 x.x.x.x +# Slutt av switches.txt fra planning.cpp diff --git a/patches/README b/patches/README new file mode 100644 index 0000000..c89deaf --- /dev/null +++ b/patches/README @@ -0,0 +1,13 @@ +Includes various patch(es) we had to use. + +> dhcpd-never-broadcast.diff + +When using DHCP in routed networks, the router has to participate in rewriting +and sending DHCP replies on to the user. Unfortunately, some devices, +in particular Cisco's Nexus series of switches, drop such DHCP reply packets +with the broadcast bit in the flags field of the DHCP message header set. +Thi means that some operating systems, in particular Microsoft Windows Vista, +can have problems getting DHCP to work in such environments. If you enable +this flag, the DHCP server will never set the broadcast flags in the replies +it sends, even if the client set the broadcast flag. This flag overrides +the never-broadcast flag if both are set. diff --git a/patches/dhcpd-never-broadcast.diff b/patches/dhcpd-never-broadcast.diff new file mode 100644 index 0000000..ac6d24d --- /dev/null +++ b/patches/dhcpd-never-broadcast.diff @@ -0,0 +1,88 @@ +diff -ur isc-dhcp-4.1.1-P1/includes/dhcpd.h isc-dhcp-4.1.1-P1.patched//includes/dhcpd.h +--- isc-dhcp-4.1.1-P1/includes/dhcpd.h 2012-04-04 16:49:44.000000000 +0200 ++++ isc-dhcp-4.1.1-P1.patched//includes/dhcpd.h 2012-04-04 14:56:43.000000000 +0200 +@@ -626,6 +626,7 @@ + #define SV_LIMIT_PREFS_PER_IA 57 + #define SV_DELAYED_ACK 58 + #define SV_MAX_ACK_DELAY 59 ++#define SV_NEVER_BROADCAST 60 + + #if !defined (DEFAULT_PING_TIMEOUT) + # define DEFAULT_PING_TIMEOUT 1 +diff -ur isc-dhcp-4.1.1-P1/server/bootp.c isc-dhcp-4.1.1-P1.patched//server/bootp.c +--- isc-dhcp-4.1.1-P1/server/bootp.c 2009-07-25 00:04:52.000000000 +0200 ++++ isc-dhcp-4.1.1-P1.patched//server/bootp.c 2012-04-04 14:55:21.000000000 +0200 +@@ -283,6 +283,15 @@ + &lease -> scope, oc, MDL)) + raw.flags |= htons (BOOTP_BROADCAST); + ++ /* The inverse. */ ++ if ((oc = lookup_option (&server_universe, ++ options, SV_NEVER_BROADCAST)) && ++ evaluate_boolean_option_cache (&ignorep, packet, lease, ++ (struct client_state *)0, ++ packet -> options, options, ++ &lease -> scope, oc, MDL)) ++ raw.flags &= htons (~BOOTP_BROADCAST); ++ + /* Figure out the address of the next server. */ + memset (&d1, 0, sizeof d1); + oc = lookup_option (&server_universe, options, SV_NEXT_SERVER); +diff -ur isc-dhcp-4.1.1-P1/server/dhcp.c isc-dhcp-4.1.1-P1.patched//server/dhcp.c +--- isc-dhcp-4.1.1-P1/server/dhcp.c 2012-04-04 16:48:46.000000000 +0200 ++++ isc-dhcp-4.1.1-P1.patched//server/dhcp.c 2012-04-04 14:55:45.000000000 +0200 +@@ -2482,6 +2482,15 @@ + &lease -> scope, oc, MDL)) + state -> bootp_flags |= htons (BOOTP_BROADCAST); + ++ /* The inverse. */ ++ if ((oc = lookup_option (&server_universe, state -> options, ++ SV_NEVER_BROADCAST)) && ++ evaluate_boolean_option_cache (&ignorep, packet, lease, ++ (struct client_state *)0, ++ packet -> options, state -> options, ++ &lease -> scope, oc, MDL)) ++ state -> bootp_flags &= htons (~BOOTP_BROADCAST); ++ + /* Get the Maximum Message Size option from the packet, if one + was sent. */ + oc = lookup_option (&dhcp_universe, packet -> options, +diff -ur isc-dhcp-4.1.1-P1/server/dhcpd.conf.5 isc-dhcp-4.1.1-P1.patched//server/dhcpd.conf.5 +--- isc-dhcp-4.1.1-P1/server/dhcpd.conf.5 2012-04-04 16:48:46.000000000 +0200 ++++ isc-dhcp-4.1.1-P1.patched//server/dhcpd.conf.5 2012-04-04 16:45:44.000000000 +0200 +@@ -1914,6 +1914,24 @@ + .RE + .PP + The ++.I never-broadcast ++statement ++.RS 0.25i ++.PP ++.B never-broadcast \fIflag\fR\fB;\fR ++.PP ++When using DHCP in routed networks, the router has to participate in rewriting ++and sending DHCP replies on to the user. Unfortunately, some devices, ++in particular Cisco's Nexus series of switches, drop such DHCP reply packets ++with the broadcast bit in the flags field of the DHCP message header set. ++Thi means that some operating systems, in particular Microsoft Windows Vista, ++can have problems getting DHCP to work in such environments. If you enable ++this flag, the DHCP server will never set the broadcast flags in the replies ++it sends, even if the client set the broadcast flag. This flag overrides ++the never-broadcast flag if both are set. ++.RE ++.PP ++The + .I always-reply-rfc1048 + statement + .RS 0.25i +diff -ur isc-dhcp-4.1.1-P1/server/stables.c isc-dhcp-4.1.1-P1.patched//server/stables.c +--- isc-dhcp-4.1.1-P1/server/stables.c 2012-04-04 16:49:44.000000000 +0200 ++++ isc-dhcp-4.1.1-P1.patched//server/stables.c 2012-04-04 14:56:43.000000000 +0200 +@@ -203,6 +203,7 @@ + { "always-reply-rfc1048", "f", &server_universe, 20, 1 }, + { "site-option-space", "X", &server_universe, 21, 1 }, + { "always-broadcast", "f", &server_universe, 22, 1 }, ++ { "never-broadcast", "f", &server_universe, 60, 1 }, + { "ddns-domainname", "t", &server_universe, 23, 1 }, + { "ddns-hostname", "t", &server_universe, 24, 1 }, + { "ddns-rev-domainname", "t", &server_universe, 25, 1 }, diff --git a/patchlist.txt b/patchlist.txt new file mode 100644 index 0000000..30285d5 --- /dev/null +++ b/patchlist.txt @@ -0,0 +1,128 @@ +e1-3 distro1 Gi1/1 Gi2/1 Gi5/1 Gi6/1 +e1-4 distro1 Gi1/2 Gi2/2 Gi5/2 Gi6/2 +e3-3 distro1 Gi1/3 Gi2/3 Gi5/3 Gi6/3 +e3-4 distro1 Gi1/4 Gi2/4 Gi5/4 Gi6/4 +e5-3 distro1 Gi1/5 Gi2/5 Gi5/5 Gi6/5 +e5-4 distro1 Gi1/6 Gi2/6 Gi5/6 Gi6/6 +e7-3 distro1 Gi1/7 Gi2/7 Gi5/7 Gi6/7 +e7-4 distro1 Gi1/8 Gi2/8 Gi5/8 Gi6/8 +e9-3 distro1 Gi1/9 Gi2/9 Gi5/9 Gi6/9 +e9-4 distro1 Gi1/10 Gi2/10 Gi5/10 Gi6/10 +e11-1 distro2 Gi1/1 Gi2/1 Gi5/1 Gi6/1 +e11-2 distro2 Gi1/2 Gi2/2 Gi5/2 Gi6/2 +e11-3 distro1 Gi1/11 Gi2/11 Gi5/11 Gi6/11 +e11-4 distro1 Gi1/12 Gi2/12 Gi5/12 Gi6/12 +e13-1 distro2 Gi1/3 Gi2/3 Gi5/3 Gi6/3 +e13-2 distro2 Gi1/4 Gi2/4 Gi5/4 Gi6/4 +e13-3 distro1 Gi1/13 Gi2/13 Gi5/13 Gi6/13 +e13-4 distro1 Gi1/14 Gi2/14 Gi5/14 Gi6/14 +e15-1 distro2 Gi1/5 Gi2/5 Gi5/5 Gi6/5 +e15-2 distro2 Gi1/6 Gi2/6 Gi5/6 Gi6/6 +e15-3 distro1 Gi1/15 Gi2/15 Gi5/15 Gi6/15 +e15-4 distro1 Gi1/16 Gi2/16 Gi5/16 Gi6/16 +e17-1 distro2 Gi1/7 Gi2/7 Gi5/7 Gi6/7 +e17-2 distro2 Gi1/8 Gi2/8 Gi5/8 Gi6/8 +e17-3 distro1 Gi1/17 Gi2/17 Gi5/17 Gi6/17 +e17-4 distro1 Gi1/18 Gi2/18 Gi5/18 Gi6/18 +e19-1 distro2 Gi1/9 Gi2/9 Gi5/9 Gi6/9 +e19-2 distro2 Gi1/10 Gi2/10 Gi5/10 Gi6/10 +e19-3 distro1 Gi1/19 Gi2/19 Gi5/19 Gi6/19 +e19-4 distro1 Gi1/20 Gi2/20 Gi5/20 Gi6/20 +e21-1 distro2 Gi1/11 Gi2/11 Gi5/11 Gi6/11 +e21-2 distro2 Gi1/12 Gi2/12 Gi5/12 Gi6/12 +e21-3 distro1 Gi1/21 Gi2/21 Gi5/21 Gi6/21 +e21-4 distro1 Gi1/22 Gi2/22 Gi5/22 Gi6/22 +e23-1 distro2 Gi1/13 Gi2/13 Gi5/13 Gi6/13 +e23-2 distro2 Gi1/14 Gi2/14 Gi5/14 Gi6/14 +e23-3 distro1 Gi1/23 Gi2/23 Gi5/23 Gi6/23 +e23-4 distro1 Gi1/24 Gi2/24 Gi5/24 Gi6/24 +e25-1 distro2 Gi1/15 Gi2/15 Gi5/15 Gi6/15 +e25-2 distro2 Gi1/16 Gi2/16 Gi5/16 Gi6/16 +e25-3 distro1 Gi1/25 Gi2/25 Gi5/25 Gi6/25 +e25-4 distro1 Gi1/26 Gi2/26 Gi5/26 Gi6/26 +e27-1 distro2 Gi1/17 Gi2/17 Gi5/17 Gi6/17 +e27-2 distro2 Gi1/18 Gi2/18 Gi5/18 Gi6/18 +e29-1 distro2 Gi1/19 Gi2/19 Gi5/19 Gi6/19 +e29-2 distro2 Gi1/20 Gi2/20 Gi5/20 Gi6/20 +e31-1 distro2 Gi1/21 Gi2/21 Gi5/21 Gi6/21 +e31-2 distro2 Gi1/22 Gi2/22 Gi5/22 Gi6/22 +e33-1 distro3 Gi1/1 Gi2/1 Gi5/1 Gi6/1 +e33-2 distro2 Gi1/23 Gi2/23 Gi5/23 Gi6/23 +e35-1 distro3 Gi1/2 Gi2/2 Gi5/2 Gi6/2 +e35-2 distro3 Gi1/3 Gi2/3 Gi5/3 Gi6/3 +e37-1 distro3 Gi1/4 Gi2/4 Gi5/4 Gi6/4 +e37-2 distro3 Gi1/5 Gi2/5 Gi5/5 Gi6/5 +e39-1 distro3 Gi1/6 Gi2/6 Gi5/6 Gi6/6 +e39-2 distro3 Gi1/7 Gi2/7 Gi5/7 Gi6/7 +e41-1 distro3 Gi1/8 Gi2/8 Gi5/8 Gi6/8 +e41-2 distro3 Gi1/9 Gi2/9 Gi5/9 Gi6/9 +e43-1 distro3 Gi1/10 Gi2/10 Gi5/10 Gi6/10 +e43-2 distro3 Gi1/11 Gi2/11 Gi5/11 Gi6/11 +e43-3 distro4 Gi1/1 Gi2/1 Gi5/1 Gi6/1 +e43-4 distro4 Gi1/2 Gi2/2 Gi5/2 Gi6/2 +e45-1 distro3 Gi1/12 Gi2/12 Gi5/12 Gi6/12 +e45-2 distro3 Gi1/13 Gi2/13 Gi5/13 Gi6/13 +e45-3 distro4 Gi1/3 Gi2/3 Gi5/3 Gi6/3 +e45-4 distro4 Gi1/4 Gi2/4 Gi5/4 Gi6/4 +e47-1 distro3 Gi1/14 Gi2/14 Gi5/14 Gi6/14 +e47-2 distro3 Gi1/15 Gi2/15 Gi5/15 Gi6/15 +e47-3 distro4 Gi1/5 Gi2/5 Gi5/5 Gi6/5 +e47-4 distro4 Gi1/6 Gi2/6 Gi5/6 Gi6/6 +e49-1 distro3 Gi1/16 Gi2/16 Gi5/16 Gi6/16 +e49-2 distro3 Gi1/17 Gi2/17 Gi5/17 Gi6/17 +e49-3 distro4 Gi1/7 Gi2/7 Gi5/7 Gi6/7 +e49-4 distro4 Gi1/8 Gi2/8 Gi5/8 Gi6/8 +e51-1 distro3 Gi1/18 Gi2/18 Gi5/18 Gi6/18 +e51-2 distro3 Gi1/19 Gi2/19 Gi5/19 Gi6/19 +e51-3 distro4 Gi1/9 Gi2/9 Gi5/9 Gi6/9 +e51-4 distro4 Gi1/10 Gi2/10 Gi5/10 Gi6/10 +e53-1 distro3 Gi1/20 Gi2/20 Gi5/20 Gi6/20 +e53-2 distro3 Gi1/21 Gi2/21 Gi5/21 Gi6/21 +e53-3 distro4 Gi1/11 Gi2/11 Gi5/11 Gi6/11 +e53-4 distro4 Gi1/12 Gi2/12 Gi5/12 Gi6/12 +e55-1 distro3 Gi1/22 Gi2/22 Gi5/22 Gi6/22 +e55-2 distro3 Gi1/23 Gi2/23 Gi5/23 Gi6/23 +e55-3 distro4 Gi1/13 Gi2/13 Gi5/13 Gi6/13 +e55-4 distro4 Gi1/14 Gi2/14 Gi5/14 Gi6/14 +e57-1 distro3 Gi1/24 Gi2/24 Gi5/24 Gi6/24 +e57-2 distro3 Gi1/25 Gi2/25 Gi5/25 Gi6/25 +e57-3 distro4 Gi1/15 Gi2/15 Gi5/15 Gi6/15 +e57-4 distro4 Gi1/16 Gi2/16 Gi5/16 Gi6/16 +e59-1 distro5 Gi1/1 Gi2/1 Gi5/1 Gi6/1 +e59-2 distro5 Gi1/2 Gi2/2 Gi5/2 Gi6/2 +e59-3 distro4 Gi1/17 Gi2/17 Gi5/17 Gi6/17 +e59-4 distro4 Gi1/18 Gi2/18 Gi5/18 Gi6/18 +e61-1 distro5 Gi1/3 Gi2/3 Gi5/3 Gi6/3 +e61-2 distro5 Gi1/4 Gi2/4 Gi5/4 Gi6/4 +e61-3 distro4 Gi1/19 Gi2/19 Gi5/19 Gi6/19 +e61-4 distro4 Gi1/20 Gi2/20 Gi5/20 Gi6/20 +e63-1 distro5 Gi1/5 Gi2/5 Gi5/5 Gi6/5 +e63-2 distro5 Gi1/6 Gi2/6 Gi5/6 Gi6/6 +e63-3 distro5 Gi1/7 Gi2/7 Gi5/7 Gi6/7 +e63-4 distro5 Gi1/8 Gi2/8 Gi5/8 Gi6/8 +e65-1 distro5 Gi1/9 Gi2/9 Gi5/9 Gi6/9 +e65-2 distro5 Gi1/10 Gi2/10 Gi5/10 Gi6/10 +e65-3 distro5 Gi1/11 Gi2/11 Gi5/11 Gi6/11 +e65-4 distro5 Gi1/12 Gi2/12 Gi5/12 Gi6/12 +e67-1 distro5 Gi1/13 Gi2/13 Gi5/13 Gi6/13 +e67-2 distro5 Gi1/14 Gi2/14 Gi5/14 Gi6/14 +e67-3 distro5 Gi1/15 Gi2/15 Gi5/15 Gi6/15 +e67-4 distro5 Gi1/16 Gi2/16 Gi5/16 Gi6/16 +e69-1 distro5 Gi1/17 Gi2/17 Gi5/17 Gi6/17 +e69-2 distro5 Gi1/18 Gi2/18 Gi5/18 Gi6/18 +e69-3 distro5 Gi1/19 Gi2/19 Gi5/19 Gi6/19 +e69-4 distro5 Gi1/20 Gi2/20 Gi5/20 Gi6/20 +e71-1 distro5 Gi1/21 Gi2/21 Gi5/21 Gi6/21 +e71-2 distro5 Gi1/22 Gi2/22 Gi5/22 Gi6/22 +e71-3 distro5 Gi1/23 Gi2/23 Gi5/23 Gi6/23 +e71-4 distro5 Gi1/24 Gi2/24 Gi5/24 Gi6/24 +e73-1 distro5 Gi1/25 Gi2/25 Gi5/25 Gi6/25 +e73-2 distro5 Gi1/26 Gi2/26 Gi5/26 Gi6/26 +e73-3 distro5 Gi1/27 Gi2/27 Gi5/27 Gi6/27 +e73-4 distro5 Gi1/28 Gi2/28 Gi5/28 Gi6/28 +e75-1 distro5 Gi1/29 Gi2/29 Gi5/29 Gi6/29 +e75-2 distro5 Gi1/30 Gi2/30 Gi5/30 Gi6/30 +e75-3 distro5 Gi1/31 Gi2/31 Gi5/31 Gi6/31 +e75-4 distro5 Gi1/32 Gi2/32 Gi5/32 Gi6/32 +e77-1 distro5 Gi1/33 Gi2/33 Gi5/33 Gi6/33 +e77-2 distro5 Gi1/34 Gi2/34 Gi5/34 Gi6/34 diff --git a/patchlist.txt.crew b/patchlist.txt.crew new file mode 100644 index 0000000..c69136a --- /dev/null +++ b/patchlist.txt.crew @@ -0,0 +1,6 @@ +crew1 crewgw Gi1/11 Gi1/12 Gi1/13 Gi1/14 +crew2 crewgw Gi1/15 Gi1/16 Gi1/17 Gi1/18 +crew3 crewgw Gi1/19 Gi1/20 Gi1/21 Gi1/22 +crew4 crewgw Gi1/23 Gi1/24 Gi1/25 Gi1/26 +crew5 crewgw Gi1/27 Gi1/28 Gi1/29 Gi1/30 +crew6 crewgw Gi1/31 Gi1/32 Gi1/33 Gi1/34 diff --git a/pingswitches.txt b/pingswitches.txt new file mode 100644 index 0000000..efd8454 --- /dev/null +++ b/pingswitches.txt @@ -0,0 +1,128 @@ +151.216.1.0 26 e1-3 x.x.x.x +151.216.1.64 26 e1-4 x.x.x.x +151.216.1.128 26 e3-3 x.x.x.x +151.216.1.192 26 e3-4 x.x.x.x +151.216.2.0 26 e5-3 x.x.x.x +151.216.2.64 26 e5-4 x.x.x.x +151.216.2.128 26 e7-3 x.x.x.x +151.216.2.192 26 e7-4 x.x.x.x +151.216.3.0 26 e9-3 x.x.x.x +151.216.3.64 26 e9-4 x.x.x.x +151.216.3.128 26 e11-1 x.x.x.x +151.216.3.192 26 e11-2 x.x.x.x +151.216.4.0 26 e11-3 x.x.x.x +151.216.4.64 26 e11-4 x.x.x.x +151.216.4.128 26 e13-1 x.x.x.x +151.216.4.192 26 e13-2 x.x.x.x +151.216.5.0 26 e13-3 x.x.x.x +151.216.5.64 26 e13-4 x.x.x.x +151.216.5.128 26 e15-1 x.x.x.x +151.216.5.192 26 e15-2 x.x.x.x +151.216.6.0 26 e15-3 x.x.x.x +151.216.6.64 26 e15-4 x.x.x.x +151.216.6.128 26 e17-1 x.x.x.x +151.216.6.192 26 e17-2 x.x.x.x +151.216.7.0 26 e17-3 x.x.x.x +151.216.7.64 26 e17-4 x.x.x.x +151.216.7.128 26 e19-1 x.x.x.x +151.216.7.192 26 e19-2 x.x.x.x +151.216.8.0 26 e19-3 x.x.x.x +151.216.8.64 26 e19-4 x.x.x.x +151.216.8.128 26 e21-1 x.x.x.x +151.216.8.192 26 e21-2 x.x.x.x +151.216.9.0 26 e21-3 x.x.x.x +151.216.9.64 26 e21-4 x.x.x.x +151.216.9.128 26 e23-1 x.x.x.x +151.216.9.192 26 e23-2 x.x.x.x +151.216.10.0 26 e23-3 x.x.x.x +151.216.10.64 26 e23-4 x.x.x.x +151.216.10.128 26 e25-1 x.x.x.x +151.216.10.192 26 e25-2 x.x.x.x +151.216.11.0 26 e25-3 x.x.x.x +151.216.11.64 26 e25-4 x.x.x.x +151.216.11.128 26 e27-1 x.x.x.x +151.216.11.192 26 e27-2 x.x.x.x +151.216.12.0 26 e29-1 x.x.x.x +151.216.12.64 26 e29-2 x.x.x.x +151.216.12.128 26 e31-1 x.x.x.x +151.216.12.192 26 e31-2 x.x.x.x +151.216.13.0 26 e33-1 x.x.x.x +151.216.13.64 26 e33-2 x.x.x.x +151.216.13.128 26 e35-1 x.x.x.x +151.216.13.192 26 e35-2 x.x.x.x +151.216.14.0 26 e37-1 x.x.x.x +151.216.14.64 26 e37-2 x.x.x.x +151.216.14.128 26 e39-1 x.x.x.x +151.216.14.192 26 e39-2 x.x.x.x +151.216.15.0 26 e41-1 x.x.x.x +151.216.15.64 26 e41-2 x.x.x.x +151.216.15.128 26 e43-1 x.x.x.x +151.216.15.192 26 e43-2 x.x.x.x +151.216.16.0 26 e43-3 x.x.x.x +151.216.16.64 26 e43-4 x.x.x.x +151.216.16.128 26 e45-1 x.x.x.x +151.216.16.192 26 e45-2 x.x.x.x +151.216.17.0 26 e45-3 x.x.x.x +151.216.17.64 26 e45-4 x.x.x.x +151.216.17.128 26 e47-1 x.x.x.x +151.216.17.192 26 e47-2 x.x.x.x +151.216.18.0 26 e47-3 x.x.x.x +151.216.18.64 26 e47-4 x.x.x.x +151.216.18.128 26 e49-1 x.x.x.x +151.216.18.192 26 e49-2 x.x.x.x +151.216.19.0 26 e49-3 x.x.x.x +151.216.19.64 26 e49-4 x.x.x.x +151.216.19.128 26 e51-1 x.x.x.x +151.216.19.192 26 e51-2 x.x.x.x +151.216.20.0 26 e51-3 x.x.x.x +151.216.20.64 26 e51-4 x.x.x.x +151.216.20.128 26 e53-1 x.x.x.x +151.216.20.192 26 e53-2 x.x.x.x +151.216.21.0 26 e53-3 x.x.x.x +151.216.21.64 26 e53-4 x.x.x.x +151.216.21.128 26 e55-1 x.x.x.x +151.216.21.192 26 e55-2 x.x.x.x +151.216.22.0 26 e55-3 x.x.x.x +151.216.22.64 26 e55-4 x.x.x.x +151.216.22.128 26 e57-1 x.x.x.x +151.216.22.192 26 e57-2 x.x.x.x +151.216.23.0 26 e57-3 x.x.x.x +151.216.23.64 26 e57-4 x.x.x.x +151.216.23.128 26 e59-1 x.x.x.x +151.216.23.192 26 e59-2 x.x.x.x +151.216.24.0 26 e59-3 x.x.x.x +151.216.24.64 26 e59-4 x.x.x.x +151.216.24.128 26 e61-1 x.x.x.x +151.216.24.192 26 e61-2 x.x.x.x +151.216.25.0 26 e61-3 x.x.x.x +151.216.25.64 26 e61-4 x.x.x.x +151.216.25.128 26 e63-1 x.x.x.x +151.216.25.192 26 e63-2 x.x.x.x +151.216.26.0 26 e63-3 x.x.x.x +151.216.26.64 26 e63-4 x.x.x.x +151.216.26.128 26 e65-1 x.x.x.x +151.216.26.192 26 e65-2 x.x.x.x +151.216.27.0 26 e65-3 x.x.x.x +151.216.27.64 26 e65-4 x.x.x.x +151.216.27.128 26 e67-1 x.x.x.x +151.216.27.192 26 e67-2 x.x.x.x +151.216.28.0 26 e67-3 x.x.x.x +151.216.28.64 26 e67-4 x.x.x.x +151.216.28.128 26 e69-1 x.x.x.x +151.216.28.192 26 e69-2 x.x.x.x +151.216.29.0 26 e69-3 x.x.x.x +151.216.29.64 26 e69-4 x.x.x.x +151.216.29.128 26 e71-1 x.x.x.x +151.216.29.192 26 e71-2 x.x.x.x +151.216.30.0 26 e71-3 x.x.x.x +151.216.30.64 26 e71-4 x.x.x.x +151.216.30.128 26 e73-1 x.x.x.x +151.216.30.192 26 e73-2 x.x.x.x +151.216.31.0 26 e73-3 x.x.x.x +151.216.31.64 26 e73-4 x.x.x.x +151.216.31.128 26 e75-1 x.x.x.x +151.216.31.192 26 e75-2 x.x.x.x +151.216.32.0 26 e75-3 x.x.x.x +151.216.32.64 26 e75-4 x.x.x.x +151.216.32.128 26 e77-1 x.x.x.x +151.216.32.192 26 e77-2 x.x.x.x diff --git a/planning/planning.cpp b/planning/planning.cpp new file mode 100644 index 0000000..04dde6f --- /dev/null +++ b/planning/planning.cpp @@ -0,0 +1,579 @@ +// Find optimal assignment of access switches using min-cost max-flow. +// About three times as fast as the old DP+heuristics-based solution +// (<2ms for planning TG), and can deal with less regular cost metrics. +// +// Given D distro switches and N access switches, complexity is approx. O(dn³) +// (runs n iterations, each iteration is O(VE), V is O(n), E is O(dn))). +// +// g++ -std=gnu++0x -Wall -g -O2 -DOUTPUT_FILES=1 -o planning planning.cc && ./planning -6 11 22 -26 35 + +#include <stdio.h> +#include <math.h> +#include <string.h> +#include <stdlib.h> +#include <stdarg.h> +#include <unistd.h> +#include <limits.h> +#include <assert.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> + +#include <vector> +#include <map> +#include <algorithm> +#include <string> +#include <utility> +#include <queue> + +#define NUM_DISTRO 5 +#define SWITCHES_PER_ROW 4 +#define PORTS_PER_DISTRO 38 + +#define TRUNCATE_METRIC 1 +#define EXTENSION_COST 70 +#define HORIZ_GAP_COST 100 + +#define FIRST_SUBNET_ADDRESS "151.216.1.0" +#define SUBNET_SIZE 26 + +#define _INF 99999 + +struct Switch { + unsigned row, num; + + Switch(unsigned row, unsigned num) : row(row), num(num) {} +}; + +struct Inventory { + Inventory() : num_10m(0), num_30m(0), num_50m(0), extensions(0), horiz_gap_crossings(0) {} + + Inventory& operator+= (const Inventory& other) + { + this->num_10m += other.num_10m; + this->num_30m += other.num_30m; + this->num_50m += other.num_50m; + this->extensions += other.extensions; + this->horiz_gap_crossings += other.horiz_gap_crossings; + return *this; + } + + std::string to_string() const + { + if (num_10m >= _INF) { + return "XXXXX"; + } + + std::string ret; + Inventory copy = *this; + while (copy.num_50m-- > 0) { + if (!ret.empty()) { + ret += '+'; + } + ret += "50"; + } + while (copy.num_30m-- > 0) { + if (!ret.empty()) { + ret += '+'; + } + ret += "30"; + } + while (copy.num_10m-- > 0) { + if (!ret.empty()) { + ret += '+'; + } + ret += "10"; + } + return ret; + } + + unsigned num_10m, num_30m, num_50m; + unsigned extensions, horiz_gap_crossings; +}; + +// Data structures for flow algorithm. +struct Node; +struct Edge { + Node *to; + Edge *reverse; // Edge in opposite direction. + + int capacity, flow; + int cost; +}; +struct Node { + std::vector<Edge *> edges; + + // For debugging. + char name[16]; + + // Used in Dijkstra search. + int cost_from_source; + bool seen; + Edge *prev_edge; +}; + + +const unsigned horiz_cost[SWITCHES_PER_ROW] = { + 216, 72, 72, 216 // Gap costs are added separately. +}; + +class Planner { + private: + int distro_placements[NUM_DISTRO]; + std::vector<Switch> switches; + std::map<unsigned, unsigned> num_ports_used; + std::string *log_buf; + + unsigned find_distance(Switch from_where, unsigned distro); + unsigned find_slack(Inventory inventory, unsigned distance); + unsigned find_cost(Switch from_where, unsigned distro); + Inventory find_inventory(Switch from_where, unsigned distro); + void logprintf(const char *str, ...); + void init_switches(); + + public: + Planner() : log_buf(NULL) {} + void set_log_buf(std::string *log_buf) { this->log_buf = log_buf; } + int do_work(int distro_placements[NUM_DISTRO]); +}; + +unsigned Planner::find_distance(Switch from_where, unsigned distro) +{ + const int dp = abs(distro_placements[distro]); + + // 3.7m from row to row (2.5m gap + 1.2m boards). + unsigned base_cost = 37 * abs(from_where.row - dp) + + horiz_cost[from_where.num]; + + if ((distro_placements[distro] >= 0) == (from_where.num >= 2)) { + // 5.0m horizontal gap. + base_cost += 50; + } + + // 4m, 5m, 4m gaps (1.5m, 2.5m, 1.5m extra). + if ((from_where.row <= 5) == (dp >= 6)) + base_cost += 15; + if ((from_where.row <= 13) == (dp >= 14)) + base_cost += 15; + if ((from_where.row <= 21) == (dp >= 22)) + base_cost += 25; + if ((from_where.row <= 29) == (dp >= 30)) + base_cost += 15; + + // Add 5m slack. + return base_cost + 50; +} + +Inventory Planner::find_inventory(Switch from_where, unsigned distro) +{ + unsigned distance = find_distance(from_where, distro); + + Inventory inv; + if (distance <= 100) { + inv.num_10m = 1; + } else if (distance <= 200) { + inv.num_10m = 2; + inv.extensions = 1; + } else if (distance <= 300) { + inv.num_30m = 1; + } else if (distance <= 400) { + inv.num_10m = 1; + inv.num_30m = 1; + inv.extensions = 1; + } else if (distance <= 500) { + inv.num_50m = 1; + } else if (distance <= 600) { + inv.num_10m = 1; + inv.num_50m = 1; + inv.extensions = 1; + } else if (distance <= 800) { + inv.num_30m = 1; + inv.num_50m = 1; + inv.extensions = 1; + } else if (distance <= 1000) { + inv.num_50m = 2; + inv.extensions = 1; + } else { + inv.num_10m = _INF; + } + + if ((distro_placements[distro] >= 0) == (from_where.num >= 2)) { + inv.horiz_gap_crossings = 1; + } + + return inv; +} + +unsigned Planner::find_slack(Inventory inventory, unsigned distance) +{ + return 100 * inventory.num_10m + 300 * inventory.num_30m + 500 * inventory.num_50m - distance; +} + +unsigned Planner::find_cost(Switch from_where, unsigned distro) +{ + Inventory inv = find_inventory(from_where, distro); + unsigned cost; + +#if TRUNCATE_METRIC + cost = 100 * inv.num_10m + 300 * inv.num_30m + 500 * inv.num_50m + EXTENSION_COST * inv.extensions; + // cost = find_slack(inv, distance); +#else + cost = find_distance(from_where, distro); + // cost = ((distance + 90) / 100) * 100; +#endif + + // We really, really do not want to cross the gap on the north side. + if (from_where.row <= 30) { + cost += _INF * inv.horiz_gap_crossings; + } else { + cost += HORIZ_GAP_COST * inv.horiz_gap_crossings; + } + + return cost; +} + +void Planner::logprintf(const char *fmt, ...) +{ + if (log_buf == NULL) { + return; + } + + char buf[1024]; + va_list ap; + va_start(ap, fmt); + vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + + log_buf->append(buf); +} + +std::string distro_name(unsigned distro) +{ + char buf[16]; + sprintf(buf, "distro%d", distro + 1); + return buf; +} + +std::string port_name(unsigned distro, unsigned portnum) +{ + char buf[16]; + int distros[] = { 1, 2, 5, 6 }; + sprintf(buf, "Gi%u/%u", distros[portnum / 48], (portnum % 48) + 1); + return buf; +} + +void Planner::init_switches() +{ + switches.clear(); + for (unsigned i = 1; i <= 39; ++i) { + if (!(i >= 1 && i <= 5)) { + switches.push_back(Switch(i, 0)); + switches.push_back(Switch(i, 1)); + } + if (!(i >= 14 && i <= 21) && + !(i >= 39)) { + switches.push_back(Switch(i, 2)); + switches.push_back(Switch(i, 3)); + } + } +} + +void add_edge(Node *from, Node *to, int capacity, int cost, std::vector<Edge> *edges) +{ + assert(edges->size() + 2 <= edges->capacity()); + edges->resize(edges->size() + 2); + + Edge *e1 = &edges->at(edges->size() - 2); + Edge *e2 = &edges->at(edges->size() - 1); + + e1->to = to; + e1->capacity = capacity; + e1->flow = 0; + e1->cost = cost; + e1->reverse = e2; + from->edges.push_back(e1); + + e2->to = from; + e2->capacity = 0; + e2->flow = 0; + e2->cost = -cost; + e2->reverse = e1; + to->edges.push_back(e2); +} + +int Planner::do_work(int distro_placements[NUM_DISTRO]) +{ + memcpy(this->distro_placements, distro_placements, sizeof(distro_placements[0]) * NUM_DISTRO); + + num_ports_used.clear(); + +#if OUTPUT_FILES + FILE *patchlist = fopen("patchlist.txt", "w"); + FILE *switchlist = fopen("switches.txt", "w"); +#endif + Inventory total_inv; + unsigned total_cost = 0, total_slack = 0; + + init_switches(); + + logprintf("Finding optimal layout for %u switches\n", switches.size()); + + // Min-cost max-flow in a graph that looks something like this + // (ie., all distros connect to all access switches): + // + // ---- D1 \---/-- A1 -- + // / \ / \ . + // source ----- D2 --X---- A2 --- sink + // \ / \ / + // ---- D3 /---\-- A3 -/ + // + // Capacity from source to distro is 48 (or whatever), cost is 0. + // Capacity from distro to access is 1, cost is cable length + penalties. + // Capacity from access to sink is 1, cost is 0. + Node source_node, sink_node; + Node distro_nodes[NUM_DISTRO]; + std::vector<Node> switch_nodes; + std::vector<Edge> edges; + switch_nodes.resize(switches.size()); + edges.reserve(switches.size() * NUM_DISTRO * 2 + 16); + + for (unsigned i = 0; i < NUM_DISTRO; ++i) { + add_edge(&source_node, &distro_nodes[i], PORTS_PER_DISTRO, 0, &edges); + } + for (unsigned i = 0; i < NUM_DISTRO; ++i) { + for (unsigned j = 0; j < switches.size(); ++j) { + int cost = find_cost(switches[j], i); + if (cost >= _INF) { + continue; + } + add_edge(&distro_nodes[i], &switch_nodes[j], 1, cost, &edges); + } + } + for (unsigned i = 0; i < switches.size(); ++i) { + add_edge(&switch_nodes[i], &sink_node, 1, 0, &edges); + } + + std::vector<Node*> all_nodes; + all_nodes.push_back(&source_node); + strcpy(source_node.name, "source"); + + all_nodes.push_back(&sink_node); + strcpy(sink_node.name, "sink"); + + for (unsigned i = 0; i < NUM_DISTRO; ++i) { + all_nodes.push_back(&distro_nodes[i]); + sprintf(distro_nodes[i].name, "distro%d", i); + } + for (unsigned i = 0; i < switches.size(); ++i) { + all_nodes.push_back(&switch_nodes[i]); + sprintf(switch_nodes[i].name, "switch%d", i); + } + + // We use the successive shortest path algorithm, using a primitive Dijkstra + // (not heap-based, so O(VE)) for search. + int num_paths = 0; + for ( ;; ) { + // Reset Dijkstra state. + for (unsigned i = 0; i < all_nodes.size(); ++i) { + Node *n = all_nodes[i]; + n->cost_from_source = _INF; + n->seen = false; + n->prev_edge = NULL; + } + source_node.cost_from_source = 0; + + for (unsigned i = 0; i < switches.size(); ++i) { + Node *cheapest_unseen_node = NULL; + for (unsigned i = 0; i < all_nodes.size(); ++i) { + Node *n = all_nodes[i]; + if (n->seen || n->cost_from_source >= _INF) { + continue; + } + if (cheapest_unseen_node == NULL || + n->cost_from_source < cheapest_unseen_node->cost_from_source) { + cheapest_unseen_node = n; + } + } + if (cheapest_unseen_node == NULL) { + // Oops, no usable path. + goto end; + } + if (cheapest_unseen_node == &sink_node) { + // Yay, we found a path to the sink. + break; + } + + cheapest_unseen_node->seen = true; + + // See if any of the edges out from this are feasible. + for (unsigned i = 0; i < cheapest_unseen_node->edges.size(); ++i) { + Edge *e = cheapest_unseen_node->edges[i]; + if (e->flow + 1 > e->capacity || e->reverse->flow - 1 > e->reverse->capacity) { + // Not feasible. + continue; + } + if (e->to->cost_from_source <= cheapest_unseen_node->cost_from_source + e->cost) { + // Already seen through a better path. + continue; + } + e->to->seen = false; + e->to->prev_edge = e; + e->to->cost_from_source = cheapest_unseen_node->cost_from_source + e->cost; + } + } + + // Increase flow along the path, moving backwards towards the source. + Node *n = &sink_node; + for ( ;; ) { + if (n->prev_edge == NULL) { + break; + } + + n->prev_edge->flow += 1; + n->prev_edge->reverse->flow -= 1; + + n = n->prev_edge->reverse->to; + } + ++num_paths; + } + +end: + logprintf("Augmented using %d paths.\n", num_paths, (unsigned)switches.size()); + int last_row = 0, last_num = -1; +#if OUTPUT_FILES + in_addr_t subnet_address = inet_addr(FIRST_SUBNET_ADDRESS); +#endif + for (unsigned i = 0; i < switches.size(); ++i) { + // Figure out which distro this switch was connected to. + int distro = -1; + for (unsigned j = 0; j < NUM_DISTRO; ++j) { + Edge *flow_edge = NULL; + for (unsigned k = 0; k < distro_nodes[j].edges.size(); ++k) { + Edge *e = distro_nodes[j].edges[k]; + if (e->to == &switch_nodes[i]) { + flow_edge = e; + break; + } + } + if (flow_edge != NULL && flow_edge->flow > 0) { + distro = j; + break; + } + } + + if (i == 0 || switches[i].row != switches[i - 1].row) { + if (last_row == 13 || last_row == 21 || last_row == 29) { + logprintf("\n"); + } + logprintf("\n[31;22m%2u (%2u-%2u) ", switches[i].row, switches[i].row * 2 - 1, switches[i].row * 2 + 0); + last_num = -1; + } + for (unsigned j = last_num; j + 1 < switches[i].num; ++j) { + logprintf("%19s", ""); + } + + char distro_marker_left[16] = " "; + char distro_marker_right[16] = " "; + if (switches[i].num == 1) { + for (int d = 0; d < NUM_DISTRO; ++d) { + if (int(switches[i].row) == distro_placements[d]) { + sprintf(distro_marker_left, "[%u;1m*", d + 32); + } + if (int(switches[i].row) == -distro_placements[d]) { + sprintf(distro_marker_right, "[%u;1m*", d + 32); + } + } + } + + int this_distance; + Inventory this_inv; + if (distro == -1) { + this_distance = _INF; + this_inv.num_10m = _INF; + logprintf("[%u;22m- ", distro + 32); + } else { + this_distance = find_distance(switches[i], distro); + this_inv = find_inventory(switches[i], distro); + total_cost += find_cost(switches[i], distro); + logprintf("[%u;22m%u ", distro + 32, distro); + } + +#if TRUNCATE_METRIC + logprintf("(%-5s) (%3.1f)%s %s", this_inv.to_string().c_str(), this_distance / 10.0, distro_marker_left, distro_marker_right); +#else + logprintf("(%3.1f)%s %s", this_distance / 10.0, distro_marker_left, distro_marker_right); +#endif + total_slack += find_slack(this_inv, this_distance); + total_inv += this_inv; + + last_row = switches[i].row; + last_num = switches[i].num; + +#if OUTPUT_FILES + int port_num = num_ports_used[distro]++; + fprintf(patchlist, "e%u-%u %s %s %s %s %s\n", + last_row * 2 - 1, last_num + 1, + distro_name(distro).c_str(), + port_name(distro, port_num).c_str(), + port_name(distro, port_num + 48).c_str(), + port_name(distro, port_num + 96).c_str(), + port_name(distro, port_num + 144).c_str()); + + in_addr subnet_addr4; + subnet_addr4.s_addr = subnet_address; + fprintf(switchlist, "%s %u e%u-%u x.x.x.x\n", + inet_ntoa(subnet_addr4), SUBNET_SIZE, last_row * 2 - 1, last_num + 1); + subnet_address = htonl(ntohl(subnet_address) + (1ULL << (32 - SUBNET_SIZE))); +#endif + } +#if OUTPUT_FILES + fclose(patchlist); + fclose(switchlist); +#endif + logprintf("\n"); + logprintf("[%u;22m\n", 37); + +#if TRUNCATE_METRIC + logprintf("\n"); + logprintf("10m: %3u\n", total_inv.num_10m); + logprintf("30m: %3u\n", total_inv.num_30m); + logprintf("50m: %3u\n", total_inv.num_50m); + logprintf("Extensions: %u\n", total_inv.extensions); + logprintf("Horizontal gap crossings: %u\n", total_inv.horiz_gap_crossings); + logprintf("\n"); + + if (total_inv.num_10m >= _INF) { + logprintf("Total cost: Impossible\n"); + return INT_MAX; + } + int total_cable = 100 * total_inv.num_10m + 300 * total_inv.num_30m + 500 * total_inv.num_50m; +#else + // Not correct unless EXTENSION_COST = HORIZ_GAP_COST = 0, but okay. + int total_cable = total_cost; +#endif + + logprintf("Total cable: %.1fm (cost = %.1fm)\n", total_cable / 10.0, total_cost / 10.0); + logprintf("Total slack: %.1fm (%.2f%%)\n", total_slack / 10.0, 100.0 * double(total_slack) / double(total_cable)); + + for (int i = 0; i < NUM_DISTRO; ++i) { + Edge *e = source_node.edges[i]; + logprintf("Remaining ports on distro %d: %d\n", i + 1, e->capacity - e->flow); + } + return total_cost; +} + +int main(int argc, char **argv) +{ + int distro_placements[NUM_DISTRO]; + for (int i = 0; i < NUM_DISTRO; ++i) { + distro_placements[i] = atoi(argv[i + 1]); + } + + std::string log; + Planner p; + log.clear(); + p.set_log_buf(&log); + (void)p.do_work(distro_placements); + printf("%s\n", log.c_str()); + return 0; +} diff --git a/pxe/chain.c32 b/pxe/chain.c32 Binary files differnew file mode 100644 index 0000000..cb1813b --- /dev/null +++ b/pxe/chain.c32 diff --git a/pxe/menu.c32 b/pxe/menu.c32 Binary files differnew file mode 100644 index 0000000..4fa0a1c --- /dev/null +++ b/pxe/menu.c32 diff --git a/pxe/menus/background.png b/pxe/menus/background.png Binary files differnew file mode 100644 index 0000000..293e591 --- /dev/null +++ b/pxe/menus/background.png diff --git a/pxe/menus/bg.png b/pxe/menus/bg.png Binary files differnew file mode 100644 index 0000000..00bc09a --- /dev/null +++ b/pxe/menus/bg.png diff --git a/pxe/menus/common.cfg b/pxe/menus/common.cfg new file mode 100644 index 0000000..904b2db --- /dev/null +++ b/pxe/menus/common.cfg @@ -0,0 +1,24 @@ +MENU BACKGROUND menus/background.png +ALLOWOPTIONS 1 +PROMPT 0 +MENU WIDTH 77 +MENU ROWS 14 +MENU TABMSGROW 25 +MENU CMDLINEROW 25 +MENU HELPMSGROW 23 +MENU MARGIN 15 +MENU VSHIFT 4 +MENU COLOR BORDER 37;40 #00000000 #00000000 none +MENU COLOR TITLE 37;40 #ff6b0035 #ffffffff none + +MENU COLOR UNSEL 37;40 #ffeb088d #00ffffff none +MENU COLOR HOTKEY 37;40 #ff6b0035 #00ffffff none + +MENU COLOR SEL 37;40 #ffeb088d #ffb1dbfa none +MENU COLOR HOTSEL 37;40 #ff6b0035 #ffb1dbfa none + +MENU COLOR HELP 37;40 #fff9a11d #00ffffff none +MENU COLOR TIMEOUT_MSG 37;40 #fff9a11d #0faaaaaa none +MENU COLOR TIMEOUT 37;40 #fff9a11d #0faaaaff none + +MENU SEPARATOR diff --git a/pxe/menus/debian.cfg b/pxe/menus/debian.cfg new file mode 100644 index 0000000..e5e2376 --- /dev/null +++ b/pxe/menus/debian.cfg @@ -0,0 +1,35 @@ +# /var/lib/tftpboot/menus/debian.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Debian Installers + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR + + +LABEL squeeze_amd64_install + MENU LABEL ^1 Debian Stable amd64 (Squeeze) netinstall + KERNEL debian/squeeze/amd64/linux + APPEND vga=normal initrd=debian/squeeze/amd64/initrd.gz -- + +LABEL squeeze_i386_install + MENU LABEL ^2 Debian Stable i386 (Squeeze) netinstall + KERNEL debian/squeeze/i386/linux + APPEND vga=normal initrd=debian/squeeze/i386/initrd.gz -- + +MENU SEPARATOR + +LABEL wheezy_amd64_install + MENU LABEL ^3 Debian Testing amd64 (Wheezy) netinstall + KERNEL debian/wheezy/amd64/linux + APPEND vga=normal initrd=debian/wheezy/amd64/initrd.gz -- + +LABEL wheezy_i386_install + MENU LABEL ^4 Debian Testing i386 (Wheezy) netinstall + KERNEL debian/wheezy/i386/linux + APPEND vga=normal initrd=debian/wheezy/i386/initrd.gz -- + +TIMEOUT 900 diff --git a/pxe/menus/tools.cfg b/pxe/menus/tools.cfg new file mode 100644 index 0000000..aa37dd0 --- /dev/null +++ b/pxe/menus/tools.cfg @@ -0,0 +1,36 @@ +# /var/lib/tftpboot/menus/debian.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Tools + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR + +LABEL memtest + MENU LABEL ^Memory test using Memtest86+ + TEXT HELP +Run memory test using Memtest86+ + ENDTEXT + KERNEL tools/memtest + +LABEL hdt + MENU LABEL ^HDT - Hardware Detection Tool + TEXT HELP +Used to examine system devices, system information, diagnostics + ENDTEXT + COM32 tools/hdt_0_5_2.c32 + APPEND pciids=tools/pci.ids + +LABEL ntpasswd + MENU LABEL ^Offline NT Password Recovery ... + MENU PASSWD nexuserbest + TEXT HELP +Can be used to recover/clear Windows password. Password protected. + ENDTEXT + KERNEL tools/ntpasswd/vmlinuz + INITRD tools/ntpasswd/initrd.cgz,tools/ntpasswd/scsi.cgz + +TIMEOUT 900 diff --git a/pxe/menus/ubuntu.cfg b/pxe/menus/ubuntu.cfg new file mode 100644 index 0000000..081bc61 --- /dev/null +++ b/pxe/menus/ubuntu.cfg @@ -0,0 +1,47 @@ +# /var/lib/tftpboot/menus/ubuntu.cfg +MENU INCLUDE menus/common.cfg +MENU TITLE Ubuntu Live boot + +LABEL mainmenu + MENU LABEL ^R Return to Main Menu + COM32 vesamenu.c32 + APPEND ~ + +MENU SEPARATOR + +LABEL pangolin32live + MENU LABEL ^1 Ubuntu 12.04.2 32bit LIVE boot + KERNEL ubuntu/12.04.2/i386/live/vmlinuz + APPEND boot=casper netboot=nfs nfsroot=151.216.125.3:/var/nfsroot/ubuntu/12.04.2/i386 quiet splash initrd=ubuntu/12.04.2/i386/live/initrd.lz -- + +LABEL pangolin64live + MENU LABEL ^2 Ubuntu 12.04.2 64bit LIVE boot + KERNEL ubuntu/12.04.2/amd64/live/vmlinuz.efi + APPEND boot=casper netboot=nfs nfsroot=151.216.125.3:/var/nfsroot/ubuntu/12.04.2/amd64 quiet splash initrd=ubuntu/12.04.2/amd64/live/initrd.lz -- + +MENU SEPARATOR + +LABEL xpangolin32live + MENU LABEL ^3 xubuntu 12.04.2 32bit LIVE boot + KERNEL xubuntu/12.04.2/i386/live/vmlinuz + APPEND boot=casper netboot=nfs nfsroot=151.216.125.3:/var/nfsroot/xubuntu/12.04.2/i386 quiet splash initrd=xubuntu/12.04.2/i386/live/initrd.lz -- + +LABEL xpangolin64live + MENU LABEL ^4 xubuntu 12.04.2 64bit LIVE boot + KERNEL xubuntu/12.04.2/amd64/live/vmlinuz + APPEND boot=casper netboot=nfs nfsroot=151.216.125.3:/var/nfsroot/xubuntu/12.04.2/amd64 quiet splash initrd=xubuntu/12.04.2/amd64/live/initrd.lz -- + +MENU SEPARATOR + +LABEL quetzal64 + MENU LABEL ^5 Ubuntu 12.10 64bit Installer + KERNEL ubuntu/12.10/amd64/linux + APPEND boot=casper quiet splash initrd=ubuntu/12.10/amd64/initrd.gz -- + +LABEL quetzal32 + MENU LABEL ^6 Ubuntu 12.10 32bit Installer + KERNEL ubuntu/12.10/i386/linux + APPEND boot=casper quiet splash initrd=ubuntu/12.10/i386/initrd.gz -- + + +TIMEOUT 900 diff --git a/pxe/pxelinux.0 b/pxe/pxelinux.0 Binary files differnew file mode 100644 index 0000000..c763741 --- /dev/null +++ b/pxe/pxelinux.0 diff --git a/pxe/pxelinux.cfg/default b/pxe/pxelinux.cfg/default new file mode 100644 index 0000000..8c594fa --- /dev/null +++ b/pxe/pxelinux.cfg/default @@ -0,0 +1,39 @@ +# /var/lib/tftpboot/pxelinux.cfg/default +DEFAULT vesamenu.c32 +MENU INCLUDE menus/common.cfg +MENU TITLE The Gathering 2013 - Singularity boot menu + +LABEL boot_hd0 + MENU LABEL Boot from first hard drive + MENU DEFAULT + TEXT HELP +Boots your system as normal from the first BIOS drive + ENDTEXT + COM32 chain.c32 + APPEND hd0 + +MENU SEPARATOR + +LABEL debian + MENU LABEL ^1 Debian + TEXT HELP +Debian installers and live-boot options. + ENDTEXT + COM32 vesamenu.c32 + APPEND menus/debian.cfg + +LABEL ubuntu + MENU LABEL ^2 Ubuntu + TEXT HELP +Ubuntu installers and live-boot options. + ENDTEXT + COM32 vesamenu.c32 + APPEND menus/ubuntu.cfg + +LABEL tools + MENU LABEL ^3 Tools + COM32 vesamenu.c32 + APPEND menus/tools.cfg + +ONTIMEOUT boot_hd0 +TIMEOUT 300 diff --git a/pxe/version.info b/pxe/version.info new file mode 100644 index 0000000..8a4a704 --- /dev/null +++ b/pxe/version.info @@ -0,0 +1,2 @@ +Debian version: 6.0 (squeeze) +Installer build: 20110106+squeeze4+b3 diff --git a/pxe/vesamenu.c32 b/pxe/vesamenu.c32 Binary files differnew file mode 100644 index 0000000..8dca92f --- /dev/null +++ b/pxe/vesamenu.c32 diff --git a/sql/nms.sql b/sql/nms.sql new file mode 100644 index 0000000..881e19a --- /dev/null +++ b/sql/nms.sql @@ -0,0 +1,2043 @@ +-- +-- PostgreSQL database cluster dump +-- + +\connect postgres + +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; + +-- +-- Roles +-- + +CREATE ROLE nms; +ALTER ROLE nms WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION PASSWORD '<removed>'; +CREATE ROLE postgres; +ALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION; + + + + + + +-- +-- Database creation +-- + +CREATE DATABASE nms WITH TEMPLATE = template0 OWNER = nms; +REVOKE ALL ON DATABASE template1 FROM PUBLIC; +REVOKE ALL ON DATABASE template1 FROM postgres; +GRANT ALL ON DATABASE template1 TO postgres; +GRANT CONNECT ON DATABASE template1 TO PUBLIC; + + +\connect nms + +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +-- +-- Name: datarate; Type: TYPE; Schema: public; Owner: nms +-- + +CREATE TYPE datarate AS ( + switch integer, + port integer, + bytes_in double precision, + bytes_out double precision, + last_poll_time timestamp with time zone +); + + +ALTER TYPE public.datarate OWNER TO nms; + +-- +-- Name: sample; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE sample AS ( + value bigint, + polled timestamp with time zone +); + + +ALTER TYPE public.sample OWNER TO postgres; + +-- +-- Name: sample_state; Type: TYPE; Schema: public; Owner: postgres +-- + +CREATE TYPE sample_state AS ( + last sample, + next_last sample +); + + +ALTER TYPE public.sample_state OWNER TO postgres; + +-- +-- Name: add_new_element(sample[], sample); Type: FUNCTION; Schema: public; Owner: postgres +-- + +CREATE FUNCTION add_new_element(sample[], sample) RETURNS sample[] + LANGUAGE sql + AS $_$ select ('{' || $1[1] || ', ' || $2 || '}')::sample[] $_$; + + +ALTER FUNCTION public.add_new_element(sample[], sample) OWNER TO postgres; + +-- +-- Name: add_new_element(sample_state, sample); Type: FUNCTION; Schema: public; Owner: postgres +-- + +CREATE FUNCTION add_new_element(sample_state, sample) RETURNS sample_state + LANGUAGE sql + AS $_$ + SELECT ($1.next_last, $2)::sample_state +$_$; + + +ALTER FUNCTION public.add_new_element(sample_state, sample) OWNER TO postgres; + +-- +-- Name: get_current_datarate(); Type: FUNCTION; Schema: public; Owner: nms +-- + +CREATE FUNCTION get_current_datarate() RETURNS SETOF datarate + LANGUAGE plpgsql + AS $$ +DECLARE + num_entries INTEGER; + poll polls; + first_poll polls; + last_poll polls; + timediff float; + ret datarate; +BEGIN + num_entries := 0; + last_poll.switch := -1; + + FOR poll IN select * from polls where time >= now() - '15 minutes'::interval and time < now() order by switch,port,time LOOP + IF poll.switch <> last_poll.switch OR poll.port <> last_poll.port THEN + IF num_entries >= 2 THEN + timediff := EXTRACT(epoch from last_poll.time - first_poll.time); + ret.switch := last_poll.switch; + ret.port := last_poll.port; + + IF last_poll.bytes_in >= first_poll.bytes_in AND last_poll.bytes_out >= first_poll.bytes_out THEN + ret.bytes_in := (last_poll.bytes_in - first_poll.bytes_in) / timediff; + ret.bytes_out := (last_poll.bytes_out - first_poll.bytes_out) / timediff; + ret.last_poll_time := last_poll.time; + return next ret; + END IF; + END IF; + num_entries := 0; + ELSE + -- reset if we have wraparound + IF last_poll.bytes_in < first_poll.bytes_in OR + last_poll.bytes_out < first_poll.bytes_out THEN + num_entries := 0; + END IF; + END IF; + + num_entries := num_entries + 1; + IF num_entries = 1 THEN + first_poll.switch := poll.switch; + first_poll.port := poll.port; + first_poll.time := poll.time; + first_poll.bytes_in := poll.bytes_in; + first_poll.bytes_out := poll.bytes_out; + END IF; + + last_poll.switch := poll.switch; + last_poll.port := poll.port; + last_poll.time := poll.time; + last_poll.bytes_in := poll.bytes_in; + last_poll.bytes_out := poll.bytes_out; + END LOOP; + + -- last + IF num_entries >= 2 THEN + timediff := EXTRACT(epoch from last_poll.time - first_poll.time); + ret.switch := last_poll.switch; + ret.port := last_poll.port; + + IF last_poll.bytes_in >= first_poll.bytes_in AND + last_poll.bytes_out >= first_poll.bytes_out THEN + ret.bytes_in := (last_poll.bytes_in - first_poll.bytes_in) / timediff; + ret.bytes_out := (last_poll.bytes_out - first_poll.bytes_out) / timediff; + ret.last_poll_time := last_poll.time; + return next ret; + END IF; + END IF; + + RETURN; +END; +$$; + + +ALTER FUNCTION public.get_current_datarate() OWNER TO nms; + +-- +-- Name: get_datarate(); Type: FUNCTION; Schema: public; Owner: nms +-- + +CREATE FUNCTION get_datarate() RETURNS SETOF datarate + LANGUAGE plpgsql + AS $$ +DECLARE + num_entries INTEGER; + poll polls; + second_last_poll polls; + last_poll polls; + timediff float; + ret datarate; +BEGIN + num_entries := 0; + last_poll.switch = -1; + + FOR poll IN select * from polls where time >= now() - '15 minutes'::interval and time < now() order by switch,port,time LOOP + IF poll.switch <> last_poll.switch OR poll.port <> last_poll.port THEN + IF num_entries >= 2 THEN + timediff := EXTRACT(epoch from last_poll.time - second_last_poll.time); + ret.switch := last_poll.switch; + ret.port := last_poll.port; + + IF last_poll.bytes_in < second_last_poll.bytes_in THEN + second_last_poll.bytes_in = 0; + END IF; + IF last_poll.bytes_out < second_last_poll.bytes_out THEN + second_last_poll.bytes_out = 0; + END IF; + + ret.bytes_in := (last_poll.bytes_in - second_last_poll.bytes_in) / timediff; + ret.bytes_out := (last_poll.bytes_out - second_last_poll.bytes_out) / timediff; + ret.last_poll_time := last_poll.time; + return next ret; + ELSIF num_entries = 1 THEN + ret.switch := last_poll.switch; + ret.port := last_poll.port; + ret.bytes_in := -1; + ret.bytes_out := -1; + ret.last_poll_time := last_poll.time; + return next ret; + END IF; + num_entries := 1; + ELSE + num_entries := num_entries + 1; + END IF; + second_last_poll.switch := last_poll.switch; + second_last_poll.port := last_poll.port; + second_last_poll.time := last_poll.time; + second_last_poll.bytes_in := last_poll.bytes_in; + second_last_poll.bytes_out := last_poll.bytes_out; + last_poll.switch := poll.switch; + last_poll.port := poll.port; + last_poll.time := poll.time; + last_poll.bytes_in := poll.bytes_in; + last_poll.bytes_out := poll.bytes_out; + END LOOP; + -- pah, and once more, for the last switch/port... + IF num_entries >= 2 THEN + timediff := EXTRACT(epoch from last_poll.time - second_last_poll.time); + ret.switch := last_poll.switch; + ret.port := last_poll.port; + + IF last_poll.bytes_in < second_last_poll.bytes_in THEN + second_last_poll.bytes_in = 0; + END IF; + IF last_poll.bytes_out < second_last_poll.bytes_out THEN + second_last_poll.bytes_out = 0; + END IF; + + ret.bytes_in := (last_poll.bytes_in - second_last_poll.bytes_in) / timediff; + ret.bytes_out := (last_poll.bytes_out - second_last_poll.bytes_out) / timediff; + ret.last_poll_time := last_poll.time; + return next ret; + ELSIF num_entries = 1 THEN + ret.switch := last_poll.switch; + ret.port := last_poll.port; + ret.bytes_in := -1; + ret.bytes_out := -1; + ret.last_poll_time := last_poll.time; + return next ret; + END IF; + + RETURN; +END; +$$; + + +ALTER FUNCTION public.get_datarate() OWNER TO nms; + +-- +-- Name: current_change(sample); Type: AGGREGATE; Schema: public; Owner: postgres +-- + +CREATE AGGREGATE current_change(sample) ( + SFUNC = public.add_new_element, + STYPE = sample_state +); + + +ALTER AGGREGATE public.current_change(sample) OWNER TO postgres; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: ap_poll; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE ap_poll ( + switch integer NOT NULL, + model character varying DEFAULT ''::character varying NOT NULL, + last_poll timestamp with time zone +); + + +ALTER TABLE public.ap_poll OWNER TO nms; + +-- +-- Name: backup_polls; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE backup_polls ( + "time" timestamp with time zone, + switch integer, + port integer, + bytes_in bigint, + bytes_out bigint, + errors_in bigint, + errors_out bigint +); + + +ALTER TABLE public.backup_polls OWNER TO nms; + +-- +-- Name: cpuloadpoll_id_seq; Type: SEQUENCE; Schema: public; Owner: nms +-- + +CREATE SEQUENCE cpuloadpoll_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.cpuloadpoll_id_seq OWNER TO nms; + +-- +-- Name: cpuloadpoll; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE cpuloadpoll ( + id integer DEFAULT nextval('cpuloadpoll_id_seq'::regclass) NOT NULL, + "time" timestamp without time zone NOT NULL, + switch integer NOT NULL, + entity integer NOT NULL, + value integer NOT NULL +); + + +ALTER TABLE public.cpuloadpoll OWNER TO nms; + +-- +-- Name: dhcp; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE dhcp ( + switch integer NOT NULL, + network cidr NOT NULL, + last_ack timestamp without time zone, + owner_color character varying +); + + +ALTER TABLE public.dhcp OWNER TO nms; + +-- +-- Name: ipv4; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE ipv4 ( + mac macaddr NOT NULL, + address inet NOT NULL, + "time" timestamp without time zone NOT NULL, + age integer +); + + +ALTER TABLE public.ipv4 OWNER TO nms; + +-- +-- Name: ipv6; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE ipv6 ( + mac macaddr NOT NULL, + address inet NOT NULL, + "time" timestamp with time zone NOT NULL, + age integer, + vlan text +); + + +ALTER TABLE public.ipv6 OWNER TO nms; + +-- +-- Name: mbd_log; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE mbd_log ( + ts timestamp without time zone, + game character varying, + port integer, + description character varying, + active_servers integer +); + + +ALTER TABLE public.mbd_log OWNER TO nms; + +-- +-- Name: mldpolls; Type: TABLE; Schema: public; Owner: postgres; Tablespace: +-- + +CREATE TABLE mldpolls ( + "time" timestamp with time zone NOT NULL, + switch integer NOT NULL, + mcast_group inet NOT NULL, + count integer NOT NULL, + raw_portlist character varying +); + + +ALTER TABLE public.mldpolls OWNER TO postgres; + +-- +-- Name: placements; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE placements ( + switch integer NOT NULL, + placement box NOT NULL, + zorder integer DEFAULT 0 NOT NULL +); + + +ALTER TABLE public.placements OWNER TO nms; + +-- +-- Name: polls; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE polls ( + "time" timestamp with time zone NOT NULL, + switch integer NOT NULL, + port integer NOT NULL, + bytes_in bigint NOT NULL, + bytes_out bigint NOT NULL, + errors_in bigint NOT NULL, + errors_out bigint NOT NULL +); +ALTER TABLE ONLY polls ALTER COLUMN "time" SET STATISTICS 100; + + +ALTER TABLE public.polls OWNER TO nms; + +-- +-- Name: polls_poll_seq; Type: SEQUENCE; Schema: public; Owner: nms +-- + +CREATE SEQUENCE polls_poll_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.polls_poll_seq OWNER TO nms; + +-- +-- Name: portnames; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE portnames ( + switchtype character varying NOT NULL, + port integer NOT NULL, + description character varying NOT NULL +); + + +ALTER TABLE public.portnames OWNER TO nms; + +-- +-- Name: squeue; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE squeue ( + id integer DEFAULT nextval(('squeue_sequence'::text)::regclass) NOT NULL, + gid integer NOT NULL, + added timestamp with time zone NOT NULL, + updated timestamp with time zone, + addr inet, + cmd character varying NOT NULL, + locked boolean DEFAULT false NOT NULL, + processed boolean DEFAULT false NOT NULL, + disabled boolean DEFAULT false NOT NULL, + priority integer DEFAULT 3, + sysname character varying NOT NULL, + author character varying NOT NULL, + result character varying, + delay timestamp with time zone, + delaytime interval DEFAULT '00:01:00'::interval +); + + +ALTER TABLE public.squeue OWNER TO nms; + +-- +-- Name: squeue_group_sequence; Type: SEQUENCE; Schema: public; Owner: nms +-- + +CREATE SEQUENCE squeue_group_sequence + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.squeue_group_sequence OWNER TO nms; + +-- +-- Name: squeue_sequence; Type: SEQUENCE; Schema: public; Owner: nms +-- + +CREATE SEQUENCE squeue_sequence + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.squeue_sequence OWNER TO nms; + +-- +-- Name: stemppoll_sequence; Type: SEQUENCE; Schema: public; Owner: nms +-- + +CREATE SEQUENCE stemppoll_sequence + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.stemppoll_sequence OWNER TO nms; + +-- +-- Name: switches; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE switches ( + switch integer DEFAULT nextval(('"switches_switch_seq"'::text)::regclass) NOT NULL, + ip inet NOT NULL, + sysname character varying NOT NULL, + switchtype character varying NOT NULL, + last_updated timestamp with time zone, + locked boolean DEFAULT false NOT NULL, + priority integer DEFAULT 0 NOT NULL, + poll_frequency interval DEFAULT '00:05:00'::interval NOT NULL, + community character varying DEFAULT 'public'::character varying NOT NULL +); + + +ALTER TABLE public.switches OWNER TO nms; + +-- +-- Name: switches_switch_seq; Type: SEQUENCE; Schema: public; Owner: nms +-- + +CREATE SEQUENCE switches_switch_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.switches_switch_seq OWNER TO nms; + +-- +-- Name: switchtypes; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE switchtypes ( + switchtype character varying NOT NULL, + ports character varying NOT NULL, + wide_counters boolean DEFAULT false NOT NULL +); + + +ALTER TABLE public.switchtypes OWNER TO nms; + +-- +-- Name: temppoll; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE temppoll ( + id integer DEFAULT nextval(('stemppoll_sequence'::text)::regclass) NOT NULL, + "time" timestamp without time zone NOT NULL, + switch integer NOT NULL, + temp double precision +); + + +ALTER TABLE public.temppoll OWNER TO nms; + +-- +-- Name: uplinks; Type: TABLE; Schema: public; Owner: nms; Tablespace: +-- + +CREATE TABLE uplinks ( + switch integer NOT NULL, + coreswitch integer NOT NULL, + blade integer NOT NULL, + port integer NOT NULL +); + + +ALTER TABLE public.uplinks OWNER TO nms; + +-- +-- Data for Name: ap_poll; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY ap_poll (switch, model, last_poll) FROM stdin; +\. + + +-- +-- Data for Name: backup_polls; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY backup_polls ("time", switch, port, bytes_in, bytes_out, errors_in, errors_out) FROM stdin; +\. + + +-- +-- Data for Name: cpuloadpoll; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY cpuloadpoll (id, "time", switch, entity, value) FROM stdin; +\. + + +-- +-- Name: cpuloadpoll_id_seq; Type: SEQUENCE SET; Schema: public; Owner: nms +-- + +SELECT pg_catalog.setval('cpuloadpoll_id_seq', 1, false); + + +-- +-- Data for Name: dhcp; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY dhcp (switch, network, last_ack, owner_color) FROM stdin; +106 151.216.27.64/26 2013-03-31 07:53:24 #000000 +2 151.216.1.64/26 2013-03-31 07:54:48 #000000 +91 151.216.23.128/26 2013-03-31 08:04:58 #000000 +108 151.216.27.192/26 2013-03-31 08:17:17 #000000 +79 151.216.20.128/26 2013-03-31 08:20:27 #000000 +83 151.216.21.128/26 2013-03-31 08:24:38 #000000 +107 151.216.27.128/26 2013-03-31 08:30:13 #000000 +31 151.216.8.128/26 2013-03-31 08:44:47 #000000 +104 151.216.26.192/26 2013-03-31 08:45:11 #000000 +11 151.216.3.128/26 2013-03-31 08:52:07 #000000 +102 151.216.26.64/26 2013-03-31 08:55:46 #000000 +15 151.216.4.128/26 2013-03-31 08:58:05 #000000 +26 151.216.7.64/26 2013-03-31 09:13:42 #000000 +93 151.216.24.0/26 2013-03-31 09:14:03 #000000 +57 151.216.15.0/26 2013-03-31 09:30:18 #000000 +47 151.216.12.128/26 2013-03-31 09:31:12 #000000 +103 151.216.26.128/26 2013-03-31 09:37:39 #000000 +23 151.216.6.128/26 2013-03-31 09:45:17 #000000 +113 151.216.29.0/26 2013-03-31 09:45:35 #000000 +18 151.216.5.64/26 2013-03-31 09:45:49 #000000 +89 151.216.23.0/26 2013-03-31 09:45:57 #000000 +114 151.216.29.64/26 2013-03-31 09:46:29 #000000 +87 151.216.22.128/26 2013-03-31 09:48:38 #000000 +8 151.216.2.192/26 2013-03-31 09:53:10 #000000 +46 151.216.12.64/26 2013-03-31 09:57:09 #000000 +95 151.216.24.128/26 2013-03-31 09:58:08 #000000 +72 151.216.18.192/26 2013-03-31 09:59:29 #000000 +116 151.216.29.192/26 2013-03-31 10:01:14 #000000 +17 151.216.5.0/26 2013-03-31 10:01:27 #000000 +59 151.216.15.128/26 2013-03-31 10:12:07 #000000 +68 151.216.17.192/26 2013-03-31 10:14:20 #000000 +22 151.216.6.64/26 2013-03-31 10:14:22 #000000 +90 151.216.23.64/26 2013-03-31 10:15:18 #000000 +30 151.216.8.64/26 2013-03-31 10:15:46 #000000 +56 151.216.14.192/26 2013-03-31 10:18:37 #000000 +61 151.216.16.0/26 2013-03-31 10:21:12 #000000 +126 151.216.32.64/26 2013-03-31 10:21:49 #000000 +24 151.216.6.192/26 2013-03-31 10:22:31 #000000 +43 151.216.11.128/26 2013-03-31 10:26:03 #000000 +28 151.216.7.192/26 2013-03-31 10:26:04 #000000 +71 151.216.18.128/26 2013-03-31 10:28:44 #000000 +75 151.216.19.128/26 2013-03-31 10:29:05 #000000 +101 151.216.26.0/26 2013-03-31 10:29:46 #000000 +128 151.216.32.192/26 2013-03-31 10:30:46 #000000 +55 151.216.14.128/26 2013-03-31 10:32:26 #000000 +4 151.216.1.192/26 2013-03-31 10:33:55 #000000 +99 151.216.25.128/26 2013-03-31 10:33:56 #000000 +85 151.216.22.0/26 2013-03-31 10:34:46 #000000 +67 151.216.17.128/26 2013-03-31 10:36:17 #000000 +49 151.216.13.0/26 2013-03-31 10:36:21 #000000 +44 151.216.11.192/26 2013-03-31 10:36:34 #000000 +70 151.216.18.64/26 2013-03-31 10:37:05 #000000 +94 151.216.24.64/26 2013-03-31 10:37:17 #000000 +73 151.216.19.0/26 2013-03-31 10:37:28 #000000 +10 151.216.3.64/26 2013-03-31 10:37:36 #000000 +64 151.216.16.192/26 2013-03-31 10:37:39 #000000 +119 151.216.30.128/26 2013-03-31 10:39:58 #000000 +48 151.216.12.192/26 2013-03-31 10:40:55 #000000 +33 151.216.9.0/26 2013-03-31 10:41:16 #000000 +1 151.216.1.0/26 2013-03-31 10:42:04 #000000 +32 151.216.8.192/26 2013-03-31 10:42:50 #000000 +3 151.216.1.128/26 2013-03-31 10:43:20 #000000 +84 151.216.21.192/26 2013-03-31 10:43:29 #000000 +13 151.216.4.0/26 2013-03-31 10:43:35 #000000 +105 151.216.27.0/26 2013-03-31 10:43:50 #000000 +42 151.216.11.64/26 2013-03-31 10:44:06 #000000 +21 151.216.6.0/26 2013-03-31 10:45:30 #000000 +60 151.216.15.192/26 2013-03-31 10:46:00 #000000 +82 151.216.21.64/26 2013-03-31 10:46:49 #000000 +80 151.216.20.192/26 2013-03-31 10:48:02 #000000 +9 151.216.3.0/26 2013-03-31 10:48:12 #000000 +78 151.216.20.64/26 2013-03-31 10:49:10 #000000 +40 151.216.10.192/26 2013-03-31 10:49:12 #000000 +120 151.216.30.192/26 2013-03-31 10:49:56 #000000 +51 151.216.13.128/26 2013-03-31 10:51:12 #000000 +111 151.216.28.128/26 2013-03-31 10:51:49 #000000 +36 151.216.9.192/26 2013-03-31 10:52:01 #000000 +127 151.216.32.128/26 2013-03-31 10:52:05 #000000 +98 151.216.25.64/26 2013-03-31 10:52:09 #000000 +50 151.216.13.64/26 2013-03-31 10:52:31 #000000 +20 151.216.5.192/26 2013-03-31 10:52:47 #000000 +41 151.216.11.0/26 2013-03-31 10:53:03 #000000 +58 151.216.15.64/26 2013-03-31 10:53:06 #000000 +37 151.216.10.0/26 2013-03-31 10:53:13 #000000 +76 151.216.19.192/26 2013-03-31 10:54:00 #000000 +34 151.216.9.64/26 2013-03-31 10:54:04 #000000 +45 151.216.12.0/26 2013-03-31 10:54:13 #000000 +65 151.216.17.0/26 2013-03-31 10:54:45 #000000 +96 151.216.24.192/26 2013-03-31 10:55:15 #000000 +74 151.216.19.64/26 2013-03-31 10:55:25 #000000 +6 151.216.2.64/26 2013-03-31 10:56:28 #000000 +53 151.216.14.0/26 2013-03-31 10:56:42 #000000 +63 151.216.16.128/26 2013-03-31 10:57:06 #000000 +7 151.216.2.128/26 2013-03-31 10:57:08 #000000 +122 151.216.31.64/26 2013-03-31 10:57:10 #000000 +52 151.216.13.192/26 2013-03-31 10:57:23 #000000 +19 151.216.5.128/26 2013-03-31 10:57:31 #000000 +27 151.216.7.128/26 2013-03-31 10:57:52 #000000 +124 151.216.31.192/26 2013-03-31 10:58:10 #000000 +16 151.216.4.192/26 2013-03-31 10:58:22 #000000 +62 151.216.16.64/26 2013-03-31 10:58:38 #000000 +110 151.216.28.64/26 2013-03-31 10:58:42 #000000 +5 151.216.2.0/26 2013-03-31 10:58:43 #000000 +35 151.216.9.128/26 2013-03-31 10:58:43 #000000 +81 151.216.21.0/26 2013-03-31 10:58:43 #000000 +25 151.216.7.0/26 2013-03-31 10:58:51 #000000 +117 151.216.30.0/26 2013-03-31 10:59:19 #000000 +115 151.216.29.128/26 2013-03-31 10:59:53 #000000 +14 151.216.4.64/26 2013-03-31 11:00:05 #000000 +38 151.216.10.64/26 2013-03-31 11:00:19 #000000 +77 151.216.20.0/26 2013-03-31 11:00:36 #000000 +12 151.216.3.192/26 2013-03-31 11:01:02 #000000 +109 151.216.28.0/26 2013-03-31 11:02:23 #000000 +97 151.216.25.0/26 2013-03-31 11:02:25 #000000 +123 151.216.31.128/26 2013-03-31 11:02:43 #000000 +121 151.216.31.0/26 2013-03-31 11:02:52 #000000 +88 151.216.22.192/26 2013-03-31 11:03:11 #000000 +29 151.216.8.0/26 2013-03-31 11:03:45 #000000 +86 151.216.22.64/26 2013-03-31 11:03:50 #000000 +125 151.216.32.0/26 2013-03-31 11:04:08 #000000 +118 151.216.30.64/26 2013-03-31 11:04:37 #000000 +66 151.216.17.64/26 2013-03-31 11:05:14 #000000 +112 151.216.28.192/26 2013-03-31 11:05:34 #000000 +92 151.216.23.192/26 2013-03-31 11:06:12 #000000 +69 151.216.18.0/26 2013-03-31 11:07:12 #000000 +39 151.216.10.128/26 2013-03-31 11:07:35 #000000 +54 151.216.14.64/26 2013-03-31 11:08:33 #000000 +100 151.216.25.192/26 2013-03-31 11:08:35 #000000 +\. + + +-- +-- Data for Name: ipv4; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY ipv4 (mac, address, "time", age) FROM stdin; +\. + + +-- +-- Data for Name: ipv6; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY ipv6 (mac, address, "time", age, vlan) FROM stdin; +\. + + +-- +-- Data for Name: mbd_log; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY mbd_log (ts, game, port, description, active_servers) FROM stdin; +\. + + +-- +-- Data for Name: mldpolls; Type: TABLE DATA; Schema: public; Owner: postgres +-- + +COPY mldpolls ("time", switch, mcast_group, count, raw_portlist) FROM stdin; +\. + + +-- +-- Data for Name: placements; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY placements (switch, placement, zorder) FROM stdin; +1 (234,310),(220,226) 0 +2 (234,226),(220,184) 0 +3 (255,310),(241,226) 0 +4 (255,226),(241,170) 0 +5 (277,310),(263,226) 0 +6 (277,226),(263,156) 0 +7 (298,310),(284,226) 0 +8 (298,226),(284,142) 0 +9 (320,310),(306,226) 0 +10 (320,226),(306,142) 0 +11 (351,507),(337,423) 0 +12 (351,423),(337,339) 0 +13 (351,310),(337,226) 0 +14 (351,226),(337,142) 0 +15 (373,507),(359,423) 0 +16 (373,423),(359,339) 0 +17 (373,310),(359,226) 0 +18 (373,226),(359,142) 0 +19 (394,507),(380,423) 0 +20 (394,423),(380,339) 0 +21 (394,310),(380,226) 0 +22 (394,226),(380,142) 0 +23 (416,507),(402,423) 0 +24 (416,423),(402,339) 0 +25 (416,310),(402,226) 0 +26 (416,226),(402,142) 0 +27 (437,507),(423,423) 0 +28 (437,423),(423,339) 0 +29 (437,310),(423,226) 0 +30 (437,226),(423,142) 0 +31 (459,507),(445,423) 0 +32 (459,423),(445,339) 0 +33 (459,310),(445,226) 0 +34 (459,226),(445,142) 0 +35 (480,507),(466,423) 0 +36 (480,423),(466,339) 0 +37 (480,310),(466,226) 0 +38 (480,226),(466,142) 0 +39 (502,507),(488,423) 0 +40 (502,423),(488,339) 0 +41 (502,310),(488,226) 0 +42 (502,226),(488,142) 0 +43 (533,507),(519,423) 0 +44 (533,423),(519,339) 0 +45 (555,507),(541,423) 0 +46 (555,423),(541,339) 0 +47 (576,507),(562,423) 0 +48 (576,423),(562,339) 0 +49 (598,507),(584,423) 0 +50 (598,423),(584,339) 0 +51 (619,507),(605,423) 0 +52 (619,423),(605,339) 0 +53 (641,507),(627,423) 0 +54 (641,423),(627,339) 0 +55 (662,507),(648,423) 0 +56 (662,423),(648,339) 0 +57 (684,507),(670,423) 0 +58 (684,423),(670,339) 0 +59 (715,507),(701,423) 0 +60 (715,423),(701,339) 0 +61 (715,310),(701,226) 0 +62 (715,226),(701,142) 0 +63 (737,507),(723,423) 0 +64 (737,423),(723,339) 0 +65 (737,310),(723,226) 0 +66 (737,226),(723,142) 0 +67 (758,507),(744,423) 0 +68 (758,423),(744,339) 0 +69 (758,310),(744,226) 0 +70 (758,226),(744,142) 0 +71 (780,507),(766,423) 0 +72 (780,423),(766,339) 0 +73 (780,310),(766,226) 0 +74 (780,226),(766,142) 0 +75 (801,507),(787,423) 0 +76 (801,423),(787,339) 0 +77 (801,310),(787,226) 0 +78 (801,226),(787,142) 0 +79 (823,507),(809,423) 0 +80 (823,423),(809,339) 0 +81 (823,310),(809,226) 0 +82 (823,226),(809,142) 0 +83 (844,507),(830,423) 0 +84 (844,423),(830,339) 0 +85 (844,310),(830,226) 0 +86 (844,226),(830,142) 0 +87 (866,507),(852,423) 0 +88 (866,423),(852,339) 0 +89 (866,310),(852,226) 0 +90 (866,226),(852,142) 0 +91 (897,507),(883,423) 0 +92 (897,423),(883,339) 0 +93 (897,310),(883,226) 0 +94 (897,226),(883,142) 0 +95 (919,507),(905,423) 0 +96 (919,423),(905,339) 0 +97 (919,310),(905,226) 0 +98 (919,226),(905,142) 0 +99 (940,507),(926,423) 0 +100 (940,423),(926,339) 0 +101 (940,310),(926,226) 0 +102 (940,226),(926,142) 0 +103 (962,507),(948,423) 0 +104 (962,423),(948,339) 0 +105 (962,310),(948,226) 0 +106 (962,226),(948,142) 0 +107 (983,507),(969,423) 0 +108 (983,423),(969,339) 0 +109 (983,310),(969,226) 0 +110 (983,226),(969,142) 0 +111 (1005,507),(991,423) 0 +112 (1005,423),(991,339) 0 +113 (1005,310),(991,226) 0 +114 (1005,226),(991,142) 0 +115 (1026,507),(1012,423) 0 +116 (1026,423),(1012,339) 0 +117 (1026,310),(1012,226) 0 +118 (1026,226),(1012,142) 0 +119 (1048,507),(1034,423) 0 +120 (1048,423),(1034,339) 0 +121 (1048,310),(1034,226) 0 +122 (1048,226),(1034,142) 0 +123 (1069,507),(1055,423) 0 +124 (1069,423),(1055,339) 0 +125 (1069,310),(1055,226) 0 +126 (1069,226),(1055,142) 0 +127 (1091,493),(1077,423) 0 +128 (1091,423),(1077,339) 0 +130 (1180,530),(1150,500) 1 +131 (1280,330),(1250,300) 1 +134 (830,130),(800,100) 1 +135 (1130,340),(1100,310) 1 +140 (360,340),(330,310) 1 +141 (460,340),(430,310) 1 +142 (730,340),(700,310) 1 +143 (800,340),(770,310) 1 +144 (1000,340),(970,310) 1 +136 (160,340),(130,310) 1 +132 (680,80),(650,50) 1 +133 (680,130),(650,100) 1 +137 (430,600),(400,570) 1 +139 (730,600),(700,570) 1 +138 (630,600),(600,570) 1 +129 (780,600),(750,570) 1 +360 (866,507),(852,423) 0 +359 (844,226),(830,142) 0 +361 (866,423),(852,339) 0 +397 (1069,423),(1055,339) 0 +379 (962,226),(948,142) 0 +373 (940,423),(926,339) 0 +297 (416,423),(402,339) 0 +300 (437,507),(423,423) 0 +321 (576,423),(562,339) 0 +288 (373,507),(359,423) 0 +332 (715,507),(701,423) 0 +325 (619,423),(605,339) 0 +326 (641,507),(627,423) 0 +381 (983,423),(969,339) 0 +335 (715,226),(701,142) 0 +305 (459,423),(445,339) 0 +368 (919,507),(905,423) 0 +296 (416,507),(402,423) 0 +316 (533,507),(519,423) 0 +376 (962,507),(948,423) 0 +357 (844,423),(830,339) 0 +286 (351,310),(337,226) 0 +327 (641,423),(627,339) 0 +280 (298,310),(284,226) 0 +369 (919,423),(905,339) 0 +298 (416,310),(402,226) 0 +307 (459,226),(445,142) 0 +336 (737,507),(723,423) 0 +328 (662,507),(648,423) 0 +399 (1069,226),(1055,142) 0 +378 (962,310),(948,226) 0 +292 (394,507),(380,423) 0 +314 (502,310),(488,226) 0 +333 (715,423),(701,339) 0 +275 (234,226),(220,184) 0 +380 (983,507),(969,423) 0 +363 (866,226),(852,142) 0 +371 (919,226),(905,142) 0 +295 (394,226),(380,142) 0 +322 (598,507),(584,423) 0 +313 (502,423),(488,339) 0 +337 (737,423),(723,339) 0 +329 (662,423),(648,339) 0 +372 (940,507),(926,423) 0 +370 (919,310),(905,226) 0 +334 (715,310),(701,226) 0 +277 (255,226),(241,170) 0 +377 (962,423),(948,339) 0 +382 (983,310),(969,226) 0 +294 (394,310),(380,226) 0 +338 (737,310),(723,226) 0 +331 (684,423),(670,339) 0 +276 (255,310),(241,226) 0 +367 (897,226),(883,142) 0 +365 (897,423),(883,339) 0 +274 (234,310),(220,226) 0 +278 (277,310),(263,226) 0 +323 (598,423),(584,339) 0 +315 (502,226),(488,142) 0 +358 (844,310),(830,226) 0 +383 (983,226),(969,142) 0 +364 (897,507),(883,423) 0 +289 (373,423),(359,339) 0 +374 (940,310),(926,226) 0 +339 (737,226),(723,142) 0 +340 (758,507),(744,423) 0 +320 (576,507),(562,423) 0 +279 (277,226),(263,156) 0 +400 (1091,493),(1077,423) 0 +356 (844,507),(830,423) 0 +285 (351,423),(337,339) 0 +398 (1069,310),(1055,226) 0 +384 (1005,507),(991,423) 0 +302 (437,310),(423,226) 0 +391 (1026,226),(1012,142) 0 +394 (1048,310),(1034,226) 0 +318 (555,507),(541,423) 0 +341 (758,423),(744,339) 0 +319 (555,423),(541,339) 0 +342 (758,310),(744,226) 0 +395 (1048,226),(1034,142) 0 +304 (459,507),(445,423) 0 +401 (1091,423),(1077,339) 0 +343 (758,226),(744,142) 0 +385 (1005,423),(991,339) 0 +312 (502,507),(488,423) 0 +392 (1048,507),(1034,423) 0 +291 (373,226),(359,142) 0 +344 (780,507),(766,423) 0 +396 (1069,507),(1055,423) 0 +345 (780,423),(766,339) 0 +386 (1005,310),(991,226) 0 +306 (459,310),(445,226) 0 +355 (823,226),(809,142) 0 +293 (394,423),(380,339) 0 +346 (780,310),(766,226) 0 +283 (320,226),(306,142) 0 +347 (780,226),(766,142) 0 +387 (1005,226),(991,142) 0 +330 (684,507),(670,423) 0 +290 (373,310),(359,226) 0 +303 (437,226),(423,142) 0 +317 (533,423),(519,339) 0 +348 (801,507),(787,423) 0 +366 (897,310),(883,226) 0 +301 (437,423),(423,339) 0 +362 (866,310),(852,226) 0 +388 (1026,507),(1012,423) 0 +281 (298,226),(284,142) 0 +349 (801,423),(787,339) 0 +393 (1048,423),(1034,339) 0 +350 (801,310),(787,226) 0 +308 (480,507),(466,423) 0 +311 (480,226),(466,142) 0 +351 (801,226),(787,142) 0 +389 (1026,423),(1012,339) 0 +375 (940,226),(926,142) 0 +287 (351,226),(337,142) 0 +310 (480,310),(466,226) 0 +282 (320,310),(306,226) 0 +352 (823,507),(809,423) 0 +390 (1026,310),(1012,226) 0 +353 (823,423),(809,339) 0 +284 (351,507),(337,423) 0 +324 (619,507),(605,423) 0 +354 (823,310),(809,226) 0 +299 (416,226),(402,142) 0 +309 (480,423),(466,339) 0 +402 (460,340),(430,310) 1 +403 (730,340),(700,310) 1 +404 (800,340),(770,310) 1 +405 (360,340),(330,310) 1 +406 (1000,340),(970,310) 1 +407 (1130,310),(1076,296) 0 +408 (1190,310),(1136,296) 0 +409 (1130,290),(1076,276) 0 +410 (1190,290),(1136,276) 0 +411 (1130,270),(1076,256) 0 +412 (1190,270),(1136,256) 0 +413 (1130,250),(1076,236) 0 +414 (1190,250),(1136,236) 0 +415 (1164,230),(1076,216) 0 +416 (1164,210),(1076,196) 0 +417 (1164,190),(1076,176) 0 +\. + + +-- +-- Data for Name: polls; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY polls ("time", switch, port, bytes_in, bytes_out, errors_in, errors_out) FROM stdin; +\. + + +-- +-- Name: polls_poll_seq; Type: SEQUENCE SET; Schema: public; Owner: nms +-- + +SELECT pg_catalog.setval('polls_poll_seq', 1, false); + + +-- +-- Data for Name: portnames; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY portnames (switchtype, port, description) FROM stdin; +dlink3100 1 Ethernet Interface (port 1) +dlink3100 2 Ethernet Interface (port 2) +dlink3100 3 Ethernet Interface (port 3) +dlink3100 4 Ethernet Interface (port 4) +dlink3100 5 Ethernet Interface (port 5) +dlink3100 6 Ethernet Interface (port 6) +dlink3100 7 Ethernet Interface (port 7) +dlink3100 8 Ethernet Interface (port 8) +dlink3100 9 Ethernet Interface (port 9) +dlink3100 10 Ethernet Interface (port 10) +dlink3100 11 Ethernet Interface (port 11) +dlink3100 12 Ethernet Interface (port 12) +dlink3100 13 Ethernet Interface (port 13) +dlink3100 14 Ethernet Interface (port 14) +dlink3100 15 Ethernet Interface (port 15) +dlink3100 16 Ethernet Interface (port 16) +dlink3100 17 Ethernet Interface (port 17) +dlink3100 18 Ethernet Interface (port 18) +dlink3100 19 Ethernet Interface (port 19) +dlink3100 20 Ethernet Interface (port 20) +dlink3100 21 Ethernet Interface (port 21) +dlink3100 22 Ethernet Interface (port 22) +dlink3100 23 Ethernet Interface (port 23) +dlink3100 24 Ethernet Interface (port 24) +dlink3100 25 Ethernet Interface (port 25) +dlink3100 26 Ethernet Interface (port 26) +dlink3100 27 Ethernet Interface (port 27) +dlink3100 28 Ethernet Interface (port 28) +dlink3100 29 Ethernet Interface (port 29) +dlink3100 30 Ethernet Interface (port 30) +dlink3100 31 Ethernet Interface (port 31) +dlink3100 32 Ethernet Interface (port 32) +dlink3100 33 Ethernet Interface (port 33) +dlink3100 34 Ethernet Interface (port 34) +dlink3100 35 Ethernet Interface (port 35) +dlink3100 36 Ethernet Interface (port 36) +dlink3100 37 Ethernet Interface (port 37) +dlink3100 38 Ethernet Interface (port 38) +dlink3100 39 Ethernet Interface (port 39) +dlink3100 40 Ethernet Interface (port 40) +dlink3100 41 Ethernet Interface (port 41) +dlink3100 42 Ethernet Interface (port 42) +dlink3100 43 Ethernet Interface (port 43) +dlink3100 44 Ethernet Interface (port 44) +dlink3100 45 Ethernet Interface (port 45) +dlink3100 46 Ethernet Interface (port 46) +dlink3100 47 Ethernet Interface (port 47) +dlink3100 48 Ethernet Interface (port 48) +dlink3100 301 Ethernet Interface (port 301) +dlink3100 302 Ethernet Interface (port 302) +dlink3100 303 Ethernet Interface (port 303) +dlink3100 304 Ethernet Interface (port 304) +dlink3100 305 Ethernet Interface (port 305) +dlink3100 306 Ethernet Interface (port 306) +dlink3100 307 Ethernet Interface (port 307) +dlink3100 308 Ethernet Interface (port 308) +dlink3100 309 Ethernet Interface (port 309) +dlink3100 310 Ethernet Interface (port 310) +dlink3100 311 Ethernet Interface (port 311) +dlink3100 312 Ethernet Interface (port 312) +dlink3100 313 Ethernet Interface (port 313) +dlink3100 314 Ethernet Interface (port 314) +dlink3100 315 Ethernet Interface (port 315) +dlink3100 316 Ethernet Interface (port 316) +dlink3100 317 Ethernet Interface (port 317) +dlink3100 318 Ethernet Interface (port 318) +dlink3100 319 Ethernet Interface (port 319) +dlink3100 320 Ethernet Interface (port 320) +dlink3100 321 Ethernet Interface (port 321) +dlink3100 322 Ethernet Interface (port 322) +dlink3100 323 Ethernet Interface (port 323) +dlink3100 324 Ethernet Interface (port 324) +dlink3100 325 Ethernet Interface (port 325) +dlink3100 326 Ethernet Interface (port 326) +dlink3100 327 Ethernet Interface (port 327) +dlink3100 328 Ethernet Interface (port 328) +dlink3100 329 Ethernet Interface (port 329) +dlink3100 330 Ethernet Interface (port 330) +dlink3100 331 Ethernet Interface (port 331) +dlink3100 332 Ethernet Interface (port 332) +dlink3100 9000 Internal Interface (port 9000) +dlink3100 100000 vlan (port 100000) +\. + + +-- +-- Data for Name: squeue; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY squeue (id, gid, added, updated, addr, cmd, locked, processed, disabled, priority, sysname, author, result, delay, delaytime) FROM stdin; +\. + + +-- +-- Name: squeue_group_sequence; Type: SEQUENCE SET; Schema: public; Owner: nms +-- + +SELECT pg_catalog.setval('squeue_group_sequence', 71, true); + + +-- +-- Name: squeue_sequence; Type: SEQUENCE SET; Schema: public; Owner: nms +-- + +SELECT pg_catalog.setval('squeue_sequence', 3324, true); + + +-- +-- Name: stemppoll_sequence; Type: SEQUENCE SET; Schema: public; Owner: nms +-- + +SELECT pg_catalog.setval('stemppoll_sequence', 1, false); + + +-- +-- Data for Name: switches; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY switches (switch, ip, sysname, switchtype, last_updated, locked, priority, poll_frequency, community) FROM stdin; +320 127.0.0.1 ap-e31-1 ciscoap 2013-03-31 14:03:35.163353+02 f 0 00:05:00 <removed> +380 127.0.0.1 ap-e67-1 ciscoap 2013-03-31 14:03:45.678972+02 f 0 00:05:00 <removed> +301 127.0.0.1 ap-e19-2 ciscoap 2013-03-31 14:04:15.974348+02 f 0 00:05:00 <removed> +89 151.216.23.2 e57-3 dlink3100 2013-03-31 14:09:08.899489+02 f 0 00:01:00 <removed> +32 151.216.8.194 e21-2 dlink3100 2013-03-31 14:09:19.750092+02 f 0 00:01:00 <removed> +407 151.216.50.2 creativiasw01 dlink3100 2013-03-31 14:09:29.799659+02 f 0 00:01:00 <removed> +121 151.216.31.2 e73-3 dlink3100 2013-03-31 14:09:39.03767+02 f 0 00:01:00 <removed> +3 151.216.1.130 e3-3 dlink3100 2013-03-31 14:10:38.32422+02 f 0 00:01:00 <removed> +57 151.216.15.2 e41-1 dlink3100 2013-03-31 14:10:46.324438+02 f 0 00:01:00 <removed> +97 151.216.25.2 e61-3 dlink3100 2013-03-31 14:10:56.366466+02 f 0 00:01:00 <removed> +108 151.216.27.194 e67-2 dlink3100 2013-03-31 14:11:06.409468+02 f 0 00:01:00 <removed> +65 151.216.17.2 e45-3 dlink3100 2013-03-31 14:11:16.450631+02 f 0 00:01:00 <removed> +416 151.216.50.11 creativiasw10 dlink3100 2013-03-31 14:11:29.776178+02 f 0 00:01:00 <removed> +22 151.216.6.66 e15-4 dlink3100 2013-03-31 14:11:40.601614+02 f 0 00:01:00 <removed> +30 151.216.8.66 e19-4 dlink3100 2013-03-31 14:11:49.857971+02 f 0 00:01:00 <removed> +18 151.216.5.66 e13-4 dlink3100 2013-03-31 14:12:00.689688+02 f 0 00:01:00 <removed> +43 151.216.11.130 e27-1 dlink3100 2013-03-31 14:12:10.733619+02 f 0 00:01:00 <removed> +24 151.216.6.194 e17-2 dlink3100 2013-03-31 14:12:19.983821+02 f 0 00:01:00 <removed> +4 151.216.1.194 e3-4 dlink3100 2013-03-31 14:12:30.025734+02 f 0 00:01:00 <removed> +31 151.216.8.130 e21-1 dlink3100 2013-03-31 14:09:05.474089+02 f 0 00:01:00 <removed> +47 151.216.12.130 e31-1 dlink3100 2013-03-31 14:12:40.068048+02 f 0 00:01:00 <removed> +92 151.216.23.194 e59-2 dlink3100 2013-03-31 14:09:15.523555+02 f 0 00:01:00 <removed> +33 151.216.9.2 e21-3 dlink3100 2013-03-31 14:09:25.573946+02 f 0 00:01:00 <removed> +20 151.216.5.194 e15-2 dlink3100 2013-03-31 14:09:35.626024+02 f 0 00:01:00 <removed> +133 151.216.127.5 wtfgw wtfgw 2013-03-31 14:09:35.670908+02 f 0 00:01:00 <removed> +28 151.216.7.194 e19-2 dlink3100 2013-03-31 14:09:45.955527+02 f 0 00:01:00 <removed> +67 151.216.17.130 e47-1 dlink3100 2013-03-31 14:09:58.029684+02 f 0 00:01:00 <removed> +26 151.216.7.66 e17-4 dlink3100 2013-03-31 14:10:08.127872+02 f 0 00:01:00 <removed> +102 151.216.26.66 e63-4 dlink3100 2013-03-31 14:10:16.136217+02 f 0 00:01:00 <removed> +125 151.216.32.2 e75-3 dlink3100 2013-03-31 14:10:26.181503+02 f 0 00:01:00 <removed> +130 151.216.127.1 telegw telegw 2013-03-31 14:07:58.60478+02 f 0 00:01:00 <removed> +412 151.216.50.7 creativiasw06 dlink3100 2013-03-31 14:09:09.699614+02 f 0 00:01:00 <removed> +128 151.216.32.194 e77-2 dlink3100 2013-03-31 14:09:27.615732+02 f 0 00:01:00 <removed> +408 151.216.50.3 creativiasw02 dlink3100 2013-03-31 14:09:37.667708+02 f 0 00:01:00 <removed> +417 151.216.50.12 creativiasw11 dlink3100 2013-03-31 14:09:47.935097+02 f 0 00:01:00 <removed> +127 151.216.32.130 e77-1 dlink3100 2013-03-31 14:09:56.039513+02 f 0 00:01:00 <removed> +376 127.0.0.1 ap-e65-1 ciscoap 2013-03-31 14:03:45.695637+02 f 0 00:05:00 <removed> +112 151.216.28.194 e69-2 dlink3100 2013-03-31 14:10:06.089831+02 f 0 00:01:00 <removed> +9 151.216.3.2 e9-3 dlink3100 2013-03-31 14:10:18.178421+02 f 0 00:01:00 <removed> +83 151.216.21.130 e55-1 dlink3100 2013-03-31 14:10:28.282289+02 f 0 00:01:00 <removed> +13 151.216.4.2 e11-3 dlink3100 2013-03-31 14:10:30.307108+02 f 0 00:01:00 <removed> +343 127.0.0.1 ap-e47-4 ciscoap 2013-03-31 14:04:46.367004+02 f 0 00:05:00 <removed> +45 151.216.12.2 e29-1 dlink3100 2013-03-31 14:10:39.315785+02 f 0 00:01:00 <removed> +297 127.0.0.1 ap-e17-2 ciscoap 2013-03-31 14:04:46.750319+02 f 0 00:05:00 <removed> +293 127.0.0.1 ap-e15-2 ciscoap 2013-03-31 14:05:06.492611+02 f 0 00:05:00 <removed> +350 127.0.0.1 ap-e51-3 ciscoap 2013-03-31 14:05:06.525983+02 f 0 00:05:00 <removed> +363 127.0.0.1 ap-e57-4 ciscoap 2013-03-31 14:05:16.625481+02 f 0 00:05:00 <removed> +368 127.0.0.1 ap-e61-1 ciscoap 2013-03-31 14:05:16.700464+02 f 0 00:05:00 <removed> +388 127.0.0.1 ap-e71-1 ciscoap 2013-03-31 14:05:26.787007+02 f 0 00:05:00 <removed> +304 127.0.0.1 ap-e21-1 ciscoap 2013-03-31 14:05:26.853688+02 f 0 00:05:00 <removed> +352 127.0.0.1 ap-e53-1 ciscoap 2013-03-31 14:05:26.887026+02 f 0 00:05:00 <removed> +323 127.0.0.1 ap-e33-2 ciscoap 2013-03-31 14:05:26.912028+02 f 0 00:05:00 <removed> +406 127.0.0.1 ap-distro4 ciscoap 2013-03-31 14:05:27.045455+02 f 0 00:05:00 <removed> +339 127.0.0.1 ap-e45-4 ciscoap 2013-03-31 14:05:27.053748+02 f 0 00:05:00 <removed> +393 127.0.0.1 ap-e73-2 ciscoap 2013-03-31 14:04:26.17466+02 f 0 00:05:00 <removed> +337 127.0.0.1 ap-e45-2 ciscoap 2013-03-31 14:04:26.191324+02 f 0 00:05:00 <removed> +384 127.0.0.1 ap-e69-1 ciscoap 2013-03-31 14:04:26.207988+02 f 0 00:05:00 <removed> +387 127.0.0.1 ap-e69-4 ciscoap 2013-03-31 14:04:26.224645+02 f 0 00:05:00 <removed> +371 127.0.0.1 ap-e61-4 ciscoap 2013-03-31 14:04:36.283297+02 f 0 00:05:00 <removed> +398 127.0.0.1 ap-e75-3 ciscoap 2013-03-31 14:04:46.333668+02 f 0 00:05:00 <removed> +351 127.0.0.1 ap-e51-4 ciscoap 2013-03-31 14:04:46.350332+02 f 0 00:05:00 <removed> +356 127.0.0.1 ap-e55-1 ciscoap 2013-03-31 14:04:46.383667+02 f 0 00:05:00 <removed> +389 127.0.0.1 ap-e71-2 ciscoap 2013-03-31 14:04:46.733636+02 f 0 00:05:00 <removed> +372 127.0.0.1 ap-e63-1 ciscoap 2013-03-31 14:05:06.509265+02 f 0 00:05:00 <removed> +328 127.0.0.1 ap-e39-1 ciscoap 2013-03-31 14:05:16.608766+02 f 0 00:05:00 <removed> +5 151.216.2.2 e5-3 dlink3100 2013-03-31 14:09:17.565638+02 f 0 00:01:00 <removed> +50 151.216.13.66 e33-2 dlink3100 2013-03-31 14:09:18.937921+02 f 0 00:01:00 <removed> +103 151.216.26.130 e65-1 dlink3100 2013-03-31 14:09:28.988094+02 f 0 00:01:00 <removed> +91 151.216.23.130 e59-1 dlink3100 2013-03-31 14:09:39.851074+02 f 0 00:01:00 <removed> +63 151.216.16.130 e45-1 dlink3100 2013-03-31 14:09:49.897376+02 f 0 00:01:00 <removed> +7 151.216.2.130 e7-3 dlink3100 2013-03-31 14:09:59.947741+02 f 0 00:01:00 <removed> +100 151.216.25.194 e63-2 dlink3100 2013-03-31 14:10:10.223204+02 f 0 00:01:00 <removed> +84 151.216.21.194 e55-2 dlink3100 2013-03-31 14:10:19.231795+02 f 0 00:01:00 <removed> +126 151.216.32.66 e75-4 dlink3100 2013-03-31 14:10:29.273823+02 f 0 00:01:00 <removed> +361 127.0.0.1 ap-e57-2 ciscoap 2013-03-31 14:04:16.074284+02 f 0 00:05:00 <removed> +312 127.0.0.1 ap-e25-1 ciscoap 2013-03-31 14:04:26.124587+02 f 0 00:05:00 <removed> +310 127.0.0.1 ap-e23-3 ciscoap 2013-03-31 14:04:26.141221+02 f 0 00:05:00 <removed> +308 127.0.0.1 ap-e23-1 ciscoap 2013-03-31 14:04:26.157994+02 f 0 00:05:00 <removed> +104 151.216.26.194 e65-2 dlink3100 2013-03-31 14:10:09.189552+02 f 0 00:01:00 <removed> +119 151.216.30.130 e73-1 dlink3100 2013-03-31 14:12:40.859661+02 f 0 00:01:00 <removed> +69 151.216.18.2 e47-3 dlink3100 2013-03-31 14:10:20.265181+02 f 0 00:01:00 <removed> +37 151.216.10.2 e23-3 dlink3100 2013-03-31 14:12:40.88249+02 t 0 00:01:00 <removed> +325 127.0.0.1 ap-e35-2 ciscoap 2013-03-31 14:06:47.598526+02 f 0 00:05:00 <removed> +52 151.216.13.194 e35-2 dlink3100 2013-03-31 14:10:36.22414+02 f 0 00:01:00 <removed> +399 127.0.0.1 ap-e75-4 ciscoap 2013-03-31 14:06:54.140511+02 f 0 00:05:00 <removed> +401 127.0.0.1 ap-e77-2 ciscoap 2013-03-31 14:05:06.475953+02 f 0 00:05:00 <removed> +109 151.216.28.2 e67-3 dlink3100 2013-03-31 14:10:40.349205+02 f 0 00:01:00 <removed> +123 151.216.31.130 e75-1 dlink3100 2013-03-31 14:10:49.357742+02 f 0 00:01:00 <removed> +332 127.0.0.1 ap-e43-1 ciscoap 2013-03-31 14:06:54.157133+02 f 0 00:05:00 <removed> +98 151.216.25.66 e61-4 dlink3100 2013-03-31 14:06:56.826042+02 f 0 00:01:00 <removed> +117 151.216.30.2 e71-3 dlink3100 2013-03-31 14:10:59.399785+02 f 0 00:01:00 <removed> +101 151.216.26.2 e63-3 dlink3100 2013-03-31 14:11:09.441726+02 f 0 00:01:00 <removed> +39 151.216.10.130 e25-1 dlink3100 2013-03-31 14:11:20.517295+02 f 0 00:01:00 <removed> +290 127.0.0.1 ap-e13-3 ciscoap 2013-03-31 14:05:16.592114+02 f 0 00:05:00 <removed> +345 127.0.0.1 ap-e49-2 ciscoap 2013-03-31 14:06:57.657385+02 f 0 00:05:00 <removed> +366 127.0.0.1 ap-e59-3 ciscoap 2013-03-31 14:06:57.665697+02 f 0 00:05:00 <removed> +392 127.0.0.1 ap-e73-1 ciscoap 2013-03-31 14:04:15.990948+02 f 0 00:05:00 <removed> +355 127.0.0.1 ap-e53-4 ciscoap 2013-03-31 14:05:16.658807+02 f 0 00:05:00 <removed> +86 151.216.22.66 e55-4 dlink3100 2013-03-31 14:11:30.559419+02 f 0 00:01:00 <removed> +277 127.0.0.1 ap-e3-4 ciscoap 2013-03-31 14:04:16.007613+02 f 0 00:05:00 <removed> +40 151.216.10.194 e25-2 dlink3100 2013-03-31 14:11:39.818373+02 f 0 00:01:00 <removed> +314 127.0.0.1 ap-e25-3 ciscoap 2013-03-31 14:04:16.024289+02 f 0 00:05:00 <removed> +289 127.0.0.1 ap-e13-2 ciscoap 2013-03-31 14:06:57.724049+02 f 0 00:05:00 <removed> +2 151.216.1.66 e1-4 dlink3100 2013-03-31 14:11:50.641091+02 f 0 00:01:00 <removed> +302 127.0.0.1 ap-e19-3 ciscoap 2013-03-31 14:06:57.732372+02 f 0 00:05:00 <removed> +99 151.216.25.130 e63-1 dlink3100 2013-03-31 14:11:59.899883+02 f 0 00:01:00 <removed> +344 127.0.0.1 ap-e49-1 ciscoap 2013-03-31 14:04:16.04092+02 f 0 00:05:00 <removed> +335 127.0.0.1 ap-e43-4 ciscoap 2013-03-31 14:06:57.799008+02 f 0 00:05:00 <removed> +279 127.0.0.1 ap-e5-4 ciscoap 2013-03-31 14:04:16.057621+02 f 0 00:05:00 <removed> +38 151.216.10.66 e23-4 dlink3100 2013-03-31 14:12:09.94159+02 f 0 00:01:00 <removed> +285 127.0.0.1 ap-e11-2 ciscoap 2013-03-31 14:06:57.824055+02 f 0 00:05:00 <removed> +404 127.0.0.1 ap-distro3 ciscoap 2013-03-31 14:06:57.832368+02 f 0 00:05:00 <removed> +21 151.216.6.2 e15-3 dlink3100 2013-03-31 14:12:20.775526+02 f 0 00:01:00 <removed> +131 151.216.127.3 camgw camgw 2013-03-31 14:08:59.442796+02 f 0 00:01:00 <removed> +415 151.216.50.10 creativiasw09 dlink3100 2013-03-31 14:09:49.089144+02 f 0 00:01:00 <removed> +23 151.216.6.130 e17-1 dlink3100 2013-03-31 14:12:30.817401+02 f 0 00:01:00 <removed> +140 151.216.127.17 distro0 distro0 2013-03-31 14:09:59.139467+02 f 0 00:01:00 <removed> +303 127.0.0.1 ap-e19-4 ciscoap 2013-03-31 14:05:27.020371+02 f 0 00:05:00 <removed> +348 127.0.0.1 ap-e51-1 ciscoap 2013-03-31 14:07:14.399896+02 f 0 00:05:00 <removed> +46 151.216.12.66 e29-2 dlink3100 2013-03-31 14:11:58.658094+02 f 0 00:01:00 <removed> +311 127.0.0.1 ap-e23-4 ciscoap 2013-03-31 14:07:14.433216+02 f 0 00:05:00 <removed> +6 151.216.2.66 e5-4 dlink3100 2013-03-31 14:12:08.075251+02 f 0 00:01:00 <removed> +61 151.216.16.2 e43-3 dlink3100 2013-03-31 14:12:18.115548+02 f 0 00:01:00 <removed> +281 127.0.0.1 ap-e7-4 ciscoap 2013-03-31 14:07:14.449892+02 f 0 00:05:00 <removed> +42 151.216.11.66 e25-4 dlink3100 2013-03-31 14:12:28.78394+02 f 0 00:01:00 <removed> +124 151.216.31.194 e75-2 dlink3100 2013-03-31 14:12:38.82574+02 f 0 00:01:00 <removed> +341 127.0.0.1 ap-e47-2 ciscoap 2013-03-31 14:07:14.49997+02 f 0 00:05:00 <removed> +394 127.0.0.1 ap-e73-3 ciscoap 2013-03-31 14:07:18.250168+02 f 0 00:05:00 <removed> +134 151.216.127.6 logistikkgw logistikkgw 2013-03-31 14:09:37.70706+02 f 0 00:01:00 <removed> +296 127.0.0.1 ap-e17-1 ciscoap 2013-03-31 14:05:16.642148+02 f 0 00:05:00 <removed> +342 127.0.0.1 ap-e47-3 ciscoap 2013-03-31 14:05:16.683807+02 f 0 00:05:00 <removed> +138 151.216.127.14 sponsorgw sponsorgw 2013-03-31 14:10:36.296979+02 f 0 00:01:00 <removed> +300 127.0.0.1 ap-e19-1 ciscoap 2013-03-31 14:05:26.753695+02 f 0 00:05:00 <removed> +74 151.216.19.66 e49-4 dlink3100 2013-03-31 14:10:48.366303+02 f 0 00:01:00 <removed> +90 151.216.23.66 e57-4 dlink3100 2013-03-31 14:10:50.391178+02 f 0 00:01:00 <removed> +364 127.0.0.1 ap-e59-1 ciscoap 2013-03-31 14:06:57.699034+02 f 0 00:05:00 <removed> +14 151.216.4.66 e11-4 dlink3100 2013-03-31 14:11:00.431572+02 f 0 00:01:00 <removed> +280 127.0.0.1 ap-e7-3 ciscoap 2013-03-31 14:05:26.803681+02 f 0 00:05:00 <removed> +357 127.0.0.1 ap-e55-2 ciscoap 2013-03-31 14:06:57.757379+02 f 0 00:05:00 <removed> +144 151.216.127.21 distro4 distro4 2013-03-31 14:11:18.492445+02 f 0 00:01:00 <removed> +19 151.216.5.130 e15-1 dlink3100 2013-03-31 14:11:19.483883+02 f 0 00:01:00 <removed> +307 127.0.0.1 ap-e21-4 ciscoap 2013-03-31 14:06:57.790715+02 f 0 00:05:00 <removed> +85 151.216.22.2 e55-3 dlink3100 2013-03-31 14:11:38.576512+02 f 0 00:01:00 <removed> +286 127.0.0.1 ap-e11-3 ciscoap 2013-03-31 14:05:26.837029+02 f 0 00:05:00 <removed> +369 127.0.0.1 ap-e61-2 ciscoap 2013-03-31 14:06:57.857392+02 f 0 00:05:00 <removed> +10 151.216.3.66 e9-4 dlink3100 2013-03-31 14:11:48.616108+02 f 0 00:01:00 <removed> +385 127.0.0.1 ap-e69-2 ciscoap 2013-03-31 14:07:07.916359+02 f 0 00:05:00 <removed> +288 127.0.0.1 ap-e13-1 ciscoap 2013-03-31 14:05:26.945339+02 f 0 00:05:00 <removed> +282 127.0.0.1 ap-e9-3 ciscoap 2013-03-31 14:07:07.924585+02 f 0 00:05:00 <removed> +358 127.0.0.1 ap-e55-3 ciscoap 2013-03-31 14:05:26.953679+02 f 0 00:05:00 <removed> +396 127.0.0.1 ap-e75-1 ciscoap 2013-03-31 14:07:14.333223+02 f 0 00:05:00 <removed> +374 127.0.0.1 ap-e63-3 ciscoap 2013-03-31 14:07:14.349887+02 f 0 00:05:00 <removed> +365 127.0.0.1 ap-e59-2 ciscoap 2013-03-31 14:05:26.978658+02 f 0 00:05:00 <removed> +276 127.0.0.1 ap-e3-3 ciscoap 2013-03-31 14:05:26.987059+02 f 0 00:05:00 <removed> +334 127.0.0.1 ap-e43-3 ciscoap 2013-03-31 14:05:27.012008+02 f 0 00:05:00 <removed> +382 127.0.0.1 ap-e67-3 ciscoap 2013-03-31 14:07:14.466569+02 f 0 00:05:00 <removed> +62 151.216.16.66 e43-4 dlink3100 2013-03-31 14:12:08.699458+02 f 0 00:01:00 <removed> +275 127.0.0.1 ap-e1-4 ciscoap 2013-03-31 14:07:14.483301+02 f 0 00:05:00 <removed> +36 151.216.9.194 e23-2 dlink3100 2013-03-31 14:12:18.742024+02 f 0 00:01:00 <removed> +51 151.216.13.130 e35-1 dlink3100 2013-03-31 14:12:28.217471+02 f 0 00:01:00 <removed> +324 127.0.0.1 ap-e35-1 ciscoap 2013-03-31 14:07:14.516632+02 f 0 00:05:00 <removed> +1 151.216.1.2 e1-3 dlink3100 2013-03-31 14:12:38.299693+02 f 0 00:01:00 <removed> +291 127.0.0.1 ap-e13-4 ciscoap 2013-03-31 14:05:47.253657+02 f 0 00:05:00 <removed> +381 127.0.0.1 ap-e67-2 ciscoap 2013-03-31 14:07:14.533237+02 f 0 00:05:00 <removed> +395 127.0.0.1 ap-e73-4 ciscoap 2013-03-31 14:05:47.261963+02 f 0 00:05:00 <removed> +298 127.0.0.1 ap-e17-3 ciscoap 2013-03-31 14:07:18.24186+02 f 0 00:05:00 <removed> +375 127.0.0.1 ap-e63-4 ciscoap 2013-03-31 14:05:26.770358+02 f 0 00:05:00 <removed> +402 127.0.0.1 ap-distro1 ciscoap 2013-03-31 14:05:47.286984+02 f 0 00:05:00 <removed> +278 127.0.0.1 ap-e5-3 ciscoap 2013-03-31 14:07:18.275213+02 f 0 00:05:00 <removed> +349 127.0.0.1 ap-e51-2 ciscoap 2013-03-31 14:05:26.820365+02 f 0 00:05:00 <removed> +390 127.0.0.1 ap-e71-3 ciscoap 2013-03-31 14:05:26.870368+02 f 0 00:05:00 <removed> +135 151.216.127.9 crewgw crewgw 2013-03-31 14:09:59.991016+02 f 0 00:01:00 <removed> +88 151.216.22.194 e57-2 dlink3100 2013-03-31 14:10:58.408324+02 f 0 00:01:00 <removed> +378 127.0.0.1 ap-e65-3 ciscoap 2013-03-31 14:05:26.920352+02 f 0 00:05:00 <removed> +64 151.216.16.194 e45-2 dlink3100 2013-03-31 14:11:08.451146+02 f 0 00:01:00 <removed> +141 151.216.127.18 distro1 distro1 2013-03-31 14:11:10.476036+02 f 0 00:01:00 <removed> +397 127.0.0.1 ap-e75-2 ciscoap 2013-03-31 14:06:57.690716+02 f 0 00:05:00 <removed> +142 151.216.127.19 distro2 distro2 2013-03-31 14:11:26.53242+02 f 0 00:01:00 <removed> +336 127.0.0.1 ap-e45-1 ciscoap 2013-03-31 14:05:37.128164+02 f 0 00:05:00 <removed> +370 127.0.0.1 ap-e61-3 ciscoap 2013-03-31 14:05:37.136492+02 f 0 00:05:00 <removed> +340 127.0.0.1 ap-e47-1 ciscoap 2013-03-31 14:06:57.765706+02 f 0 00:05:00 <removed> +137 151.216.127.12 resepsjongw resepsjongw 2013-03-31 14:11:28.534488+02 f 0 00:01:00 <removed> +71 151.216.18.130 e49-1 dlink3100 2013-03-31 14:11:36.567717+02 f 0 00:01:00 <removed> +319 127.0.0.1 ap-e29-2 ciscoap 2013-03-31 14:07:07.949621+02 f 0 00:05:00 <removed> +82 151.216.21.66 e53-4 dlink3100 2013-03-31 14:11:47.281839+02 f 0 00:01:00 <removed> +403 127.0.0.1 ap-distro2 ciscoap 2013-03-31 14:07:14.316549+02 f 0 00:05:00 <removed> +333 127.0.0.1 ap-e43-2 ciscoap 2013-03-31 14:07:14.366567+02 f 0 00:05:00 <removed> +305 127.0.0.1 ap-e21-2 ciscoap 2013-03-31 14:05:37.161496+02 f 0 00:05:00 <removed> +383 127.0.0.1 ap-e67-4 ciscoap 2013-03-31 14:05:37.169782+02 f 0 00:05:00 <removed> +35 151.216.9.130 e23-1 dlink3100 2013-03-31 14:11:57.324788+02 f 0 00:01:00 <removed> +329 127.0.0.1 ap-e39-2 ciscoap 2013-03-31 14:07:14.383235+02 f 0 00:05:00 <removed> +295 127.0.0.1 ap-e15-4 ciscoap 2013-03-31 14:07:14.416546+02 f 0 00:05:00 <removed> +322 127.0.0.1 ap-e33-1 ciscoap 2013-03-31 14:05:37.194794+02 f 0 00:05:00 <removed> +316 127.0.0.1 ap-e27-1 ciscoap 2013-03-31 14:07:18.075143+02 f 0 00:05:00 <removed> +317 127.0.0.1 ap-e27-2 ciscoap 2013-03-31 14:07:18.083421+02 f 0 00:05:00 <removed> +410 151.216.50.5 creativiasw04 dlink3100 2013-03-31 14:08:38.747626+02 f 0 00:01:00 <removed> +54 151.216.14.66 e37-2 dlink3100 2013-03-31 14:08:48.798532+02 f 0 00:01:00 <removed> +346 127.0.0.1 ap-e49-3 ciscoap 2013-03-31 14:07:18.116747+02 f 0 00:05:00 <removed> +16 151.216.4.194 e13-2 dlink3100 2013-03-31 14:08:59.398994+02 f 0 00:01:00 <removed> +132 151.216.127.4 stageboh stageboh 2013-03-31 14:11:19.519638+02 f 0 00:01:00 <removed> +353 127.0.0.1 ap-e53-2 ciscoap 2013-03-31 14:07:18.141775+02 f 0 00:05:00 <removed> +122 151.216.31.66 e73-4 dlink3100 2013-03-31 14:12:38.849023+02 t 0 00:01:00 <removed> +338 127.0.0.1 ap-e45-3 ciscoap 2013-03-31 14:07:18.175214+02 f 0 00:05:00 <removed> +327 127.0.0.1 ap-e37-2 ciscoap 2013-03-31 14:07:18.216828+02 f 0 00:05:00 <removed> +309 127.0.0.1 ap-e23-2 ciscoap 2013-03-31 14:07:24.68384+02 f 0 00:05:00 <removed> +330 127.0.0.1 ap-e41-1 ciscoap 2013-03-31 14:07:24.71716+02 f 0 00:05:00 <removed> +299 127.0.0.1 ap-e17-4 ciscoap 2013-03-31 14:07:24.733842+02 f 0 00:05:00 <removed> +379 127.0.0.1 ap-e65-4 ciscoap 2013-03-31 14:07:24.750498+02 f 0 00:05:00 <removed> +8 151.216.2.194 e7-4 dlink3100 2013-03-31 14:07:28.294572+02 f 0 00:01:00 <removed> +70 151.216.18.66 e47-4 dlink3100 2013-03-31 14:06:47.567226+02 f 0 00:01:00 <removed> +377 127.0.0.1 ap-e65-2 ciscoap 2013-03-31 14:07:28.367437+02 f 0 00:05:00 <removed> +60 151.216.15.194 e43-2 dlink3100 2013-03-31 14:06:57.634414+02 f 0 00:01:00 <removed> +292 127.0.0.1 ap-e15-1 ciscoap 2013-03-31 14:07:34.926035+02 f 0 00:05:00 <removed> +114 151.216.29.66 e69-4 dlink3100 2013-03-31 14:07:07.891609+02 f 0 00:01:00 <removed> +347 127.0.0.1 ap-e49-4 ciscoap 2013-03-31 14:07:34.959373+02 f 0 00:05:00 <removed> +116 151.216.29.194 e71-2 dlink3100 2013-03-31 14:07:38.453277+02 f 0 00:01:00 <removed> +411 151.216.50.6 creativiasw05 dlink3100 2013-03-31 14:07:17.968957+02 f 0 00:01:00 <removed> +87 151.216.22.130 e57-1 dlink3100 2013-03-31 14:07:48.503769+02 f 0 00:01:00 <removed> +113 151.216.29.2 e69-3 dlink3100 2013-03-31 14:07:58.545997+02 f 0 00:01:00 <removed> +287 127.0.0.1 ap-e11-4 ciscoap 2013-03-31 14:07:18.016788+02 f 0 00:05:00 <removed> +66 151.216.17.66 e45-4 dlink3100 2013-03-31 14:08:08.60963+02 f 0 00:01:00 <removed> +120 151.216.30.194 e73-2 dlink3100 2013-03-31 14:08:18.656104+02 f 0 00:01:00 <removed> +118 151.216.30.66 e71-4 dlink3100 2013-03-31 14:08:29.247615+02 f 0 00:01:00 <removed> +400 127.0.0.1 ap-e77-1 ciscoap 2013-03-31 14:07:34.859414+02 f 0 00:05:00 <removed> +139 151.216.127.16 eldregw eldregw 2013-03-31 14:12:28.253362+02 f 0 00:01:00 <removed> +76 151.216.19.194 e51-2 dlink3100 2013-03-31 14:12:38.382364+02 t 0 00:01:00 <removed> +405 127.0.0.1 ap-distro0 ciscoap 2013-03-31 14:07:34.876034+02 f 0 00:05:00 <removed> +359 127.0.0.1 ap-e55-4 ciscoap 2013-03-31 14:07:18.041795+02 f 0 00:05:00 <removed> +373 127.0.0.1 ap-e63-2 ciscoap 2013-03-31 14:07:18.050126+02 f 0 00:05:00 <removed> +354 127.0.0.1 ap-e53-3 ciscoap 2013-03-31 14:07:34.892675+02 f 0 00:05:00 <removed> +386 127.0.0.1 ap-e69-3 ciscoap 2013-03-31 14:07:18.108439+02 f 0 00:05:00 <removed> +326 127.0.0.1 ap-e37-1 ciscoap 2013-03-31 14:07:34.909368+02 f 0 00:05:00 <removed> +284 127.0.0.1 ap-e11-1 ciscoap 2013-03-31 14:07:34.942715+02 f 0 00:05:00 <removed> +391 127.0.0.1 ap-e71-4 ciscoap 2013-03-31 14:07:18.150127+02 f 0 00:05:00 <removed> +362 127.0.0.1 ap-e57-3 ciscoap 2013-03-31 14:07:34.976095+02 f 0 00:05:00 <removed> +318 127.0.0.1 ap-e29-1 ciscoap 2013-03-31 14:07:18.183518+02 f 0 00:05:00 <removed> +110 151.216.28.66 e67-4 dlink3100 2013-03-31 14:07:38.444965+02 f 0 00:01:00 <removed> +274 127.0.0.1 ap-e1-3 ciscoap 2013-03-31 14:07:18.208538+02 f 0 00:05:00 <removed> +53 151.216.14.2 e37-1 dlink3100 2013-03-31 14:07:48.49557+02 f 0 00:01:00 <removed> +107 151.216.27.130 e67-1 dlink3100 2013-03-31 14:07:58.554186+02 f 0 00:01:00 <removed> +315 127.0.0.1 ap-e25-4 ciscoap 2013-03-31 14:07:24.650503+02 f 0 00:05:00 <removed> +360 127.0.0.1 ap-e57-1 ciscoap 2013-03-31 14:07:24.667163+02 f 0 00:05:00 <removed> +78 151.216.20.66 e51-4 dlink3100 2013-03-31 14:08:09.146709+02 f 0 00:01:00 <removed> +414 151.216.50.9 creativiasw08 dlink3100 2013-03-31 14:06:47.558957+02 f 0 00:01:00 <removed> +294 127.0.0.1 ap-e15-3 ciscoap 2013-03-31 14:07:24.700488+02 f 0 00:05:00 <removed> +25 151.216.7.2 e17-3 dlink3100 2013-03-31 14:07:28.311147+02 f 0 00:01:00 <removed> +75 151.216.19.130 e51-1 dlink3100 2013-03-31 14:06:57.617774+02 f 0 00:01:00 <removed> +93 151.216.24.2 e59-3 dlink3100 2013-03-31 14:08:19.189476+02 f 0 00:01:00 <removed> +11 151.216.3.130 e11-1 dlink3100 2013-03-31 14:08:28.698108+02 f 0 00:01:00 <removed> +55 151.216.14.130 e39-1 dlink3100 2013-03-31 14:08:39.297705+02 f 0 00:01:00 <removed> +367 127.0.0.1 ap-e59-4 ciscoap 2013-03-31 14:07:28.334102+02 f 0 00:05:00 <removed> +80 151.216.20.194 e53-2 dlink3100 2013-03-31 14:07:07.875693+02 f 0 00:01:00 <removed> +321 127.0.0.1 ap-e31-2 ciscoap 2013-03-31 14:07:28.342401+02 f 0 00:05:00 <removed> +94 151.216.24.66 e59-4 dlink3100 2013-03-31 14:07:17.985368+02 f 0 00:01:00 <removed> +283 127.0.0.1 ap-e9-4 ciscoap 2013-03-31 14:07:28.375765+02 f 0 00:05:00 <removed> +48 151.216.12.194 e31-2 dlink3100 2013-03-31 14:08:49.348586+02 f 0 00:01:00 <removed> +68 151.216.17.194 e47-2 dlink3100 2013-03-31 14:08:58.847409+02 f 0 00:01:00 <removed> +331 127.0.0.1 ap-e41-2 ciscoap 2013-03-31 14:07:18.008451+02 f 0 00:05:00 <removed> +129 151.216.127.2 nocgw nocgw 2013-03-31 14:11:36.609335+02 f 0 00:01:00 <removed> +306 127.0.0.1 ap-e21-3 ciscoap 2013-03-31 14:07:28.400753+02 f 0 00:05:00 <removed> +313 127.0.0.1 ap-e25-2 ciscoap 2013-03-31 14:07:28.409069+02 f 0 00:05:00 <removed> +136 151.216.127.11 gamegw gamegw 2013-03-31 14:06:54.076054+02 f 0 00:01:00 <removed> +81 151.216.21.2 e53-3 dlink3100 2013-03-31 14:07:04.184831+02 f 0 00:01:00 <removed> +105 151.216.27.2 e65-3 dlink3100 2013-03-31 14:07:14.28811+02 f 0 00:01:00 <removed> +56 151.216.14.194 e39-2 dlink3100 2013-03-31 14:07:26.952794+02 f 0 00:01:00 <removed> +72 151.216.18.194 e49-2 dlink3100 2013-03-31 14:07:36.993533+02 f 0 00:01:00 <removed> +27 151.216.7.130 e19-1 dlink3100 2013-03-31 14:07:45.003682+02 f 0 00:01:00 <removed> +17 151.216.5.2 e13-3 dlink3100 2013-03-31 14:07:57.079313+02 f 0 00:01:00 <removed> +59 151.216.15.130 e43-1 dlink3100 2013-03-31 14:08:07.12975+02 f 0 00:01:00 <removed> +79 151.216.20.130 e53-1 dlink3100 2013-03-31 14:08:15.230508+02 f 0 00:01:00 <removed> +12 151.216.3.194 e11-2 dlink3100 2013-03-31 14:08:25.273211+02 f 0 00:01:00 <removed> +413 151.216.50.8 creativiasw07 dlink3100 2013-03-31 14:08:35.321636+02 f 0 00:01:00 <removed> +15 151.216.4.130 e13-1 dlink3100 2013-03-31 14:08:45.372088+02 f 0 00:01:00 <removed> +106 151.216.27.66 e65-4 dlink3100 2013-03-31 14:08:57.465785+02 f 0 00:01:00 <removed> +29 151.216.8.2 e19-3 dlink3100 2013-03-31 14:09:07.516177+02 f 0 00:01:00 <removed> +34 151.216.9.66 e21-4 dlink3100 2013-03-31 14:12:40.090712+02 t 0 00:01:00 <removed> +49 151.216.13.2 e33-1 dlink3100 2013-03-31 14:07:06.867675+02 f 0 00:01:00 <removed> +44 151.216.11.194 e27-2 dlink3100 2013-03-31 14:07:16.909469+02 f 0 00:01:00 <removed> +96 151.216.24.194 e61-2 dlink3100 2013-03-31 14:07:24.56102+02 f 0 00:01:00 <removed> +73 151.216.19.2 e49-3 dlink3100 2013-03-31 14:07:34.777763+02 f 0 00:01:00 <removed> +115 151.216.29.130 e71-1 dlink3100 2013-03-31 14:07:47.037305+02 f 0 00:01:00 <removed> +95 151.216.24.130 e61-1 dlink3100 2013-03-31 14:07:55.137659+02 f 0 00:01:00 <removed> +409 151.216.50.4 creativiasw03 dlink3100 2013-03-31 14:08:05.18812+02 f 0 00:01:00 <removed> +111 151.216.28.130 e69-1 dlink3100 2013-03-31 14:08:17.239454+02 f 0 00:01:00 <removed> +77 151.216.20.2 e51-3 dlink3100 2013-03-31 14:08:27.313458+02 f 0 00:01:00 <removed> +58 151.216.15.66 e41-2 dlink3100 2013-03-31 14:08:37.363767+02 f 0 00:01:00 <removed> +41 151.216.11.2 e25-3 dlink3100 2013-03-31 14:08:47.415311+02 f 0 00:01:00 <removed> +143 151.216.127.20 distro3 distro3 2013-03-31 14:08:55.423637+02 f 0 00:01:00 <removed> +\. + + +-- +-- Name: switches_switch_seq; Type: SEQUENCE SET; Schema: public; Owner: nms +-- + +SELECT pg_catalog.setval('switches_switch_seq', 417, true); + + +-- +-- Data for Name: switchtypes; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY switchtypes (switchtype, ports, wide_counters) FROM stdin; +dlink3100 1-44,46-48 t +dlink3100full 1-48 t +ciscoap f +nocgw 1-114 t +telegw 1-94,99-102 t +camgw 1-52,55 t +stageboh 1-52,55 t +wtfgw 1-52,55 t +logistikkgw 1-52,55 t +crewgw 1-52,55 t +gamegw 1-52,55 t +resepsjongw 10101-10110 t +sponsorgw t +eldregw 1-5 t +distro0 1-201 t +distro1 1-201 t +distro2 1-201 t +distro3 1-201 t +distro4 1-201 t +\. + + +-- +-- Data for Name: temppoll; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY temppoll (id, "time", switch, temp) FROM stdin; +\. + + +-- +-- Data for Name: uplinks; Type: TABLE DATA; Schema: public; Owner: nms +-- + +COPY uplinks (switch, coreswitch, blade, port) FROM stdin; +274 140 6 1 +275 140 6 2 +276 140 6 3 +277 140 6 4 +278 140 6 5 +279 140 6 6 +280 140 6 7 +281 140 6 8 +282 140 6 9 +283 140 6 10 +284 141 6 1 +285 141 6 2 +286 140 6 11 +287 140 6 12 +288 141 6 3 +289 141 6 4 +290 140 6 13 +291 140 6 14 +292 141 6 5 +293 141 6 6 +294 140 6 15 +295 140 6 16 +296 141 6 7 +297 141 6 8 +298 140 6 17 +299 140 6 18 +300 141 6 9 +301 141 6 10 +302 140 6 19 +303 140 6 20 +304 141 6 11 +305 141 6 12 +306 140 6 21 +307 140 6 22 +308 141 6 13 +309 141 6 14 +310 140 6 23 +311 140 6 24 +312 141 6 15 +313 141 6 16 +314 140 6 25 +315 140 6 26 +316 141 6 17 +317 141 6 18 +318 141 6 19 +319 141 6 20 +320 141 6 21 +321 141 6 22 +322 142 6 1 +323 141 6 23 +324 142 6 2 +325 142 6 3 +326 142 6 4 +327 142 6 5 +328 142 6 6 +329 142 6 7 +330 142 6 8 +331 142 6 9 +332 142 6 10 +333 142 6 11 +334 143 6 1 +335 143 6 2 +336 142 6 12 +337 142 6 13 +338 143 6 3 +339 143 6 4 +340 142 6 14 +341 142 6 15 +342 143 6 5 +343 143 6 6 +344 142 6 16 +345 142 6 17 +346 143 6 7 +347 143 6 8 +348 142 6 18 +349 142 6 19 +350 143 6 9 +351 143 6 10 +352 142 6 20 +353 142 6 21 +354 143 6 11 +355 143 6 12 +356 142 6 22 +357 142 6 23 +358 143 6 13 +359 143 6 14 +360 142 6 24 +361 142 6 25 +362 143 6 15 +363 143 6 16 +364 144 6 1 +365 144 6 2 +366 143 6 17 +367 143 6 18 +368 144 6 3 +369 144 6 4 +370 143 6 19 +371 143 6 20 +372 144 6 5 +373 144 6 6 +374 144 6 7 +375 144 6 8 +376 144 6 9 +377 144 6 10 +378 144 6 11 +379 144 6 12 +380 144 6 13 +381 144 6 14 +382 144 6 15 +383 144 6 16 +384 144 6 17 +385 144 6 18 +386 144 6 19 +387 144 6 20 +388 144 6 21 +389 144 6 22 +390 144 6 23 +391 144 6 24 +392 144 6 25 +393 144 6 26 +394 144 6 27 +395 144 6 28 +396 144 6 29 +397 144 6 30 +398 144 6 31 +399 144 6 32 +400 144 6 33 +401 144 6 34 +402 141 6 48 +403 142 6 47 +404 143 6 48 +405 140 6 48 +406 144 6 48 +\. + + +-- +-- Name: cpuloadpoll_pkey; Type: CONSTRAINT; Schema: public; Owner: nms; Tablespace: +-- + +ALTER TABLE ONLY cpuloadpoll + ADD CONSTRAINT cpuloadpoll_pkey PRIMARY KEY (id); + + +-- +-- Name: ipv4_pkey; Type: CONSTRAINT; Schema: public; Owner: nms; Tablespace: +-- + +ALTER TABLE ONLY ipv4 + ADD CONSTRAINT ipv4_pkey PRIMARY KEY (mac, address, "time"); + + +-- +-- Name: ipv6_pkey; Type: CONSTRAINT; Schema: public; Owner: nms; Tablespace: +-- + +ALTER TABLE ONLY ipv6 + ADD CONSTRAINT ipv6_pkey PRIMARY KEY (mac, address, "time"); + + +-- +-- Name: switches_pkey; Type: CONSTRAINT; Schema: public; Owner: nms; Tablespace: +-- + +ALTER TABLE ONLY switches + ADD CONSTRAINT switches_pkey PRIMARY KEY (switch); + + +-- +-- Name: switchtypes_pkey; Type: CONSTRAINT; Schema: public; Owner: nms; Tablespace: +-- + +ALTER TABLE ONLY switchtypes + ADD CONSTRAINT switchtypes_pkey PRIMARY KEY (switchtype); + + +-- +-- Name: polls_switchporttime; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE INDEX polls_switchporttime ON polls USING btree (switch, port, "time"); + + +-- +-- Name: polls_time; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE INDEX polls_time ON polls USING btree ("time"); + + +-- +-- Name: switches_ap_poll; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE UNIQUE INDEX switches_ap_poll ON ap_poll USING btree (switch); + + +-- +-- Name: switches_dhcp; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE UNIQUE INDEX switches_dhcp ON dhcp USING btree (switch); + + +-- +-- Name: switches_placement; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE UNIQUE INDEX switches_placement ON placements USING btree (switch); + + +-- +-- Name: switches_switch; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE UNIQUE INDEX switches_switch ON switches USING btree (switch); + + +-- +-- Name: temppoll_search; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE INDEX temppoll_search ON temppoll USING btree (switch, id); + + +-- +-- Name: time_idx; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE INDEX time_idx ON ipv6 USING btree ("time"); + + +-- +-- Name: timev4_idx; Type: INDEX; Schema: public; Owner: nms; Tablespace: +-- + +CREATE INDEX timev4_idx ON ipv4 USING btree ("time"); + + +-- +-- Name: ap_poll_switch_fkey; Type: FK CONSTRAINT; Schema: public; Owner: nms +-- + +ALTER TABLE ONLY ap_poll + ADD CONSTRAINT ap_poll_switch_fkey FOREIGN KEY (switch) REFERENCES switches(switch); + + +-- +-- Name: switches_switchtype_fkey; Type: FK CONSTRAINT; Schema: public; Owner: nms +-- + +ALTER TABLE ONLY switches + ADD CONSTRAINT switches_switchtype_fkey FOREIGN KEY (switchtype) REFERENCES switchtypes(switchtype); + + +-- +-- Name: temppoll_switch_fkey; Type: FK CONSTRAINT; Schema: public; Owner: nms +-- + +ALTER TABLE ONLY temppoll + ADD CONSTRAINT temppoll_switch_fkey FOREIGN KEY (switch) REFERENCES switches(switch); + + +-- +-- Name: uplinks_coreswitch_fkey; Type: FK CONSTRAINT; Schema: public; Owner: nms +-- + +ALTER TABLE ONLY uplinks + ADD CONSTRAINT uplinks_coreswitch_fkey FOREIGN KEY (coreswitch) REFERENCES switches(switch); + + +-- +-- Name: uplinks_switch_fkey; Type: FK CONSTRAINT; Schema: public; Owner: nms +-- + +ALTER TABLE ONLY uplinks + ADD CONSTRAINT uplinks_switch_fkey FOREIGN KEY (switch) REFERENCES switches(switch); + + +-- +-- Name: public; Type: ACL; Schema: -; Owner: postgres +-- + +REVOKE ALL ON SCHEMA public FROM PUBLIC; +REVOKE ALL ON SCHEMA public FROM postgres; +GRANT ALL ON SCHEMA public TO postgres; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- Name: ipv4; Type: ACL; Schema: public; Owner: nms +-- + +REVOKE ALL ON TABLE ipv4 FROM PUBLIC; +REVOKE ALL ON TABLE ipv4 FROM nms; +GRANT ALL ON TABLE ipv4 TO nms; + + +-- +-- Name: ipv6; Type: ACL; Schema: public; Owner: nms +-- + +REVOKE ALL ON TABLE ipv6 FROM PUBLIC; +REVOKE ALL ON TABLE ipv6 FROM nms; +GRANT ALL ON TABLE ipv6 TO nms; + + +-- +-- Name: mbd_log; Type: ACL; Schema: public; Owner: nms +-- + +REVOKE ALL ON TABLE mbd_log FROM PUBLIC; +REVOKE ALL ON TABLE mbd_log FROM nms; +GRANT ALL ON TABLE mbd_log TO nms; + + +-- +-- Name: mldpolls; Type: ACL; Schema: public; Owner: postgres +-- + +REVOKE ALL ON TABLE mldpolls FROM PUBLIC; +REVOKE ALL ON TABLE mldpolls FROM postgres; +GRANT ALL ON TABLE mldpolls TO postgres; +GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE mldpolls TO nms; + + +-- +-- PostgreSQL database dump complete +-- + +\connect postgres + +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +-- +-- Name: postgres; Type: COMMENT; Schema: -; Owner: postgres +-- + +COMMENT ON DATABASE postgres IS 'default administrative connection database'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +-- +-- Name: public; Type: ACL; Schema: -; Owner: postgres +-- + +REVOKE ALL ON SCHEMA public FROM PUBLIC; +REVOKE ALL ON SCHEMA public FROM postgres; +GRANT ALL ON SCHEMA public TO postgres; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- PostgreSQL database dump complete +-- + +\connect template1 + +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +-- +-- Name: template1; Type: COMMENT; Schema: -; Owner: postgres +-- + +COMMENT ON DATABASE template1 IS 'default template for new databases'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +-- +-- Name: public; Type: ACL; Schema: -; Owner: postgres +-- + +REVOKE ALL ON SCHEMA public FROM PUBLIC; +REVOKE ALL ON SCHEMA public FROM postgres; +GRANT ALL ON SCHEMA public TO postgres; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- PostgreSQL database dump complete +-- + +-- +-- PostgreSQL database cluster dump complete +-- + diff --git a/sql/strip.pl b/sql/strip.pl new file mode 100644 index 0000000..51739a6 --- /dev/null +++ b/sql/strip.pl @@ -0,0 +1,33 @@ +#!/usr/bin/perl +use warnings; +use strict; + +my $ignore = "((([0-9a-f]{2}[:]){5}[0-9a-f]{2})|"; +$ignore .= "([0-9]{4}\-[0-9]{2}\-[0-9]{2} [0-9]{2}\:[0-9]{2}\:[0-9]{2})"; +$ignore .= ").*"; + +my $community = "<removed>"; + +my $skip = 0; + +open (SQL, $ARGV[0]) or die "Unable to open SQL-file"; +while (<SQL>) { + unless (/^$ignore$/){ + + if (/COPY (mbd_log|squeue|temppoll|ap_poll)/){ + $skip = 1; + print; + } + + if (/\\\./){ + $skip = 0; + } + + unless ($skip){ + s/$community/<removed>/g; # community + s/PASSWORD '.+'/PASSWORD '<removed>'/g; # password for SQL-users + s/public$/<removed>/; # public-community -- assuming last column + print; + } + } +} diff --git a/stream/encode/kliniskarbeidsflate/reflect-krosus.sh b/stream/encode/kliniskarbeidsflate/reflect-krosus.sh new file mode 100755 index 0000000..a40500c --- /dev/null +++ b/stream/encode/kliniskarbeidsflate/reflect-krosus.sh @@ -0,0 +1,4 @@ +#!/bin/sh +while :; do vlc -vvv udp://@:9017 --network-caching 2000 --no-sout-audio --sout '#std{access=udp,mux=ts,dst=151.216.125.4:4016}' --intf dummy --ttl 60 vlc://quit; + sleep 5 +done diff --git a/stream/encode/kliniskarbeidsflate/reflect.sh b/stream/encode/kliniskarbeidsflate/reflect.sh new file mode 100755 index 0000000..7419433 --- /dev/null +++ b/stream/encode/kliniskarbeidsflate/reflect.sh @@ -0,0 +1,4 @@ +#!/bin/sh +while :; do vlc -vvv rtsp://151.216.106.2:554/live1.sdp --network-caching 2000 --no-sout-audio --sout '#std{access=udp,mux=ts,dst=127.0.0.1:9017}' --intf dummy --ttl 60 vlc://quit; + sleep 5 +done diff --git a/stream/encode/kliniskarbeidsflate/transcode-event-sd.sh b/stream/encode/kliniskarbeidsflate/transcode-event-sd.sh new file mode 100755 index 0000000..fb5c055 --- /dev/null +++ b/stream/encode/kliniskarbeidsflate/transcode-event-sd.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +while :; do +cvlc -vv udp://@:4014 --network-caching 2000 --sout-x264-preset fast --sout-x264-tune film --sout-transcode-threads 22 --no-sout-x264-interlaced --sout-x264-keyint 50 --sout-x264-lookahead 100 \ +--sout '#transcode{height=576,vcodec=h264,vb=2000,acodec=mp4a,aenc=fdkaac,ab=128}:std{access=udp,mux=ts,dst=151.216.125.4:4014}' +sleep 1 +done diff --git a/stream/encode/kliniskarbeidsflate/transcode-fugle-flash.sh b/stream/encode/kliniskarbeidsflate/transcode-fugle-flash.sh new file mode 100755 index 0000000..a924de2 --- /dev/null +++ b/stream/encode/kliniskarbeidsflate/transcode-fugle-flash.sh @@ -0,0 +1,7 @@ +#!/bin/sh +while :; do +cvlc -vv --network-caching 3000 --sout-x264-preset fast --sout-transcode-threads 10 --sout-x264-tune film --no-sout-x264-interlaced --sout-x264-lookahead 50 --sout-x264-vbv-maxrate 800 --sout-x264-vbv-bufsize 800 --sout-x264-keyint 50 -v http://stream.tg13.gathering.org:3015 vlc://quit \ +--sout '#transcode{height=480,fps=25,vcodec=h264,vb=800,acodec=aac,ab=128,deinterlace}:std{access=udp,mux=ffmpeg{mux=flv},dst=151.216.125.4:4020}' + sleep 1 +done + diff --git a/stream/encode/kliniskarbeidsflate/transcode-noc-fisheye-flash.sh b/stream/encode/kliniskarbeidsflate/transcode-noc-fisheye-flash.sh new file mode 100755 index 0000000..3491232 --- /dev/null +++ b/stream/encode/kliniskarbeidsflate/transcode-noc-fisheye-flash.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while :; do +cvlc -vv --network-caching 5000 --sout-x264-preset fast --sout-transcode-threads 16 --sout-x264-tune film --no-sout-x264-interlaced --sout-x264-lookahead 50 --sout-x264-vbv-maxrate 800 --sout-x264-vbv-bufsize 800 --sout-x264-keyint 50 -v http://stream.tg13.gathering.org:3018 vlc://quit \ +--sout '#transcode{width=768,height=768,vcodec=h264,vb=800}:std{access=udp,mux=ts,dst=151.216.125.4:4019}' + sleep 1 +done diff --git a/stream/encode/kliniskarbeidsflate/transcode-south.sh b/stream/encode/kliniskarbeidsflate/transcode-south.sh new file mode 100755 index 0000000..d5a83e4 --- /dev/null +++ b/stream/encode/kliniskarbeidsflate/transcode-south.sh @@ -0,0 +1,9 @@ +#!/bin/sh +while :; do cvlc -vv udp://@:9017 \ + --sout-ts-shaping=1000 --sout-ts-use-key-frames --sout-ts-dts-delay=500 --sout-transcode-fps 0 --no-sout-transcode-audio-sync --network-caching 2000 \ + --no-sout-x264-interlaced --sout-x264-preset veryfast --sout-x264-tune film \ + --sout-transcode-threads 3 --sout-x264-keyint 25 --no-sout-audio \ + --sout '#duplicate{dst="transcode{vcodec=h264,height=720,vb=3000}:std{access=udp,mux=ts,dst=151.216.125.4:4017}",dst="std{access=udp,mux=ts,dst=151.216.125.4:4016}"}' \ + --intf dummy --ttl 20 vlc://quit; + sleep 1 +done diff --git a/stream/encode/politietno/foo-withoutreflect.sh b/stream/encode/politietno/foo-withoutreflect.sh new file mode 100755 index 0000000..21bcda6 --- /dev/null +++ b/stream/encode/politietno/foo-withoutreflect.sh @@ -0,0 +1,6 @@ +#!/bin/sh +/home/techserver/vlc/vlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 \ + --sout-x264-preset slow --sout-x264-tune film --sout-transcode-threads 23 --no-sout-x264-interlaced \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 \ + -v decklink:// vlc://quit \ + --sout '#transcode{vcodec=h264,vb=3000,acodec=mp4a,aenc=fdkaac,ab=256}:std{access=udp,mux=ts,dst=151.216.124.80:9094}' diff --git a/stream/encode/politietno/foo.sh b/stream/encode/politietno/foo.sh new file mode 100755 index 0000000..dfdfc03 --- /dev/null +++ b/stream/encode/politietno/foo.sh @@ -0,0 +1,6 @@ +#!/bin/sh +/home/techserver/vlc/vlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 3000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 \ + --sout-x264-preset slow --sout-x264-tune film --sout-transcode-threads 23 --no-sout-x264-interlaced \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 5000 --sout-x264-vbv-bufsize 5000 \ + -v decklink:// vlc://quit \ + --sout '#transcode{vcodec=h264,vb=3000,acodec=mp4a,aenc=fdkaac,ab=256}:std{access=udp,mux=ts,dst=151.216.125.4:4013}' diff --git a/stream/encode/politietno/svineri.sh b/stream/encode/politietno/svineri.sh new file mode 100755 index 0000000..ac09601 --- /dev/null +++ b/stream/encode/politietno/svineri.sh @@ -0,0 +1,24 @@ +~/decklink-sdk/Linux/Samples/bmdtools/bmdcapture $( + echo '-C 0' # Decklink card number + echo '-m 11' # Input format mode (ID 8 = 1080i/25) + echo '-V 4' # Video input (4 = SDI) + echo '-A 2' # Audio input (2 = Embedded) + echo '-c 2' # Number of audio channels + echo '-M 10' # Memory limit, in GB, for the output buffer (it leaks slightly...) + echo '-F nut -f pipe:1' # Output format and file name +) | \ +ffmpeg $( + echo '-y -re -i -' # Input from pipe + echo '-v verbose' # Verbosity level +# echo '-filter:v format=yuv420p,yadif=1:0:0' # Video format conversion and deinterlacing + echo '-filter:v scale=480x270' + echo '-c:v libx264' # Video encoder to use + echo '-tune film -preset slow' # Video encoder options + echo '-x264opts keyint=50:rc-lookahead=0' # x264-specific options +# echo '-b:v 1M' # Video bitrate + echo '-c:a libfaac' # Audio encoder to use + echo '-b:a 192k' # Audio bitrate + echo '-threads auto' # Number of threads to use + echo '-f mpegts udp://151.216.125.4:4013' # Output format and file name +) + diff --git a/stream/encode/politietno/transcode-duplicate.sh b/stream/encode/politietno/transcode-duplicate.sh new file mode 100755 index 0000000..591e529 --- /dev/null +++ b/stream/encode/politietno/transcode-duplicate.sh @@ -0,0 +1,7 @@ +#!/bin/sh +while :; do +cvlc -vv --decklink-audio-connection embedded --live-caching 2000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 \ + --sout-x264-preset fast --sout-x264-tune film --sout-transcode-threads 24 --no-sout-x264-interlaced --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 4000 --sout-x264-vbv-bufsize 4000 decklink:// vlc://quit \ + --sout '#duplicate{dst="transcode{vcodec=h264,vb=6000,acodec=mp4a,aenc=fdkaac,ab=256}:std{access=udp,mux=ts,dst=151.216.125.4:4013}",dst="transcode{height=576,vcodec=h264,vb=2000,acodec=mp4a,aenc=fdkaac,ab=128}:std{access=udp,mux=ts,dst=151.216.125.4:4014}"}' +sleep 1 +done diff --git a/stream/encode/politietno/transcode-duplicate2.sh b/stream/encode/politietno/transcode-duplicate2.sh new file mode 100755 index 0000000..6b85d1d --- /dev/null +++ b/stream/encode/politietno/transcode-duplicate2.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# event signal: +# transcode hd and move to reflector +# mirror signal to encoder2 (kliniskarbeidsflate) and transcode sd -> reflector +while :; do +cvlc -vv --decklink-audio-connection embedded --live-caching 2000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 \ + --sout-x264-preset fast --sout-x264-tune film --sout-transcode-threads 22 --no-sout-x264-interlaced --sout-x264-keyint 50 --sout-x264-lookahead 100 decklink:// vlc://quit \ + --sout '#duplicate{dst="transcode{vcodec=h264,vb=6000,acodec=mp4a,aenc=fdkaac,ab=256}:std{access=udp,mux=ts,dst=151.216.125.4:4013}",dst="std{access=udp,mux=ts,dst=151.216.125.9:4014}"}' +sleep 1 +done diff --git a/stream/encode/politietno/transcode.sh b/stream/encode/politietno/transcode.sh new file mode 100755 index 0000000..a4feda9 --- /dev/null +++ b/stream/encode/politietno/transcode.sh @@ -0,0 +1,6 @@ +#!/bin/sh +cvlc -I dummy -vvvv --decklink-audio-connection embedded --live-caching 2000 --decklink-aspect-ratio 16:9 --decklink-mode hp50 \ + --sout-x264-preset slow --sout-x264-tune film --sout-transcode-threads 23 --no-sout-x264-interlaced \ + --sout-x264-keyint 50 --sout-x264-lookahead 100 --sout-x264-vbv-maxrate 6000 --sout-x264-vbv-bufsize 6000 \ + -v decklink:// vlc://quit \ + --sout '#transcode{vcodec=h264,vb=6000,acodec=mp4a,aenc=fdkaac,ab=256}:std{access=udp,mux=ts,dst=151.216.125.4:4013}' diff --git a/stream/encode/politietno/vid.sh b/stream/encode/politietno/vid.sh new file mode 100755 index 0000000..8c5bcba --- /dev/null +++ b/stream/encode/politietno/vid.sh @@ -0,0 +1,7 @@ +#!/bin/sh +# VLC for box connected to broadcast-equipment Blackmagic/Decklink: Audio and Video from SDI Transcodes HD and sends via UDP to reflector - Marius / Tech:Server +while :; do cvlc -vv --no-decklink-tenbits --decklink-audio-connection embedded --live-caching 1800 --decklink-aspect-ratio 16:9 --decklink-mode hp50 \ + --sout-x264-preset medium --sout-x264-tune film --sout-transcode-threads 15 --no-sout-x264-interlaced --sout-x264-keyint 100 --sout-x264-lookahead 50 --sout-x264-vbv-maxrate 7000 --sout-x264-vbv-bufsize 7000 -v decklink:// vlc://quit \ + --sout '#transcode{vcodec=h264,vb=3000,acodec=mp3,ab=256}:std{access=udp,mux=ts,dst=151.216.125.4:4013}' + sleep 1 +done diff --git a/stream/reflect/count-retrofit.sh b/stream/reflect/count-retrofit.sh new file mode 100755 index 0000000..1ff8c30 --- /dev/null +++ b/stream/reflect/count-retrofit.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +while :; do + date=$(date +"%Y-%m-%d-%H:%M:%S") + #( lsof -n | grep vlc ; ssh root@gaffeltruck.tg12.gathering.org 'lsof -n | grep vlc' ) > /var/log/stream-count/$date + sudo lsof -n | grep vlc > /var/log/stream-count/$date + for PORT in 3013 3014 3015 3016 3017 3018 3019 5013 5015 5019; do + for PROTO in IPv4 IPv6; do + if [ "$PROTO" = "IPv4" ]; then + GREPFOR='151\.216' + else + GREPFOR='2a02:ed02:' + fi + + # 151.216.x.x / 2a02:ed02::/32 -> TG13 + cat /var/log/stream-count/$date | grep EST | egrep $GREPFOR | egrep "(151\.216\..*|2a02:ed02:.*):$PORT->" | cut -d'>' -f2 | sed 's/:[0-9]\+ (ESTABLISHED)//' | sort -u | grep -vEc -e "\[2a02:ed02:|151\.216\." | while read foo; do echo "$date $PORT $PROTO external $foo"; done | tee -a better_datacube.log + cat /var/log/stream-count/$date | grep EST | egrep $GREPFOR | egrep "(151\.216\..*|2a02:ed02:.*):$PORT->" | cut -d'>' -f2 | sed 's/:[0-9]\+ (ESTABLISHED)//' | sort -u | grep -Ec -e "\[2a02:ed02:|151\.216\." | while read foo; do echo "$date $PORT $PROTO internal $foo"; done | tee -a better_datacube.log + done + done + sleep 60 +done; + diff --git a/stream/reflect/count.sh b/stream/reflect/count.sh new file mode 100755 index 0000000..e1fa38c --- /dev/null +++ b/stream/reflect/count.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +while :; do + date=$(date +"%Y-%m-%d-%H:%M:%S") + #( lsof -n | grep vlc ; ssh root@gaffeltruck.tg12.gathering.org 'lsof -n | grep vlc' ) > /var/log/stream-count/$date + sudo lsof -n | grep vlc > /var/log/stream-count/$date + for PORT in 3013 3014 3015 3016 3017 3018 3019 5013 5015 5019; do + for PROTO in IPv4 IPv6; do + if [ "$PROTO" = "IPv4" ]; then + GREPFOR='151\.216' + else + GREPFOR='2a02:ed02:' + fi + + # 151.216.x.x / 2a02:ed02::/32 -> TG13 + cat /var/log/stream-count/$date | grep EST | egrep $GREPFOR | egrep "(151\.216\..*|2a02:ed02:.*):$PORT->" | cut -d'>' -f2 | sed 's/:[0-9]\+ (ESTABLISHED)//' | sort -u | grep -vEc -e "\[2a02:ed02:|151\.216\." | while read foo; do echo "$date $PORT $PROTO external $foo"; done | tee -a count_datacube.log + cat /var/log/stream-count/$date | grep EST | egrep $GREPFOR | egrep "(151\.216\..*|2a02:ed02:.*):$PORT->" | cut -d'>' -f2 | sed 's/:[0-9]\+ (ESTABLISHED)//' | sort -u | grep -Ec -e "\[2a02:ed02:|151\.216\." | while read foo; do echo "$date $PORT $PROTO internal $foo"; done | tee -a count_datacube.log + done + done + sleep 60 +done; + diff --git a/stream/reflect/htb.sh b/stream/reflect/htb.sh new file mode 100755 index 0000000..c6107ea --- /dev/null +++ b/stream/reflect/htb.sh @@ -0,0 +1,79 @@ +#!/bin/bash +it () { + iptables $@ + ip6tables $@ +} + +setup_htb() { + FROM=$1 + TO=$2 + RATEMBIT=$3 + FIFOLIMIT=$(( RATEMBIT * 1048576 / 8 )) # about one second + echo $FROM..$TO ${RATEMBIT}Mbit fifolimit=$FIFOLIMIT >&2 + + for i in $( seq $FROM $TO ); do + # slots need to be in hex, crazy enough + slot=$( printf %x $(( i + 1 )) ) + + # no burst! perfectly even sending at the given rate + echo class add dev eth0 parent 8000: classid 8000:$slot htb rate ${RATEMBIT}Mbit burst 0 mtu 576 + + # every class needs a child qdisc, plug in a plain fifo + # 8000kbit = 512 000 + echo qdisc add dev eth0 parent 8000:$slot handle $slot: bfifo limit $FIFOLIMIT + #echo qdisc add dev eth0 parent 8000:$slot handle $slot: fq_codel limit 1000 + done +} + +ethtool -K eth0 gso off tso off + +# iptables stuff +it -t mangle -F OUTPUT +it -t mangle -A OUTPUT -p tcp -m multiport ! --sport 3013,3014,3015,3016,3017,3018,5013,5015,5016,5018 -j MARK --set-mark 65000 +it -t mangle -A OUTPUT ! -p tcp -j MARK --set-mark 65000 + +( + # reset tc + echo qdisc del dev eth0 root + + # @Sesse Rockj: https://www.google.com/search?q=6000+kbit%2Fsec+*+0.5+seconds+in+byte + # @Sesse ViD: ogsÃ¥ trenger du flere sett med køer, for 2mbit-strømmer burde shapes annerledes enn 5mbit-strømmer :-P + + # root qdisc should be htb + echo qdisc add dev eth0 root handle 8000: htb r2q 100 + + # all non-vlc traffic (fwmark 5) goes into the default class + echo class add dev eth0 parent 8000: classid 8000:1 htb rate 10Gbit burst 8192 mtu 1514 + echo filter add dev eth0 parent 8000: handle 65000 pref 10 fw classid 8000:1 + + # setup_htb 1 799 6 # Main stream hq 3mbps + # setup_htb 800 1000 15 # Fuglecam raw 7-8mbps + # # setup_htb 10000 11999 15 # South raw ?? + # # setup_htb 12000 13999 1 # South transcoded, 500 kbits + # # setup_htb 14000 15999 25 # NOC Fisheye 15mbps ish + # # setup_htb 20000 21999 2 # Flashstrøm 1mbps + + # setup_htb 1 4999 10 # Main stream hq 6mbps + # setup_htb 5000 7999 5 # Main stream sd 2mbit + # setup_htb 8000 9999 15 # Fuglecam raw 7-8mbps + # setup_htb 10000 11999 15 # South raw ?? + # setup_htb 12000 13999 1 # South transcoded, 500 kbits + # setup_htb 14000 15999 25 # NOC Fisheye 15mbps ish + # setup_htb 16000 18999 2 # Flashstrøm fugleberget 1mbps + # setup_htb 19000 21999 2 # Flashstrøm event 1mbps + # setup_htb 22000 24999 2 # Flashstrøm south 1mbps + # setup_htb 25000 27999 2 # Flashstrøm noc 1mbps + setup_htb 1 4999 10 # Main stream hq 6mbps + setup_htb 5000 5999 5 # Main stream sd 2mbit + setup_htb 8000 9999 15 # Fuglecam raw 7-8mbps + setup_htb 10000 11999 15 # South raw ?? + setup_htb 12000 13999 1 # South transcoded, 500 kbits + setup_htb 14000 15999 25 # NOC Fisheye 15mbps ish + setup_htb 16000 18999 2 # Flashstrøm fugleberget 1mbps + setup_htb 19000 21999 2 # Flashstrøm event 1mbps + setup_htb 22000 24999 2 # Flashstrøm south 1mbps + setup_htb 25000 25999 2 # Flashstrøm noc 1mbps + + # decide between the classes by mark + echo filter add dev eth0 parent 8000: handle 2 pref 20 flow map key mark baseclass 8000:2 +) | tc -b diff --git a/stream/reflect/old/reflectsouth.sh b/stream/reflect/old/reflectsouth.sh new file mode 100755 index 0000000..39504e5 --- /dev/null +++ b/stream/reflect/old/reflectsouth.sh @@ -0,0 +1,5 @@ +#!/bin/sh +while :; do +vlc --intf dummy -v http://pannekake.samfundet.no:9094 vlc://quit --sout '#duplicate{dst=std{access=http,mux=ts,dst=:3014},dst=std{access=udp,mux=ts,dst=233.191.12.2:2014}' --intf dummy --ttl 20 + sleep 1 +done diff --git a/stream/reflect/old/reflectsouth720p.sh b/stream/reflect/old/reflectsouth720p.sh new file mode 100755 index 0000000..355cf8e --- /dev/null +++ b/stream/reflect/old/reflectsouth720p.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while :; do +cvlc --intf dummy -v "#transcode{vcodec=h264,width=320,height=180,acodec=aac,ab=128,vb=500}:rtp{port=4555,sdp=rtsp://151.216.106.2:4555/stream.sdp,mp4aÂ-latm}" +vlc --intf dummy -v http://pannekake.samfundet.no:9093 vlc://quit --sout '#std{access=http,mux=ts,dst=:5014}' --intf dummy --ttl 30 + sleep 1 +done diff --git a/stream/reflect/reflect-event-lol.sh b/stream/reflect/reflect-event-lol.sh new file mode 100755 index 0000000..74dbea6 --- /dev/null +++ b/stream/reflect/reflect-event-lol.sh @@ -0,0 +1,7 @@ +#!/bin/sh +while :; do +sudo cvlc --intf dummy -v --sout-http-mark-start 0 --sout-http-mark-end 4999 udp://@:4013 vlc://quit --sout \ +'#duplicate{dst=std{access=http,mux=ts,dst=[::]:3013}",dst=std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::13]:2013},dst=std{access=livehttp{seglen=5,delsegs=true,numsegs=5,index=/srv/stream.tg13.gathering.org/ios/event.m3u8,index-url=http://stream.tg13.gathering.org/ios/event-########.ts},mux=ts{use-key-frames},dst=/srv/stream.tg13.gathering.org/ios/event-########.ts}}}' \ +--intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/reflect-event-sd.sh b/stream/reflect/reflect-event-sd.sh new file mode 100755 index 0000000..aa38018 --- /dev/null +++ b/stream/reflect/reflect-event-sd.sh @@ -0,0 +1,5 @@ +#!/bin/sh +while :; do +sudo cvlc --intf dummy -v --sout-http-mark-start 5000 --sout-http-mark-end 7999 udp://@:4014 vlc://quit --sout '#duplicate{dst=std{access=http,mux=ts,dst=[::]:3014},dst=std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::14]:2014}' --intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/reflect-event.sh b/stream/reflect/reflect-event.sh new file mode 100755 index 0000000..3ab8c42 --- /dev/null +++ b/stream/reflect/reflect-event.sh @@ -0,0 +1,7 @@ +#!/bin/sh +while :; do +sudo cvlc --intf dummy -v --sout-http-mark-start 0 --sout-http-mark-end 4999 udp://@:4013 vlc://quit --sout \ +'#duplicate{dst=std{access=http,mux=ts,dst=[::]:3013}",dst=std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::13]:2013},dst=std{access=livehttp{seglen=5,delsegs=true,numsegs=5,index=/srv/stream.tg13.gathering.org/ios/stream.m3u8,index-url=http://stream.tg13.gathering.org/ios/stream-########.ts},mux=ts{use-key-frames},dst=/srv/stream.tg13.gathering.org/ios/stream-########.ts}}}' \ +--intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/reflect-fugle-flash.sh b/stream/reflect/reflect-fugle-flash.sh new file mode 100755 index 0000000..5de38bb --- /dev/null +++ b/stream/reflect/reflect-fugle-flash.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while :; do +sudo cvlc -vv --sout-http-mark-start 16000 --sout-http-mark-end 18999 --network-caching 3000 --sout-x264-preset fast --sout-transcode-threads 10 --sout-x264-tune film --no-sout-x264-interlaced --sout-x264-lookahead 50 --sout-x264-vbv-maxrate 800 --sout-x264-vbv-bufsize 800 --sout-x264-keyint 50 -v udp://@:4020 vlc://quit \ +--sout '#std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=[::]:5015/stream.flv}' + sleep 1 +done diff --git a/stream/reflect/reflect-fuglecam.sh b/stream/reflect/reflect-fuglecam.sh new file mode 100755 index 0000000..c9a8917 --- /dev/null +++ b/stream/reflect/reflect-fuglecam.sh @@ -0,0 +1,5 @@ +#!/bin/bash +while :; do +sudo vlc -vvv --intf dummy -v --sout-http-mark-start 8000 --sout-http-mark-end 9999 udp://@:4015 vlc://quit --sout '#duplicate{dst=std{access=http,mux=ts,dst=[::]:3015},dst=std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::15]:2015}' --intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/reflect-nicfisheye-flash.sh b/stream/reflect/reflect-nicfisheye-flash.sh new file mode 100755 index 0000000..dd4da84 --- /dev/null +++ b/stream/reflect/reflect-nicfisheye-flash.sh @@ -0,0 +1,5 @@ +#!/bin/bash +while :; do +sudo vlc -vvv --intf dummy -v --sout-http-mark-start 25000 --sout-http-mark-end 27999 udp://@:4018 vlc://quit --sout '#duplicate{dst=std{access=http,mux=ts,dst=[::]:3018},dst=std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::18]:2018}' --intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/reflect-noc-transcodes.sh b/stream/reflect/reflect-noc-transcodes.sh new file mode 100755 index 0000000..3a1fe4e --- /dev/null +++ b/stream/reflect/reflect-noc-transcodes.sh @@ -0,0 +1,5 @@ +#!/bin/sh +while :; do +sudo cvlc -vvv --intf dummy -v --sout-http-mark-start 25000 --sout-http-mark-end 27999 udp://@:4019 vlc://quit --sout '#duplicate{dst="std{access=http{mime=video/x-flv},dst=[::]:5019/stream.flv}",dst="std{access=http,mux=ts,dst=[::]:3019}",dst="std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::19]:2019}"}' --intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/reflect-nocfisheye.sh b/stream/reflect/reflect-nocfisheye.sh new file mode 100755 index 0000000..6a003f4 --- /dev/null +++ b/stream/reflect/reflect-nocfisheye.sh @@ -0,0 +1,5 @@ +#!/bin/sh +while :; do +sudo cvlc -vvv --intf dummy -v --sout-http-mark-start 14000 --sout-http-mark-end 15999 --network-caching 2000 rtsp://151.216.124.79/live.sdp vlc://quit --sout '#duplicate{dst=std{access=http,mux=ts,dst=[::]:3018},dst=std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::18]:2018}' --intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/reflect-south-raw.sh b/stream/reflect/reflect-south-raw.sh new file mode 100755 index 0000000..720e94c --- /dev/null +++ b/stream/reflect/reflect-south-raw.sh @@ -0,0 +1,5 @@ +#!/bin/sh +while :; do +sudo cvlc -vvv --intf dummy -v --sout-http-mark-start 10000 --sout-http-mark-end 11999 udp://@151.216.125.4:4016 vlc://quit --sout '#duplicate{dst=std{access=http,mux=ts,dst=[::]:3016},dst=std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::16]:2016}' --intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/reflect-south-transcode.sh b/stream/reflect/reflect-south-transcode.sh new file mode 100755 index 0000000..65798dc --- /dev/null +++ b/stream/reflect/reflect-south-transcode.sh @@ -0,0 +1,5 @@ +#!/bin/sh +while :; do +vlc -vvv --intf dummy -v --sout-http-mark-start 12000 --sout-http-mark-end 13999 udp://@:4017 vlc://quit --sout '#duplicate{dst=std{access=http,mux=ts,dst=[::]:3017},dst=std{access=udp,mux=ts,dst=[ff7e:a40:2a02:ed02:ffff::17]:2017}' --intf dummy --ttl 60 + sleep 1 +done diff --git a/stream/reflect/transcode-event-flash.sh b/stream/reflect/transcode-event-flash.sh new file mode 100755 index 0000000..34f546f --- /dev/null +++ b/stream/reflect/transcode-event-flash.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while :; do +sudo cvlc -vv --sout-http-mark-start 19000 --sout-http-mark-end 21999 --network-caching 5000 --sout-x264-preset fast --sout-transcode-threads 10 --sout-x264-tune film --no-sout-x264-interlaced --sout-x264-lookahead 50 --sout-x264-vbv-maxrate 800 --sout-x264-vbv-bufsize 800 --sout-x264-keyint 50 -v http://stream.tg13.gathering.org:3013 vlc://quit \ +--sout '#transcode{height=480,fps=25,vcodec=h264,vb=800,acodec=aac,ab=128}:std{access=http{mime=video/x-flv},dst=[::]:5013/stream.flv}' + sleep 1 +done diff --git a/stream/reflect/transcode-fugle-flash.sh b/stream/reflect/transcode-fugle-flash.sh new file mode 100755 index 0000000..110b8b8 --- /dev/null +++ b/stream/reflect/transcode-fugle-flash.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while :; do +sudo cvlc -vv --sout-http-mark-start 16000 --sout-http-mark-end 18999 --network-caching 3000 --sout-x264-preset fast --sout-transcode-threads 10 --sout-x264-tune film --no-sout-x264-interlaced --sout-x264-lookahead 50 --sout-x264-vbv-maxrate 800 --sout-x264-vbv-bufsize 800 --sout-x264-keyint 50 -v http://stream.tg13.gathering.org:3015 vlc://quit \ +--sout '#transcode{height=480,fps=25,vcodec=h264,vb=800,acodec=aac,ab=128,deinterlace}:std{access=http{mime=video/x-flv},dst=[::]:5015/stream.flv}' + sleep 1 +done diff --git a/stream/reflect/transcode-nocfisheye-flash.sh b/stream/reflect/transcode-nocfisheye-flash.sh new file mode 100755 index 0000000..19f89ad --- /dev/null +++ b/stream/reflect/transcode-nocfisheye-flash.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while :; do +sudo cvlc -vv --sout-http-mark-start 25000 --sout-http-mark-end 27999 --network-caching 5000 --sout-x264-preset fast --sout-transcode-threads 10 --sout-x264-tune film --no-sout-x264-interlaced --sout-x264-lookahead 50 --sout-x264-vbv-maxrate 800 --sout-x264-vbv-bufsize 800 --sout-x264-keyint 50 -v http://stream.tg13.gathering.org:3018 vlc://quit \ +--sout '#transcode{height=480,fps=25,vcodec=h264,vb=800,acodec=aac,ab=128}:std{access=http{mime=video/x-flv},dst=[::]:5018/stream.flv}' + sleep 1 +done diff --git a/stream/reflect/transcode-south-flash.sh b/stream/reflect/transcode-south-flash.sh new file mode 100755 index 0000000..6bf2cb8 --- /dev/null +++ b/stream/reflect/transcode-south-flash.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while :; do +sudo cvlc -vv --sout-http-mark-start 22000 --sout-http-mark-end 24999 --network-caching 5000 --sout-x264-preset fast --sout-transcode-threads 10 --sout-x264-tune film --no-sout-x264-interlaced --sout-x264-lookahead 50 --sout-x264-vbv-maxrate 800 --sout-x264-vbv-bufsize 800 --sout-x264-keyint 50 -v http://stream.tg13.gathering.org:3016 vlc://quit \ +--sout '#transcode{height=480,fps=25,vcodec=h264,vb=800,acodec=aac,ab=128}:std{access=http{mime=video/x-flv},dst=[::]:5016/stream.flv}' + sleep 1 +done diff --git a/stream/reflect/usage.txt b/stream/reflect/usage.txt new file mode 100644 index 0000000..8b90bee --- /dev/null +++ b/stream/reflect/usage.txt @@ -0,0 +1,3 @@ +event-sd - ./reflect-event-sd.sh +event - ./reflect-event-lol.sh +event-flash - ./transcode-event-flash.sh diff --git a/stream/transcode/count.sh b/stream/transcode/count.sh new file mode 100755 index 0000000..22f6aa1 --- /dev/null +++ b/stream/transcode/count.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +while :; do + date=$(date +"%Y-%m-%d-%H:%M:%S") + ( lsof -n | grep vlc ; ssh root@gaffeltruck.tg12.gathering.org 'lsof -n | grep vlc' ) > /var/log/stream-count/$date + for PORT in 3013 5013 3014 5014 3015; do + for PROTO in IPv4 IPv6; do + # 176.110.x.x / 2a01:798:76a:125:: -> TG12 + # 176.31.230.19 / 2001:41d0:2:f700::2 -> OVH box + cat /var/log/stream-count/$date | grep EST | egrep $PROTO | egrep "(176\.31\.230\.19|2001:41d0:2:f700::.*):$PORT->" | cut -d'>' -f2 | sed 's/:[0-9]\+ (ESTABLISHED)//' | sort -u | grep -vEc 'fisk' | while read foo; do echo "$date $PORT $PROTO foreign $foo"; done | tee -a count_datacube.log + cat /var/log/stream-count/$date | grep EST | egrep $PROTO | egrep "(176\.110\..*|2a01:798:76a:125::.*):$PORT->" | cut -d'>' -f2 | sed 's/:[0-9]\+ (ESTABLISHED)//' | sort -u | grep -vEc -e "\[2a01:798:76a:|176\.110\." | while read foo; do echo "$date $PORT $PROTO external $foo"; done | tee -a count_datacube.log + cat /var/log/stream-count/$date | grep EST | egrep $PROTO | egrep "(176\.110\..*|2a01:798:76a:125::.*):$PORT->" | cut -d'>' -f2 | sed 's/:[0-9]\+ (ESTABLISHED)//' | sort -u | grep -Ec -e "\[2a01:798:76a:|176\.110\." | while read foo; do echo "$date $PORT $PROTO internal $foo"; done | tee -a count_datacube.log + done + done + sleep 60 +done; + diff --git a/stream/transcode/flash.sh b/stream/transcode/flash.sh new file mode 100755 index 0000000..3c42a8c --- /dev/null +++ b/stream/transcode/flash.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# udp://@:5013 +while :; do +vlc --intf dummy -vvv http://vivace.tg12.gathering.org:5013/stream.flv vlc://quit --network-caching 2000 --sout-mux-caching 3000 --sout "#std{access=http{mime=video/x-flv},dst=:5013/stream.flv}" + sleep 1 +done diff --git a/stream/transcode/flashtest.sh b/stream/transcode/flashtest.sh new file mode 100755 index 0000000..83ea48d --- /dev/null +++ b/stream/transcode/flashtest.sh @@ -0,0 +1,5 @@ +#!/bin/sh +while :; do + vlc --intf dummy -vvv http://stream.tg12.gathering.org:3013 vlc://quit --udp-caching 1000 --sout-x264-tune film --sout-x264-keyint 25 --sout-x264-preset veryfast --sout "#transcode{width=980,height=550,vcodec=h264,vb=1000,acodec=aac,ab=128}:std{access=http{mime=video/x-flv},dst=:5013/stream.flv}" + sleep 1 +done diff --git a/stream/transcode/ios-sd.sh b/stream/transcode/ios-sd.sh new file mode 100755 index 0000000..28a907a --- /dev/null +++ b/stream/transcode/ios-sd.sh @@ -0,0 +1,7 @@ +#!/bin/sh +while :; do +vlc -I dummy --live-caching 0 http://vivace.tg12.gathering.org:5013/stream.flv --sout-x264-profile baseline --sout-x264-preset veryfast --sout-x264-aud --sout-x264-keyint 30 --sout-x264-ref 1 vlc://quit --sout='#std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=/srv/stream.tg12.gathering.org/ios/sd.m3u8,index-url=http://stream.tg12.gathering.org/ios/sd-########.ts},mux=ts{use-key-frames},dst=/srv/stream.tg12.gathering.org/ios/sd-########.ts}' + sleep 2 +done + +# --sout-x264-level 30 diff --git a/stream/transcode/ios-south.sh b/stream/transcode/ios-south.sh new file mode 100755 index 0000000..ac06968 --- /dev/null +++ b/stream/transcode/ios-south.sh @@ -0,0 +1,7 @@ +#!/bin/sh +while :; do +vlc -I dummy --live-caching 0 udp://@:5114 vlc://quit --sout='#std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=/srv/stream.tg12.gathering.org/ios/south.m3u8,index-url=http://stream.tg12.gathering.org/ios/south-########.ts},mux=ts{use-key-frames},dst=/srv/stream.tg12.gathering.org/ios/south-########.ts}' + sleep 2 +done + +# --sout-x264-level 30 diff --git a/stream/vlc-patches/listen_all.git.patch b/stream/vlc-patches/listen_all.git.patch new file mode 100644 index 0000000..41e1c87 --- /dev/null +++ b/stream/vlc-patches/listen_all.git.patch @@ -0,0 +1,28 @@ +diff --git a/src/network/io.c b/src/network/io.c +index 7cc9764..08a0b56 100644 +--- a/src/network/io.c ++++ b/src/network/io.c +@@ -87,14 +87,15 @@ int net_Socket (vlc_object_t *p_this, int family, int socktype, + + setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &(int){ 1 }, sizeof (int)); + +-#ifdef IPV6_V6ONLY +- /* +- * Accepts only IPv6 connections on IPv6 sockets. +- * If possible, we should open two sockets, but it is not always possible. +- */ +- if (family == AF_INET6) +- setsockopt (fd, IPPROTO_IPV6, IPV6_V6ONLY, &(int){ 1 }, sizeof (int)); +-#endif ++ // sesse fix monday night ++// #ifdef IPV6_V6ONLY ++// /* ++// * Accepts only IPv6 connections on IPv6 sockets. ++// * If possible, we should open two sockets, but it is not always possible. ++// */ ++// if (family == AF_INET6) ++// setsockopt (fd, IPPROTO_IPV6, IPV6_V6ONLY, &(int){ 1 }, sizeof (int)); ++// #endif + + #if defined (WIN32) + # ifndef IPV6_PROTECTION_LEVEL diff --git a/stream/vlc-patches/vlc-git-sesse.patch b/stream/vlc-patches/vlc-git-sesse.patch new file mode 100644 index 0000000..a38b378 --- /dev/null +++ b/stream/vlc-patches/vlc-git-sesse.patch @@ -0,0 +1,131 @@ +diff --git a/modules/access_output/http.c b/modules/access_output/http.c +index 61095f5..18ffc9a 100644 +--- a/modules/access_output/http.c ++++ b/modules/access_output/http.c +@@ -72,9 +72,17 @@ vlc_module_begin () + PASS_TEXT, PASS_LONGTEXT, true ) + add_string( SOUT_CFG_PREFIX "mime", "", + MIME_TEXT, MIME_LONGTEXT, true ) ++ add_integer( SOUT_CFG_PREFIX "mark-start", "", ++ "lol", "Fancy option", -1 ) ++ add_integer( SOUT_CFG_PREFIX "mark-end", "", ++ "rotfl", "Should maybe also be set", -1 ) + set_callbacks( Open, Close ) + vlc_module_end () + ++// globals ++extern vlc_mutex_t mark_lock; ++extern int *mark_used; ++extern int mark_start, mark_end; + + /***************************************************************************** + * Exported prototypes +@@ -178,6 +186,21 @@ static int Open( vlc_object_t *p_this ) + return VLC_EGENERIC; + } + ++ fprintf(stderr, "tjobing\n"); ++ if (mark_used == NULL) { ++ mark_start = var_InheritInteger( p_access, SOUT_CFG_PREFIX "mark-start"); ++ mark_end = var_InheritInteger( p_access, SOUT_CFG_PREFIX "mark-end"); ++ fprintf(stderr, "jabla: %d -> %d\n", mark_start, mark_end); ++ ++ if (mark_start >= 0 && mark_end > mark_start) { ++ vlc_mutex_init(&mark_lock); ++ mark_used = (int *)malloc((mark_end - mark_start) * sizeof(int)); ++ for (int i = 0; i < mark_end - mark_start; ++i) { ++ mark_used[i] = 0; ++ } ++ } ++ } ++ + psz_user = var_GetNonEmptyString( p_access, SOUT_CFG_PREFIX "user" ); + psz_pwd = var_GetNonEmptyString( p_access, SOUT_CFG_PREFIX "pwd" ); + if( p_access->psz_access && !strcmp( p_access->psz_access, "mmsh" ) ) +diff --git a/src/libvlccore.sym b/src/libvlccore.sym +index 25d83c5..335edda 100644 +--- a/src/libvlccore.sym ++++ b/src/libvlccore.sym +@@ -631,3 +631,7 @@ xml_ReaderDelete + xml_ReaderReset + vlc_keycode2str + vlc_str2keycode ++mark_end ++mark_lock ++mark_start ++mark_used +diff --git a/src/network/httpd.c b/src/network/httpd.c +index f76c47c..d7897bb 100644 +--- a/src/network/httpd.c ++++ b/src/network/httpd.c +@@ -67,6 +67,50 @@ + + static void httpd_ClientClean( httpd_client_t *cl ); + ++VLC_API vlc_mutex_t mark_lock; ++VLC_API int *mark_used = NULL; ++VLC_API int mark_start = -1; ++VLC_API int mark_end = -1; ++ ++void mark_socket(int fd) ++{ ++ vlc_mutex_lock(&mark_lock); ++ int best_mark = mark_start; ++ int best_mark_val = mark_used[0]; ++ ++ for (int i = 1; i < mark_end - mark_start; ++i) { ++ if (mark_used[i] < best_mark_val) { ++ best_mark = mark_start + i; ++ best_mark_val = mark_used[i]; ++ } ++ } ++ fprintf( stderr, "PICKED MARK %d WITH OLD USAGE %d\n", best_mark, best_mark_val); ++ if (setsockopt (fd, SOL_SOCKET, SO_MARK, &best_mark, sizeof(best_mark)) == -1) { ++ perror("setsockopt(SO_MARK)"); ++ } else { ++ ++mark_used[best_mark - mark_start]; ++ } ++ vlc_mutex_unlock(&mark_lock); ++} ++ ++void unmark_socket(int fd) ++{ ++ int mark; ++ socklen_t mark_len = sizeof(mark); ++ if (getsockopt (fd, SOL_SOCKET, SO_MARK, &mark, &mark_len) == -1) { ++ perror("getsockopt(SO_MARK)"); ++ return; ++ } ++ if (mark < mark_start || mark >= mark_end) { ++ fprintf("UNKNOWN MARK %d\n", mark); ++ } ++ ++ vlc_mutex_lock(&mark_lock); ++ --mark_used[mark - mark_start]; ++ fprintf(stderr, "UNMARKED MARK %d WITH NEW USAGE %d\n", mark, mark_used[mark - mark_start]); ++ vlc_mutex_unlock(&mark_lock); ++} ++ + /* each host run in his own thread */ + struct httpd_host_t + { +@@ -1295,6 +1339,7 @@ static void httpd_ClientClean( httpd_client_t *cl ) + { + if( cl->p_tls != NULL ) + vlc_tls_SessionDelete( cl->p_tls ); ++ unmark_socket( cl->fd ); + net_Close( cl->fd ); + cl->fd = -1; + } +@@ -2309,6 +2354,11 @@ static void* httpd_HostThread( void *data ) + setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, + &(int){ 1 }, sizeof(int)); + ++ // find a free mark ++ if (mark_used != NULL) { ++ mark_socket(fd); ++ } ++ + vlc_tls_t *p_tls; + + if( host->p_tls != NULL ) diff --git a/stream/vlc-patches/vlc-mark.patch b/stream/vlc-patches/vlc-mark.patch new file mode 100644 index 0000000..877b78c --- /dev/null +++ b/stream/vlc-patches/vlc-mark.patch @@ -0,0 +1,136 @@ +diff -ur vlc-2.0.5/modules/access_output/http.c vlc-2.0.5.patchde/modules/access_output/http.c +--- vlc-2.0.5/modules/access_output/http.c 2011-12-22 11:38:28.000000000 +0100 ++++ vlc-2.0.5.patchde/modules/access_output/http.c 2013-02-07 01:23:10.966721881 +0100 +@@ -89,9 +89,17 @@ + add_bool( SOUT_CFG_PREFIX "bonjour", false, + BONJOUR_TEXT, BONJOUR_LONGTEXT, true); + #endif ++ add_integer( SOUT_CFG_PREFIX "mark-start", "", ++ "lol", "Fancy option", -1 ) ++ add_integer( SOUT_CFG_PREFIX "mark-end", "", ++ "rotfl", "Should maybe also be set", -1 ) + set_callbacks( Open, Close ) + vlc_module_end () + ++// globals ++extern vlc_mutex_t mark_lock; ++extern int *mark_used; ++extern int mark_start, mark_end; + + /***************************************************************************** + * Exported prototypes +@@ -199,6 +207,21 @@ + return VLC_EGENERIC; + } + ++ fprintf(stderr, "tjobing\n"); ++ if (mark_used == NULL) { ++ mark_start = var_InheritInteger( p_access, SOUT_CFG_PREFIX "mark-start"); ++ mark_end = var_InheritInteger( p_access, SOUT_CFG_PREFIX "mark-end"); ++ fprintf(stderr, "jabla: %d -> %d\n", mark_start, mark_end); ++ ++ if (mark_start >= 0 && mark_end > mark_start) { ++ vlc_mutex_init(&mark_lock); ++ mark_used = (int *)malloc((mark_end - mark_start) * sizeof(int)); ++ for (int i = 0; i < mark_end - mark_start; ++i) { ++ mark_used[i] = 0; ++ } ++ } ++ } ++ + psz_user = var_GetNonEmptyString( p_access, SOUT_CFG_PREFIX "user" ); + psz_pwd = var_GetNonEmptyString( p_access, SOUT_CFG_PREFIX "pwd" ); + if( p_access->psz_access && !strcmp( p_access->psz_access, "mmsh" ) ) +diff -ur vlc-2.0.5/src/libvlccore.sym vlc-2.0.5.patchde/src/libvlccore.sym +--- vlc-2.0.5/src/libvlccore.sym 2012-05-15 14:41:19.000000000 +0200 ++++ vlc-2.0.5.patchde/src/libvlccore.sym 2013-02-07 01:16:16.917330547 +0100 +@@ -673,3 +673,7 @@ + xml_ReaderReset + vlc_keycode2str + vlc_str2keycode ++mark_end ++mark_lock ++mark_start ++mark_used +diff -ur vlc-2.0.5/src/network/httpd.c vlc-2.0.5.patchde/src/network/httpd.c +--- vlc-2.0.5/src/network/httpd.c 2012-09-04 00:14:53.000000000 +0200 ++++ vlc-2.0.5.patchde/src/network/httpd.c 2013-02-07 01:35:50.777081814 +0100 +@@ -69,6 +69,50 @@ + + static void httpd_ClientClean( httpd_client_t *cl ); + ++VLC_API vlc_mutex_t mark_lock; ++VLC_API int *mark_used = NULL; ++VLC_API int mark_start = -1; ++VLC_API int mark_end = -1; ++ ++void mark_socket(int fd) ++{ ++ vlc_mutex_lock(&mark_lock); ++ int best_mark = mark_start; ++ int best_mark_val = mark_used[0]; ++ ++ for (int i = 1; i < mark_end - mark_start; ++i) { ++ if (mark_used[i] < best_mark_val) { ++ best_mark = mark_start + i; ++ best_mark_val = mark_used[i]; ++ } ++ } ++ fprintf( stderr, "PICKED MARK %d WITH OLD USAGE %d\n", best_mark, best_mark_val); ++ if (setsockopt (fd, SOL_SOCKET, SO_MARK, &best_mark, sizeof(best_mark)) == -1) { ++ perror("setsockopt(SO_MARK)"); ++ } else { ++ ++mark_used[best_mark - mark_start]; ++ } ++ vlc_mutex_unlock(&mark_lock); ++} ++ ++void unmark_socket(int fd) ++{ ++ int mark; ++ socklen_t mark_len = sizeof(mark); ++ if (getsockopt (fd, SOL_SOCKET, SO_MARK, &mark, &mark_len) == -1) { ++ perror("getsockopt(SO_MARK)"); ++ return; ++ } ++ if (mark < mark_start || mark >= mark_end) { ++ fprintf("UNKNOWN MARK %d\n", mark); ++ } ++ ++ vlc_mutex_lock(&mark_lock); ++ --mark_used[mark - mark_start]; ++ fprintf(stderr, "UNMARKED MARK %d WITH NEW USAGE %d\n", mark, mark_used[mark - mark_start]); ++ vlc_mutex_unlock(&mark_lock); ++} ++ + /* each host run in his own thread */ + struct httpd_host_t + { +@@ -1412,6 +1456,7 @@ + { + if( cl->p_tls != NULL ) + vlc_tls_ServerSessionDelete( cl->p_tls ); ++ unmark_socket( cl->fd ); + net_Close( cl->fd ); + cl->fd = -1; + } +@@ -2461,6 +2506,11 @@ + setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, + &(int){ 1 }, sizeof(int)); + ++ // find a free mark ++ if (mark_used != NULL) { ++ mark_socket(fd); ++ } ++ + vlc_tls_t *p_tls; + + if( host->p_tls != NULL ) +@@ -2471,6 +2521,7 @@ + case -1: + msg_Err( host, "Rejecting TLS connection" ); + /* p_tls is destroyed implicitly */ ++ unmark_socket( fd ); + net_Close( fd ); + fd = -1; + p_tls = NULL; diff --git a/switches.txt b/switches.txt new file mode 100644 index 0000000..efd8454 --- /dev/null +++ b/switches.txt @@ -0,0 +1,128 @@ +151.216.1.0 26 e1-3 x.x.x.x +151.216.1.64 26 e1-4 x.x.x.x +151.216.1.128 26 e3-3 x.x.x.x +151.216.1.192 26 e3-4 x.x.x.x +151.216.2.0 26 e5-3 x.x.x.x +151.216.2.64 26 e5-4 x.x.x.x +151.216.2.128 26 e7-3 x.x.x.x +151.216.2.192 26 e7-4 x.x.x.x +151.216.3.0 26 e9-3 x.x.x.x +151.216.3.64 26 e9-4 x.x.x.x +151.216.3.128 26 e11-1 x.x.x.x +151.216.3.192 26 e11-2 x.x.x.x +151.216.4.0 26 e11-3 x.x.x.x +151.216.4.64 26 e11-4 x.x.x.x +151.216.4.128 26 e13-1 x.x.x.x +151.216.4.192 26 e13-2 x.x.x.x +151.216.5.0 26 e13-3 x.x.x.x +151.216.5.64 26 e13-4 x.x.x.x +151.216.5.128 26 e15-1 x.x.x.x +151.216.5.192 26 e15-2 x.x.x.x +151.216.6.0 26 e15-3 x.x.x.x +151.216.6.64 26 e15-4 x.x.x.x +151.216.6.128 26 e17-1 x.x.x.x +151.216.6.192 26 e17-2 x.x.x.x +151.216.7.0 26 e17-3 x.x.x.x +151.216.7.64 26 e17-4 x.x.x.x +151.216.7.128 26 e19-1 x.x.x.x +151.216.7.192 26 e19-2 x.x.x.x +151.216.8.0 26 e19-3 x.x.x.x +151.216.8.64 26 e19-4 x.x.x.x +151.216.8.128 26 e21-1 x.x.x.x +151.216.8.192 26 e21-2 x.x.x.x +151.216.9.0 26 e21-3 x.x.x.x +151.216.9.64 26 e21-4 x.x.x.x +151.216.9.128 26 e23-1 x.x.x.x +151.216.9.192 26 e23-2 x.x.x.x +151.216.10.0 26 e23-3 x.x.x.x +151.216.10.64 26 e23-4 x.x.x.x +151.216.10.128 26 e25-1 x.x.x.x +151.216.10.192 26 e25-2 x.x.x.x +151.216.11.0 26 e25-3 x.x.x.x +151.216.11.64 26 e25-4 x.x.x.x +151.216.11.128 26 e27-1 x.x.x.x +151.216.11.192 26 e27-2 x.x.x.x +151.216.12.0 26 e29-1 x.x.x.x +151.216.12.64 26 e29-2 x.x.x.x +151.216.12.128 26 e31-1 x.x.x.x +151.216.12.192 26 e31-2 x.x.x.x +151.216.13.0 26 e33-1 x.x.x.x +151.216.13.64 26 e33-2 x.x.x.x +151.216.13.128 26 e35-1 x.x.x.x +151.216.13.192 26 e35-2 x.x.x.x +151.216.14.0 26 e37-1 x.x.x.x +151.216.14.64 26 e37-2 x.x.x.x +151.216.14.128 26 e39-1 x.x.x.x +151.216.14.192 26 e39-2 x.x.x.x +151.216.15.0 26 e41-1 x.x.x.x +151.216.15.64 26 e41-2 x.x.x.x +151.216.15.128 26 e43-1 x.x.x.x +151.216.15.192 26 e43-2 x.x.x.x +151.216.16.0 26 e43-3 x.x.x.x +151.216.16.64 26 e43-4 x.x.x.x +151.216.16.128 26 e45-1 x.x.x.x +151.216.16.192 26 e45-2 x.x.x.x +151.216.17.0 26 e45-3 x.x.x.x +151.216.17.64 26 e45-4 x.x.x.x +151.216.17.128 26 e47-1 x.x.x.x +151.216.17.192 26 e47-2 x.x.x.x +151.216.18.0 26 e47-3 x.x.x.x +151.216.18.64 26 e47-4 x.x.x.x +151.216.18.128 26 e49-1 x.x.x.x +151.216.18.192 26 e49-2 x.x.x.x +151.216.19.0 26 e49-3 x.x.x.x +151.216.19.64 26 e49-4 x.x.x.x +151.216.19.128 26 e51-1 x.x.x.x +151.216.19.192 26 e51-2 x.x.x.x +151.216.20.0 26 e51-3 x.x.x.x +151.216.20.64 26 e51-4 x.x.x.x +151.216.20.128 26 e53-1 x.x.x.x +151.216.20.192 26 e53-2 x.x.x.x +151.216.21.0 26 e53-3 x.x.x.x +151.216.21.64 26 e53-4 x.x.x.x +151.216.21.128 26 e55-1 x.x.x.x +151.216.21.192 26 e55-2 x.x.x.x +151.216.22.0 26 e55-3 x.x.x.x +151.216.22.64 26 e55-4 x.x.x.x +151.216.22.128 26 e57-1 x.x.x.x +151.216.22.192 26 e57-2 x.x.x.x +151.216.23.0 26 e57-3 x.x.x.x +151.216.23.64 26 e57-4 x.x.x.x +151.216.23.128 26 e59-1 x.x.x.x +151.216.23.192 26 e59-2 x.x.x.x +151.216.24.0 26 e59-3 x.x.x.x +151.216.24.64 26 e59-4 x.x.x.x +151.216.24.128 26 e61-1 x.x.x.x +151.216.24.192 26 e61-2 x.x.x.x +151.216.25.0 26 e61-3 x.x.x.x +151.216.25.64 26 e61-4 x.x.x.x +151.216.25.128 26 e63-1 x.x.x.x +151.216.25.192 26 e63-2 x.x.x.x +151.216.26.0 26 e63-3 x.x.x.x +151.216.26.64 26 e63-4 x.x.x.x +151.216.26.128 26 e65-1 x.x.x.x +151.216.26.192 26 e65-2 x.x.x.x +151.216.27.0 26 e65-3 x.x.x.x +151.216.27.64 26 e65-4 x.x.x.x +151.216.27.128 26 e67-1 x.x.x.x +151.216.27.192 26 e67-2 x.x.x.x +151.216.28.0 26 e67-3 x.x.x.x +151.216.28.64 26 e67-4 x.x.x.x +151.216.28.128 26 e69-1 x.x.x.x +151.216.28.192 26 e69-2 x.x.x.x +151.216.29.0 26 e69-3 x.x.x.x +151.216.29.64 26 e69-4 x.x.x.x +151.216.29.128 26 e71-1 x.x.x.x +151.216.29.192 26 e71-2 x.x.x.x +151.216.30.0 26 e71-3 x.x.x.x +151.216.30.64 26 e71-4 x.x.x.x +151.216.30.128 26 e73-1 x.x.x.x +151.216.30.192 26 e73-2 x.x.x.x +151.216.31.0 26 e73-3 x.x.x.x +151.216.31.64 26 e73-4 x.x.x.x +151.216.31.128 26 e75-1 x.x.x.x +151.216.31.192 26 e75-2 x.x.x.x +151.216.32.0 26 e75-3 x.x.x.x +151.216.32.64 26 e75-4 x.x.x.x +151.216.32.128 26 e77-1 x.x.x.x +151.216.32.192 26 e77-2 x.x.x.x diff --git a/switches.txt.crew b/switches.txt.crew new file mode 100644 index 0000000..c31afeb --- /dev/null +++ b/switches.txt.crew @@ -0,0 +1,6 @@ +151.216.46.0 25 crew1 x.x.x.x +151.216.46.128 25 crew2 x.x.x.x +151.216.47.0 25 crew3 x.x.x.x +151.216.47.128 25 crew4 x.x.x.x +151.216.48.0 25 crew5 x.x.x.x +151.216.48.128 25 crew6 x.x.x.x diff --git a/tools/README b/tools/README new file mode 100644 index 0000000..2276ebb --- /dev/null +++ b/tools/README @@ -0,0 +1,139 @@ +Outline: +------------------------------------------------------------------ + + 1 Install OS on three boxes + 2 Bootstrap: + * Install tgmanage on one, the bootstrap (tools, include, netlist.txt) + * Install dependencies on bootstrap + * Push SSH key key to the other boxes (init-sshkeys.sh) + * Update configuration + * Update netlist.txt + * Bootstrap the primary and secondary (make-base-requires.sh) + 3 Create new networks/scopes/zones Update during the party using + update-baseservice.sh from bootstrap + 4 Apply changes usling tools/apply-baseupdate.sh (reloads bind, restarts dhcpd) + 5 Changes to generated scopes, pools, zones are done on the primary, in the files + 6 If tools need patching, patch on boot and push with update-tools.sh + 7 Before wednesday evening, the infra.tgXX.gathering.org zone should be updated! + * Only use make-base-requires.sh during bootstrap !!!!!!! :P + +Detailed instructions and description: +================================================================== + +1: Install Debian +------------------------------------------------------------------ + +The following three hosts/servers are normally used: + * A 'bootstrap' box. This server will be used to configure + the first TG-servers, and may end up hosting the switch-config and NMS. + * The server to use as Primary DNS and DHCP server + * The server to use as Secondary DNS and SMTP. +Add the three hosts to /etc/hosts, DNS is not available yet... + +2: Perform bootstrapping. +------------------------------------------------------------------ + +Start by placing the 'tgmanage' directory as '/root/tgmanage' on the bootstrap +box. Change into the 'tgmanage' directory. Next, run +'tools/install-dependencies.sh boot' + + +Edit 'include/config.local.pm' and update for this year's TG. Use +'tools/create-shellconf.pl' to extract configuration from the perl module to +create/update the 'include/tgmanage.cfg.sh' configuration script. + + +The tools make extensive use of key-based SSH logins, to make this work +seamlessly, run 'tools/init-sshkeys.sh' to create an RSA priv/pub keypair, and +push the pubkey to the Primary and Secondary boxes. + + +The Network-list is _not_ automagically updated. A copy of last year's +netlist.txt should be included in the goodiebag. With that as a base, update +for this year's address plan. Remember that client nets in the hall are +supposed to be pulled from switches.txt ... +The rest of the information needed should be pulled from techwiki.g.o The +format of the file is: one net per line, lines starting with # are skipped, +format of each net-line is: +176.110.124.0 24 noc +# <network adress> <prefixlen> <network-name> + + +Run 'tools/make-base-requires.sh'. This script will log in on the Primary and +Secondary boxes, install dependencies and the BIND/DHCP packages, create all +needed directories, create the initial configuration files. + +A short listing of the tasks of scripts called by make-base-requires: +tools/install-dependencies.sh Installs needed base software to boot, primary and secondary +tools/make-named.pl Basic BIND setup (creates named.conf et.al) +tools/make-first-zones.pl Creates static zone-files (tgname, infra, ipv6zone) +tools/make-reverse4-files.pl Creates reverse-zones for IPv4 +tools/make-dhcpd.pl Sets up the base setup for DHCP +NOTE: these scripts are run by tools/make-base-requires.sh, you should not need to +run these individually + +3++: Update during the party using update-baseservice.sh from bootstrap +------------------------------------------------------------------ + +After 'tools/make-base-requires.sh' has been run, further updating should be +managed by the following three files: +tools/update-baseservice.sh Used to add/update bind and DHCP configuration +tools/apply-baseupdate.sh Used to reload bind and restart DHCP +tools/update-tools.sh Used to push changes to the tgmanage toolchain + +This means, after the base setup is completed, updating and managing the +configuration is done by updating netlist.txt and running tools/update-baseservice.sh +from the bootstrap box, or from the NMS box if the toolchain gets moved there during +the party. + +To create a new DHCP scope, add DNS forward and reverse zone for a new network: + + * Add the network to netlist.txt + * Run tools/update-baseservice.sh to generate new .conf and .zone files + * Run tools/apply-baseupdate.sh to load new configuration + +To do changes to DHCP config after the scope .conf file has been created +(read: later in the party), log in to the primary/dhcp server, and make +the changes in the appropriate .conf file .. + +To do DNS changes to the main DNS zone or the infra-zone, make the changes +in the appropriate zone file on the primary DNS server. + +To add DNS records to any other DNS zone (forward or reverse), you have +to use 'nsupdate'. To simplify the process, use tools/generate-dnsrr.pl +Usage on this tool is documented in the "header" of the script... + + +The update prosess is handled by a bunch of "sub-tools", these should typically +not need to be run individually: +tools/make-bind-include.pl Run via update-baseservice, adds new net's to DNS include +tools/make-dhcpd-include.pl Run via update-baseservice, adds new net's to DHCP include +tools/make-missing-conf.pl Run via update-baseservice, adds missing net-conf to BIND/DHCP + + +7: Generation of linknet dns content +------------------------------------------------------------------ + +Format for linknet.txt is documented in make-linknet-hosts.pl + +Generate IPv4 infra hostnames and IP address assignments +by using tools/generate-dnsrr.pl + +> cat linknet.txt | tools/make-linknet-hosts.pl | tools/generate-dnsrr.pl --domain infra.tgXX.gathering.org +Output from this shuld go in infra.tgXX.gathering.org.zone on primary + +> cat linknet.txt | tools/make-linknet-hosts.pl | tools/generate-dnsrr.pl --domain infra.tgXX.gathering.org -ns -rev +Output from this should go as input to nsupdate, see doc in generate-dnsrr.pl + + +Other stuff.... +------------------------------------------------------------------ +Files that are not used? Need to revisit these files... + +>tools/make-switch-placements.pl + +Updates positions for switches in NMS map (png) + +> tools/make-switches.pl +> tools/fetch-portlist.sh + diff --git a/tools/TODO b/tools/TODO new file mode 100644 index 0000000..70898a3 --- /dev/null +++ b/tools/TODO @@ -0,0 +1,26 @@ +make-first-zones.pl does not add AAAA records for NS'es (pri/sec) +None of the tools add IPv4 reverse for pri/sec +nsupdate log for adding reverse after building base-requires: + + nsupdate -k Kdhcp_updater.+157+57267.key + server 176.110.126.2 + prereq nxdomain 2.126.110.176.in-addr.arpa. + update add 2.126.110.176.in-addr.arpa. 3600 in ptr abscess.tg12.gathering.org. + send + prereq nxdomain 2.125.110.176.in-addr.arpa. + update add 2.125.110.176.in-addr.arpa. 3600 in ptr acetat.tg12.gathering.org. + send + prereq nxdomain 3.125.110.176.in-addr.arpa. + update add 3.125.110.176.in-addr.arpa. 3600 in ptr abc.tg12.gathering.org. + send + +Another handy dump, not a TODO-item, just a reminder: + + prereq nxdomain 3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.1.0.a.6.7.0.8.9.7.0.1.0.a.2.ip6.arpa. + update add 3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.1.0.a.6.7.0.8.9.7.0.1.0.a.2.ip6.arpa. 3600 IN PTR abc.tg12.gathering.org. + send + + +Uhm, our $dhcp_server1 = "176.110.126.2"; <- wtf? + +Opps, forgot to asdd CiscoWLC magic to make-dhcpd.pl includes... diff --git a/tools/apply-baseupdate.sh b/tools/apply-baseupdate.sh new file mode 100755 index 0000000..055320c --- /dev/null +++ b/tools/apply-baseupdate.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +source include/tgmanage.cfg.sh +if [ -z ${PRIMARY} ] +then + echo "Not configured!"; + exit 1; +fi; + +ssh -l root ${PRIMARY} "/etc/init.d/isc-dhcp-server restart" +ssh -l root ${PRIMARY} "/usr/sbin/rndc reload" +ssh -l root ${SECONDARY} "/usr/sbin/rndc reload" diff --git a/tools/create-shellconf.pl b/tools/create-shellconf.pl new file mode 100755 index 0000000..8e2582d --- /dev/null +++ b/tools/create-shellconf.pl @@ -0,0 +1,51 @@ +#!/usr/bin/perl -I /root/tgmanage +use strict; + +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} + +my $bind_base = "/etc/bind/"; +my $dhcpd_base = "/etc/dhcp/"; + +my $shellconf_file = "include/tgmanage.cfg.sh"; + +my $tgname = $nms::config::tgname; + +my $pri_a = $nms::config::pri_a; +my $pri_ptr = $nms::config::pri_ptr; +my $pri_v6 = $nms::config::pri_v6; + +my $sec_a = $nms::config::sec_a; +my $sec_ptr = $nms::config::sec_ptr; +my $sec_v6 = $nms::config::sec_v6; + +my $ddns_key = $nms::config::ddns_key; + +my $base_ipv4net = $nms::config::base_ipv4net; +my $base_ipv4prefix = $nms::config::base_ipv4prefix; + +my $base_ipv6net = $nms::config::base_ipv6net; +my $base_ipv6prefix = $nms::config::base_ipv6prefix; + +open CFG, ">" . $shellconf_file or die ($! . " " . $shellconf_file ); + +print CFG "# This file is autogenerated by tools/create-shellconf.pl,\n"; +print CFG "# using data from nms::config.\n"; +print CFG "#\n"; +print CFG "# Do you need new common/configuration variables?\n"; +print CFG "# Add/update include/config.local.pm and tools/create-shellconf.pl\n\n"; +print CFG "PRIMARY=\"$pri_a.$tgname.gathering.org\"\n"; +print CFG "SECONDARY=\"$sec_a.$tgname.gathering.org\"\n"; +print CFG "TGNAME=\"$tgname\"\n\n"; +print CFG "PRI_PTR=\"$pri_ptr\"\n"; +print CFG "SEC_PTR=\"$sec_ptr\"\n\n"; +print CFG "DDNS_KEY=\"$ddns_key\"\n\n"; +print CFG "BASEV4=\"$base_ipv4net\"\n"; +print CFG "PREFIXV4=\"$base_ipv4prefix\"\n"; +print CFG "BASEV6=\"$base_ipv6net\"\n"; +print CFG "PREFIXV6=\"$base_ipv6prefix\"\n"; +close CFG; diff --git a/tools/dhcp6-nets.pl b/tools/dhcp6-nets.pl new file mode 100755 index 0000000..3866ac5 --- /dev/null +++ b/tools/dhcp6-nets.pl @@ -0,0 +1,12 @@ +#!/usr/bin/perl +use strict; +use warnings; + +while(<STDIN>){ + my ($row, $v6) = split; + $v6 =~ s/::1/::/; + + print "subnet6 $v6 {\n"; + print "\toption domain-name \"$row.tg13.gathering.org\";\n"; + print "}\n\n"; +} diff --git a/tools/dlink-ng2dns.pl b/tools/dlink-ng2dns.pl new file mode 100755 index 0000000..2b6f965 --- /dev/null +++ b/tools/dlink-ng2dns.pl @@ -0,0 +1,77 @@ +#!/usr/bin/perl +use strict; + +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} + +use Net::IP; +use Getopt::Long; + +my ($delete); + +if (@ARGV > 0) { + GetOptions( + 'del|delete' => \$delete, + ) +} + +print "server $nms::config::pri_ptr\n"; + +while (<STDIN>) +{ + my ( $sysname, $distro, $ponum, $cidr, $ipaddr, $gwaddr, $v6addr, @ports ) = split; + + + my $ip = new Net::IP($ipaddr); + + my $v4gw = new Net::IP($gwaddr); + + ( my $gw6 = $v6addr ) =~ s/\/.*//; + my $v6gw = new Net::IP($gw6); + + my $fqdn = $sysname . "." . $nms::config::tgname . ".gathering.org."; + my $sw_fqdn = $sysname . "-sw." . $fqdn; + my $text_info = $distro . " - " . join(' + ', @ports) . ", po" . $ponum . ", gwaddr " . $gwaddr; + + # A-record to the switch + print "prereq nxdomain " . $sw_fqdn . "\n" unless $delete; + print "update add " . $sw_fqdn . " \t 3600 IN A \t " . $ipaddr . "\n" unless $delete; + print "update delete " . $sw_fqdn . " \t IN A\n" if $delete; + print "send\n"; + + # PTR to the switch + print "prereq nxdomain " . $ip->reverse_ip() . "\n" unless $delete; + print "update add " . $ip->reverse_ip() . " \t 3600 IN PTR \t " . $sw_fqdn . "\n" unless $delete; + print "update delete " . $ip->reverse_ip() . " \t IN PTR\n" if $delete; + print "send\n"; + + # TXT-record with details + print "update delete " . $sw_fqdn . " IN TXT\n" unless $delete; + print "update add " . $sw_fqdn . " \t 3600 IN TXT \t \"" . $text_info . "\"\n" unless $delete; + print "update delete " . $sw_fqdn . " \t IN TXT\n" if $delete; + print "send\n"; + + # A and AAAA-record to the gateway/router + print "prereq nxrrset gw." . $fqdn . " IN A\n" unless $delete; + print "update add gw." . $fqdn . " \t 3600 IN A \t " . $gwaddr . "\n" unless $delete; + print "update delete gw." . $fqdn . " \t IN A\n" if $delete; + print "send\n"; + print "prereq nxrrset gw." . $fqdn . " IN AAAA\n" unless $delete; + print "update add gw." . $fqdn . " \t 3600 IN AAAA \t " . $gw6 . "\n" unless $delete; + print "update delete gw." . $fqdn . " \t IN AAAA\n" if $delete; + print "send\n"; + + # PTR to the gateway/router + print "prereq nxdomain " . $v4gw->reverse_ip() . "\n" unless $delete; + print "update add " . $v4gw->reverse_ip() . " \t 3600 IN PTR \t gw." . $fqdn . "\n" unless $delete; + print "update delete " . $v4gw->reverse_ip() . " \t IN PTR\n" if $delete; + print "send\n"; + print "prereq nxdomain " . $v6gw->reverse_ip() . "\n" unless $delete; + print "update add " . $v6gw->reverse_ip() . " \t 3600 IN PTR \t gw." . $fqdn . "\n" unless $delete; + print "update delete " . $v6gw->reverse_ip() . " \t IN PTR\n" if $delete; + print "send\n"; +} diff --git a/tools/fetch-debinstall.sh b/tools/fetch-debinstall.sh new file mode 100755 index 0000000..069e39a --- /dev/null +++ b/tools/fetch-debinstall.sh @@ -0,0 +1,17 @@ +#!/bin/bash -xe +INSTALLER_DEST=$1 +DEBINSTROOT=http://ftp.no.debian.org/debian/dists + +mkdir -p ${INSTALLER_DEST}/{squeeze,wheezy}/{amd64,i386} +for DIST in squeeze wheezy +do + for ARCH in i386 amd64; + do + for FILE in initrd.gz linux + do + wget ${DEBINSTROOT}/${DIST}/main/installer-${ARCH}/current/images/netboot/debian-installer/${ARCH}/${FILE} \ + -O ${INSTALLER_DEST}/${DIST}/${ARCH}/${FILE} + done + done +done + diff --git a/tools/fetch-portlist.sh b/tools/fetch-portlist.sh new file mode 100755 index 0000000..94ca41c --- /dev/null +++ b/tools/fetch-portlist.sh @@ -0,0 +1,42 @@ +print_range() { + FIRST=$1 + LAST=$2 + if [ "$1" = "$2" ]; then + echo $FIRST + else + echo $FIRST-$LAST + fi +} + +walk_ports() { + IP=$1 + COMMUNITY=$2 + + FIRST_PORT= + LAST_PORT= + + for PORT in $( snmpwalk -Os -m IF-MIB -v 2c -c $COMMUNITY $IP ifDescr 2>/dev/null | grep -E 'GigE|Ethernet' | cut -d. -f2 | cut -d" " -f1 ); do + if ! snmpget -m IF-MIB -v 2c -c $COMMUNITY $IP ifHCInOctets.$PORT 2>/dev/null | grep -q 'No Such Instance'; then + if [ "$LAST_PORT" ] && [ `expr $LAST_PORT + 1` = $PORT ]; then + LAST_PORT=$PORT + else + if [ "$LAST_PORT" ]; then + print_range $FIRST_PORT $LAST_PORT + fi + FIRST_PORT=$PORT + LAST_PORT=$PORT + fi + fi + done + + print_range $FIRST_PORT $LAST_PORT +} + +COMMUNITY=$1 +IP=$2 +SYSNAME=$3 +PORTS=$( walk_ports $IP $COMMUNITY | tr "\n" "," | sed 's/,$//' ) + +echo "insert into switchtypes values ('$SYSNAME','$PORTS',true);" +echo "insert into switches values (default,'$IP','$SYSNAME','$SYSNAME',null,default, default, '1 minute', '$COMMUNITY');" + diff --git a/tools/generate-dnsrr.pl b/tools/generate-dnsrr.pl new file mode 100755 index 0000000..789f268 --- /dev/null +++ b/tools/generate-dnsrr.pl @@ -0,0 +1,147 @@ +#!/usr/bin/perl -I /root/tgmanage +# +# USAGE: +# Generate BIND Zone-file data based on the file hosts-to-add.txt +# cat hosts-to-add.txt | tools/generate-dnsrr.pl +# +# Generate input data for nsupdate, to add FORWARD records based on hosts-to-add.txt +# cat hosts-to-add.txt | tools/generate-dnsrr.pl --domain foo.tgXX.gathering.org -ns +# +# Generate input data for nsupdate, to add REVERSE records based on hosts-to-add.txt +# cat hosts-to-add.txt | tools/generate-dnsrr.pl --domain foo.tgXX.gathering.org -ns -rev +# +# Generate input data for nsupdate, to DELETE forward records based on hosts-to-add.txt +# cat hosts-to-DELETE.txt | tools/generate-dnsrr.pl --domain foo.tgXX.gathering.org -ns -del +# +# Generate input data for nsupdate, to DELETE reverse records based on hosts-to-add.txt +# cat hosts-to-DELETE.txt | tools/generate-dnsrr.pl --domain foo.tgXX.gathering.org -ns -rev -del +# +# Command-syntax to send this to nsupdate, running it on the DNS server: +# cat file.txt | tools/generate-dnsrr.pl --dom foo -ns | ssh $dnsserver "nsupdate -k /etc/bind/Kdhcp_updater.+157+XXXXX" +# +# Format of input: +# hostname ipv4-adress ipv6-address +# If any of ipv4-address or ipv6-address are NOT set for the host, specify "nope" +# Lines starting with # will (should) be skipped (comments) +# +# Example: +# +# host1 192.168.0.1 2001:db8:f00::1 +# host2 nope 2001:db8:f00::2 +# host3 192.168.0.3 nope +# # comment, to be ignored. +# host4 192.168.0.4 + +use strict; +use warnings; +use lib '..'; +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} +use Net::IP; +use Getopt::Long; + +my ($delete, $auto, $nsupdate, $reverse, $domain); + +if (@ARGV > 0) { + GetOptions( + 'del|delete' => \$delete, + 'a|auto' => \$auto, + 'ns|nsupdate' => \$nsupdate, + 'r|reverse' => \$reverse, + 'domain=s' => \$domain + ) +} + +if ($nsupdate || $reverse){ + unless (defined($domain)){ + print "Missing domain.\n"; + exit 1 unless defined($domain); + } +} + +$domain = "." . $domain if defined($domain); + +print "server $nms::config::pri_ptr\n" if ($nsupdate || $reverse); + +while (<STDIN>) { + next if /^(#|\s+$)/; # skip if comment, or blank line + + my ($hostname, $ipv4, $ipv6) = split; + $hostname = lc($hostname); + + unless ($ipv6){ + if ($auto){ + # Get IPv6-address based on IPv4-address + + my ($first, $second, $third, $fourth) = split('\.', $ipv4); + $ipv6 = $nms::config::base_ipv6net . $third . "::" . $fourth; + } + } + + if ($reverse){ + # print ptr + print_ptr($hostname, $ipv4, $ipv6); + } else { + # print forward + print_fwd($hostname, $ipv4, $ipv6); + } +} + +sub print_ptr{ + my ($hostname, $ipv4, $ipv6) = @_; + + # IPv4 + unless ( $ipv4 eq "nope" ) { + my $v4 = new Net::IP($ipv4); + + print "prereq nxdomain " . $v4->reverse_ip() . "\n" unless $delete; + print "update add " . $v4->reverse_ip() . " 3600 IN PTR " . $hostname . $domain .".\n" unless $delete; + print "update delete " . $v4->reverse_ip() . " IN PTR\n" if $delete; + print "send\n"; + } + + # IPv6 + if (( not ($ipv6 eq "nope") ) && ( $ipv6 )) { + my $v6 = new Net::IP($ipv6); + + print "prereq nxdomain " . $v6->reverse_ip() . "\n" unless $delete; + print "update add " . $v6->reverse_ip() . " 3600 IN PTR " . $hostname . $domain . ".\n" unless $delete; + print "update delete " . $v6->reverse_ip() . " IN PTR\n" if $delete; + print "send\n"; + } +} + +sub print_fwd{ + my ($hostname, $ipv4, $ipv6) = @_; + + if ($nsupdate){ + + unless ( $ipv4 eq "nope" ) { + # IPv4 + print "prereq nxrrset " . $hostname . $domain . " IN A\n" unless $delete; + print "update add " . $hostname . $domain . " 3600 IN A $ipv4\n" unless $delete; + print "update delete " . $hostname . $domain . " IN A\n" if $delete; + print "send\n"; + } + if (( not ($ipv6 eq "nope") ) && ( $ipv6 )) { + # IPv6 + print "prereq nxrrset " . $hostname . $domain . " IN AAAA\n" unless $delete; + print "update add " . $hostname . $domain . " 3600 IN AAAA $ipv6\n" unless $delete; + print "update delete " . $hostname . $domain . " IN AAAA\n" if $delete; + print "send\n"; + } + } else { + # IPv4 + unless ( $ipv4 eq "nope" ) { + printf ("%-24s%s\t%s\t%s\n", $hostname, "IN", "A", $ipv4); + } + # IPv6 + if (( not ($ipv6 eq "nope") ) && ( $ipv6 )) { + printf ("%-24s%s\t%s\t%s\n", $hostname, "IN", "AAAA", $ipv6) if ($ipv6); + } + } +} diff --git a/tools/init-sshkeys.sh b/tools/init-sshkeys.sh new file mode 100755 index 0000000..9427bad --- /dev/null +++ b/tools/init-sshkeys.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +source include/tgmanage.cfg.sh +if [ -z ${PRIMARY} ] +then + echo "Not configured!"; + exit 1; +fi; + +ssh-keygen -P '' -f ~/.ssh/id_rsa -b 2048 +ssh-copy-id root@${PRIMARY} +ssh-copy-id root@${SECONDARY} diff --git a/tools/install-dependencies.sh b/tools/install-dependencies.sh new file mode 100755 index 0000000..bf68134 --- /dev/null +++ b/tools/install-dependencies.sh @@ -0,0 +1,53 @@ +#!/bin/bash -e + +if [ "$1" != "master" -a "$1" != "slave" -a "$1" != "boot" ]; then + echo "Run as $0 <boot|master|slave>" + exit +fi + +# OK, we know the content of $0 is OK. I prefer sane names. +ROLE=$1; + +# Start by installing common packages. Remember to update +# this when a new common dependency is discovered, plx. +apt-get -y install \ + vim-nox \ + git \ + ntp \ + screen \ + dnsutils \ + build-essential \ + libnet-ip-perl \ + libnetaddr-ip-perl \ + libnet-telnet-cisco-perl \ + libnet-ping-external-perl \ + perl-modules \ + libdbi-perl \ + libdbd-pg-perl \ + libnet-telnet-perl + +if [ "${ROLE}" == "boot" ]; then + # Install-tasks specific for the _bootstrab box_ here + echo "Installing for bootstrap" + apt-get -y install \ + bind9utils +fi + +if [ "${ROLE}" == "master" ]; then + # Install-tasks specific for the _primary_ here + echo "Installing for primary/master" + apt-get -y install \ + isc-dhcp-server \ + bind9utils \ + bind9 +fi + +if [ "${ROLE}" == "slave" ]; then + # Install-tasks specific for the _secondary_ here + echo "Installing for secondary/slave" + apt-get -y install \ + bind9utils \ + bind9 +fi + +echo "Dependency installation for ${ROLE} complete." diff --git a/tools/make-accesspoints.pl b/tools/make-accesspoints.pl new file mode 100755 index 0000000..b84321a --- /dev/null +++ b/tools/make-accesspoints.pl @@ -0,0 +1,24 @@ +#! /usr/bin/perl +use strict; +use warnings; + +while (<>) { + my @arr = split " "; + my $ap = 'ap-'.$arr[0]; + my $core = $arr[1]; + # Trekk fra 1 + $core =~ s/^(distro)(\d+)$/$1.($2-1)/e; + + # Fjerde kabel er aksesspunkt + my $blade; + my $port; + if ($arr[5] =~ /^Gi(\d+)\/(\d+)$/) { + $blade = $1; + $port = $2; + } else { + die "Unknown port: ".$arr[5]; + } + printf "INSERT INTO switches(ip, sysname, switchtype) values(inet '127.0.0.1', '%s', 'ciscoap');\n", $ap; + printf "INSERT INTO uplinks SELECT (SELECT switch FROM switches WHERE sysname = '%s') AS switch, (SELECT switch FROM switches WHERE sysname = '%s') AS coreswitch, %d AS blade, %d AS port;\n", $ap, $core, $blade, $port; + printf "INSERT INTO ap_poll(switch) SELECT switch FROM switches WHERE sysname = '%s';\n", $ap; +} diff --git a/tools/make-base-requires.sh b/tools/make-base-requires.sh new file mode 100755 index 0000000..d19ffd9 --- /dev/null +++ b/tools/make-base-requires.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +set -e + +BASE="/etc"; +if [ "$1" != "" ] +then + BASE=$1 + echo "Using base path ${BASE}" +fi + +source include/tgmanage.cfg.sh +if [ -z ${PRIMARY} ] +then + echo "Not configured!"; + exit 1; +fi; + +tools/update-tools.sh +ssh -l root ${PRIMARY} "~/tgmanage/tools/install-dependencies.sh master" +ssh -l root ${SECONDARY} "~/tgmanage/tools/install-dependencies.sh slave" + +if [ "${BASE}" == "/etc" ]; then + ssh -l root ${PRIMARY} "cp -pR /etc/bind /etc/bind.dist" + ssh -l root ${PRIMARY} "cp -pR /etc/dhcp /etc/dhcp.dist" + ssh -l root ${SECONDARY} "cp -pR /etc/bind /etc/bind.dist" + + set +e + ssh -l root ${PRIMARY} "rm /etc/bind/named.conf" + ssh -l root ${PRIMARY} "rm /etc/dhcp/dhcpd.conf" + ssh -l root ${SECONDARY} "rm /etc/bind/named.conf" + set -e +fi + +ssh -l root ${PRIMARY} "mkdir -p ${BASE}/bind/conf-master/" +ssh -l root ${PRIMARY} "mkdir -p ${BASE}/bind/reverse/" +ssh -l root ${PRIMARY} "mkdir -p ${BASE}/bind/dynamic/" +ssh -l root ${PRIMARY} "mkdir -p ${BASE}/dhcp/conf.d/" +ssh -l root ${PRIMARY} "~/tgmanage/tools/make-named.pl master ${BASE}" +ssh -l root ${PRIMARY} "~/tgmanage/tools/make-dhcpd.pl ${BASE}" +ssh -l root ${PRIMARY} "~/tgmanage/tools/make-first-zones.pl ${BASE}" +ssh -l root ${PRIMARY} "~/tgmanage/tools/make-reverse4-files.pl master ${BASE}" + +ssh -l root ${SECONDARY} "mkdir -p ${BASE}/bind/conf-slave/" +ssh -l root ${SECONDARY} "mkdir -p ${BASE}/bind/slave/" +ssh -l root ${SECONDARY} "~/tgmanage/tools/make-named.pl slave ${BASE}" +ssh -l root ${SECONDARY} "~/tgmanage/tools/make-reverse4-files.pl slave ${BASE}" + +set +e +ssh -l root ${PRIMARY} "chown -R bind.bind ${BASE}/bind" +ssh -l root ${SECONDARY} "chown -R bind.bind ${BASE}/bind" +set -e + +ssh -l root ${PRIMARY} "echo THIS COPY OF TGMANAGE IS MANAGED FROM BOOTSTRAP SERVER > ~/tgmanage/NOTICE" +ssh -l root ${SECONDARY} "echo THIS COPY OF TGMANAGE IS MANAGED FROM BOOTSTRAP SERVER > ~/tgmanage/NOTICE" + +# No point in _not_ running update-baseservice at this point.... +tools/update-baseservice.sh ${BASE} + +# all done. diff --git a/tools/make-bind-include.pl b/tools/make-bind-include.pl new file mode 100755 index 0000000..d688dec --- /dev/null +++ b/tools/make-bind-include.pl @@ -0,0 +1,51 @@ +#!/usr/bin/perl -I /root/tgmanage + +# TODO: Port this to the "master|slave base" parameter syntax! + +use strict; + +unless ( (($#ARGV == 0 ) || ( $#ARGV == 1)) + && (( $ARGV[0] eq "master" ) || ( $ARGV[0] eq "slave" )) ) +{ + print STDERR "Invalid usage!\ncat netnames.txt | $0 <master|slave> [basedir]\n"; + exit 1; +} + +my $role = $ARGV[0]; + +my $base = "/etc"; +$base = $ARGV[1] if $#ARGV == 1; +$base .= "/" if not $base =~ m/\/$/ and not $base eq ""; + +my $bind_base = $base . "bind/"; +my $masterinclude = $bind_base . "named.master-include.conf"; +my $slaveinclude = $bind_base . "named.slave-include.conf"; + +my $glob; +my @configs; + +if ( $role eq "master" ) +{ + $glob = $bind_base . "conf-master/*.conf"; + @configs = glob($glob); + + open CONF, ">" . $masterinclude or die ( $! . " " . $masterinclude); + foreach my $config ( @configs ) + { + print CONF "include \"" . $config . "\";\n"; + } + close CONF; +} + +if ( $role eq "slave" ) +{ + $glob = $bind_base . "conf-slave/*.conf"; + @configs = glob($glob); + + open CONF, ">" . $slaveinclude or die ( $! . " " . $slaveinclude); + foreach my $config ( @configs ) + { + print CONF "include \"" . $config . "\";\n"; + } + close CONF; +} diff --git a/tools/make-dhcpd-include.pl b/tools/make-dhcpd-include.pl new file mode 100755 index 0000000..ded5551 --- /dev/null +++ b/tools/make-dhcpd-include.pl @@ -0,0 +1,18 @@ +#!/usr/bin/perl -I /root/tgmanage +use strict; +my $base = "/etc"; +$base = $ARGV[0] if $#ARGV > -1; +$base .= "/" if not $base =~ m/\/$/ and not $base eq ""; + +my $dhcpd_base = $base . "dhcp/"; +my $includeconfig = $dhcpd_base . "generated-include.conf"; + +my $glob = $dhcpd_base . "conf.d/*.conf"; +my @configs = glob($glob); + +open CONF, ">" . $includeconfig or die ( $! . " " . $includeconfig); +foreach my $config ( @configs ) +{ + print CONF "include \"" . $config . "\";\n"; +} +close CONF; diff --git a/tools/make-dhcpd.pl b/tools/make-dhcpd.pl new file mode 100755 index 0000000..2cf388a --- /dev/null +++ b/tools/make-dhcpd.pl @@ -0,0 +1,104 @@ +#!/usr/bin/perl -I /root/tgmanage +use strict; + +use Net::IP; +use Net::IP qw(:PROC); + +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} + +my $base = "/etc"; +$base = $ARGV[0] if $#ARGV > -1; +$base .= "/" if not $base =~ m/\/$/ and not $base eq ""; + +my $dhcpd_base = $base . "dhcp/"; +my $dhcpd_conf = $dhcpd_base . "dhcpd.conf"; +my $dhcp_pxeconf = $dhcpd_base . "pxe-boot.conf"; +my $dhcp_ciscoapconf = $dhcpd_base . "ciscowlc.conf"; + +my $tgname = $nms::config::tgname; +my $pri_ptr = $nms::config::pri_ptr; +my $pri_net = $nms::config::pri_net; +my $sec_ptr = $nms::config::sec_ptr; +my $pxe_server = $nms::config::pxe_server; +my $ddns_key = $nms::config::ddns_key; +my $ciscowlc_a = $nms::config::ciscowlc_a; + +my $range = new Net::IP( $pri_net ) or die ("oopxos"); +my $mask = $range->mask(); +my ($net, undef) = split "/", $pri_net; + + +# Create PXE-boot configuration file for DHCP on master. +if ( not -f $dhcpd_conf ) +{ + print STDERR "Creating file " . $dhcpd_conf . "\n"; + open DHCPDFILE, ">" . $dhcpd_conf or die ( $! . " " . $dhcpd_conf); + + print DHCPDFILE <<"EOF"; +# GENERATED BY make-dhcpd.pl +# +# Central concept: as little config in the main .conf, +# include almost everything from separate files.. +# +# log-facility local7; +option domain-name "$tgname.gathering.org"; +option domain-name-servers $pri_ptr, $sec_ptr; +default-lease-time 3600; +max-lease-time 7200; +authoritative; + +ddns-update-style interim; +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret $ddns_key; +} + +subnet $net netmask $mask {} + +include "/etc/dhcp/revzones.conf"; +include "/etc/dhcp/generated-include.conf"; +include "/etc/dhcp/pxe-boot.conf"; +include "/etc/dhcp/ciscowlc.conf"; + +EOF + close DHCPDFILE; +} + +# Create PXE-boot configuration file for DHCP on master. +if ( not -f $dhcp_pxeconf ) +{ + print STDERR "Creating file " . $dhcp_pxeconf . "\n"; + open PXEFILE, ">" . $dhcp_pxeconf or die ( $! . " " . $dhcp_pxeconf); + + print PXEFILE "next-server " . $pxe_server . ";\n"; + print PXEFILE "filename \"pxelinux.0\";\n"; + + close PXEFILE; +} + + +# Create PXE-boot configuration file for DHCP on master. +if ( not -f $dhcp_ciscoapconf ) +{ + print STDERR "Creating file " . $dhcp_ciscoapconf . "\n"; + open CISCOFILE, ">" . $dhcp_ciscoapconf or die ( $! . " " . $dhcp_pxeconf); + + print CISCOFILE <<"EOF"; +option space CiscoAP; +option CiscoAP.server-address code 241 = array of ip-address; +set vendor-string = option vendor-class-identifier; + +class "cisco-aps" { + match if substring (option vendor-class-identifier, 0, 8) = "Cisco AP"; + vendor-option-space CiscoAP; + option CiscoAP.server-address $ciscowlc_a; +} +EOF + close CISCOFILE; +} + diff --git a/tools/make-first-zones.pl b/tools/make-first-zones.pl new file mode 100755 index 0000000..1227129 --- /dev/null +++ b/tools/make-first-zones.pl @@ -0,0 +1,124 @@ +#!/usr/bin/perl -I /root/tgmanage +use strict; + +use Net::IP; + +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} + +my $base = "/etc"; +$base = $ARGV[0] if $#ARGV > -1; +$base .= "/" if not $base =~ m/\/$/ and not $base eq ""; + +my $tgname = $nms::config::tgname; +my $pri_a = $nms::config::pri_a; +my $pri_ptr = $nms::config::pri_ptr; +my $pri_v6 = $nms::config::pri_v6; +my $sec_a = $nms::config::sec_a; +my $sec_ptr = $nms::config::sec_ptr; +my $sec_v6 = $nms::config::sec_v6; +my $ipv6zone = $nms::config::ipv6zone; + +# FIXME: THIS IS NOT APPRORPIATE! +my $serial = `date +%Y%m%d01`; +chomp $serial; +# FIXME + +my $zonefile; + +$zonefile = $base . "bind/" . $tgname . ".gathering.org.zone"; +if ( not -f $zonefile ) +{ + print $zonefile . "\n"; + open MAINZONE, ">" . $zonefile or die $! . " " . $zonefile; + + print MAINZONE <<"EOF"; +\$TTL 3600 +@ IN SOA $pri_a.$tgname.gathering.org. abuse.gathering.org. ( + $serial; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS ns1.$tgname.gathering.org. + IN NS ns2.$tgname.gathering.org. + +ns1 IN A $pri_ptr +ns1 IN AAAA $pri_v6 +ns2 IN A $sec_ptr +ns2 IN AAAA $sec_v6 +$pri_a IN A $pri_ptr +$pri_a IN AAAA $pri_v6 +$sec_a IN A $sec_ptr +$sec_a IN AAAA $sec_v6 + +; Generated by make-all-config.sh on the bootstrapping/nms server. +; Will not be overwritten unless it is missing ;) + +EOF + close MAINZONE; +} +else { print "Skipped TG-zone, file exists.\n"; } + +$zonefile = $base . "bind/infra." . $tgname . ".gathering.org.zone"; +if ( not -f $zonefile ) +{ + print $zonefile . "\n"; + open MAINZONE, ">" . $zonefile or die $! . " " . $zonefile; + + print MAINZONE <<"EOF"; +\$TTL 3600 +@ IN SOA $pri_a.$tgname.gathering.org. abuse.gathering.org. ( + $serial; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS $pri_a.$tgname.gathering.org. + IN NS $sec_a.$tgname.gathering.org. + +; Generated by make-all-config.sh on the bootstrapping/nms server. +; Will not be overwritten unless it is missing ;) +EOF + close MAINZONE; +} +else { print "Skipped infra-zone, file exists.\n"; } + +$zonefile = $base . "bind/" . $ipv6zone . ".zone"; +if ( not -f $zonefile ) +{ + print $zonefile . "\n"; + open IPV6ZONE, ">" . $zonefile or die $! . " " . $zonefile; + + print IPV6ZONE <<"EOF"; +; autogenerated, and updated from dhcpd -- DO NOT TOUCH! +\$TTL 3600 +@ IN SOA ns1.$tgname.gathering.org. abuse.gathering.org. ( + $serial; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS ns1.$tgname.gathering.org. + IN NS ns2.$tgname.gathering.org. + +; WARNING! Do not edit this file directly! +; on the bootstrapping/nms server! + +EOF + my $ip_pri = new Net::IP( $pri_v6 ) or die ( "Error, new Net::IP for " . $pri_v6 ); + my $ip_sec = new Net::IP( $sec_v6 ) or die ( "Error, new Net::IP for " . $sec_v6 ); + print IPV6ZONE $ip_pri->reverse_ip() . " IN PTR ns1.$tgname.gathering.org.\n"; + print IPV6ZONE $ip_pri->reverse_ip() . " IN PTR $pri_a.$tgname.gathering.org.\n"; + print IPV6ZONE $ip_sec->reverse_ip() . " IN PTR ns2.$tgname.gathering.org.\n"; + print IPV6ZONE $ip_sec->reverse_ip() . " IN PTR $sec_a.$tgname.gathering.org.\n"; + close IPV6ZONE; +} +else { print "Skipped v6-reverse-zone, file exists.\n"; } diff --git a/tools/make-linknet-hosts.pl b/tools/make-linknet-hosts.pl new file mode 100755 index 0000000..d535832 --- /dev/null +++ b/tools/make-linknet-hosts.pl @@ -0,0 +1,34 @@ +#!/usr/bin/perl +use NetAddr::IP; +use Net::IP; +# +# Input file format: +# +# ipv4-link-network router1 router2 +# +# e.g. +# 151.216.0.2 telegw nocgw +# 151.216.0.4 telegw cam +# 151.216.0.6 nocgw coren +# 151.216.0.8 telegw pressegw +# +# Note: IPv6 linknets use link-local adresses, so they are not included in list. +# +while (<STDIN>) { + next if /^(#|\s+$)/; # skip if comment, or blank line + + my ($ipv4_raw, $from, $to) = split; + my $ipv4; + + # Assumes ipv4 address is the first address in a /31 :-)) + $ipv4 = NetAddr::IP->new($ipv4_raw."/31") unless $ipv4=~/no/; + printf STDERR "Missing IPv4 scope for linket %s -> %s\n", $from, $to if not $ipv4; + next if not $ipv4; + + + # generate-dnsrr.pl format: + # hostname ipv4 ipv6 (with nope as valid null argument) + my $ipv4_other = $ipv4 +1; + printf("%s-%s %s nope\n", $from, $to, $ipv4->addr); + printf("%s-%s %s nope\n", $to, $from, $ipv4_other->addr); +} diff --git a/tools/make-missing-conf.pl b/tools/make-missing-conf.pl new file mode 100755 index 0000000..f0fb0a0 --- /dev/null +++ b/tools/make-missing-conf.pl @@ -0,0 +1,187 @@ +#!/usr/bin/perl -I /root/tgmanage +use strict; + +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} + + +use Net::IP; +use Net::IP qw(:PROC); + +# FIXME: THIS IS NOT APPRORPIATE! +my $serial = `date +%Y%m%d01`; +chomp $serial; +# FIXME + +unless ( (($#ARGV == 0 ) || ( $#ARGV == 1)) + && (( $ARGV[0] eq "master" ) || ( $ARGV[0] eq "slave" )) ) +{ + print STDERR "Invalid usage!\ncat netnames.txt | $0 <master|slave> [basedir]\n"; + exit 1; +} + +my $role = $ARGV[0]; + +my $base = "/etc"; +$base = $ARGV[1] if $#ARGV == 1; +$base .= "/" if not $base =~ m/\/$/ and not $base eq ""; + + +print STDERR "Role is " . $role . "\n"; +print STDERR "Base dir is " . $base . "\n"; + +my $bind_base = $base . "bind/"; +my $dhcpd_base = $base . "dhcp/"; + +my $dhcp_dynconf_dir = $dhcpd_base . "conf.d/"; +my $bind_conf_master = $bind_base . "conf-master/"; +my $bind_conf_slave = $bind_base . "conf-slave/"; + +my $tgname = $nms::config::tgname; + +my $pri_a = $nms::config::pri_a; +my $pri_ptr = $nms::config::pri_ptr; +my $pri_v6 = $nms::config::pri_v6; + +my $sec_a = $nms::config::sec_a; +my $sec_ptr = $nms::config::sec_ptr; +my $sec_v6 = $nms::config::sec_v6; + +my $ext_xfer = $nms::config::ext_xfer; +my $ext_ns = $nms::config::ext_ns; + +my $ddns_key = $nms::config::ddns_key; + +my $base_ipv4net = $nms::config::base_ipv4net; +my $base_ipv4prefix = $nms::config::base_ipv4prefix; + +my $ddns_to = $nms::config::ddns_to; + +my $base_ipv4 = new Net::IP( $base_ipv4net . "/" . $base_ipv4prefix ); + +$base_ipv4net =~ m/^(\d+)\.(\d+)\.(\d+)\..*/; +my ( $cp_oct, $cs_oct, $ct_oct ) = ( $1, $2, $3 ); + +while ( <STDIN> ) +{ + next if ( $_ =~ m/^#/); + my $line = $_; + chomp $line; + die ("Invalid format on input") if not $line =~ m/^(\d+)\.(\d+)\.(\d+)\.(\d+)\s+(\d+)\s+([\w|-]+)\s*.*/; + my ( $p_oct, $s_oct, $t_oct, $f_oct, $size, $name ) = ( $1, $2, $3, $4, $5, $6 ); + + + my $dhconfig = $dhcp_dynconf_dir . $name . ".conf"; + my $master_config = $bind_conf_master . $name . ".conf"; + my $slave_config = $bind_conf_slave . $name . ".conf"; + my $zone_file = $bind_base . "dynamic/$name.$tgname.gathering.org.zone"; + + my $net_base = $p_oct . "." . $s_oct . "." . $t_oct; + my $net = $net_base . "." . $f_oct; + my $range = new Net::IP( $net . "/" . $size ) or die ("oopxos"); + + # Create configuration files for DHCP on master/primary + if ( ( not -f $dhconfig ) && ( $role eq "master" ) ) + { + print STDERR "Creating file " . $dhconfig . "\n"; + my $numhosts = $range->size(); + my $mask = $range->mask(); + my $router = $net_base . "." . ($f_oct+1); + my $first = $net_base . "." . ( $f_oct + 5 ); + + my $last = $first; + if ( $size < 24 ) + { + # Net::IP iteration is crazyslow. So, we stopped using iterations. + my $last_ip = $range->last_ip(); + $last_ip =~ m/(\d+)\.(\d+)\.(\d+)\.(\d+)/; + $last = sprintf("%d.%d.%d.%d", $1, $2, $3, $4-2); + } + else { $last = $net_base . "." . ( $f_oct + $numhosts - 2 ); } + + #print STDERR "Name : " . $name . "\n"; + #print STDERR "Net : " . $net . "\n"; + #print STDERR "Mask : " . $mask . "\n"; + #print STDERR "Router : " . $router . "\n"; + #print STDERR "Size : " . $size . "\n"; + #print STDERR "Numhosts : " . $numhosts . "\n"; + #print STDERR "First : " . $first . "\n"; + #print STDERR "Last : " . $last . "\n"; + + open DFILE, ">" . $dhconfig or die ( $! . " " . $dhconfig); + + print DFILE "zone $name.$tgname.gathering.org {\n"; + print DFILE " primary $ddns_to;\n"; + print DFILE " key DHCP_UPDATER;\n"; + print DFILE "}\n\n"; + + print DFILE "subnet $net netmask $mask {\n"; + print DFILE " authoritative;\n"; + print DFILE " option routers $router;\n"; + print DFILE " option domain-name \"$name.$tgname.gathering.org\";\n"; + print DFILE " ddns-domainname \"$name.$tgname.gathering.org\";\n"; + print DFILE " range $first $last;\n"; + print DFILE " ignore client-updates;\n"; + print DFILE "}\n\n"; + + close DFILE; + } + + # Create zone files for bind9 on master/primary + if ( ( not -f $zone_file ) && ( $role eq "master" ) ) + { + print STDERR "Creating file " . $zone_file . "\n"; + open ZFILE, ">" . $zone_file or die ( $! . " " . $zone_file); + print ZFILE << "EOF"; +; Base reverse zones are updated from dhcpd -- DO NOT TOUCH! +\$TTL 3600 +@ IN SOA $pri_a.$tgname.gathering.org. abuse.gathering.org. ( + $serial ; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS $pri_a.$tgname.gathering.org. + IN NS $sec_a.$tgname.gathering.org. +\$ORIGIN $name.$tgname.gathering.org. +EOF + close ZFILE; + } + + + # Create bind9 configuration files for zones. + my $bind_file = ""; + $bind_file = $master_config if ( $role eq "master"); + $bind_file = $slave_config if ( $role eq "slave"); + die ("WTF, role does not match 'master' or 'slave'" ) if ( $bind_file eq ""); + + if ( not -f $bind_file ) + { + print STDERR "Creating file " . $bind_file . "\n"; + open NFILE, ">" . $bind_file or die ( $! . " " . $bind_file); + + print NFILE "zone \"$name.$tgname.gathering.org\" {\n"; + if ( $role eq "master" ) { + print NFILE " type master;\n"; + print NFILE " notify yes;\n"; + print NFILE " allow-update { key DHCP_UPDATER; };\n"; + print NFILE " file \"dynamic/$name.$tgname.gathering.org.zone\";\n"; + } + else + { + print NFILE " type slave;\n"; + print NFILE " notify no;\n"; + print NFILE " masters { bootstrap; };\n"; + print NFILE " file \"slave/$name.$tgname.gathering.org.zone\";\n"; + } + print NFILE " allow-transfer { ns-xfr; };\n"; + print NFILE "};\n"; + + close NFILE; + } +} diff --git a/tools/make-named.pl b/tools/make-named.pl new file mode 100755 index 0000000..7e543e1 --- /dev/null +++ b/tools/make-named.pl @@ -0,0 +1,156 @@ +#!/usr/bin/perl -I /root/tgmanage +use strict; + +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} + + +use Net::IP; +use Net::IP qw(:PROC); + +unless ( (($#ARGV == 0 ) || ( $#ARGV == 1)) + && (( $ARGV[0] eq "master" ) || ( $ARGV[0] eq "slave" )) ) +{ + print STDERR "Invalid usage!\ncat netnames.txt | $0 <master|slave> [basedir]\n"; + exit 1; +} + +my $role = $ARGV[0]; + +my $base = "/etc"; +$base = $ARGV[1] if $#ARGV == 1; +$base .= "/" if not $base =~ m/\/$/ and not $base eq ""; + +my $bind_base = $base . "bind/"; +my $named_file = $bind_base . "named.conf"; + +if ( -f $named_file ) +{ + print STDERR $named_file . " already exists. Cowardly refusing to continue\n"; + exit; +} + +my $tgname = $nms::config::tgname; + +my $pri_a = $nms::config::pri_a; +my $pri_ptr = $nms::config::pri_ptr; +my $pri_v6 = $nms::config::pri_v6; + +my $sec_a = $nms::config::sec_a; +my $sec_ptr = $nms::config::sec_ptr; +my $sec_v6 = $nms::config::sec_v6; +my $ipv6zone = $nms::config::ipv6zone; +my $ext_xfer = $nms::config::ext_xfer; +my $ext_ns = $nms::config::ext_ns; + +my $ddns_key = $nms::config::ddns_key; + +my $base_ipv4net = $nms::config::base_ipv4net; +my $base_ipv4prefix = $nms::config::base_ipv4prefix; + +my $base_ipv6net = $nms::config::base_ipv6net; +my $base_ipv6prefix = $nms::config::base_ipv6prefix; + +my $noc_nett = $nms::config::noc_nett; + +my $ddns_to = $nms::config::ddns_to; + +my $pxe_server = $nms::config::ddns_to; + +my $run = `date +%Y%m%d-%H%M`; + +open NFILE, ">" . $named_file or die ( $! . " " . $named_file ); + +chomp $run; +print NFILE <<EOF; +// This named.conf was generated by make-named.pl at $run +// The current version of make-named.pl should not overwrite this file. +acl tg-nett { $base_ipv4net/$base_ipv4prefix; $base_ipv6net:/$base_ipv6prefix; 127.0.0.0/8; ::1; }; +acl ns-xfr { $ext_ns; $sec_ptr; $sec_v6; $pri_ptr; $pri_v6; $noc_nett; }; +acl ripe-xfr { $ext_ns; $sec_ptr; $sec_v6; $pri_ptr; $pri_v6; $ext_xfer; }; + +options { + directory "/etc/bind"; + allow-recursion { tg-nett; }; + allow-query { any; }; + allow-transfer { ns-xfr; }; + recursion yes; + auth-nxdomain no; + listen-on-v6 { any; }; +}; + +key DHCP_UPDATER { + algorithm HMAC-MD5.SIG-ALG.REG.INT; + secret $ddns_key; +}; +EOF + +if ( $role eq "master" ) +{ + print NFILE <<EOF; + +zone "$tgname.gathering.org" { + type master; + file "$tgname.gathering.org.zone"; + notify yes; + allow-transfer { ns-xfr; }; +}; + +zone "infra.$tgname.gathering.org" { + type master; + file "infra.$tgname.gathering.org.zone"; + notify yes; + allow-transfer { ns-xfr; }; +}; + +zone "$ipv6zone" { + type master; + allow-update { key DHCP_UPDATER; }; + notify yes; + file "$ipv6zone.zone"; + allow-transfer { ns-xfr; ripe-xfr; }; +}; + +include "/etc/bind/named.conf.default-zones"; +include "named.reverse4.conf"; +include "named.master-include.conf"; +EOF +} + +if ( $role eq "slave" ) +{ + print NFILE <<EOF; + +masters bootstrap { $pri_ptr; }; + +zone "$tgname.gathering.org" { + type slave; + file "slave/$tgname.gathering.org"; + notify no; + masters { bootstrap; }; +}; + +zone "infra.$tgname.gathering.org" { + type slave; + file "slave/infra.$tgname.gathering.org"; + notify no; + masters { bootstrap; }; +}; + +zone "$ipv6zone" { + type slave; + notify no; + masters { bootstrap; }; + file "slave/$ipv6zone:"; + allow-transfer { ns-xfr; ripe-xfr; }; +}; + +include "named.conf.default-zones"; +include "named.slave-reverse4.conf"; +include "named.slave-include.conf"; +EOF +} diff --git a/tools/make-pxeboot.sh b/tools/make-pxeboot.sh new file mode 100755 index 0000000..0d53e6a --- /dev/null +++ b/tools/make-pxeboot.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# +# TODO: This tool assumes that the bootstrap box +# is used as the PXE server. This should be updated +# to use the configuration information in config.local.pm ... + +apt-get install tftpd-hpa +apt-get install nfs-kernel-server + +cat << END > /etc/default/tftpd-hpa +TFTP_USERNAME="tftp" +TFTP_DIRECTORY="/var/lib/tftpboot" +TFTP_ADDRESS="0.0.0.0:69" +TFTP_OPTIONS="--secure" +END + +/etc/init.d/tftpd-hpa restart + +mkdir -p /var/lib/tftpboot +cp -R pxe/* /var/lib/tftpboot + +tools/fetch-debinstall.sh /var/lib/tftpboot/debian +# tools/fetch-ubuntulive.sh <- this tool does not exist xD +# NOTE! The pxe/ directory contains an 'ubuntu' menu... +# The files required to booting Ubuntu installer or live +# must be fetched manually (for now) diff --git a/tools/make-reverse4-files.pl b/tools/make-reverse4-files.pl new file mode 100755 index 0000000..d20ea37 --- /dev/null +++ b/tools/make-reverse4-files.pl @@ -0,0 +1,164 @@ +#!/usr/bin/perl -I /root/tgmanage +use strict; + +BEGIN { + require "include/config.pm"; + eval { + require "include/config.local.pm"; + }; +} + + +use Net::IP; +use Net::IP qw(:PROC); + +# FIXME: THIS IS NOT APPRORPIATE! +my $serial = `date +%Y%m%d01`; +chomp $serial; +# FIXME + +unless ( (($#ARGV == 0 ) || ( $#ARGV == 1)) + && (( $ARGV[0] eq "master" ) || ( $ARGV[0] eq "slave" )) ) +{ + print STDERR "Invalid usage!\n$0 <master|slave> [basedir]\n"; + exit 1; +} + +my $role = $ARGV[0]; + +my $base = "/etc"; +$base = $ARGV[1] if $#ARGV == 1; +$base .= "/" if not $base =~ m/\/$/ and not $base eq ""; + + +my $bind_base = $base . "bind/"; +my $dhcpd_base = $base . "dhcp/"; + +my $dhcp_revzones_file = $dhcpd_base . "revzones.conf"; +my $bind_pri_revzones_file = $bind_base . "named.reverse4.conf"; +my $bind_sec_revzones_file = $bind_base . "named.slave-reverse4.conf"; + +my $tgname = $nms::config::tgname; + +my $pri_a = $nms::config::pri_a; +my $pri_ptr = $nms::config::pri_ptr; +my $pri_v6 = $nms::config::pri_v6; + +my $sec_a = $nms::config::sec_a; +my $sec_ptr = $nms::config::sec_ptr; +my $sec_v6 = $nms::config::sec_v6; + +my $ext_xfer = $nms::config::ext_xfer; +my $ext_ns = $nms::config::ext_ns; + +my $ddns_key = $nms::config::ddns_key; + +my $base_ipv4net = $nms::config::base_ipv4net; +my $base_ipv4prefix = $nms::config::base_ipv4prefix; + +my $noc_nett = $nms::config::noc_nett; +my $noc_nett_v6 = $nms::config::noc_nett_v6; + +my $ddns_to = $nms::config::ddns_to; + +my $pxe_server = $nms::config::ddns_to; + +my $base_ipv4 = new Net::IP( $base_ipv4net . "/" . $base_ipv4prefix ); + +$base_ipv4net =~ m/^(\d+)\.(\d+)\.(\d+)\..*/; +my ( $p_oct, $s_oct, $t_oct ) = ( $1, $2, $3 ); + +$pri_ptr =~ m/^(\d+)\.(\d+)\.(\d+)\.(\d+).*/; +my ( $pp_oct, $ps_oct, $pt_oct, $pf_oct) = ( $1, $2, $3, $4 ); +$sec_ptr =~ m/^(\d+)\.(\d+)\.(\d+)\.(\d+).*/; +my ( $sp_oct, $ss_oct, $st_oct, $sf_oct) = ( $1, $2, $3, $4 ); + +if ( $role eq "master" ) +{ + open DFILE, ">" . $dhcp_revzones_file or die $!; + open NFILE, ">" . $bind_pri_revzones_file or die $!; +} +elsif ( $role eq "slave" ) +{ + open SFILE, ">" . $bind_sec_revzones_file or die $!; +} +else +{ + die ("WTF, role is neither 'master' or 'slave'"); +} + +while (1) +{ + + my $block = $p_oct . "." . $s_oct . "." . $t_oct . ".0/24"; + my $current = new Net::IP( $block ) or die ("new Net::IP failed for " . $block); + + my $rev_zone = $t_oct . "." . $s_oct . "." . $p_oct . ".in-addr.arpa"; + + if ( $role eq "master" ) + { + # Generating IPv4-related reverse-stuff for + # both bind9 and dhcp on master. + + print DFILE "zone " . $rev_zone . " { primary " . $ddns_to . "; key DHCP_UPDATER; }\n"; + + print NFILE "zone \"". $rev_zone ."\" {\n"; + print NFILE " type master;\n"; + print NFILE " allow-update { key DHCP_UPDATER; };\n"; + print NFILE " notify yes;\n"; + print NFILE " allow-transfer { $sec_ptr; $ext_xfer; $noc_nett; $noc_nett_v6; };\n"; + print NFILE " file \"reverse/". $rev_zone .".zone\";\n"; + print NFILE "};\n\n"; + + my $zfilename = $bind_base . "reverse/" . $rev_zone . ".zone"; + open ZFILE, ">", $zfilename; + + print ZFILE "; " . $zfilename . "\n"; + print ZFILE <<"EOF"; +; Base reverse zones are updated from dhcpd -- DO NOT TOUCH! +\$TTL 3600 +@ IN SOA ns1.$tgname.gathering.org. abuse.gathering.org. ( + $serial ; serial + 3600 ; refresh + 1800 ; retry + 608400 ; expire + 3600 ) ; minimum and default TTL + + IN NS ns1.$tgname.gathering.org. + IN NS ns2.$tgname.gathering.org. + +\$ORIGIN $rev_zone. +EOF + if ( ($pt_oct == $t_oct) && ($ps_oct == $s_oct) ) + { + print ZFILE $pf_oct . " IN PTR ns1.$tgname.gathering.org.\n"; + } + if ( ($st_oct == $t_oct) && ($ss_oct == $s_oct) ) + { + print ZFILE $sf_oct . " IN PTR ns2.$tgname.gathering.org.\n"; + } + } + else + { + # AKA "if not master", as in "is slave". + # A lot less work: update the named.slave-reverse4.conf file.. + print SFILE "zone \"". $rev_zone ."\" {\n"; + print SFILE " type slave;\n"; + print SFILE " notify no;\n"; + print SFILE " file \"slave/". $rev_zone .".cache\";\n"; + print SFILE " masters { bootstrap; };\n"; + print SFILE " allow-transfer { $ext_xfer; $noc_nett; $noc_nett_v6; };\n"; + print SFILE "};\n\n"; + } + + if ( $current->last_int() == $base_ipv4->last_int() ) + { + print STDERR "Reached last IP network. Finished\n"; + last; + } + $t_oct++; +} +# Close all files, even those that have never been opened ;) +close DFILE; +close NFILE; +close SFILE; diff --git a/tools/make-switch-placements.pl b/tools/make-switch-placements.pl new file mode 100755 index 0000000..58538e2 --- /dev/null +++ b/tools/make-switch-placements.pl @@ -0,0 +1,88 @@ +#! /usr/bin/perl +use strict; +use warnings; + +my $switchtype = "dlink3100"; + +print "begin;\n"; +print "delete from placements where switch in (select switch from switches where switchtype = '$switchtype');\n"; + +my %ip; +my $i = 1; +while (<STDIN>) { + chomp; + my @info = split(/ /); + + if (scalar @info < 5) { + die "Unknown line: $_"; + } + my ($x, $y, $xx, $yy); + + my $name = $info[0]; + if ($name =~ /^e\d+-\d+$/) { + $name =~ /e(\d+)-(\d+)/; + my ($e, $s) = ($1, $2); + + $x = int(220 + (($e-1)/2) * 21.5); + $y = undef; + + $x += 10 if ($e >= 11); + $x += 10 if ($e >= 27); + $x += 10 if ($e >= 43); + $x += 10 if ($e >= 59); + + if ($s > 2) { + $y = 310 - 84 * ($s-2); + } else { + $y = 507 - 84 * ($s); + } + + $xx = $x + 14; + $yy = $y + 84; + + # Justeringer + $y += 42 if $name eq "e1-4"; + $y += 28 if $name eq "e3-4"; + $y += 14 if $name eq "e5-4"; + + $yy -= 14 if $name eq "e77-1"; + $yy -= 28 if $name eq "e79-1"; + $yy -= 42 if $name eq "e81-1"; + $yy -= 56 if $name eq "e83-1"; + } elsif ($name =~ /^creative(\d+)$/) { + my $s = $1; + if ($s < 3) { + if ($s == 1) { + $x = 1190; + $y = 278; + } else { + $x = 1180; + $y = 230; + } + $xx = $x+35; + $yy = $y+19; + $yy += 6; + } else { + $x = 1056; + $y = 296 - 22 * ($s-3); + if ($s <= 4) { + $xx = $x+100; + } elsif ($s <= 7) { + $xx = $x+70; + } elsif ($s <= 8) { + $xx = $x+55; + } else { + $xx = $x+35; + } + $yy = $y+19; + $yy -= 5 if $s == 3; + } + } else { + die "Unknown switch: $name"; + } + + print "insert into placements select switch, box '(($x,$y),($xx,$yy))' from switches where sysname = '$name';\n"; + $i++; +} + +print "end;\n"; diff --git a/tools/make-switches.pl b/tools/make-switches.pl new file mode 100755 index 0000000..a2f5d22 --- /dev/null +++ b/tools/make-switches.pl @@ -0,0 +1,33 @@ +#! /usr/bin/perl +use strict; +use warnings; + +my $switchtype = "dlink3100"; + +print "begin;\n"; +print "delete from temppoll;\n"; +print "delete from dhcp;\n"; +print "delete from switches where switchtype = '$switchtype';\n"; +#print "SELECT pg_catalog.setval('switches_switch_seq', 1, false);\n"; +print "SELECT pg_catalog.setval('polls_poll_seq', 1, false);\n"; + +my %ip; +my $i = 1; +while (<STDIN>) { + chomp; + my @info = split(/ /); + + if (scalar @info < 5) { + die "Unknown line: $_"; + } + + my $name = $info[0]; + my $range = $info[3]; + my $ip = $info[4]; + + print "insert into switches (ip, sysname, switchtype) values ('$ip', '$name', '$switchtype');\n"; + print "insert into dhcp select switch, '$range' from switches where sysname = '$name';\n"; +} +close HOSTS; + +print "end;\n"; diff --git a/tools/update-baseservice.sh b/tools/update-baseservice.sh new file mode 100755 index 0000000..5908941 --- /dev/null +++ b/tools/update-baseservice.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e + +BASE=""; +if [ -n $1 ] +then + BASE=$1 + echo "Using base path ${BASE}" +fi + +source include/tgmanage.cfg.sh +if [ -z ${PRIMARY} ] +then + echo "Not configured!"; + exit 1; +fi; + +cat netlist.txt | ssh -l root ${PRIMARY} "~/tgmanage/tools/make-missing-conf.pl master ${BASE}" +ssh -l root ${PRIMARY} "~/tgmanage/tools/make-dhcpd-include.pl ${BASE}" +ssh -l root ${PRIMARY} "~/tgmanage/tools/make-bind-include.pl master ${BASE}" + +set +e +ssh -l root ${PRIMARY} "chown bind.bind /etc/bind/dynamic/*.zone"; +set -e + +cat netlist.txt | ssh -l root ${SECONDARY} "~/tgmanage/tools/make-missing-conf.pl slave ${BASE}" +ssh -l root ${SECONDARY} "~/tgmanage/tools/make-bind-include.pl slave ${BASE}" + diff --git a/tools/update-tools.sh b/tools/update-tools.sh new file mode 100755 index 0000000..99f712a --- /dev/null +++ b/tools/update-tools.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -e + +source include/tgmanage.cfg.sh +if [ -z ${PRIMARY} ] +then + echo "Not configured!"; + exit 1; +fi; + +ssh -l root ${PRIMARY} "mkdir -p ~/tgmanage" +ssh -l root ${SECONDARY} "mkdir -p ~/tgmanage" + +scp -r netlist.txt root@${PRIMARY}:tgmanage/ +scp -r tools root@${PRIMARY}:tgmanage/ +scp -r tools root@${SECONDARY}:tgmanage/ +scp -r include root@${PRIMARY}:tgmanage/ +scp -r include root@${SECONDARY}:tgmanage/ +scp -r clients root@${PRIMARY}:tgmanage/ +scp -r clients root@${SECONDARY}:tgmanage/ diff --git a/web/etc/apache2/nms-public.tg13.gathering.org b/web/etc/apache2/nms-public.tg13.gathering.org new file mode 100644 index 0000000..2c6115a --- /dev/null +++ b/web/etc/apache2/nms-public.tg13.gathering.org @@ -0,0 +1,11 @@ +<VirtualHost *:80> + ServerAdmin drift@gathering.org + ServerName nms-public.tg13.gathering.org + + DocumentRoot /srv/www/nms-public.tg13.gathering.org + AddHandler cgi-script .cgi .sh .pl .py + + LogLevel warn + ErrorLog /var/log/apache2/error-nms-public.tg13.gathering.org.log + CustomLog /var/log/apache2/access-nms-public.tg13.gathering.org.log combined +</VirtualHost> diff --git a/web/etc/apache2/nms.tg13.gathering.org b/web/etc/apache2/nms.tg13.gathering.org new file mode 100644 index 0000000..cb81598 --- /dev/null +++ b/web/etc/apache2/nms.tg13.gathering.org @@ -0,0 +1,39 @@ +<VirtualHost *:80> + ServerAdmin drift@gathering.org + ServerName nms.tg13.gathering.org + ServerAlias flexus.tg13.gathering.org + + DocumentRoot /root/tgmanage/web/nms.gathering.org + <Directory "/root/tgmanage/web/nms.gathering.org"> + AllowOverride None + Options Indexes FollowSymLinks ExecCGI MultiViews + Order allow,deny + Satisfy any + Allow from ::1 + Allow from 127.0.0.1 + Allow from 151.216.125.0/24 + Allow from 151.216.124.0/24 + Allow from 2a02:ed02:124::/64 + Allow from 2a02:ed02:125::/64 + + AddHandler cgi-script .cgi .sh .pl .py + AddDefaultCharset UTF-8 + + AuthUserFile /root/tgmanage/web/.htpasswd + AuthGroupFile /dev/null + AuthName "Tech:Server Secret Volcano Lair" + AuthType Basic + + require valid-user + </Directory> + + ErrorLog /var/log/apache2/error-nms.tg13.gathering.org.log + + # Possible values include: debug, info, notice, warn, error, crit, + # alert, emerg. + LogLevel warn + + CustomLog /var/log/apache2/access-nms.tg13.gathering.org.log combined + ServerSignature On + +</VirtualHost> diff --git a/web/etc/apache2/stream.tg13.gathering.org b/web/etc/apache2/stream.tg13.gathering.org new file mode 100644 index 0000000..b184b1c --- /dev/null +++ b/web/etc/apache2/stream.tg13.gathering.org @@ -0,0 +1,25 @@ + <VirtualHost *:80> + ServerAdmin drift@gathering.org + ServerName stream.tg13.gathering.org + ServerAlias krosus.tg13.gathering.org + + DocumentRoot /srv/stream.tg13.gathering.org + <Directory "/srv/stream.tg13.gathering.org/"> + AllowOverride None + Options Indexes FollowSymLinks ExecCGI MultiViews + Order allow,deny + Allow from all + AddHandler cgi-script .cgi .sh .pl .py + AddDefaultCharset UTF-8 + + </Directory> + + ErrorLog /var/log/apache2/error-stream.tg13.gathering.org.log + + # Possible values include: debug, info, notice, warn, error, crit, + # alert, emerg. + LogLevel info + + CustomLog /var/log/apache2/access-stream.tg13.gathering.org.log combined + ServerSignature On +</VirtualHost> diff --git a/web/etc/apache2/tech.tg13.gathering.org b/web/etc/apache2/tech.tg13.gathering.org new file mode 100644 index 0000000..7ab303b --- /dev/null +++ b/web/etc/apache2/tech.tg13.gathering.org @@ -0,0 +1,12 @@ +<VirtualHost *:80> + ServerAdmin drift@gathering.org + ServerName tech.tg13.gathering.org + + DocumentRoot /srv/www/tech.tg13.gathering.org + + LogLevel warn + ErrorLog /var/log/apache2/error-tech.tg13.gathering.org.log + CustomLog /var/log/apache2/access-tech.tg13.gathering.org.log combined + + AddHandler cgi-script .pl +</VirtualHost> diff --git a/web/etc/cron/update-public-nms b/web/etc/cron/update-public-nms new file mode 100644 index 0000000..3018042 --- /dev/null +++ b/web/etc/cron/update-public-nms @@ -0,0 +1,3 @@ +# Update public nms + +* * * * * root /root/tgmanage/clients/update-public-nms.sh diff --git a/web/nms-public.gathering.org/dhcp.html b/web/nms-public.gathering.org/dhcp.html new file mode 100644 index 0000000..332ea0a --- /dev/null +++ b/web/nms-public.gathering.org/dhcp.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>NMS Public - DHCP KART - The Gathering 2013</title> +<meta http-equiv="refresh" content="5;URL='/dhcp.html'"> +</head> +<body> +<img src="nettkart-dhcp.png" alt="DHCP KART" /> +<p>Sist oppdatert: Sun, 31 Mar 2013 16:03:02 +0200 +</body> +</html> diff --git a/web/nms-public.gathering.org/dhcpkart.html b/web/nms-public.gathering.org/dhcpkart.html new file mode 100644 index 0000000..77f7ad5 --- /dev/null +++ b/web/nms-public.gathering.org/dhcpkart.html @@ -0,0 +1,10 @@ +<html> + <head> + <title>DHCP-kart</title> + <meta http-equiv="refresh" content="60"> + </head> + <body> + + <p><img src="nettkart-dhcp.png" /></p> + </body> +</html> diff --git a/web/nms-public.gathering.org/index.html b/web/nms-public.gathering.org/index.html new file mode 100644 index 0000000..1917fd3 --- /dev/null +++ b/web/nms-public.gathering.org/index.html @@ -0,0 +1,15 @@ +<html> +<head> +<title>NMS Public - The Gathering 2013</title> +</head> + +<body> + +<h1>NMS Public - The Gathering 2013</h1> + +<h2><a href="dhcp.html">DHCP-kart</a></h2> +<h2><a href="trafikk.html">Trafikk-kart</a></h2> + +</body> +</html> + diff --git a/web/nms-public.gathering.org/led.pl b/web/nms-public.gathering.org/led.pl new file mode 100644 index 0000000..12b540b --- /dev/null +++ b/web/nms-public.gathering.org/led.pl @@ -0,0 +1,128 @@ +e1-3 on +e1-4 on +e3-3 on +e3-4 on +e5-3 on +e5-4 on +e7-3 on +e7-4 on +e9-3 on +e9-4 on +e11-1 on +e11-2 on +e11-3 on +e11-4 on +e13-1 on +e13-2 on +e13-3 on +e13-4 on +e15-1 on +e15-2 on +e15-3 on +e15-4 on +e17-1 on +e17-2 on +e17-3 on +e17-4 on +e19-1 on +e19-2 on +e19-3 on +e19-4 on +e21-1 on +e21-2 on +e21-3 on +e21-4 on +e23-1 on +e23-2 on +e23-3 on +e23-4 on +e25-1 on +e25-2 on +e25-3 on +e25-4 on +e27-1 on +e27-2 on +e29-1 on +e29-2 on +e31-1 on +e31-2 on +e33-1 on +e33-2 on +e35-1 on +e35-2 on +e37-1 on +e37-2 on +e39-1 on +e39-2 on +e41-1 on +e41-2 on +e43-1 on +e43-2 on +e43-3 on +e43-4 on +e45-1 on +e45-2 on +e45-3 on +e45-4 on +e47-1 on +e47-2 on +e47-3 on +e47-4 on +e49-1 on +e49-2 on +e49-3 on +e49-4 on +e51-1 on +e51-2 on +e51-3 on +e51-4 on +e53-1 on +e53-2 on +e53-3 on +e53-4 on +e55-1 on +e55-2 on +e55-3 on +e55-4 on +e57-1 on +e57-2 on +e57-3 on +e57-4 on +e59-1 on +e59-2 on +e59-3 on +e59-4 on +e61-1 on +e61-2 on +e61-3 on +e61-4 on +e63-1 on +e63-2 on +e63-3 on +e63-4 on +e65-1 on +e65-2 on +e65-3 on +e65-4 on +e67-1 on +e67-2 on +e67-3 on +e67-4 on +e69-1 on +e69-2 on +e69-3 on +e69-4 on +e71-1 on +e71-2 on +e71-3 on +e71-4 on +e73-1 on +e73-2 on +e73-3 on +e73-4 on +e75-1 on +e75-2 on +e75-3 on +e75-4 on +e77-1 on +e77-2 on diff --git a/web/nms-public.gathering.org/led.txt b/web/nms-public.gathering.org/led.txt new file mode 100644 index 0000000..42a189c --- /dev/null +++ b/web/nms-public.gathering.org/led.txt @@ -0,0 +1,256 @@ +e65-4 off +ap-e47-2 off +ap-e15-1 off +e11-4 off +e69-1 off +ap-e13-4 off +ap-e11-3 off +e23-2 off +e41-2 off +e65-1 off +ap-e25-1 off +e21-3 off +e3-3 off +e45-1 off +ap-e59-4 off +ap-e17-3 off +ap-e69-3 off +e45-2 off +e25-2 off +ap-e61-3 off +e55-1 off +ap-e49-2 off +e5-3 off +ap-e59-2 off +e15-3 off +ap-e49-1 off +e67-4 off +e21-1 off +ap-e13-3 off +ap-e59-1 off +e27-1 off +ap-e43-4 off +ap-e37-1 off +e7-3 off +ap-e77-1 off +ap-e43-3 off +ap-e65-4 off +ap-e23-2 off +ap-e5-4 off +e1-3 off +e63-4 off +ap-e19-3 off +ap-e39-1 off +e53-2 off +e13-1 off +ap-e13-1 off +ap-e63-1 off +ap-e55-3 off +e65-2 off +ap-e73-2 off +ap-e71-4 off +ap-e77-2 off +ap-e63-4 off +e25-3 off +ap-e49-4 off +ap-e43-1 off +e63-2 off +e19-2 off +e61-4 off +ap-e53-4 off +e55-4 off +ap-e69-4 off +ap-e41-2 off +e9-4 off +e43-4 off +ap-e47-4 off +ap-e15-4 off +ap-e17-1 off +ap-e19-4 off +ap-e37-2 off +ap-e67-1 off +e19-1 off +ap-e23-1 off +ap-e29-2 off +e49-4 off +ap-e7-3 off +ap-e65-3 off +e13-3 off +e57-3 off +ap-e25-3 off +e23-3 off +e37-2 off +ap-e1-3 off +ap-e75-2 off +e47-4 off +e21-4 off +e33-1 off +ap-e69-2 off +ap-e17-2 off +ap-e73-3 off +ap-e71-3 off +ap-e25-4 off +ap-e45-3 off +e69-2 off +e13-2 off +e51-1 off +ap-e7-4 off +ap-e9-3 off +e19-4 off +e17-4 off +e61-2 off +e57-2 off +ap-e63-3 off +ap-e45-2 off +e67-1 off +ap-e27-1 off +e51-2 off +e49-2 off +ap-e19-1 off +ap-e47-1 off +e59-3 off +ap-e25-2 off +ap-e65-2 off +e21-2 off +e59-4 off +e39-2 off +ap-e3-4 off +e19-3 off +ap-e29-1 off +e13-4 off +ap-e35-1 off +ap-e75-3 off +e35-1 off +ap-e13-2 off +ap-e57-3 off +ap-e73-4 off +e71-2 off +ap-e71-1 off +ap-e75-1 off +e71-1 off +ap-e41-1 off +ap-e57-4 off +e23-1 off +e77-1 off +e69-3 off +e29-1 off +ap-e49-3 off +ap-e45-1 off +e59-1 off +e73-3 off +e53-1 off +ap-e33-2 off +ap-e47-3 off +e17-1 off +e31-1 off +e55-3 off +e17-3 off +ap-e19-2 off +ap-e61-1 off +ap-e63-2 off +ap-e21-3 off +e75-1 off +ap-e61-2 off +ap-e55-1 off +ap-e33-1 off +e53-4 off +e3-4 off +ap-e9-4 off +ap-e31-1 off +e65-3 off +e75-4 off +ap-e15-2 off +ap-e35-2 off +e51-4 off +ap-e55-4 off +e51-3 off +ap-e21-1 off +e39-1 off +e63-1 off +ap-e57-1 off +ap-e11-1 off +e43-2 off +e75-3 off +e47-1 off +e25-4 off +e71-4 off +e47-2 off +e43-3 off +ap-e15-3 off +ap-e3-3 off +ap-e75-4 off +ap-e43-2 off +e15-2 off +ap-e67-3 off +ap-e59-3 off +e27-2 off +e11-1 off +ap-e23-3 off +ap-e11-2 off +ap-e51-2 off +e55-2 off +ap-e27-2 off +ap-e53-2 off +ap-e11-4 off +e69-4 off +e33-2 off +ap-e57-2 off +e11-3 off +e57-1 off +e37-1 off +e11-2 off +e53-3 off +e67-2 off +ap-e53-3 off +e67-3 off +ap-e71-2 off +e57-4 off +e73-4 off +e73-1 off +ap-e67-2 off +e61-3 off +e29-2 off +ap-e67-4 off +e15-1 off +ap-e53-1 off +ap-e55-2 off +ap-e5-3 off +ap-e51-1 off +ap-e61-4 off +ap-e45-4 off +e35-2 off +e61-1 off +e49-1 off +e43-1 off +ap-e69-1 off +ap-e39-2 off +e45-3 off +e23-4 off +e73-2 off +ap-e23-4 off +ap-e31-2 off +e71-3 off +e15-4 off +e17-2 off +e45-4 off +e47-3 off +ap-e73-1 off +e49-3 off +e63-3 off +ap-e21-2 off +ap-e51-4 off +e7-4 off +e41-1 off +ap-e17-4 off +e1-4 off +e5-4 off +ap-e1-4 off +e59-2 off +ap-e51-3 off +ap-e21-4 off +e25-1 off +e75-2 off +e77-2 off +e31-2 off +e9-3 off +ap-e65-1 off diff --git a/web/nms-public.gathering.org/nettkart-dhcp.png b/web/nms-public.gathering.org/nettkart-dhcp.png Binary files differnew file mode 100644 index 0000000..d9232de --- /dev/null +++ b/web/nms-public.gathering.org/nettkart-dhcp.png diff --git a/web/nms-public.gathering.org/nettkart-trafikk.html b/web/nms-public.gathering.org/nettkart-trafikk.html new file mode 100644 index 0000000..5675473 --- /dev/null +++ b/web/nms-public.gathering.org/nettkart-trafikk.html @@ -0,0 +1,10 @@ +<html> + <head> + <title>nettkart</title> + <meta http-equiv="refresh" content="60"> + </head> + <body> + + <p><img src="nettkart-trafikk.png" /></p> + </body> +</html> diff --git a/web/nms-public.gathering.org/nettkart-trafikk.png b/web/nms-public.gathering.org/nettkart-trafikk.png Binary files differnew file mode 100644 index 0000000..79661fc --- /dev/null +++ b/web/nms-public.gathering.org/nettkart-trafikk.png diff --git a/web/nms-public.gathering.org/trafikk.html b/web/nms-public.gathering.org/trafikk.html new file mode 100644 index 0000000..ee417a8 --- /dev/null +++ b/web/nms-public.gathering.org/trafikk.html @@ -0,0 +1,10 @@ +<html> +<head> +<title>NMS Public - TRAFIKK KART - The Gathering 2013</title> +<meta http-equiv="refresh" content="60;URL='/trafikk.html'"> +</head> +<body> +<img src="nettkart-trafikk.png" alt="TRAFIKK KART" /> +<p>Sist oppdatert: Sun, 31 Mar 2013 16:03:02 +0200 +</body> +</html> diff --git a/web/nms.gathering.org/apkart.pl b/web/nms.gathering.org/apkart.pl new file mode 100755 index 0000000..a89cb68 --- /dev/null +++ b/web/nms.gathering.org/apkart.pl @@ -0,0 +1,89 @@ +#! /usr/bin/perl +use CGI qw(fatalsToBrowser); +use GD; +use DBI; +use lib '../../include'; +use nms; +use strict; +use warnings; +my $cgi = CGI->new; + +#my $greentimeout = 7200; +my $greentimeout = 15*60; +my $maxtimeout = $greentimeout*9; + +my $dbh = nms::db_connect(); + +GD::Image->trueColor(1); + +my $img = GD::Image->new('bg07.png'); + +my $blk = $img->colorResolve(0, 0, 0); +my $red = $img->colorResolve(255, 0, 0); +my $grn = $img->colorResolve(0, 255, 0); +my $blu = $img->colorResolve(0, 0, 255); + +# Her ska' det bættre skrivas STORT jah! +my $title = new GD::Image(75,15); +$img->alphaBlending(1); +$title->alphaBlending(1); +my $titlebg = $title->colorResolve(255, 255, 255); +$title->fill(0,0,$titlebg); +$title->transparent($titlebg); +$title->string(gdGiantFont,7,0,"APEKART",$title->colorResolve(255, 0, 0)); +$img->copyResampled($title, 500, 0, 0, 0, 400, 100, 75, 15); +$img->copyResampled($title, 500, 550, 0, 0, 400, 100, 75, 15); + +$img->string(gdMediumBoldFont,0,0,"Access points",$blk); +$img->string(gdSmallFont,0,20,"Shows if a Cisco access point is plugged into the port",$blk); + +my %palette = ( 'notpolled' => $blu, 'missing' => $red, 'present' => $grn ); + +my @states = qw(present missing notpolled); + +for my $i (0..$#states) { + my $y = 60 + 20 * (4 - $i); + $img->filledRectangle(20, $y, 30, $y + 10, $palette{$states[$i]}); + $img->rectangle(20, $y, 30, $y + 10, $blk); + $img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, $y + 10, $states[$i]); +} + +my $q = $dbh->prepare("select switch,sysname,model,last_poll < now() - '30 seconds'::interval as notpolled,placement from switches natural join placements natural join ap_poll order by zorder"); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + my $sysname = $ref->{'sysname'}; + my $model = $ref->{'model'}; + my $state; + if ($ref->{'notpolled'}) { + $state = 'notpolled'; + } elsif ($model =~ /^cisco AIR-/) { + $state = 'present'; + } else { + $state = 'missing'; + $sysname .= " $model"; + } + my $clr = $palette{$state}; + + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + $img->filledRectangle($3,$4,$1,$2,$clr); + $img->rectangle($3,$4,$1,$2,$blk); + + my ($x2, $y2, $x1, $y1) = ($1, $2, $3, $4); + my $max_textlen = ($x2-$x1) > ($y2-$y1) ? $x2-$x1 : $y2-$y1; + while (length($sysname) * 6 > $max_textlen) { + # Try to abbreviate sysname if it is too long for the box + $sysname =~ s/^(.*)[a-z]~?([0-9]+)$/$1~$2/ or last; + } + if (($x2-$x1) > ($y2-$y1)) { + $img->string(gdSmallFont,$x1+2,$y1,$sysname,$blk); + } else { + $img->stringUp(gdSmallFont,$x1,$y2-3,$sysname,$blk); + } +} +$dbh->disconnect; + +if (!defined($ARGV[0])) { + print $cgi->header(-type=>'image/png', + -refresh=>'10; ' . CGI::url()); +} +print $img->png; diff --git a/web/nms.gathering.org/bg07.png b/web/nms.gathering.org/bg07.png Binary files differnew file mode 100644 index 0000000..ec54ad3 --- /dev/null +++ b/web/nms.gathering.org/bg07.png diff --git a/web/nms.gathering.org/dhcpkart.pl b/web/nms.gathering.org/dhcpkart.pl new file mode 100755 index 0000000..2af4272 --- /dev/null +++ b/web/nms.gathering.org/dhcpkart.pl @@ -0,0 +1,94 @@ +#! /usr/bin/perl +use CGI qw(fatalsToBrowser); +use GD; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +#my $greentimeout = 7200; +my $greentimeout = 15*60; +my $maxtimeout = $greentimeout*9; + +my $dbh = nms::db_connect(); + +GD::Image->trueColor(1); +my $map = 'bg07.png'; +die "$map does not exist" unless -e $map; +$img = GD::Image->new($map); + +my $blk = $img->colorResolve(0, 0, 0); + +$img->string(gdMediumBoldFont,0,0,"DHCP-lease status",$blk); +$img->string(gdSmallFont,0,20,"Last received DHCP-request",$blk); + +# first 1/5: green (<30 min) +# middle 3/5: yellow -> red (30 min - 6 hours) +# last 1/5: blue (>6 hours) +my $grn = $img->colorResolve(0, 255, 0); +my $blu = $img->colorResolve(0, 0, 255); + +my $l1 = 42 + (236 - 42)/5; +my $l2 = 236 - (236 - 42)/5; + +$img->filledRectangle(32, 42, 53, $l1, $grn); +$img->string(gdSmallFont,56,$l1-8,($greentimeout/60)." min",$blk); + +$img->filledRectangle(32, $l2, 53, 237, $blu); +$img->string(gdSmallFont,56,$l2-5,($maxtimeout/60)." min",$blk); + +for my $y ($l1..$l2) { + my $i = 1.0 - ($y - $l1) / ($l2 - $l1); + my $clr = get_color($i); + + $img->filledRectangle(32,$y,53,$y+1,$clr); +} + +my $q = $dbh->prepare('select switch,sysname,placement,EXTRACT(EPOCH FROM now() - last_ack) as age from switches natural join placements natural join dhcp order by sysname'); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + my $age = $ref->{'age'}; + if (!defined($age) || $age > $maxtimeout) { + $clr = $img->colorResolve(0, 0, 255); + } elsif ($age < $greentimeout) { + $clr = $img->colorResolve(0, 255, 0); + } else { + # 30 minutes = 0.0 + # 6 hours = 1.0 + + my $intensity = log($age / $greentimeout) / log($maxtimeout/$greentimeout); + $clr = get_color(1.0 - $intensity); + } + + my $sysname = $ref->{'sysname'}; + if ($sysname !~ m/d0/i) { # don't draw distro-switches + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + $img->filledRectangle($3,$4,$1,$2,$clr); + $img->rectangle($3,$4,$1,$2,$blk); + + my ($x2, $y2, $x1, $y1) = ($1, $2, $3, $4); + my $max_textlen = ($x2-$x1) > ($y2-$y1) ? $x2-$x1 : $y2-$y1; + while (length($sysname) * 6 > $max_textlen) { + # Try to abbreviate sysname if it is too long for the box + $sysname =~ s/^(.*)[a-z]~?([0-9]+)$/$1~$2/ or last; + } + if (($x2-$x1) > ($y2-$y1)) { + $img->string(gdSmallFont,$x1+2,$y1,$sysname,$blk); + } else { + $img->stringUp(gdSmallFont,$x1,$y2-3,$sysname,$blk); + } + } +} +$dbh->disconnect; + +if (!defined($ARGV[0])) { + print $cgi->header(-type=>'image/png', + -refresh=>'10; ' . CGI::url()); +} +print $img->png; + +sub get_color { + my $intensity = shift; + my $gamma = 1.0/1.90; + return $img->colorResolve(255.0, 255.0 * ($intensity ** $gamma), 0); +} diff --git a/web/nms.gathering.org/index.html b/web/nms.gathering.org/index.html new file mode 100644 index 0000000..2857377 --- /dev/null +++ b/web/nms.gathering.org/index.html @@ -0,0 +1,92 @@ +<html> + <head> + <title>snmp</title> + </head> + <body> + <p>tg light & magic. :-)</p> + + <ul> + <li><a href="dhcpkart.pl">DHCP-kart</a> + <br /><i>Oversikt over DHCP-lease etter switch</i> + </li> + + <br /> + + <li><a href="nettkart-text.pl">Nettkart</a> + <br /><i>Trafikkoversikt</i> + </li> + + <br /> + + <li><a href="nettkart-telnet.pl">Nettkart</a> + <br /><i>Trafikkoversikt /m telnetlink</i> + </li> + + <br /> +<!-- Kun moderat nyttig nÃ¥r vi har disablet alle webinterfacene... + <li><a href="nettkart-web.pl">Nettkart</a> + <br /><i>Trafikkoversikt /m weblink</i> + </li> + + <br /> +--> + <li><a href="portkart.pl">Nettkart, per port</a> + <br /><i>Trafikkoversikt per port</i> + </li> + + <br /> + + <li><a href="uplinkkart.pl">Uplink-kart</a> + <br /><i>Hvilke switcher har ikke to uplinker</i> + </li> + + <br /> + + <li><a href="uplinktrafikkart.pl">Uplink-trafikkart</a> + <br /><i>Hvem burde hatt mer enn to uplinker</i> + </li> + + <br /> + + <li><a href="stromkart.pl">Strømkart</a> + <br /><i>Hvilke switcher har færre enn fem tilkoblede klienter</i> + </li> + + <br /> + + <li><a href="apkart.pl">Aksesspunkt-kart</a> + <br /><i>Hvilke aksesspunkter er plugget i</i> + </li> + + <br /> + + <!--<li><a href="overlay.pl">Overlay-nettkart</a> + <br /><i>Teh magic 3D!</i> + </li> + + <br /> --> + + <li><a href="smanagement.pl">Kommander switcher</a> + <br /><i>Konfigurer switchene</i> + </li> + + <br /> + + <li><a href="sshow.pl">Utførte og køede kommandoer</a> + <br /><i>Se og hÃ¥ndter kommandoer som er utført og fortsatt i køen</i> + </li> + + <br /> + + <!--<li><a href="stempmap.pl">Temperaturkart</a> + <br /><i>Temperaturkart for switchene</i> + </li> + + <br /> --> + + <li><a href="mbd-status.pl">MBD-status</a> + <br /><i>Hva spiller folk mest?</i> + </li> + </ul> + </body> +</html> diff --git a/web/nms.gathering.org/led.pl b/web/nms.gathering.org/led.pl new file mode 100755 index 0000000..a05041d --- /dev/null +++ b/web/nms.gathering.org/led.pl @@ -0,0 +1,20 @@ +#! /usr/bin/perl +use CGI; +use GD; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +my $dbh = nms::db_connect(); + +print $cgi->header(-type=>'text/plain', -expires=>'now'); + +my $q = $dbh->prepare('select * from ( SELECT switch,sysname,sum(bytes_in) AS bytes_in,sum(bytes_out) AS bytes_out from switches natural left join get_current_datarate() group by switch,sysname) t1 natural join placements order by zorder;'); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + my $sysname = $ref->{'sysname'}; + next unless $sysname =~ /e\d+-\d+/; + printf "%s %s\n", $sysname, (defined($ref->{'bytes_in'}) ? 'on' : 'off'); +} +$dbh->disconnect; diff --git a/web/nms.gathering.org/mbd-status.pl b/web/nms.gathering.org/mbd-status.pl new file mode 100755 index 0000000..d37781f --- /dev/null +++ b/web/nms.gathering.org/mbd-status.pl @@ -0,0 +1,44 @@ +#! /usr/bin/perl +use CGI; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +my $dbh = nms::db_connect(); +print $cgi->header(-type=>'text/html; charset=utf-8', -refresh=>'10; ' . CGI::url()); + +print <<"EOF"; +<html> + <head> + <title>MBD status</title> + </head> + <body> + <h1>MBD status</h1> + + <p>Spill søkt etter siste 15 minutter:</p> + + <table> + <tr> + <th>Beskrivelse</th> + <th>Aktive servere</th> + </tr> +EOF + +my $q = $dbh->prepare('select description,sum(active_servers) as active_servers from (select distinct on (game,port) * from mbd_log where ts >= now() - \'10 minutes\'::interval order by game,port,ts desc ) t1 group by description order by sum(active_servers) desc, description;'); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + print <<"EOF"; + <tr> + <td>$ref->{'description'}</td> + <td>$ref->{'active_servers'}</td> + </tr> +EOF +} +$dbh->disconnect; + +print <<"EOF"; + </table> + </body> +</html> +EOF diff --git a/web/nms.gathering.org/mygraph.pl b/web/nms.gathering.org/mygraph.pl new file mode 100755 index 0000000..64104aa --- /dev/null +++ b/web/nms.gathering.org/mygraph.pl @@ -0,0 +1,179 @@ +#! /usr/bin/perl -T +use strict; +use warnings; +use GD; +use POSIX; +use Time::Zone; + +sub blendpx { + my ($gd, $x, $y, $r, $g, $b, $frac) = @_; + my ($ro, $go, $bo) = $gd->rgb($gd->getPixel($x, $y)); + + # workaround for icky 256-color graphs + # $frac = int($frac * 32) / 32; + + my $rn = $ro * (1.0 - $frac) + $r * $frac; + my $gn = $go * (1.0 - $frac) + $g * $frac; + my $bn = $bo * (1.0 - $frac) + $b * $frac; + + $gd->setPixel($x, $y, $gd->colorResolve($rn, $gn, $bn)); +} + +# Standard implementation of Wu's antialiased line algorithm. +sub wuline { + my ($gd, $x1, $y1, $x2, $y2, $r, $g, $b, $a) = @_; + $x1 = POSIX::floor($x1); + $x2 = POSIX::floor($x2); + $y1 = POSIX::floor($y1); + $y2 = POSIX::floor($y2); + + if (abs($x2 - $x1) > abs($y2 - $y1)) { + # x-directional + if ($y2 < $y1) { + ($x2, $y2, $x1, $y1) = ($x1, $y1, $x2, $y2); + } + + my $y = POSIX::floor($y1); + my $frac = $y1 - $y; + my $dx = ($x2 > $x1) ? 1 : -1; + my $dy = ($y2 - $y1) / abs($x2 - $x1); + + for (my $x = $x1; $x != $x2 + $dx; $x += $dx) { + blendpx($gd, $x, $y, $r, $g, $b, $a * (1.0 - $frac)); + blendpx($gd, $x, $y + 1, $r, $g, $b, $a * $frac); + $frac += $dy; + if ($frac > 1) { + $frac -= 1; + ++$y; + } + } + } else { + # y-directional + if ($x2 < $x1) { + ($x2, $y2, $x1, $y1) = ($x1, $y1, $x2, $y2); + } + my $x = POSIX::floor($x1); + my $frac = $x1 - $x; + my $dy = ($y2 > $y1) ? 1 : -1; + my $dx = ($x2 - $x1) / abs($y2 - $y1); + + for (my $y = $y1; $y != $y2 + $dy; $y += $dy) { + blendpx($gd, $x, $y, $r, $g, $b, $a * (1.0 - $frac)); + blendpx($gd, $x + 1, $y, $r, $g, $b, $a * $frac); + $frac += $dx; + if ($frac > 1) { + $frac -= 1; + ++$x; + } + } + } +} + +sub makegraph { + my $xoffset = 70; + my ($width, $height, $min_x, $max_x, $min_y, $max_y, $tickgran) = @_; + + # Create our base graph + my $graph = new GD::Image($width, $height, 1); + my $white = $graph->colorAllocate(255, 255, 255); + my $gray = $graph->colorAllocate(230, 230, 255); + my $black = $graph->colorAllocate(0, 0, 0); + +# $graph->fill(0, 0, $white); + $graph->filledRectangle(0, 0, $width, $height, $white); # seems to work better + + $::xs = ($width - ($xoffset+2)) / ($max_x - $min_x); + $::ys = ($height - 33) / ($min_y - $max_y); + + # Hour marks + for my $i ($xoffset+1..$width-2) { + if (((($i-($xoffset+1)) / $::xs + $min_x) / 3600) % 2 == 1) { + $graph->line($i, 0, $i, $height - 1, $gray); + } + } + + # Hour text + for my $i (0..23) { + my @bounds = GD::Image::stringFT(undef, $black, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 0, 0, $i); + my $w = $bounds[2] - $bounds[0]; + + # Determine where the center of this will be + my $starthour = POSIX::fmod(($min_x + Time::Zone::tz_local_offset()) / 3600, 24); + my $diff = POSIX::fmod($i - $starthour + 24, 24); + + my $center = ($diff * 3600 + 1800) * $::xs; + + next if ($center - $w / 2 < 1 || $center + $w / 2 > $width - ($xoffset+2)); + $graph->stringFT($black, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, $xoffset + $center - $w / 2, $height - 6, $i); + } + + # + # Y lines; we want max 11 of them (zero-line, plus five on each side, or + # whatever) but we don't want the ticks to be on minimum 50 (or + # whatever $tickgran is set to). However, if there would be + # really really few lines, go down an order of magnitude and try + # again. + # + my $ytick; + do { + $ytick = ($max_y - $min_y) / 11; + $ytick = POSIX::ceil($ytick / $tickgran) * $tickgran; + $tickgran *= 0.1; + } while (($max_y - $min_y) / $ytick < 4); + + for my $i (-11..11) { + my $y = ($i * $ytick - $max_y) * $::ys + 10; + next if ($y < 2 || $y > $height - 18); + + if ($i == 0) { + wuline($graph, $xoffset, $y, $width - 1, $y, 0, 0, 0, 1.0); + wuline($graph, $xoffset, $y + 1, $width - 1, $y + 1, 0, 0, 0, 1.0); + } else { + wuline($graph, $xoffset, $y, $width - 1, $y, 0, 0, 0, 0.2); + } + + # text + my $traf = 8 * ($i * $ytick); + my $text; + if ($traf >= 500_000_000) { + $text = (sprintf "%.1f Gbit", ($traf/1_000_000_000)); + } elsif ($traf >= 500_000) { + $text = (sprintf "%.1f Mbit", ($traf/1_000_000)); + } else { + $text = (sprintf "%.1f kbit", ($traf/1_000)); + } + + my @bounds = GD::Image::stringFT(undef, $black, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 0, 0, $text); + my $w = $bounds[2] - $bounds[0]; + my $h = $bounds[1] - $bounds[5]; + + next if ($y - $h/2 < 2 || $y + $h/2 > $height - 12); + $graph->stringFT($black, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, ($xoffset - 4) - $w, $y + $h/2, $text); + } + + # Nice border(TM) + $graph->rectangle($xoffset, 0, $width - 1, $height - 1, $black); + + return $graph; +} + +sub plotseries { + my ($graph, $xvals, $yvals, $r, $g, $b, $min_x, $max_y) = @_; + my $xoffset = 70; + + my @xvals = @{$xvals}; + my @yvals = @{$yvals}; + + my $x = $xvals[0]; + my $y = $yvals[0]; + for my $i (1..$#xvals) { + next if ($::xs * ($xvals[$i] - $x) < 2 && $::ys * ($yvals[$i] - $y) > -2); + + wuline($graph, ($x-$min_x) * $::xs + $xoffset + 1, ($y-$max_y) * $::ys + 10, + ($xvals[$i]-$min_x) * $::xs + $xoffset + 1, ($yvals[$i]-$max_y) * $::ys + 10, $r, $g, $b, 1.0); + $x = $xvals[$i]; + $y = $yvals[$i]; + } +} + +1; diff --git a/web/nms.gathering.org/nettkart-continuous.html b/web/nms.gathering.org/nettkart-continuous.html new file mode 100644 index 0000000..e51eea0 --- /dev/null +++ b/web/nms.gathering.org/nettkart-continuous.html @@ -0,0 +1,31 @@ +<html> + <body> + <div id="d"></div> + <script type="text/javascript"> + <!-- + var existing_img = null; + + function load_new() { + var i = document.createElement('img'); + i.onload = function() { loaded(i); }; + i.style.display = 'none'; + i.src = '/nettkart.pl?random=' + (new Date()).getTime(); + document.getElementById('d').appendChild(i); + } + + function loaded(i) { + i.style.display = ''; + + if (existing_img) { + existing_img.parentElement.removeChild(existing_img); + } + existing_img = i; + + setTimeout(function() { load_new(); }, 10000); + } + + load_new(); + --> + </script> + </body> +</html> diff --git a/web/nms.gathering.org/nettkart-telnet.pl b/web/nms.gathering.org/nettkart-telnet.pl new file mode 100755 index 0000000..57cac19 --- /dev/null +++ b/web/nms.gathering.org/nettkart-telnet.pl @@ -0,0 +1,47 @@ +#! /usr/bin/perl +use CGI; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +my $dbh = nms::db_connect(); +print $cgi->header(-type=>'text/html; charset=utf-8', -refresh=>'45; ' . CGI::url()); + +print <<"EOF"; +<html> + <head> + <title>nettkart - telnet</title> + </head> + <body> + <map name="switches"> +EOF + +my $q = $dbh->prepare("select * from switches natural join placements where ip <> inet '127.0.0.1'"); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + + my $traffic = 4.0 * $ref->{'bytes_in'} + $ref->{'bytes_out'}; # average and convert to bits (should be about the same in practice) + my $ttext; + if ($traffic >= 1_000_000_000) { + $ttext = sprintf "%.2f Gbit/port/sec", $traffic/1_000_000_000; + } elsif ($traffic => 1_000_000) { + $ttext = sprintf "%.2f Mbit/port/sec", $traffic/1_000_000; + } else { + $ttext = sprintf "%.2f kbit/port/sec", $traffic/1_000; + } + + printf " <area shape=\"rect\" coords=\"%u,%u,%u,%u\" target=\"blank\" href=\"telnet://$ref->{'ip'}\" alt=\"%s (%s)\" onmouseover=\"window.status='%s (%s)'; return true\" onmouseout=\"window.status=''\" />\n", + $3, $4, $1, $2, $ref->{'switch'}, $ref->{'sysname'}, + $ttext, $ref->{'sysname'}, $ttext; +} +$dbh->disconnect; + +print <<"EOF"; + </map> + + <p><img src="nettkart.pl" usemap="#switches" /></p> + </body> +</html> +EOF diff --git a/web/nms.gathering.org/nettkart-text.pl b/web/nms.gathering.org/nettkart-text.pl new file mode 100755 index 0000000..d3f4be7 --- /dev/null +++ b/web/nms.gathering.org/nettkart-text.pl @@ -0,0 +1,47 @@ +#! /usr/bin/perl +use CGI; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +my $dbh = nms::db_connect(); +print $cgi->header(-type=>'text/html; charset=utf-8', -refresh=>'10; ' . CGI::url()); + +print <<"EOF"; +<html> + <head> + <title>nettkart</title> + </head> + <body> + <map name="switches"> +EOF + +my $q = $dbh->prepare("select * from switches natural join placements where ip <> inet '127.0.0.1'"); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + + my $traffic = 4.0 * $ref->{'bytes_in'} + $ref->{'bytes_out'}; # average and convert to bits (should be about the same in practice) + my $ttext; + if ($traffic >= 1_000_000_000) { + $ttext = sprintf "%.2f Gbit/port/sec", $traffic/1_000_000_000; + } elsif ($traffic => 1_000_000) { + $ttext = sprintf "%.2f Mbit/port/sec", $traffic/1_000_000; + } else { + $ttext = sprintf "%.2f kbit/port/sec", $traffic/1_000; + } + + printf " <area shape=\"rect\" coords=\"%u,%u,%u,%u\" href=\"showswitch.pl?id=%u\" alt=\"%s (%s)\" onmouseover=\"window.status='%s (%s)'; return true\" onmouseout=\"window.status=''\" />\n", + $3, $4, $1, $2, $ref->{'switch'}, $ref->{'sysname'}, + $ttext, $ref->{'sysname'}, $ttext; +} +$dbh->disconnect; + +print <<"EOF"; + </map> + + <p><img src="nettkart.pl" usemap="#switches" /></p> + </body> +</html> +EOF diff --git a/web/nms.gathering.org/nettkart-web.pl b/web/nms.gathering.org/nettkart-web.pl new file mode 100755 index 0000000..ce76c35 --- /dev/null +++ b/web/nms.gathering.org/nettkart-web.pl @@ -0,0 +1,47 @@ +#! /usr/bin/perl +use CGI; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +my $dbh = nms::db_connect(); +print $cgi->header(-type=>'text/html; charset=utf-8', -refresh=>'45; ' . CGI::url()); + +print <<"EOF"; +<html> + <head> + <title>nettkart - web</title> + </head> + <body> + <map name="switches"> +EOF + +my $q = $dbh->prepare("select * from switches natural join placements where ip <> inet '127.0.0.1'"); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + + my $traffic = 4.0 * $ref->{'bytes_in'} + $ref->{'bytes_out'}; # average and convert to bits (should be about the same in practice) + my $ttext; + if ($traffic >= 1_000_000_000) { + $ttext = sprintf "%.2f Gbit/port/sec", $traffic/1_000_000_000; + } elsif ($traffic => 1_000_000) { + $ttext = sprintf "%.2f Mbit/port/sec", $traffic/1_000_000; + } else { + $ttext = sprintf "%.2f kbit/port/sec", $traffic/1_000; + } + + printf " <area shape=\"rect\" coords=\"%u,%u,%u,%u\" href=\"http://$ref->{'ip'}\" alt=\"%s (%s)\" onmouseover=\"window.status='%s (%s)'; return true\" onmouseout=\"window.status=''\" />\n", + $3, $4, $1, $2, $ref->{'switch'}, $ref->{'sysname'}, + $ttext, $ref->{'sysname'}, $ttext; +} +$dbh->disconnect; + +print <<"EOF"; + </map> + + <p><img src="nettkart.pl" usemap="#switches" /></p> + </body> +</html> +EOF diff --git a/web/nms.gathering.org/nettkart.pl b/web/nms.gathering.org/nettkart.pl new file mode 100755 index 0000000..b9517f8 --- /dev/null +++ b/web/nms.gathering.org/nettkart.pl @@ -0,0 +1,142 @@ +#! /usr/bin/perl +use CGI; +use GD; +use Image::Magick; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +# Sekrit night-mode +my $night = defined($cgi->param('night')); + +my $dbh = nms::db_connect(); + +GD::Image->trueColor(1); +my ($img, $text_img); + +my $img = GD::Image->new('bg07.png'); +if ($night) { + my ($width, $height) = ($img->width, $img->height); + + $img = GD::Image->new($width, $height, 1); + $img->alphaBlending(0); + $img->saveAlpha(1); + my $blank = $img->colorAllocateAlpha(0, 0, 0, 127); + $img->filledRectangle(0, 0, $img->width - 1, $img->height - 1, $blank); + + $text_img = GD::Image->new($width, $height, 1); + $text_img->alphaBlending(0); + $text_img->saveAlpha(1); + my $blank = $text_img->colorAllocateAlpha(0, 0, 0, 127); + $text_img->filledRectangle(0, 0, $text_img->width - 1, $text_img->height - 1, $blank); +} else { + $img = GD::Image->new('bg07.png'); + $text_img = $img; +} + +my $blk = $img->colorResolve(0, 0, 0); + +for my $y (42..236) { + my $i = 4.0 * ($y - 236.0) / (42.0 - 237.0); + my $clr = get_color($i); + + $img->filledRectangle(12, $y, 33, $y+1, $clr); + $text_img->filledRectangle(12, $y, 33, $y+1, $clr); +} + +$text_img->rectangle(12,42,33,236,$blk); + +my $tclr = $night ? $text_img->colorResolve(255, 255, 255) : $blk; +$text_img->stringFT($tclr, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*0.0/4.0, "100 Gbit/sec"); +$text_img->stringFT($tclr, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*1.0/4.0, "10 Gbit/sec"); +$text_img->stringFT($tclr, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*2.0/4.0, "1 Gbit/sec"); +$text_img->stringFT($tclr, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*3.0/4.0, "100 Mbit/sec"); +$text_img->stringFT($tclr, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*4.0/4.0, "10 Mbit/sec"); +$text_img->stringFT($tclr, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 1000, 700, "NMS (C) 2005-2012 Tech:Server"); + +my $q = $dbh->prepare("select * from ( SELECT switch,sysname,sum(bytes_in) AS bytes_in,sum(bytes_out) AS bytes_out from switches natural left join get_current_datarate() where ip <> inet '127.0.0.1' group by switch,sysname) t1 natural join placements order by zorder;"); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + + # for now: + # 10Mbit/switch = green + # 100Mbit/switch = yellow + # 1Gbit/switch = red + # 10Gbit/switch = white + + my $clr; + + if (defined($ref->{'bytes_in'})) { + my $intensity = 0.0; + my $traffic = 4.0 * ($ref->{'bytes_in'} + $ref->{'bytes_out'}); # average and convert to bits (should be about the same in practice) + + my $max = 100_000_000_000.0; # 100Gbit + my $min = 10_000_000.0; # 10Mbit + if ($traffic >= $min) { + $intensity = log($traffic / $min) / log(10); + $intensity = 4.0 if ($intensity > 4.0); + } + $clr = get_color($intensity); + } else { + $clr = $img->colorResolve(0, 0, 255); + } + + my $sysname = $ref->{'sysname'}; + $sysname =~ s/-sekrit//; + + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + $img->filledRectangle($3,$4,$1,$2,$clr); + $text_img->filledRectangle($3,$4,$1,$2,$clr); + + $img->rectangle($3,$4,$1,$2,$blk); + $text_img->rectangle($3,$4,$1,$2,$blk); + my ($x2, $y2, $x1, $y1) = ($1, $2, $3, $4); + my $max_textlen = ($x2-$x1) > ($y2-$y1) ? $x2-$x1 : $y2-$y1; + while (length($sysname) * 6 > $max_textlen) { + # Try to abbreviate sysname if it is too long for the box + $sysname =~ s/^(.*)[a-z]~?([0-9]+)$/$1~$2/ or last; + } + if (($x2-$x1) > ($y2-$y1)) { + $text_img->string(gdSmallFont,$x1+2,$y1,$sysname,$blk); + } else { + $text_img->stringUp(gdSmallFont,$x1,$y2-3,$sysname,$blk); + } +} +$dbh->disconnect; + +print $cgi->header(-type=>'image/png', -expires=>'now'); +if ($night) { + my $magick = Image::Magick->new; + $magick->BlobToImage($img->png); + $magick->Blur(sigma=>10.0, channel=>'All'); + $magick->Gamma(gamma=>1.90); + + my $m2 = Image::Magick->new; + $m2->Read('bg07.png'); + $m2->Negate(); + $m2->Composite(image=>$magick, compose=>'Atop'); + + my $m3 = Image::Magick->new; + $m3->BlobToImage($text_img->png); + $m2->Composite(image=>$m3, compose=>'Atop'); + + $img = $m2->ImageToBlob(); + print $img; +} else { + print $img->png; +} + +sub get_color { + my $intensity = shift; + my $gamma = 1.0/1.90; + if ($intensity > 3.0) { + return $img->colorResolve(255.0 * ((4.0 - $intensity) ** $gamma), 255.0 * ((4.0 - $intensity) ** $gamma), 255.0 * ((4.0 - $intensity) ** $gamma)); + } elsif ($intensity > 2.0) { + return $img->colorResolve(255.0, 255.0 * (($intensity - 2.0) ** $gamma), 255.0 * (($intensity - 2.0) ** $gamma)); + } elsif ($intensity > 1.0) { + return $img->colorResolve(255.0, 255.0 * ((2.0 - $intensity) ** $gamma), 0); + } else { + return $img->colorResolve(255.0 * ($intensity ** $gamma), 255, 0); + } +} diff --git a/web/nms.gathering.org/portkart.pl b/web/nms.gathering.org/portkart.pl new file mode 100755 index 0000000..1269173 --- /dev/null +++ b/web/nms.gathering.org/portkart.pl @@ -0,0 +1,82 @@ +#! /usr/bin/perl +use CGI; +use GD; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +my $dbh = nms::db_connect(); + +GD::Image->trueColor(1); +$img = GD::Image->new('bg07.png'); + +my $blk = $img->colorResolve(0, 0, 0); + +for my $y (42..236) { + my $i = 3.0 * ($y - 236.0) / (42.0 - 237.0); + my $clr = get_color($i); + + $img->filledRectangle(12,$y,33,$y+1,$clr); +} + +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*0.0/3.0, "1 Gbit/sec"); +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*1.0/3.0, "100 Mbit/sec"); +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*2.0/3.0, "10 Mbit/sec"); +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*3.0/3.0, "1 Mbit/sec"); +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 1000, 620, "NMS (C) 2005-2007 Tech:Server"); + +my $q = $dbh->prepare('select switch,port,bytes_in,bytes_out,placement,switchtype from switches natural join placements natural join get_datarate() where switchtype like \'%3100%\''); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + + # for now: + # 100kbit/port = all green + # 1gbit/port = all red + + my $clr; + + if (defined($ref->{'bytes_in'})) { + my $intensity = 0.0; + my $traffic = 4.0 * ($ref->{'bytes_in'} + $ref->{'bytes_out'}); # average and convert to bits (should be about the same in practice) + + my $max = 100_000_000_000.0; # 1Gbit + my $min = 1_000_000.0; # 1Mbit + if ($traffic >= $min) { + $intensity = log($traffic / $min) / log(10); + $intensity = 4.0 if ($intensity > 4.0); + } + $clr = get_color($intensity); + } else { + $clr = $img->colorResolve(0, 0, 255); + } + + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + my $npo = 48; + my $f = ($ref->{'port'} - 1) % 2; + my $po = ($ref->{'port'} - 1 - $f)/2; + my $h = 2*($2-$4)/$npo; + my $w = ($1-$3)/2; + + $img->filledRectangle($3+$w*$f,$4+$po*$h,$3+$w+$w*$f,$4+$h*($po+1),$clr); +# $img->rectangle($3+$w*$f,$4+$po*$h,$3+$w+$w*$f,$4+$h*($po+1),$blk); + $img->rectangle($3,$4,$1,$2,$blk); +} +$dbh->disconnect; + +print $cgi->header(-type=>'image/png'); +print $img->png; + +sub get_color { + my $intensity = shift; + my $gamma = 1.0/1.90; + if ($intensity > 3.0) { + return $img->colorResolve(255.0 * ((4.0 - $intensity) ** $gamma), 255.0 * ((4.0 - $intensity) ** $gamma), 255.0 * ((4.0 - $intensity) ** $gamma)); + } elsif ($intensity > 2.0) { + return $img->colorResolve(255.0, 255.0 * (($intensity - 2.0) ** $gamma), 255.0 * (($intensity - 2.0) ** $gamma)); + } elsif ($intensity > 1.0) { + return $img->colorResolve(255.0, 255.0 * ((2.0 - $intensity) ** $gamma), 0); + } else { + return $img->colorResolve(255.0 * ($intensity ** $gamma), 255, 0); + } +} diff --git a/web/nms.gathering.org/showswitch.pl b/web/nms.gathering.org/showswitch.pl new file mode 100755 index 0000000..5ed0029 --- /dev/null +++ b/web/nms.gathering.org/showswitch.pl @@ -0,0 +1,221 @@ +#! /usr/bin/perl +use CGI; +use DBI; +use Time::HiRes; +use POSIX ":sys_wait_h"; +use strict; +use warnings; +use lib '../../include'; +use nms; +my $cgi = CGI->new; +my $switch = $cgi->param('id'); +my $width = $cgi->param('width'); +my $height = $cgi->param('height'); +my @pids = (); +my $resthtml = ""; + +$width = 500 unless (defined($width)); +$height = 250 unless (defined($height)); + +require './mygraph.pl'; + +my $start = [Time::HiRes::gettimeofday]; +my $dbh = nms::db_connect(); + +# Fetch the name +my $ref = $dbh->selectrow_hashref('SELECT sysname FROM switches WHERE switch=?', undef, $switch); + +print $cgi->header(-type=>'text/html; charset=utf-8'); +print <<"EOF"; +<html> + <head> + <title>snmp</title> + </head> + <body> + <h1>Switch $switch ($ref->{'sysname'})</h1> +EOF + +my $q = $dbh->prepare('select port,coalesce(description, \'Port \' || port) as description,extract(epoch from time) as time,bytes_in,bytes_out from switches natural left join portnames natural join polls where time between now() - \'1 day\'::interval and now() and switch=? order by switch,port,time;') or die $dbh->errstr; +$q->execute($switch) or die $dbh->errstr; + +my (@totx, @toty1, @toty2) = (); + +my (@x, @y1, @y2) = (); +my $last_port = -1; +my $portname = ""; +my $min_x = time; +my $max_x = time - 86400; +my ($min_y, $max_y, $prev_time, $prev_in, $prev_out); +my ($if,$of,$ifv,$ofv); +my $idx; +my ($min_ty,$max_ty) = (0, 10_000_000/8); + +$prev_time = -1; +my $last_totx; +while (my $ref = $q->fetchrow_hashref()) { + my $time = $ref->{'time'}; + my $in = $ref->{'bytes_in'}; + my $out = $ref->{'bytes_out'}; + next if ($time == $prev_time); + + if ($ref->{'port'} != $last_port) { + if ($last_port != -1) { + my $filename = "$switch-$last_port-$width-$height.png"; + + # reap children + waitpid(-1, WNOHANG); + + my $pid = fork(); + if ($pid == 0) { +# write out the graph + my $graph = makegraph($width, $height, $min_x, $max_x, $min_y, $max_y, 5); + plotseries($graph, \@x, \@y1, 255, 0, 0, $min_x, $max_y); + plotseries($graph, \@x, \@y2, 0, 0, 255, $min_x, $max_y); + + open GRAPH, ">img/$filename" + or die "img/$filename: $!"; + print GRAPH $graph->png; + close GRAPH; + exit; + } + + push @pids, $pid; + + $resthtml .= "<div style=\"float: left;\"><h2>$portname</h2>\n"; + $resthtml .= "<p><img src=\"img/$filename\" width=\"$width\" height=\"$height\" /></p></div>\n"; + } + + # Reset all the variables + @x = (); + @y1 = (); + @y2 = (); + ($min_y,$max_y) = (0, 10_000_000/8); + $prev_time = $ref->{'time'}; + $prev_in = $ref->{'bytes_in'}; + $prev_out = $ref->{'bytes_out'}; + $last_port = $ref->{'port'}; + $portname = $ref->{'description'}; + ($if,$of,$ifv,$ofv) = (0,0,0,0); + ($prev_time,$prev_in,$prev_out) = ($time,$in,$out); + $idx = 0; + $last_totx = undef; + next; + } + + # Assume overflow (unless the switch has been down for >10 minutes) + my ($calc_in, $calc_out) = ($in, $out); + if ($in < $prev_in || $out < $prev_out) { + if ($prev_in < 4294967296 && $prev_out < 4294967296) { + # ick, heuristics + if ($prev_time - $time > 600 || ($in + 4294967296 - $prev_in) > 2147483648 || ($out + 4294967296 - $prev_out) > 2147483648) { + ($prev_time,$prev_in,$prev_out) = ($time,$in,$out); + next; + } + + $calc_in += 4294967296 if ($in < $prev_in); + $calc_out += 4294967296 if ($out < $prev_out); + } else { + $prev_in = 0; + $prev_out = 0; + } + } + + # Remove dupes + if ($in == $prev_in && $out == $prev_out) { + ($prev_time,$prev_in,$prev_out) = ($time,$in,$out); + next; + } + + # Find the current flow + my $if = ($calc_in - $prev_in) / ($time - $prev_time); + my $of = ($calc_out - $prev_out) / ($time - $prev_time); + + # Summarize (we don't care about the summed variance for now) + $min_x = $time if (!defined($min_x) || $time < $min_x); + $max_x = $time if (!defined($max_x) || $time > $max_x); + $min_y = $if if (!defined($min_y) || $if < $min_y); + $min_y = $of if ($of < $min_y); + $max_y = $if if (!defined($max_y) || $if > $max_y); + $max_y = $of if ($of > $max_y); + + my $pt = 0.5 * ($time + $prev_time); + + push @x, $pt; + push @y1, $if; + push @y2, $of; + + while ($idx < $#totx && $pt > $totx[$idx]) { + ++$idx; + } + if ($idx >= $#totx) { + push @totx, $pt; + push @toty1, $if; + push @toty2, $of; + ++$idx; + + $min_ty = $if if (!defined($min_ty) || $if < $min_ty); + $min_ty = $of if ($of < $min_ty); + $max_ty = $if if (!defined($max_ty) || $if > $max_ty); + $max_ty = $of if ($of > $max_ty); + } else { + if (!defined($last_totx) || $last_totx != $idx) { + $toty1[$idx] += $if; + $toty2[$idx] += $of; + } + $last_totx = $idx; + + $min_ty = $toty1[$idx] if (!defined($min_ty) || $toty1[$idx] < $min_ty); + $min_ty = $toty2[$idx] if ($toty2[$idx] < $min_ty); + $max_ty = $toty1[$idx] if (!defined($max_ty) || $toty1[$idx] > $max_ty); + $max_ty = $toty2[$idx] if ($toty2[$idx] > $max_ty); + } + + ($prev_time,$prev_in,$prev_out) = ($time,$in,$out); +} +$dbh->disconnect; + +# last graph +my $filename = "$switch-$last_port-$width-$height.png"; + +my $pid = fork(); +if ($pid == 0) { + my $graph = makegraph($width, $height, $min_x, $max_x, $min_y, $max_y, 5); + plotseries($graph, \@x, \@y1, 255, 0, 0, $min_x, $max_y); + plotseries($graph, \@x, \@y2, 0, 0, 255, $min_x, $max_y); + + open GRAPH, ">img/$filename" + or die "img/$filename: $!"; + print GRAPH $graph->png; + close GRAPH; + exit; +} + +push @pids, $pid; + +$resthtml .= "<div style=\"float: left;\"><h2>$portname</h2>\n"; +$resthtml .= "<p><img src=\"img/$filename\" width=\"$width\" height=\"$height\" /></p></div>\n"; + +# total graph +my $graph = makegraph($width, $height, $min_x, $max_x, $min_ty, $max_ty, 5); +plotseries($graph, \@totx, \@toty1, 255, 0, 0, $min_x, $max_ty); +plotseries($graph, \@totx, \@toty2, 0, 0, 255, $min_x, $max_ty); + +$filename = "$switch-$width-$height.png"; +open GRAPH, ">img/$filename" or die "img/$filename: $!"; +print GRAPH $graph->png; +close GRAPH; + + +# Wait for all the other graphs to be done +while (waitpid(-1, 0) != -1) { + 1; +} + +print $resthtml; + +print "<div style=\"float: left;\"><h2>Total</h2>\n"; +print "<p><img src=\"img/$filename\" width=\"$width\" height=\"$height\" /></p></div>\n"; + +my $elapsed = Time::HiRes::tv_interval($start); +printf "<p style=\"clear: both;\">Page and all graphs generated in %.2f seconds.</p>\n", $elapsed; +print "</body>\n</html>\n"; diff --git a/web/nms.gathering.org/slide.html b/web/nms.gathering.org/slide.html new file mode 100644 index 0000000..046020d --- /dev/null +++ b/web/nms.gathering.org/slide.html @@ -0,0 +1,38 @@ +<!doctype html> +<html> + <body> + <iframe id="tgview" style="border: 0; width: 1536px; height: 864px"></iframe> + + <script> + (function() { + var urls = [ + 'http://onlineclock.net/', + 'http://nms.tg13.gathering.org/dhcpkart.pl', + 'http://nms.tg13.gathering.org/nettkart-text.pl', + 'http://nms.tg13.gathering.org/nettkart-text.pl', + 'http://nms.tg13.gathering.org/uplinkkart.pl', + 'http://nms.tg13.gathering.org/uplinktrafikkart.pl', + 'http://nms.tg13.gathering.org/apkart.pl', + 'http://stats.tg13.gathering.org/' + ]; + + var view = document.getElementById('tgview'); + var fload = function( frame, url ) { + frame.src = url; + }; + + var i = 0; + (function rotation() { + //if ( i != l-1 ) { + if ( i != urls.length-1 ) { + i++ + } else { + i = 0; + } + fload( view, urls[i] ); + setTimeout( arguments.callee, 10000 ); + })(); + })(); + </script> + </body> +</html> diff --git a/web/nms.gathering.org/smanagement.pl b/web/nms.gathering.org/smanagement.pl new file mode 100755 index 0000000..c01c52d --- /dev/null +++ b/web/nms.gathering.org/smanagement.pl @@ -0,0 +1,239 @@ +#!/usr/bin/perl +use warnings; +use strict; +use CGI; +use DBI; +use Data::Dumper; +use Switch; +use lib '../../include'; +use nms; + +# Grab from .htaccess-authentication +my $user = $ENV{'REMOTE_USER'}; + +my $dbh = nms::db_connect(); +$dbh->{AutoCommit} = 0; + +# Ugly casting, found no other way +my $sinsert = $dbh->prepare( "INSERT INTO squeue + (gid, added, priority, addr, sysname, cmd, author) + VALUES(?::text::int, timeofday()::timestamptz, ?::text::int, ?::text::inet, ?, ?, ?)") + or die "Could not prepare sinsert"; +my $sgetip = $dbh->prepare("SELECT ip FROM switches WHERE sysname = ?") + or die "Could not prepare sgetip"; +my $sgid = $dbh->prepare("SELECT nextval('squeue_group_sequence') as gid"); +my $all_switches = $dbh->prepare("SELECT sysname FROM switches ORDER BY sysname"); + +sub parse_range($) { + my $switches = $_; + my @range; + + my @rangecomma = split(/\s*,\s*/, $switches); + foreach (@rangecomma) { + my ($first, $last) = $_ =~ /(e\d+\-(?:sw)?[123456])\s*\-\s*(e\d+\-(?:sw)?[123456])?/; + if (!defined($first) && $_ =~ /e\d+\-(sw)?[123456]/) { + $first = $_; + } + if (!defined($first)) { + print "<font color=\"red\">Parse error in: $_</font><br>\n"; + next; + } + my ($rowstart, $placestart) = $first =~ /e(\d+)\-(?:sw)?([123456])/; + if (!defined($rowstart) || !defined($placestart)) { + print "<font color=\"red\">Parse error in: $_</font><br>\n"; + next; + } + my ($rowend, $placeend); + if (!defined($last)) { + $rowend = $rowstart; + $placeend = $placestart; + } + else { + ($rowend, $placeend) = $last =~ /e(\d+)\-(?:sw)?([123456])/; + } + if (!defined($rowend) || !defined($placeend)) { + print "<font color=\"red\">Parse error in: $_</font><br>\n"; + next; + } + #print "e $rowstart - $placestart to e $rowend - $placeend <br>\n"; + for (my $i = $rowstart; $i <= $rowend; $i++) { + my $dostart; + if ($rowstart != $i) { + $dostart = 1; + } + else { + $dostart = $placestart; + } + for (my $j = $dostart; $j <= 6; $j++) { + last if ($i == $rowend && $j > $placeend); + push(@range, "e$i-$j"); + } + } + } +# foreach (@range) { +# print ":: $_<br>\n"; +# } + return @range; +} + +sub get_addr_from_switchnum($) { + my ($sysname) = @_; + + $sgetip->execute($sysname); + if ($sgetip->rows() < 1) { + print "Could not get the ip for: ".$sysname; + return undef; + } + my $row = $sgetip->fetchrow_hashref(); + return $row->{'ip'}; +} + +my $cgi = new CGI; + +print $cgi->header(-type=>'text/html; charset=utf-8'); + +print << "EOF"; +<html> + <head> + <title>Switch managment</title> + </head> + <body> + <p>Du er logget inn som: $user</p> + <form method="POST" action="smanagement.pl"> + <table> + <tr> + <td>Alle switchene</td> + <td><input type="radio" name="rangetype" value="all" /></td> + <td></td> + <td></td> + </tr> + <tr> + <td>Switch</td> + <td><input type="radio" checked name="rangetype" value="switch" /></td> + <td><input type="text" name="range" /></td> + <td>e1-2, e3-3 - e10-2</td> + </tr> + <tr> + <td>Regexp</td> + <td><input type="radio" name="rangetype" value="regexp" /></td> + <td><input type="text" name="regexp" /></td> + <td>Regulært uttrykk</td> + </tr> + <tr> + <td>Rad</td> + <td><input type="radio" name="rangetype" value="row" /></td> + <td><input type="text" name="range" /></td> + <td>1,3-5 (Disabled)</td> + </tr> + <tr> + <td><hr /></td> + <td><hr /></td> + <td><hr /></td> + <td><hr /></td> + </tr> + <tr> + <td>Prioritet</td> + <td></td> + <td> + <select name="priority"> + <option value="1">1 (lavest)</option> + <option value="2">2</option> + <option selected value="3">3</option> + <option value="4">4</option> + <option value="5">5 (høyest)</option> + </select> + </td> + </tr> + <tr> + <td>Kommando(er):</td> + <td></td> + <td><textarea name="cmd" cols="80" rows="24"></textarea></td> + <td>En kommando per linje. Linjer som begynner med ! sørger for at nms ikke venter pÃ¥ normal prompt, men fyrer av gÃ¥rde neste linje umiddelbart. Kjekt for kommandoer av typen "!save\\nY"</td> + </td> + <tr> + <td><hr /></td> + <td><hr /></td> + <td><hr /></td> + <td><hr /></td> + </tr> + </table> + <input type="submit" value="Execute!" /><br /> + </form> +EOF + +print "<br />\n"; + +my @switches = (); +switch ($cgi->param('rangetype')) { + case 'all' { + print "Sender `".$cgi->param('cmd')."` til alle switchene<br />"; + @switches = (); + $all_switches->execute(); + while (my $ref = $all_switches->fetchrow_hashref) { + push @switches, $ref->{'sysname'}; + } + } + case 'switch' { +# print "Sender `".$cgi->param('cmd')."` til switchene `" +# .$cgi->param('range')."`.<br />"; + $_ = $cgi->param('range'); + @switches = parse_range($_); + } + case 'regexp' { + @switches = (); + $all_switches->execute(); + while (my $ref = $all_switches->fetchrow_hashref) { + push @switches, $ref->{'sysname'} if $ref->{'sysname'} =~ $cgi->param('regexp'); + } + } + case 'row' { +# print "Sender `".$cgi->param('cmd')."` til radene `" +# .$cgi->param('range')."`.<br />"; +# print "This function does not work yet."; +# $_ = $cgi->param('range'); +# @switches = &parse_row_range($_); +# @switches = (); + print "<font color=\"red\">SlÃ¥tt av!</font>\n"; + } +} + +my $gid; +if (@switches > 0) { + $sgid->execute(); + my $row = $sgid->fetchrow_hashref(); + $gid = $row->{gid}; +} + +my $pri = $cgi->param('priority'); + +print "<pre>\n"; +foreach my $switch (@switches) { + my $addr = get_addr_from_switchnum($switch); + if (!defined($addr)) { + next; + } + my $cmd = $cgi->param('cmd'); + print "$switch got addr $addr <br>\n"; + print "Queuing commands for $switch:\n"; + my $result = $sinsert->execute($gid, $pri, $addr, $switch, $cmd, $user); + if (!$result) { + print "\t<font color=\"red\">" + ."Could not execute query." + ."</font>\n"; + print "\t".$dbh->errstr."\n"; + } + else { + print "\tQueued: $cmd\n"; + } + print "\n"; +} +$dbh->commit; +if (defined($gid)) { + print "<a href=\"sshow.pl?action=showgid&gid=".$gid."\">Vis resultat</a>\n"; +} +print "</pre>\n"; + +print << "EOF"; + </body> +</html> +EOF diff --git a/web/nms.gathering.org/ssendfile.pl b/web/nms.gathering.org/ssendfile.pl new file mode 100755 index 0000000..ec2ebb8 --- /dev/null +++ b/web/nms.gathering.org/ssendfile.pl @@ -0,0 +1,48 @@ +#!/usr/bin/perl +use warnings; +use strict; +use lib '../../include'; +use POSIX; + +my $delaytime = 30; +my $poll_frequency = 60; + +sub mylog { + my $msg = shift; + my $time = POSIX::ctime(time); + $time =~ s/\n.*$//; + printf STDERR "[%s] %s\n", $time, $msg; +} + +if ($#ARGV != 1) { + die("Error in arguments passed\n". + "./ssendfile.pl addr configfile\n"); +} + +my $conn = nms::switch_connect($ARGV[0]); +if (!defined($conn)) { + die("Could not connect to switch.\n"); +} + +open(CONFIG, $ARGV[1]); +while (<CONFIG>) { + my $cmd = $_; + $cmd =~ s/[\r\n]+//g; + print "Executing: `$cmd`\n"; +# if ($cmd =~ /ip ifconfig swif0 (\d{1-3}\.\d{1-3}\.\d{1-3}\.\d{1-3})/) { +# print "New ip: $1\n"; +# $conn->cmd( String => $cmd, +# Timeout => 3); +# $conn = nms::switch_connect($1); +# if (!defined($conn)) { +# die "Could not connect to new ip: $1\n"; +# } +# } +# else { + my @data = nms::switch_exec($cmd, $conn); + foreach my $line (@data) { + $line =~ s/[\r\n]+//g; + print "$line\n"; + } +# } +} diff --git a/web/nms.gathering.org/sshow.pl b/web/nms.gathering.org/sshow.pl new file mode 100755 index 0000000..f406b69 --- /dev/null +++ b/web/nms.gathering.org/sshow.pl @@ -0,0 +1,257 @@ +#!/usr/bin/perl +use lib '../../include'; +use nms; + +use warnings; +use strict; +use Switch; +use CGI; +use DBI; + +# Grab from .htaccess-authentication +my $user = $ENV{'REMOTE_USER'}; + +my $dbh = nms::db_connect(); +$dbh->{AutoCommit} = 0; + +my $sgetdone = $dbh->prepare( +"SELECT * +FROM squeue +WHERE processed = 't' +ORDER BY updated DESC, sysname +LIMIT ?::text::int") + or die "Could not prepare sgetdone"; + +my $sgetdonegid = $dbh->prepare( +"SELECT * +FROM squeue +WHERE processed = 't' AND gid = ?::text::int +ORDER BY updated DESC, sysname") + or die "Could not prepare sgetdonegid"; + +my $slistdonegid = $dbh->prepare( +"SELECT DISTINCT gid, cmd, author, added +FROM squeue +WHERE processed = 't' +ORDER BY gid") + or die "Could not prepare slistdonegid"; + +my $slistprocgid = $dbh->prepare( +"SELECT DISTINCT gid, cmd, author, added +FROM squeue +WHERE processed = 'f' +ORDER BY gid") + or die "Could not prepare slistdonegid"; + +my $sgetgid = $dbh->prepare( +"SELECT * +FROM squeue +WHERE gid = ?") + or die "Could not prepare sgetgid"; + +my $sgetprocessing = $dbh->prepare( +"SELECT * +FROM squeue +WHERE processed = 'f' +ORDER BY updated DESC, gid, sysname") + or die "Could not prepare sgetdone"; + +my $sgetnoconnect = $dbh->prepare( +"SELECT * +FROM squeue +WHERE result = 'Could not connect to switch, delaying...'") + or die "Could not prepare sgetnoconnect"; + +my $sdisablegid = $dbh->prepare(" +UPDATE squeue SET disabled = 't' +WHERE gid = ?::text::int") + or die "Could not prepare sdisablegid"; +my $senablegid = $dbh->prepare(" +UPDATE squeue SET disabled = 'f' +WHERE gid = ?::text::int") + or die "Could not prepare sdisablegid"; + + +my $cgi = new CGI; + +print $cgi->header(-type=>'text/html; charset=utf-8'); + +print << "EOF"; +<html> + <head> + <title>Switch managment</title> + </head> + <body> + <p>Du er logget inn som: $user</p> + <form method="POST" action="sshow.pl"> + <p> + Vis <input type="text" name="count" size="4" value="10" /> siste<br /> + Vis: <select name="action" /> + <option value="listgid">Grupper</option> + <option value="done">Ferdige</option> + <option value="processing">I kø</option> + </select> + <input type="submit" value="Vis" /><br /> + </p> + </form> + <br /> +EOF + +my $limit = $cgi->param('count'); +if (!defined($limit)) { + $limit = 10; +} +my $action = $cgi->param('action'); +if (!defined($action)) { + $action = 'listgid'; +} + +if (defined($cgi->param('agid'))) { + my $gid = $cgi->param('gid'); + if (!defined($gid)) { + print "<font color=\"red\">Du har ikke valgt en gid Ã¥ slette.</font>\n"; + print "<p>gid: ".$cgi->param('gid')." har blitt disablet.\n"; + } + else { + $senablegid->execute($gid); + print "<p>gid: ".$cgi->param('gid')." har blitt enablet.\n"; + } + $dbh->commit(); +} + +if ($action eq 'noconnect') { + print "<h3>Kunne ikke koble til disse switchene:</h3>\n"; + $sgetnoconnect->execute(); + print "<pre>\n"; + while ((my $row = $sgetnoconnect->fetchrow_hashref())) { + print "$row->{'sysname'} : $row->{'cmd'} : Added: $row->{'added'} : Updated: $row->{'updated'}\n"; + } + print "</pre>\n"; +} + +if ($action eq 'listgid') { + print "<pre>\n"; + print "<a href=\"sshow.pl?action=noconnect\" />Kunne ikke koble til</a>\n\n\n"; + print "<b>Ferdige:</b>\n"; + $slistdonegid->execute(); + my ($gid, $author); + $gid = -1; + while ((my $row = $slistdonegid->fetchrow_hashref())) { + $author = $row->{author}; + if ($gid != $row->{gid}) { + $gid = $row->{gid}; + print "GID: <a href=\"sshow.pl?action=showgid&gid=$gid\">$gid</a>\n"; + print "Author: $author\n"; + print "Added: ".$row->{added}."\n"; + } + my $cmd = $row->{cmd}; + print "\t$cmd\n"; + } + print "\n\n"; + print "<b>I kø:</b>\n"; + $slistprocgid->execute(); + $gid = -1; + while ((my $row = $slistprocgid->fetchrow_hashref())) { + $author = $row->{author}; + if ($gid != $row->{gid}) { + $gid = $row->{gid}; + print "GID: <a href=\"sshow.pl?action=showgid&gid=$gid\">$gid</a>\n"; + print "Author: $author\n"; + print "Added: ".$row->{added}."\n"; + } + my $cmd = $row->{cmd}; + print "\t$cmd\n"; + } + $dbh->commit(); + print "</pre>\n"; +} + +if ($action eq 'showgid') { + print "<pre>\n"; + $sgetgid->execute($cgi->param('gid')); + my $row = $sgetgid->fetchrow_hashref(); + print "GID: ".$row->{gid}."\n"; + print "Author: ".$row->{author}."\n"; + do { + print " <b>Name: ".$row->{sysname}." Addr: ".$row->{addr}."</b>\n"; + print " `<b>".$row->{cmd}."`</b>\n"; + print " <i>Added: ".$row->{added}." executed ".$row->{updated}."</i>\n"; + my $data = $row->{result}; + if (!defined($data)) { + $data = "Not executed yet!"; + } + my @lines = split(/[\n\r]+/, $data); + foreach my $line (@lines) { + print "\t$line\n"; + } + } while (($row = $sgetgid->fetchrow_hashref())); + print "</pre>\n"; +} + +if ($action eq 'done') { + print "<h3>Done</h3>\n"; + print "<pre>\n"; + + my $squery; + if (defined($cgi->param('gid'))) { + my $gid = $cgi->param('gid'); + $sgetdonegid->execute($gid); + $squery = $sgetdonegid; + } + else { + $sgetdone->execute($limit); + $squery = $sgetdone; + } + my $sysname = ''; + while (my $row = $squery->fetchrow_hashref()) { + if ($sysname ne $row->{'sysname'}) { + $sysname = $row->{'sysname'}; + print "$sysname (".$row->{addr}."):\n"; + } + print " Author: ".$row->{author}."\n"; + print " Cmd: ".$row->{cmd}."\n"; + print " Added: ".$row->{added}." Updated: ".$row->{updated}."\n"; + print " gID: ".$row->{gid}."\n"; + my @result = split(/[\n\r]+/, $row->{result}); + foreach (@result) { + print "\t".$_."\n"; + } + print "\n"; + } + $dbh->commit(); + print "</pre>\n"; +} +elsif ($action eq 'processing') { + print "<h3>Processing</h3>\n"; + print "<pre>\n"; + $sgetprocessing->execute(); + while (my $row = $sgetprocessing->fetchrow_hashref()) { + my $sysname = $row->{'sysname'}; + print "$sysname (".$row->{addr}."):\n"; + print " Author: ".$row->{author}."\n"; + print " Cmd: ".$row->{cmd}."\n"; + my $updated; + if (defined($row->{updated})) { $updated = $row->{updated}; } + else { $updated = 'never'; } + print " Added: ".$row->{added}." Updated: ".$updated."\n"; + print " Disabled: ".$row->{disabled}."\n"; + print " Locked: ".$row->{locked}."\n"; + print " gID: ".$row->{gid}; + print " <form action=\"sshow.pl\" methos=\"POST\">"; + print "<input type=\"hidden\" name=\"gid\" value=\"".$row->{gid}."\">"; + print "<input type=\"hidden\" name=\"action\" value=\"processing\">"; + if ($row->{disabled} == 0) { + print "<input type=\"submit\" name=\"agid\" value=\"Disable\">\n"; + } + else { + print "<input type=\"submit\" name=\"agid\" value=\"Enable\">\n"; + } + } + $dbh->commit(); + print "</pre>\n"; +} + +print << "EOF"; + </body> +</html> +EOF diff --git a/web/nms.gathering.org/stromkart.pl b/web/nms.gathering.org/stromkart.pl new file mode 100755 index 0000000..0aef634 --- /dev/null +++ b/web/nms.gathering.org/stromkart.pl @@ -0,0 +1,69 @@ +#! /usr/bin/perl +use CGI qw(fatalsToBrowser); +use GD; +use DBI; +use lib '../../include'; +use nms; +use strict; +use warnings; +my $cgi = CGI->new; + +#my $greentimeout = 7200; +my $greentimeout = 15*60; +my $maxtimeout = $greentimeout*9; + +my $dbh = nms::db_connect(); + +GD::Image->trueColor(1); +my $img = GD::Image->new('bg07.png'); + +my $blk = $img->colorResolve(0, 0, 0); + +$img->string(gdMediumBoldFont,0,0,"Switch uplink status",$blk); +$img->string(gdSmallFont,0,20,"Number of ports with activity",$blk); + +my $red = $img->colorResolve(255, 0, 0); +my $yel = $img->colorResolve(255, 255, 0); +my $grn = $img->colorResolve(0, 255, 0); +my $wht = $img->colorResolve(255, 255, 255); +my $gry = $img->colorResolve(127, 127, 127); + +my $q = $dbh->prepare('select switch,sysname,(select placement from placements where placements.switch=switches.switch) as placement,count((bytes_in > 0 and bytes_out > 0) or null) as active_ports,(max(last_poll_time) >= current_timestamp - interval \'2 minutes\') as fresh from switches natural left join get_current_datarate() natural join placements where switchtype like \'dlink3100%\' group by switch,sysname'); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + my $ports = $ref->{'active_ports'}; + my $sysname = $ref->{'sysname'}; + my $clr; + if ($ports < 5) { + $clr = $red; + } else { + if (!$ref->{'fresh'}) { + $clr = $yel; + } else { + $clr = $grn; + } + } + + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + $img->filledRectangle($3,$4,$1,$2,$clr); + $img->rectangle($3,$4,$1,$2,$blk); + + my ($x2, $y2, $x1, $y1) = ($1, $2, $3, $4); + my $max_textlen = ($x2-$x1) > ($y2-$y1) ? $x2-$x1 : $y2-$y1; + while (length($sysname) * 6 > $max_textlen) { + # Try to abbreviate sysname if it is too long for the box + $sysname =~ s/^(.*)[a-z]~?([0-9]+)$/$1~$2/ or last; + } + if (($x2-$x1) > ($y2-$y1)) { + $img->string(gdSmallFont,$x1+2,$y1,$sysname,$blk); + } else { + $img->stringUp(gdSmallFont,$x1,$y2-3,$sysname,$blk); + } +} +$dbh->disconnect; + +if (!defined($ARGV[0])) { + print $cgi->header(-type=>'image/png', + -refresh=>'10; ' . CGI::url()); +} +print $img->png; diff --git a/web/nms.gathering.org/uplinkkart-text.pl b/web/nms.gathering.org/uplinkkart-text.pl new file mode 100755 index 0000000..de91e92 --- /dev/null +++ b/web/nms.gathering.org/uplinkkart-text.pl @@ -0,0 +1,38 @@ +#! /usr/bin/perl +use CGI; +use DBI; +use lib '../../include'; +use nms; +my $cgi = CGI->new; + +my $dbh = nms::db_connect(); +print $cgi->header(-type=>'text/html; charset=utf-8', -refresh=>'10; ' . CGI::url()); + +print <<"EOF"; +<html> + <head> + <title>Uplinkkart</title> + </head> + <body> + <map name="switches"> +EOF + +my $q = $dbh->prepare("SELECT * FROM switches NATURAL JOIN placements WHERE switchtype = 'dlink3100'"); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + + my $ttext = 'FIXME: Put something here'; + printf " <area shape=\"rect\" coords=\"%u,%u,%u,%u\" href=\"switchdiag.pl?id=%u\" alt=\"%s (%s)\" onmouseover=\"window.status='%s (%s)'; return true\" onmouseout=\"window.status=''\" />\n", + $3, $4, $1, $2, $ref->{'switch'}, $ref->{'sysname'}, + $ttext, $ref->{'sysname'}, $ttext; +} +$dbh->disconnect; + +print <<"EOF"; + </map> + + <p><img src="uplinkkart.pl" usemap="#switches" /></p> + </body> +</html> +EOF diff --git a/web/nms.gathering.org/uplinkkart.pl b/web/nms.gathering.org/uplinkkart.pl new file mode 100755 index 0000000..32581a6 --- /dev/null +++ b/web/nms.gathering.org/uplinkkart.pl @@ -0,0 +1,70 @@ +#! /usr/bin/perl +use CGI qw(fatalsToBrowser); +use GD; +use DBI; +use lib '../../include'; +use nms; +use strict; +use warnings; +my $cgi = CGI->new; + +#my $greentimeout = 7200; +my $greentimeout = 15*60; +my $maxtimeout = $greentimeout*9; + +my $dbh = nms::db_connect(); + +GD::Image->trueColor(1); +my $img = GD::Image->new('bg07.png'); + +my $blk = $img->colorResolve(0, 0, 0); + +$img->string(gdMediumBoldFont,0,0,"Switch uplink status",$blk); +$img->string(gdSmallFont,0,20,"Number of ports with activity",$blk); + +my $red = $img->colorResolve(255, 0, 0); +my $yel = $img->colorResolve(255, 255, 0); +my $grn = $img->colorResolve(0, 255, 0); +my $blu = $img->colorResolve(0, 0, 255); +my $wht = $img->colorResolve(255, 255, 255); +my $gry = $img->colorResolve(127, 127, 127); + +my @palette = ( $blu, $red, $yel, $grn, $wht ); + +for my $ports (0..4) { + my $y = 60 + 20 * (4 - $ports); + $img->filledRectangle(20, $y, 30, $y + 10, $palette[$ports]); + $img->rectangle(20, $y, 30, $y + 10, $blk); + $img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, $y + 10, $ports); +} + +my $q = $dbh->prepare('select switch,sysname,(select placement from placements where placements.switch=switches.switch) as placement,count((bytes_in > 0 and bytes_out > 0) or null) as active_ports from switches natural left join get_current_datarate() natural join placements where port between 45 and 48 and switchtype like \'dlink3100%\' group by switch,sysname'); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + my $ports = $ref->{'active_ports'}; + my $sysname = $ref->{'sysname'}; + my $clr = $palette[$ports]; + + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + $img->filledRectangle($3,$4,$1,$2,$clr); + $img->rectangle($3,$4,$1,$2,$blk); + + my ($x2, $y2, $x1, $y1) = ($1, $2, $3, $4); + my $max_textlen = ($x2-$x1) > ($y2-$y1) ? $x2-$x1 : $y2-$y1; + while (length($sysname) * 6 > $max_textlen) { + # Try to abbreviate sysname if it is too long for the box + $sysname =~ s/^(.*)[a-z]~?([0-9]+)$/$1~$2/ or last; + } + if (($x2-$x1) > ($y2-$y1)) { + $img->string(gdSmallFont,$x1+2,$y1,$sysname,$blk); + } else { + $img->stringUp(gdSmallFont,$x1,$y2-3,$sysname,$blk); + } +} +$dbh->disconnect; + +if (!defined($ARGV[0])) { + print $cgi->header(-type=>'image/png', + -refresh=>'10; ' . CGI::url()); +} +print $img->png; diff --git a/web/nms.gathering.org/uplinktrafikkart.pl b/web/nms.gathering.org/uplinktrafikkart.pl new file mode 100755 index 0000000..32869b3 --- /dev/null +++ b/web/nms.gathering.org/uplinktrafikkart.pl @@ -0,0 +1,90 @@ +#! /usr/bin/perl +use CGI qw(fatalsToBrowser); +use GD; +use DBI; +use lib '../../include'; +use nms; +use strict; +use warnings; +my $cgi = CGI->new; + +#my $greentimeout = 7200; +my $greentimeout = 15*60; +my $maxtimeout = $greentimeout*9; + +my $dbh = nms::db_connect(); + +GD::Image->trueColor(1); +my $img = GD::Image->new('bg07.png'); + +my $blk = $img->colorResolve(0, 0, 0); + +for my $y (42..236) { + my $i = 2.0 * ($y - 236.0) / (42.0 - 237.0); + my $clr = get_color($i); + + $img->filledRectangle(12, $y, 33, $y+1, $clr); +} + +$img->string(gdMediumBoldFont,0,0,"Switch uplink traffic",$blk); +$img->string(gdSmallFont,0,20,"max of bytes in/out",$blk); + +my $red = $img->colorResolve(255, 0, 0); +my $yel = $img->colorResolve(255, 255, 0); +my $grn = $img->colorResolve(0, 255, 0); +my $wht = $img->colorResolve(255, 255, 255); + +$img->rectangle(12,42,33,236,$blk); + +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*0.0/2.0, "4 Gbit/sec"); +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*1.0/2.0, "2 Gbit/sec"); +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 40, 47 + (236-42)*2.0/2.0, "1 Gbit/sec"); +$img->stringFT($blk, "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf", 10, 0, 1000, 700, "NMS (C) 2005-2012 Tech:Server"); + +my $q = $dbh->prepare('select switch,sysname,(select placement from placements where placements.switch=switches.switch) as placement,greatest(sum(bytes_in),sum(bytes_out)) as traffic from switches natural left join get_current_datarate() natural join placements where port between 45 and 48 and switchtype like \'dlink3100%\' group by switch,sysname'); +$q->execute(); +while (my $ref = $q->fetchrow_hashref()) { + my $traffic = $ref->{'traffic'} * 8.0; # convert to bits + my $sysname = $ref->{'sysname'}; + + my $max = 4_000_000_000.0; # 2Gbit + my $min = 1_000_000_000.0; # 1Gbit + $traffic = $max if ($traffic > $max); + $traffic = $min if ($traffic < $min); + my $intensity = log($traffic / $min) / log(2); + my $clr = get_color($intensity); + + $ref->{'placement'} =~ /\((\d+),(\d+)\),\((\d+),(\d+)\)/; + $img->filledRectangle($3,$4,$1,$2,$clr); + $img->rectangle($3,$4,$1,$2,$blk); + + my ($x2, $y2, $x1, $y1) = ($1, $2, $3, $4); + my $max_textlen = ($x2-$x1) > ($y2-$y1) ? $x2-$x1 : $y2-$y1; + while (length($sysname) * 6 > $max_textlen) { + # Try to abbreviate sysname if it is too long for the box + $sysname =~ s/^(.*)[a-z]~?([0-9]+)$/$1~$2/ or last; + } + if (($x2-$x1) > ($y2-$y1)) { + $img->string(gdSmallFont,$x1+2,$y1,$sysname,$blk); + } else { + $img->stringUp(gdSmallFont,$x1,$y2-3,$sysname,$blk); + } +} +$dbh->disconnect; + +if (!defined($ARGV[0])) { + print $cgi->header(-type=>'image/png', + -refresh=>'10; ' . CGI::url()); +} +print $img->png; + +sub get_color { + my $intensity = shift; + my $gamma = 1.0/1.90; + if ($intensity > 1.0) { + $intensity -= 1.0; + return $img->colorResolve(255.0, 255.0 * ($intensity ** $gamma), 255.0 * ($intensity ** $gamma)); + } else { + return $img->colorResolve(255.0 * ($intensity ** $gamma), 255.0 * (1.0 - ($intensity ** $gamma)), 0); + } +} diff --git a/web/stream.tg13.gathering.org/fix_count.pl b/web/stream.tg13.gathering.org/fix_count.pl new file mode 100755 index 0000000..aaaf42e --- /dev/null +++ b/web/stream.tg13.gathering.org/fix_count.pl @@ -0,0 +1,31 @@ +#! /usr/bin/perl + +my $lines = {}; + +open LOG, "<", "/home/techserver/count_datacube.log" + or die "count_datacube.log: $!"; + +while (<LOG>) { + chomp; + my ($date, $port, $proto, $audience, $count) = split /\s+/; + my $key = $port . ' ' . $proto . ' ' . $audience; + $lines->{$date}{$key} = $count; +} + +close LOG; + +my $last_date = undef; +for my $date (sort keys %$lines) { + for my $key (keys %{$lines->{$date}}) { + if (defined($last_date) && !exists($lines->{$last_date}{$key})) { + $lines->{$last_date}{$key} = $lines->{$date}{$key}; + } + } + $last_date = $date; +} + +for my $date (sort keys %$lines) { + for my $key (sort keys %{$lines->{$date}}) { + print "$date $key " . $lines->{$date}{$key} . "\n"; + } +} diff --git a/web/stream.tg13.gathering.org/img/cam-map.png b/web/stream.tg13.gathering.org/img/cam-map.png Binary files differnew file mode 100644 index 0000000..759641a --- /dev/null +++ b/web/stream.tg13.gathering.org/img/cam-map.png diff --git a/web/stream.tg13.gathering.org/img/icon_1.png b/web/stream.tg13.gathering.org/img/icon_1.png Binary files differnew file mode 100644 index 0000000..6d6e67e --- /dev/null +++ b/web/stream.tg13.gathering.org/img/icon_1.png diff --git a/web/stream.tg13.gathering.org/img/icon_2.png b/web/stream.tg13.gathering.org/img/icon_2.png Binary files differnew file mode 100644 index 0000000..599d5f6 --- /dev/null +++ b/web/stream.tg13.gathering.org/img/icon_2.png diff --git a/web/stream.tg13.gathering.org/img/icon_3.png b/web/stream.tg13.gathering.org/img/icon_3.png Binary files differnew file mode 100644 index 0000000..4d1de76 --- /dev/null +++ b/web/stream.tg13.gathering.org/img/icon_3.png diff --git a/web/stream.tg13.gathering.org/img/icon_camera.png b/web/stream.tg13.gathering.org/img/icon_camera.png Binary files differnew file mode 100644 index 0000000..e1bf2c3 --- /dev/null +++ b/web/stream.tg13.gathering.org/img/icon_camera.png diff --git a/web/stream.tg13.gathering.org/img/icon_event.png b/web/stream.tg13.gathering.org/img/icon_event.png Binary files differnew file mode 100644 index 0000000..9ce6df4 --- /dev/null +++ b/web/stream.tg13.gathering.org/img/icon_event.png diff --git a/web/stream.tg13.gathering.org/img/icon_hd.png b/web/stream.tg13.gathering.org/img/icon_hd.png Binary files differnew file mode 100644 index 0000000..d9086bc --- /dev/null +++ b/web/stream.tg13.gathering.org/img/icon_hd.png diff --git a/web/stream.tg13.gathering.org/img/icon_sd.png b/web/stream.tg13.gathering.org/img/icon_sd.png Binary files differnew file mode 100644 index 0000000..3bddbe9 --- /dev/null +++ b/web/stream.tg13.gathering.org/img/icon_sd.png diff --git a/web/stream.tg13.gathering.org/index-bak.pl b/web/stream.tg13.gathering.org/index-bak.pl new file mode 100755 index 0000000..3e31107 --- /dev/null +++ b/web/stream.tg13.gathering.org/index-bak.pl @@ -0,0 +1,67 @@ +#!/usr/bin/perl -I /srv/streamlib +use warnings; +use strict; +use CGI; +use Geo::IP; +use NetAddr::IP; +use Net::IP; +# apt-get install libnet-ip-perl libnetaddr-ip-perl +use HTML::Template; +use stream; +use stream::config; + +my $client = CGI->new; + +my $v4net = $stream::config::v4net; +my $v6net = $stream::config::v6net; +my $tg = $stream::config::tg; +my $tg_full = $stream::config::tg_full; +my %streams = %stream::config::streams; + +my $force_unicast = $client->param('forceunicast'); + +my $location = undef; + +print $client->header(); + +my $clip = $client->remote_addr(); +my $template = HTML::Template->new(filename => 'index.tmpl'); +my $is_local = &is_ip_local($clip, $v4net, $v6net); + +my @streams = &html_local_test(); +$template->param(TG => $tg); +$template->param(TG_FULL => $tg_full); +$template->param(STREAMS => \@streams); +print $template->output(); + + +sub html_local_test() { + my @s = (); + foreach my $name (sort { $streams{$a}->{priority} <=> $streams{$b}->{priority} } keys %streams) { + my $title_link = "http://stream.tg$tg.gathering.org/stream.pl?delivery=%s&stream=${name}&interlaced=%s"; + my $multicast_link = $streams{$name}->{has_multicast} ? "multicast" : "unicast"; + $multicast_link = "unicast" if ($force_unicast == 1 || not $is_local); + + if ($streams{$name}->{external}) { + $title_link = $streams{$name}->{url}; + } else { + $title_link = sprintf($title_link, $multicast_link, $streams{$name}->{interlaced}); + } + my %hash = ( + 'title_link' => $title_link, + 'title' => $streams{$name}->{title}, + 'source' => $streams{$name}->{source}, + 'delivery' => $multicast_link + ); + if ($multicast_link eq "multicast") { + $hash{'is_multicast'} .= 1; + my $unicast_link = $title_link; + $unicast_link=~s/multicast/unicast/g; + $hash{'unicast_link'} .= $unicast_link; + } + $hash{'description'} .= $streams{$name}->{description} if exists($streams{$name}->{description}); + push(@s, \%hash); + + } + return @s; +} diff --git a/web/stream.tg13.gathering.org/index-bak.tmpl b/web/stream.tg13.gathering.org/index-bak.tmpl new file mode 100644 index 0000000..c0aa95d --- /dev/null +++ b/web/stream.tg13.gathering.org/index-bak.tmpl @@ -0,0 +1,31 @@ +<html> +<head> + <title>The Gathering <TMPL_VAR NAME=TG_FULL></title> + <link rel="stylesheet" type="text/css" media="screen" href="superawesomeness.css"> + <link href='http://fonts.googleapis.com/css?family=Open+Sans&subset=latin,latin-ext' rel='stylesheet' type='text/css'> +</head> +<body> + <div id="spaceship"></div> + <div id="innhold"> + <h1>The Gathering <TMPL_VAR NAME=TG_FULL></h1> + <ul> + <TMPL_LOOP NAME="STREAMS"> + <li><a href="<TMPL_VAR NAME=TITLE_LINK>"><TMPL_VAR NAME=TITLE ></a> + <p> + Source: <TMPL_VAR NAME=SOURCE > + <br/>Delivery: <TMPL_VAR NAME=delivery> <TMPL_IF NAME=IS_MULTICAST>(<a href='<TMPL_VAR NAME=UNICAST_LINK>'>problems? try unicast vlc link here</a>)</TMPL_IF> + <TMPL_IF NAME="DESCRIPTION"><br /><TMPL_VAR NAME=DESCRIPTION></TMPL_IF></li> + </TMPL_LOOP> + </ul> + </div> + <footer> + <p>Problems with the non game streams? The easiest way to get hold of us is on IRC (EFNet); + one of ViD, Rockj and Sesse should be available if there's too much traffic + on #tg to be heard.</p> + <p><a href="http://stream.tg<TMPL_VAR NAME="TG">.gathering.org">http://stream.tg<TMPL_VAR NAME="TG">.gathering.org</a></p> + + </footer> +</body> +</html> + + diff --git a/web/stream.tg13.gathering.org/index.pl b/web/stream.tg13.gathering.org/index.pl new file mode 100755 index 0000000..e5f103c --- /dev/null +++ b/web/stream.tg13.gathering.org/index.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl -I /srv/streamlib +use warnings; +use strict; +use CGI; +use Geo::IP; +use NetAddr::IP; +use Net::IP; +# apt-get install libnet-ip-perl libnetaddr-ip-perl +use HTML::Template; +use stream; +use stream::config; + +my $client = CGI->new; + +my $v4net = $stream::config::v4net; +my $v6net = $stream::config::v6net; +my $tg = $stream::config::tg; +my $tg_full = $stream::config::tg_full; +my %streams = %stream::config::streams; + +my $force_unicast = $client->param('forceunicast'); +my $no_header = $client->param('noheader'); + +my $location = undef; + +print $client->header(); + +my $clip = $client->remote_addr(); +my $template = HTML::Template->new(filename => 'index.tmpl'); +my $is_local = &is_ip_local($clip, $v4net, $v6net); + +my @streams = &html_local_test(); +$template->param(TG => $tg); +$template->param(TG_FULL => $tg_full); +$template->param(STREAMS => \@streams); +$template->param(NOHEADER => $no_header); +print $template->output(); + + +sub html_local_test() { + my @s = (); + foreach my $name (sort { $streams{$a}->{priority} <=> $streams{$b}->{priority} } keys %streams) { + my $title_link = "http://stream.tg$tg.gathering.org/stream.pl?delivery=%s&stream=${name}&interlaced=%s"; + my $multicast_link = $streams{$name}->{has_multicast} ? "multicast" : "unicast"; + $multicast_link = "unicast" if ($force_unicast == 1 || not $is_local); + + if ($streams{$name}->{external}) { + $title_link = $streams{$name}->{url}; + } else { + $title_link = sprintf($title_link, $multicast_link, $streams{$name}->{interlaced}); + } + my %hash = ( + 'title_link' => $title_link, + 'title' => $streams{$name}->{title}, + 'source' => $streams{$name}->{source}, + 'quality' => $streams{$name}->{quality}, + 'location' => $streams{$name}->{location}, + 'type' => $streams{$name}->{type}, + 'delivery' => $multicast_link, + ); + if ($multicast_link eq "multicast") { + $hash{'is_multicast'} .= 1; + my $unicast_link = $title_link; + $unicast_link=~s/multicast/unicast/g; + $hash{'unicast_link'} .= $unicast_link; + } + $hash{'description'} .= $streams{$name}->{description} if exists($streams{$name}->{description}); + push(@s, \%hash); + + } + return @s; +} diff --git a/web/stream.tg13.gathering.org/index.tmpl b/web/stream.tg13.gathering.org/index.tmpl new file mode 100644 index 0000000..a565f0e --- /dev/null +++ b/web/stream.tg13.gathering.org/index.tmpl @@ -0,0 +1,35 @@ +<html> +<head> + <title>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</title> + <link rel="stylesheet" type="text/css" href="singularity.css" media="all"> +</head> +<body> + <div id="innhold"> + <TMPL_UNLESS NAME=NOHEADER> + <h1>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</h1> + </TMPL_UNLESS> + + <TMPL_LOOP NAME="STREAMS"> + <div class="stream-link"> + <div class="stream-icon"><img src="img/icon_<TMPL_VAR NAME=QUALITY>.png" /> <img src="img/icon_<TMPL_VAR NAME=TYPE>.png" /> <TMPL_IF NAME=LOCATION><img src="img/icon_<TMPL_VAR NAME=LOCATION>.png"></TMPL_IF></div> + <div class="stream-link-content"> + <a href="<TMPL_VAR NAME=TITLE_LINK>"><TMPL_VAR NAME=TITLE></a><br> + Source: <TMPL_VAR NAME=SOURCE><br> + Delivery: <TMPL_VAR NAME=delivery> <TMPL_IF NAME=IS_MULTICAST>(<a href='<TMPL_VAR NAME=UNICAST_LINK>'>problems? try unicast vlc link here</a>)</TMPL_IF> + + </div> + </div> + </TMPL_LOOP> + <div id="map"> + <img src="img/cam-map.png"> + </div> + + </div> + + <p>Problems with the non game streams? The easiest way to get hold of us is on IRC (EFNet); one of ViD, Rockj and Sesse should be available if there's too much traffic on #tg to be heard.</p> + <p><a href="http://stream.tg<TMPL_VAR NAME="TG">.gathering.org">http://stream.tg<TMPL_VAR NAME="TG">.gathering.org</a></p> + +</body> +</html> + + diff --git a/web/stream.tg13.gathering.org/ios/PLACEHOLDER b/web/stream.tg13.gathering.org/ios/PLACEHOLDER new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web/stream.tg13.gathering.org/ios/PLACEHOLDER diff --git a/web/stream.tg13.gathering.org/ios/event.m3u8 b/web/stream.tg13.gathering.org/ios/event.m3u8 new file mode 100644 index 0000000..11152d3 --- /dev/null +++ b/web/stream.tg13.gathering.org/ios/event.m3u8 @@ -0,0 +1,16 @@ +#EXTM3U +#EXT-X-TARGETDURATION:5 +#EXT-X-VERSION:3 +#EXT-X-ALLOW-CACHE:NO +#EXT-X-MEDIA-SEQUENCE:27432 +#EXTINF:4.97, +http://stream.tg13.gathering.org/ios/event-00027432.ts +#EXTINF:4.04, +http://stream.tg13.gathering.org/ios/event-00027433.ts +#EXTINF:3.99, +http://stream.tg13.gathering.org/ios/event-00027434.ts +#EXTINF:3.97, +http://stream.tg13.gathering.org/ios/event-00027435.ts +#EXTINF:3.74, +http://stream.tg13.gathering.org/ios/event-00027436.ts +#EXT-X-ENDLIST diff --git a/web/stream.tg13.gathering.org/ios/stream.m3u8 b/web/stream.tg13.gathering.org/ios/stream.m3u8 new file mode 100644 index 0000000..d3d46a6 --- /dev/null +++ b/web/stream.tg13.gathering.org/ios/stream.m3u8 @@ -0,0 +1,8 @@ +#EXTM3U +#EXT-X-TARGETDURATION:5 +#EXT-X-VERSION:3 +#EXT-X-ALLOW-CACHE:NO +#EXT-X-MEDIA-SEQUENCE:1 +#EXTINF:3.84, +http://stream.tg13.gathering.org/ios/stream-00000001.ts +#EXT-X-ENDLIST diff --git a/web/stream.tg13.gathering.org/singularity.css b/web/stream.tg13.gathering.org/singularity.css new file mode 100644 index 0000000..05e1518 --- /dev/null +++ b/web/stream.tg13.gathering.org/singularity.css @@ -0,0 +1,1960 @@ +•/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1.5; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +/* @override http://www.gathering.org/tg12/files/content/design/css/typography.css */ + +/* Generic +------------------------------------------------------ */ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { + font-family: Arial, Sans-Serif; + font-weight: 400; +} +body { + font-size: 15px; + line-height: 20px; + color: #777; +} +/* Headings +------------------------------------------------------ */ +h1, h2, h3, h4, h5, h6 { font-weight: bold; color: #404040; } +h1 { font-size: 45px; line-height: 50px; margin-bottom: 15px; } +h2 { font-size: 25px; line-height: 31px; margin-bottom: 12px;} +h3 { font-size: 20px; line-height: 26px; } +h4 { font-size: 16px; line-height: 22px; } +h5 { font-size: 15px; line-height: 20px; } +h6 { font-size: 12px; line-height: 17px; } + +/* Text 'n stuff +------------------------------------------------------ */ +p { margin: 0 0 20px 0; } +.page p { + margin: 0 0 0.8em 0 !important; +} +blockquote { + margin: 20px; + padding: 0 0 0 40px; + color: #555; + font-style: italic; + color: #888; + position: relative; +} +blockquote p::before { + position: absolute; + top: 50px; + margin-left: -60px; + content: "\201D"; + font-size: 150px; + font-style: normal; + color: #00aaad; +} +blockquote p { + display: block; + margin-left: 40px !important; +} +blockquote small::before { + content: "\2013"; + margin: 5px; +} +blockquote small { + font-size: 13px; + margin-left: -55px; +} +strong { font-weight: bold; } + +ul { + margin: 0 0 20px 10px; + list-style-type: none; + position: relative; +} +ul.submenu ul { + margin-bottom: 0px; +} +ul li:before { + content: "\2022"; + position: absolute; + left: -17px; + width: 15px; + text-align: right; + color: #00aaad; + font-size: 13px; + line-height: 21px; +} +i, em { font-style: italic; } + +ol { + margin: 0 0 20px 15px; + list-style-type: none; + position: relative; + counter-reset: section; +} +ol > li { + counter-increment: section; +} +ol > li:before { + content: counter(section); + position: absolute; + left: -30px; + width: 23px; + text-align: right; + color: #00aaad; + font-size: 12px; + line-height: 22px; +} +dl dt { font-weight: bold; } +dd { margin: 0 0 0 20px; } + +a { color: #00aaad; text-decoration: none; } +a:hover { color: #c3027b; } +code, pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, "Courier New", monospace; + font-size: 12px; + color: #8F8F8F; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background-color: #F8F8F8; + border: 1px solid #C0C4C5; +} +code { + padding: 3px 4px; + color: #00aaad; +} +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + line-height: 18px; + white-space: pre; + white-space: pre-wrap; + word-break: break-all; +} +table { + margin-bottom: 20px; +} +th, td { + padding: 4px 5px; +} +td, th { + border-left: 1px solid #E2E2E2; +} +tr td:first-child, tr th:first-child { + border: none; +} +tr td { + text-align: right; +} +th { + font-weight: bold; + vertical-align: bottom; +} +th, td { + min-width: 100px; +} +th p, td p { + margin: 0; +} +tbody tr:nth-child(even) td, thead tr th { + background-color: #F2F2F2; +} +hr { + margin-top: 0.5em; + margin-bottom: 0.5em; + border: 0; + color: #D5D5D5; + background-color: #D5D5D5; + height: 1px; +} +.visible-phone { + display: none; +} +.title-container h2 { + font-family: Tahoma, Geneva, sans-serif; + font-size: 26px; + margin-bottom: 5px; + line-height: normal; +} +h2.size13 { font-size: 13px; } +h2.size14 { font-size: 14px; } +h2.size15 { font-size: 15px; } +h2.size16 { font-size: 16px; } +h2.size17 { font-size: 17px; } +h2.size18 { font-size: 18px; } +h2.size19 { font-size: 19px; } +h2.size20 { font-size: 20px; } +h2.size21 { font-size: 21px; } +h2.size22 { font-size: 22px; } +h2.size23 { font-size: 23px; } +h2.size24 { font-size: 24px; } +h2.size25 { font-size: 25px; } +h2.size26 { font-size: 26px; } +h2.size27 { font-size: 27px; } +h2.size28 { font-size: 28px; } +h2.size29 { font-size: 29px; } +h2.size30 { font-size: 30px; } +h2.size31 { font-size: 31px; } +h2.size32 { font-size: 32px; } +h2.size33 { font-size: 33px; } +h2.size34 { font-size: 34px; } +h2.size35 { font-size: 35px; } +h2.size36 { font-size: 36px; } +h2.size37 { font-size: 37px; } +h2.size38 { font-size: 38px; } +h2.size39 { font-size: 39px; } +h2.size40 { font-size: 40px; } +h2.size41 { font-size: 41px; } +h2.size42 { font-size: 42px; } +h2.size43 { font-size: 43px; } +h2.size44 { font-size: 44px; } +h2.size45 { font-size: 45px; } +h2.size46 { font-size: 46px; } +h2.size47 { font-size: 47px; } +h2.size48 { font-size: 48px; } +h2.size49 { font-size: 49px; } +h2.size50 { font-size: 50px; } +h2.size51 { font-size: 51px; } +h2.size52 { font-size: 52px; } +h2.size53 { font-size: 53px; } +h2.size54 { font-size: 54px; } +h2.size55 { font-size: 55px; } +h2.size56 { font-size: 56px; } +h2.size57 { font-size: 57px; } +h2.size58 { font-size: 58px; } +h2.size59 { font-size: 59px; } +h2.size60 { font-size: 60px; } +h2.size61 { font-size: 61px; } +h2.size62 { font-size: 62px; } +h2.size63 { font-size: 63px; } +h2.size64 { font-size: 64px; } +h2.size65 { font-size: 65px; } +h2.size66 { font-size: 66px; } +h2.size67 { font-size: 67px; } +h2.size68 { font-size: 68px; } +h2.size69 { font-size: 69px; } +h2.size70 { font-size: 70px; } +h2.size71 { font-size: 71px; } +h2.size72 { font-size: 72px; } +h2.size73 { font-size: 73px; } +h2.size74 { font-size: 74px; } +h2.size75 { font-size: 75px; } +h2.size76 { font-size: 76px; } +h2.size77 { font-size: 77px; } +h2.size78 { font-size: 78px; } +h2.size79 { font-size: 79px; } +h2.size80 { font-size: 80px; } +h2.size81 { font-size: 81px; } +h2.size82 { font-size: 82px; } +h2.size83 { font-size: 83px; } +h2.size84 { font-size: 84px; } +h2.size85 { font-size: 85px; } +h2.size86 { font-size: 86px; } +h2.size87 { font-size: 87px; } +h2.size88 { font-size: 88px; } +h2.size89 { font-size: 89px; } +h2.size90 { font-size: 90px; } +h2.size91 { font-size: 91px; } +h2.size92 { font-size: 92px; } +h2.size93 { font-size: 93px; } +h2.size94 { font-size: 94px; } +h2.size95 { font-size: 95px; } +h2.size96 { font-size: 96px; } +h2.size97 { font-size: 97px; } +h2.size98 { font-size: 98px; } +h2.size99 { font-size: 99px; } +h2.size100 { font-size: 100px; } + +.cite:before { + content: "\201C"; +} +.cite:after { + content: "\201D"; +} +.cite > .cite:before { + content: "\2018"; +} +.cite > .cite:after { + content: "\2019"; +} +.bullet:before { + content: "\2022"; +} +.dash:after { + content: "\2013"; +} +.hellip:after { + content: "\2026"; +} +.cite:lang(no):before { + content: "\00AB"; +} +.cite:lang(no):after { + content: "\00BB"; +} +/* Meta thingy +------------------------------------------------------ */ +.breadcrumbs span.delimiter:before { + content: "\25BA"; + margin-right: 8px; + font-size: 8px; + position: relative; + top: -2px; + margin: 0 5px 0 3px; + color: #00aaad; +} +.breadcrumbs { + font-size: 12px; + margin-bottom: 10px; +} +.summary, +.summary p { + font-size: 16px; + line-height: 22px; + font-weight: 600 !important; + margin-bottom: 10px; +} +.metainfo { margin: 10px 0; } +.byline, .meta { + color: #888; + display: block; + font-size: 12px; + margin-bottom: 0.8em; +} +.byline span.delimiter:before { + content: "\2022"; + margin-right: 8px; + font-size: 8px; + position: relative; + top: -2px; + margin: 0 5px 0 5px; + color: #00aaad; +} +.phototext { + margin-top: 5px; + line-height: 18px; +} +.photoline { + margin-top: 5px; + font-style: italic; + font-size: 12px; + float: right; +} +.page h1 { margin-top: 10px; } +.vignette { + background-color: #6e6e6e; + margin-top: 5px; + margin-bottom: 5px; + height: 8px; + position: relative; +} +.vignette span { + line-height: 19px; +} +div.page .vignette { + margin-bottom: 10px; +} +div.page .span11 img { + max-width: 488px; + height: auto; +} +.vignette > span { + text-transform: lowercase; + color: #6e6e6e; + display: block; + margin-left: 15px; + background-color: white; + position: absolute; + top: -6px; + font-size: 12px; + padding: 0 3px 0 3px; + font-weight: 500; +} +div.news33.category-news:nth-child(3n) { + clear: left; +} +div.portal > h1 { + font-size: 20px; + padding: 0 10px; + color: white; +} +h1.portal-creative { + background-color: #ec008c; +} +h1.portal-game { + background-color: #fba51e; +} +h1.portal-entertainmentlectures { + background-color: #819700; +} +div.portal > div.row { + margin-bottom: 40px; +} +div.category-news h2 a { + color: black; +} +/* + * CSS for The Gathering 2013. + * Copyright KANDU and contributors + */ + +/* HTML & BODY +------------------------------------------------------ */ +body { + background: url('/tg13/files/content/design/images/background.jpg') no-repeat; + background-position: top center; +} + +html, body { + height:100%; +} +body.iframe { + background-image: none; + height: auto; +} + +/* Generic styles +------------------------------------------------------ */ + +.hidden { display: none; } +menu { margin: 0; padding: 0; } + +/* Containers and rows +------------------------------------------------------ */ +.container { + width: 1320px; + margin: 0 auto; + zoom: 1; +} + +.content { + width: 840px; +} + +.container:before, +.container:after { + zoom: 1; +} +.container:before, +.container:after, +.content:before, +.content:after, +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} +.container:after, +.row:after { + clear: both; +} +.row { + margin-left: -40px; +} + +/* Main structure +------------------------------------------------------ */ +header, header > div.container { +} +header { + margin-bottom: 40px; +} +header > div.container { +} +header > div.container .inner { + float: left; + width: 830px; +} +footer a, footer, footer p, footer h4 { + color: #2d4f9e; +} +footer a:hover { + color: #fff; +} +header a { + color: #c3027b; +} +header a:hover { + color: #860050; +} +header > div.container .logo { + float: left; + width: 250px; +} +header .left, header .left > div { + float: right; +} +header .right { + margin-left: 10px; + float: right; + width: 180px; +} +header .when { + background-color: #5a0037; + padding: 10px; + color: white; + border-bottom-right-radius: 6px; + border-bottom-left-radius: 6px; + font-size: 11px; + line-height: 12px; + width: 110px; + text-align: center; +} +header .when-phone .when { + width: 120px; +} +header .when-phone { + float: right; +} +header .language { + margin-top: 10px; + line-height: 25px; + font-weight: 300; + margin-right: 10px; + padding-right: 10px; + border-right: 1px solid white; + font-size: 12px; +} +header ul.promo-menu { + padding-top: 40px; + margin: 0 0 0 15px; +} +header ul.promo-menu a { + font-weight: bold; + font-size: 13px; +} +header ul li:before { + margin-top: 2px; + content: "\25A0"; + position: absolute; + left: -15px; + width: 10px; + text-align: right; + color: #860050; + font-size: 18px; + line-height: 13px; +} +header .language a { + color: white; +} +header .language a:hover { + color: #2d4f9e; +} +footer { + margin-top: 80px; + background-color: #abdcff; + background-image: url('/tg13/files/content/design/images/footerbg.jpg'); + background-repeat: no-repeat; + background-position: center bottom; +} +footer > div.container { + padding: 0px 0px 150px 0px; +} +.footer-about { + margin-bottom: 40px; + height: 100px; + position: relative; +} +.footer-about > span { + position: absolute !important; + bottom: 0; left: 0; +} +footer > div.container > div.row { + margin-top: 80px; +} +footer ul { + margin: 0; +} +footer h4 { + margin-bottom: 20px; +} +footer div.full-span2 > iframe { + margin: 20px 0px; +} +footer a { + line-height: 25px; +} +footer ul li::before { + content: ""; +} +footer div.row { + margin-left: -20px; +} +footer div.row div.row { + margin-left: -40px; +} +.footnote p { + font-size: 13px; +} +.full-span9 { width: 1360px; } +.full-span8 { width: 1280px; } +.full-span7 { width: 1115px; } +.full-span6 { width: 950px; } +.full-span5 { width: 785px; } +.full-span4 { width: 620px; } +.full-span3 { width: 455px; } +.full-span2 { width: 290px; } +.full-span1 { width: 125px; } +.content, .sidebar { + float: left; +} +.content { + margin: 0 40px 0 40px; +} +.sidebar { + width: 200px; +} +.sidebar.sponsor img { + width: 200px; +} +.sidebar.sponsor img, +.sidebar.sponsor > div.vignette { + margin-bottom: 20px; +} +.sidebar.sponsor img { + filter: grayscale(100%); + -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); + -ms-filter: grayscale(100%); -o-filter: grayscale(100%); + filter: url(/tg13/files/content/design/css/filters.svg#grayscale); + filter: gray; + -webkit-filter: grayscale(1); +} +.sidebar.sponsor img:hover { + filter: none; + -webkit-filter: grayscale(0%); -moz-filter: grayscale(0%); + -ms-filter: grayscale(0%); -o-filter: grayscale(0%); +} +.fb-comments, .fb-comments *, .fb_iframe_widget, .fb_iframe_widget * {width: 100% !important;} +.span4 iframe { + width: 100%; +} +div.comments_header { + padding:8px; + background-color: #b1b1b1; + color: white; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + margin-bottom: 10px; + margin-top: 10px; +} +div.comments_header > div { + float: left; + margin-right: 8px; + content:url('/tg13/files/content/design/images/info.png'); +} +div.comments_header h4 { + line-height: 34px; + color: white; +} +div.comments_header p { + clear: both; + margin: 8px 0 0 0 !important; + font-size: 12px; + line-height: 15px; +} +.media-page { + margin-left: 40px; +} +.videoWrapper, #mediaspace { + position: relative; + padding-bottom: 56.25%; /* 16:9 */ + padding-top: 25px; + height: 0; + margin-bottom: 0.8em; +} +.videoWrapper iframe, #mediaspace embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.stream-icon { + float: left; + margin-right: 10px; +} +.stream-link { margin-bottom: 8px;} +#galleria { + width: 840px; +} + +/* Menu & Sidebar +------------------------------------------------------ */ + +menu { + list-style: none; +} +menu a { + color: #777; +} +menu a:hover, li[class^="menu-"] a:hover { + color: black; +} +li.menu-creative a, li.menu-creative span, li.menu-creative + menu.sub-menu a, li.menu-creative + menu.submenu span { + color: #ec008c; +} +li.menu-game a, li.menu-game span, li.menu-game + menu.sub-menu a, li.menu-game + menu.submenu span { + color: #fba51e; +} +li.menu-tickets a, li.menu-tickets span, li.menu-tickets + menu.sub-menu a, li.menu-tickets + menu.submenu span { + color: #00aaad; +} +li.menu-guide a, li.menu-guide span, li.menu-guide + menu.sub-menu a, li.menu-guide + menu.submenu span { + color: #034ea2; +} +li.menu-entertainment-lectures a, li.menu-entertainment-lectures span, li.menu-entertainment-lectures + menu.sub-menu a, li.menu-entertainment-lectures + menu.submenu span { + color: #819700; +} +menu.top-menu > li { + margin-bottom: 10px; +} + +div.top-menu-text > span { + color: #7595af; + font-size: 23px; + font-weight: bold; + display: table-row; + line-height: 23px; +} +div.top-menu-text > span.help-text { + font-weight: normal; + font-size: 14px; + display: table-row; + color: #a3a3a3; + line-height: 15px; +} +div.top-menu-text { + height: 38px; + padding: 6px 0 6px 0; + margin: 0 0 0 56px; +} +div.top-menu-icon { + width: 50px; + height: 50px; + float: left; + background-color: #bfd4e5; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} +menu.top-menu a:hover div.top-menu-text > span, +menu.top-menu a:hover div.top-menu-text > span.help-text { + color: #27448b; +} +menu.top-menu a:hover div.top-menu-icon { + background-color: #3d6db3; +} +div.top-menu-icon.icon-schedule { + background-image: url('/tg13/files/content/design/images/schedule.png'); +} +div.top-menu-icon.icon-tgtv { + background-image: url('/tg13/files/content/design/images/tgtv.png'); +} +div.top-menu-icon.icon-tng { + background-image: url('/tg13/files/content/design/images/tng.png'); +} +div.top-menu-icon.icon-forum { + background-image: url('/tg13/files/content/design/images/forum.png'); +} +div.top-menu-icon.icon-compo { + background-image: url('/tg13/files/content/design/images/compo.png'); +} +div.top-menu-icon.icon-news { + background-image: url('/tg13/files/content/design/images/news.png'); +} +menu.section-menu { + margin-top: 40px; + margin-left: 15px; +} +menu.section-menu li { + margin-bottom: 15px; +} +menu.sub-menu { + margin-bottom: 20px; + margin-left: 15px; +} +span.menu-expand { + display: block; + float: left; + margin-left: -15px; + cursor: pointer; +} + +/* Graphical Elements +------------------------------------------------------ */ +/* Language +------------------------------------------------------ */ +/* Search +------------------------------------------------------ */ +.search input { + vertical-align: top; + line-height: 1; +} +.search input[type="search"] { + -webkit-appearance: none; + box-sizing:content-box; + padding: 0; + padding-left: 3px; + margin: 0; + margin-top: 10px; + border: none; + color: #9dbfd9; + height: 25px; + width: 200px; + font-size: 12px; + font-style: italic; + border-radius: 3px; + line-height: 15px; +} +.search input:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: 0; +} +input[type=search]::-webkit-search-decoration { + -webkit-appearance:none; +} +input::-webkit-input-placeholder, +isindex::-webkit-input-placeholder, +textarea::-webkit-input-placeholder, +input::-moz-placeholder, +textarea::-moz-placeholder { + font-style: italic; + color: silver; +} +/* News +------------------------------------------------------ */ +.news { position: relative; } + +.news100, .clearer, .span19 { width: 840px; } +.span18 { width: 796px; } +.span17 { width: 752px; } +.span16 { width: 708px; } +.span15 { width: 664px; } +.news75, .span14 { width: 620px; } +.span13 { width: 576px; } +.news66, .span-two-third { width: 547px; } +.span12 { width: 532px; } +.span11 { width: 488px; } +.span10 { width: 444px; } +.news50, .span9 { width: 400px; } +.span8 { width: 356px; } +.span7 { width: 312px; } +.span6 { width: 268px; } +.news33, .span-one-third { width: 253px; } +.span5 { width: 224px; } +.news25, .span4 { width: 180px; } +.span3 { width: 136px; } +.span2 { width: 92px; } +.span1 { width: 48px; } +.clearer { clear: both; margin: 0px 0px 0px 40px !important; } + +div[class^="news"] > span, +div[class^="full-span"] > span, +div[class^="span"] > span { + position: relative; + display: block; +} +div[class^="news"] p, +div[class^="full-span"] p, +div[class^="span"] p { + margin: 0; +} +.article { + float: left; + margin: 0px 0px 40px 40px; +} +.article a, +.article a:hover { + text-decoration: none; + color: #777; +} + +.news_img_100 { + width: 100%; + margin: 20px 0 10px 0; +} +img.news_img_right { + width: 50%; + float: right; + margin: 0 0 20px 40px; +} +.span2.social-news div { + margin-bottom: 10px; +} +.icon-more > a { + float: right; + font-size: 13px; + margin-right: 21px; +} +.icon-more { + position: relative; +} +.icon-more > a::after { + margin-top: 2px; + padding-left: 3px; + padding-top: 2px; + padding-bottom: 1px; + margin-left: 5px; + position: absolute; + content: "\25BA"; + color: white; + background-color: black; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; + width: 13px; + height: 13px; + font-size: 11px; + line-height: 11px; +} + +/* Page +------------------------------------------------------ */ +.page { + float: left; + margin: 0px 0px 40px 40px; +} +.page .page { + margin-left: 0px; +} +.page .page.news33 { + margin-left: 40px; +} +div.news-portal-header { + width: 840px; + margin-left: 40px !important; +} +div[class^="full-span"], +.page div[class^="news"], +.page div[class^="span"]{ + float: left; + margin-left: 40px; +} +.page h3 a, +.page li a { + border: none; +} +.page-right { + float: right; + clear: right; + margin-bottom: 40px; + margin-left: 40px; +} +.page-right a { + border: none; +} +.page-sidebar { + margin-left: 40px; +} +.page-right h3, +.page-sidebar h3 { + border-bottom: solid 4px #c0c4c5; + position: relative; + margin: 0 0 10px 0; +} +.page-sidebar .meta { + text-transform: uppercase; + font-size: 10px; +} +.page-sidebar { + position: relative; +} +.related-news { + margin-bottom: 8px; +} +.img-container { + margin-bottom: -5px; +} +.img-container a { + display:block; +} +/* Article skins +------------------------------------------------------ */ +div.article.skin-important { + background-color: black; + color: white; +} +div.article.skin-important { + padding-bottom: 40px; +} +div.article.skin-important > div[class^="news"] > span.content-container, +div.article.skin-important > div[class^="news"] > span.title-container { + margin-left: 40px; + margin-right: 40px; +} +div.article.skin-important > div[class^="news"] > span.title-container { + padding-top: 40px; +} +div.article.skin-important p, +div.article.skin-important h2, +div.article.skin-important a, +div.article.skin-important a:hover, +div.article.skin-important a:visited { + color: white; +} +div.article.skin-game .vignette, +div.article.skin-creative .vignette, +div.article.skin-entertainment .vignette { + background-color: #000; + margin: 5px 0 5px 0; + height: 8px; + position: relative; +} +div.article.skin-game .vignette span, +div.article.skin-creative .vignette span, +div.article.skin-entertainment .vignette span { + text-transform: lowercase; + color: #000; + display: block; + margin-left: 15px; + background-color: white; + position: absolute; + top: -6px; + font-size: 12px; + padding: 0 3px 0 3px; + font-weight: 500; +} +div.article.skin-game .vignette, +div.vignette.category-game { + background-color: #fba51e; +} +div.article.skin-creative .vignette, +div.vignette.category-creative { + background-color: #ec008c; +} +div.article.skin-entertainment .vignette, +div.vignette.category-entertainmentlectures { + background-color: #819700; +} +div.article.skin-game .vignette span, +div.vignette.category-game span{ + color: #fba51e; +} +div.article.skin-creative .vignette span, +div.vignette.category-creative span{ + color: #ec008c; +} +div.article.skin-entertainment .vignette span, +div.vignette.category-entertainmentlectures span{ + color: #819700; +} +div.article.skin-info { + background-color: #E6E7E8; + padding-bottom: 40px; +} +div.article.skin-info > div[class^="news"] > span.content-container, +div.article.skin-info > div[class^="news"] > span.title-container { + margin-left: 40px; + margin-right: 40px; +} +div.article.skin-info > div[class^="news"] > span.title-container { + padding-top: 40px; +} +div.article.skin-important > div[class^="news"] > span.img-container, +div.article.skin-info > div[class^="news"] > span.img-container { + margin-bottom: -25px; +} + +/* Modal +------------------------------------------------------ */ +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop { + opacity: 0.8; + filter: alpha(opacity=80); +} +.modal-c { + width: 800px; +} +.modal { + position: absolute; + top: 206px; + z-index: 1050; + width: 800px; + margin: 0 auto; + background-color: #ffffff; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.modal-body { + padding: 20px; + padding-top: 10px; +} +.modal-body .modal-form { + margin-bottom: 0; +} +.right { + float: right; +} + +/* Video +----------------------------------------------------- */ + +.video h2 { + margin-top: 10px; + margin-bottom: 5px; +} +.tags span { + margin-left: 5px; + padding: 3px 4px; + border: 1px solid #DDD; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.tags span:hover { + background-color: whiteSmoke; +} +.tags span:hover a { + color: black; +} +.tags span a { + color: #07A430; + border-bottom: none !important; +} +.tags span a:hover { + border-bottom: none !important; +} +.tags { + margin-bottom: 20px; +} + +/* Buttons +----------------------------------------------------- */ +.btn.stage, +.btn.stage.active, +.btn.stage:hover, +.btn.game, +.btn.game.active, +.btn.game:hover, +.btn.creative, +.btn.creative.active, +.btn.creative:hover, +.btn.auditorium, +.btn.auditorium.active, +.btn.auditorium:hover { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + color: white; +} +.btn.stage { + background-color: #ff7800; + background-image: -moz-linear-gradient(top, #ff7800, #db4d00); + background-image: -ms-linear-gradient(top, #ff7800, #db4d00); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ff7800), to(#db4d00)); + background-image: -webkit-linear-gradient(top, #ff7800, #db4d00); + background-image: -o-linear-gradient(top, #ff7800, #db4d00); + background-image: linear-gradient(top, #ff7800, #db4d00); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7800', endColorstr='#db4d00', GradientType=0); + border-color: #db4d00 #db4d00 #ca4900; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn.stage:hover, +.btn.stage:active, +.btn.stage.active, +.btn.stage.disabled, +.btn.stage[disabled] { + background-color: #db4d00; +} +.btn.stage:active, .btn.stage.active { + background-color: #e65a99 \9; +} +.btn.game { + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #009cff, #0078c4); + background-image: -ms-linear-gradient(top, #009cff, #0078c4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#009cff), to(#0078c4)); + background-image: -webkit-linear-gradient(top, #009cff, #0078c4); + background-image: -o-linear-gradient(top, #009cff, #0078c4); + background-image: linear-gradient(top, #009cff, #0078c4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#009cff', endColorstr='#0078c4', GradientType=0); + border-color: #0078c4 #0078c4 #0062a0; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn.game:hover, +.btn.game:active, +.btn.game.active, +.btn.game.disabled, +.btn.game[disabled] { + background-color: #0078c4; +} +.btn.game:active, .btn.game.active { + background-color: #0089e0 \9; +} +.btn.auditorium { + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #f33183, #dc0c64); + background-image: -ms-linear-gradient(top, #f33183, #dc0c64); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f33183), to(#dc0c64)); + background-image: -webkit-linear-gradient(top, #f33183, #dc0c64); + background-image: -o-linear-gradient(top, #f33183, #dc0c64); + background-image: linear-gradient(top, #f33183, #dc0c64); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f33183', endColorstr='#dc0c64', GradientType=0); + border-color: #dc0c64 #dc0c64 #bb004f; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn.auditorium:hover, +.btn.auditorium:active, +.btn.auditorium.active, +.btn.auditorium.disabled, +.btn.auditorium[disabled] { + background-color: #dc0c64; +} +.btn.auditorium:active, .btn.auditorium.active { + background-color: #e81f74 \9; +} +.btn.creative { + background-color: #009997; + background-image: -moz-linear-gradient(top, #009997, #007170); + background-image: -ms-linear-gradient(top, #009997, #007170); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#009997), to(#007170)); + background-image: -webkit-linear-gradient(top, #009997, #007170); + background-image: -o-linear-gradient(top, #009997, #007170); + background-image: linear-gradient(top, #009997, #007170); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#009997', endColorstr='#007170', GradientType=0); + border-color: #007170 #007170 #004e4d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn.creative:hover, +.btn.creative:active, +.btn.creative.active, +.btn.creative.disabled, +.btn.creative[disabled] { + background-color: #007170; +} +.btn.creative:active, .btn.creative.active { + background-color: #007f7d \9; +} +.btn { + display: inline-block; + padding: 4px 10px 4px; + font-size: 13px; + line-height: 18px; + color: #333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #FAFAFA; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), color-stop(25%, white), to(#E6E6E6)); + background-image: -webkit-linear-gradient(white, white 25%, #E6E6E6); + background-image: -moz-linear-gradient(top, white, white 25%, #E6E6E6); + background-image: -ms-linear-gradient(white, white 25%, #E6E6E6); + background-image: -o-linear-gradient(white, white 25%, #E6E6E6); + background-image: linear-gradient(white, white 25%, #E6E6E6); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + border: 1px solid #CCC; + border-bottom-color: #BBB; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + cursor: pointer; +} +.btn:first-child { + *margin-left: 0; +} +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -ms-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} +.btn:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn.active, .btn:active { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + color: rgba(0, 0, 0, 0.5); + outline: 0; +} +.btn-group { + position: relative; + *zoom: 1; + *margin-left: .3em; +} +.btn-group:before, .btn-group:after { + display: table; + content: ""; +} +.btn-group:after { + clear: both; +} +.btn-group:first-child { + *margin-left: 0; +} +.btn-group + .btn-group { + margin-left: 5px; +} +.btn-group .btn { + position: relative; + float: left; + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.btn-group .btn:last-child, .btn-group .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.btn-group .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} +.btn-group .btn:hover, +.btn-group .btn:focus, +.btn-group .btn:active, +.btn-group .btn.active { + z-index: 2; +} +.page a.btn, +.page a.btn::hover { + border-bottom: 1px solid #CCC; +} + +/* Schedule +------------------------------------------------------ */ +a.stage { + color: white; + background-color: #819700; +} +a.game { + color: white; + background-color: #fba51e; +} +a.auditorium { + color: black; + background-color: #d8e600; +} +a.creative { + color: white; + background-color: #ec008c; +} +a.agora { + color: white; + background-color: #2e4f9e; +} +a.remove-filter { + color: white; + background-color: #CCC; +} +.filterLink { + padding: 3px 6px; + margin-right: 5px; + line-height: 28px; +} +.calendar .stage { + color: #819700; + font-size: 25px; +} +.calendar .game { + color: #fba51e; + font-size: 25px; +} +.calendar .auditorium { + color: #d8e600; + font-size: 25px; +} +.calendar .creative { + color: #ec008c; + font-size: 25px; +} +.calendar .agora { + color: #2e4f9e; + font-size: 25px; +} +.calendar tr td { + text-align: left; +} +.calendar td, .calendar td { + min-width: 0; +} +.calendar tbody tr:nth-child(even) td { + background-color: transparent; +} +.calendar tbody tr.odd td { + background-color: #F2F2F2; +} +/* Responsive +------------------------------------------------------ */ +@media (max-width: 1320px) { + footer { + width: 1320px; + } +} +@media (max-width: 1094px) { + div.news-portal-header { + width: 630px; + margin-left: 30px !important; + } + .news100, .clearer, .span19 { width: 630px; } + .span18 { width: 597px; } + .span17 { width: 564px; } + .span16 { width: 531px; } + .span15 { width: 498px; } + .news75, .span14 { width: 465px; } + .span13 { width: 432px; } + .news66, .span-two-third { width: 410px; } + .span12 { width: 399px; } + .span11 { width: 366px; } + .span10 { width: 333px; } + .news50, .span9 { width: 300px; } + .span8 { width: 267px; } + .span7 { width: 234px; } + .span6 { width: 201px; } + .news33, .span-one-third { width: 190px; } + .span5 { width: 168px; } + .news25, .span4 { width: 135px; } + .span3 { width: 102px; } + .span2 { width: 69px; } + .span1 { width: 36px; } + .clearer { margin: 0px 0px 0px 30px !important; } + .full-span9 { width: 1094px; } + .full-span8 { width: 1034x; } + .full-span7 { width: 901px; } + .full-span6 { width: 768px; } + .full-span5 { width: 635px; } + .full-span4 { width: 502px; } + .full-span3 { width: 369px; } + .full-span2 { width: 236px; } + .full-span1 { width: 103px; } + .img-container.news100 img { width: 630px; height: auto; } + .img-container.news75 img { width: 465px; height: auto; } + .img-container.news66 img { width: 410px; height: auto; } + .img-container.news50 img { width: 300px; height: auto; } + .img-container.news33 img { width: 190px; height: auto; } + .img-container.news25 img { width: 135px; height: auto; } + .title-container h2 { + margin-bottom: 4px; + font-size: 19px; + } + h2.size13 { font-size: 9px; } + h2.size14 { font-size: 10px; } + h2.size15 { font-size: 11px; } + h2.size16 { font-size: 12px; } + h2.size17 { font-size: 12px; } + h2.size18 { font-size: 13px; } + h2.size19 { font-size: 14px; } + h2.size20 { font-size: 15px; } + h2.size21 { font-size: 15px; } + h2.size22 { font-size: 16px; } + h2.size23 { font-size: 17px; } + h2.size24 { font-size: 18px; } + h2.size25 { font-size: 18px; } + h2.size26 { font-size: 19px; } + h2.size27 { font-size: 20px; } + h2.size28 { font-size: 21px; } + h2.size29 { font-size: 21px; } + h2.size30 { font-size: 22px; } + h2.size31 { font-size: 23px; } + h2.size32 { font-size: 24px; } + h2.size33 { font-size: 24px; } + h2.size34 { font-size: 25px; } + h2.size35 { font-size: 26px; } + h2.size36 { font-size: 27px; } + h2.size37 { font-size: 27px; } + h2.size38 { font-size: 28px; } + h2.size39 { font-size: 29px; } + h2.size40 { font-size: 30px; } + h2.size41 { font-size: 30px; } + h2.size42 { font-size: 31px; } + h2.size43 { font-size: 32px; } + h2.size44 { font-size: 33px; } + h2.size45 { font-size: 33px; } + h2.size46 { font-size: 34px; } + h2.size47 { font-size: 35px; } + h2.size48 { font-size: 36px; } + h2.size49 { font-size: 36px; } + h2.size50 { font-size: 37px; } + h2.size51 { font-size: 38px; } + h2.size52 { font-size: 39px; } + h2.size53 { font-size: 39px; } + h2.size54 { font-size: 40px; } + h2.size55 { font-size: 41px; } + h2.size56 { font-size: 42px; } + h2.size57 { font-size: 42px; } + h2.size58 { font-size: 43px; } + h2.size59 { font-size: 44px; } + h2.size60 { font-size: 45px; } + h2.size61 { font-size: 45px; } + h2.size62 { font-size: 46px; } + h2.size63 { font-size: 47px; } + h2.size64 { font-size: 48px; } + h2.size65 { font-size: 48px; } + h2.size66 { font-size: 49px; } + h2.size67 { font-size: 50px; } + h2.size68 { font-size: 51px; } + h2.size69 { font-size: 51px; } + h2.size70 { font-size: 52px; } + h2.size71 { font-size: 53px; } + h2.size72 { font-size: 54px; } + h2.size73 { font-size: 54px; } + h2.size74 { font-size: 55px; } + h2.size75 { font-size: 56px; } + h2.size76 { font-size: 57px; } + h2.size77 { font-size: 57px; } + h2.size78 { font-size: 58px; } + h2.size79 { font-size: 59px; } + h2.size80 { font-size: 60px; } + h2.size81 { font-size: 60px; } + h2.size82 { font-size: 61px; } + h2.size83 { font-size: 62px; } + h2.size84 { font-size: 63px; } + h2.size85 { font-size: 63px; } + h2.size86 { font-size: 64px; } + h2.size87 { font-size: 65px; } + h2.size88 { font-size: 66px; } + h2.size89 { font-size: 66px; } + h2.size90 { font-size: 67px; } + h2.size91 { font-size: 68px; } + h2.size92 { font-size: 69px; } + h2.size93 { font-size: 69px; } + h2.size94 { font-size: 70px; } + h2.size95 { font-size: 71px; } + h2.size96 { font-size: 72px; } + h2.size97 { font-size: 72px; } + h2.size98 { font-size: 73px; } + h2.size99 { font-size: 74px; } + h2.size100 { font-size: 75px; } + .content-container p { + font-size: 12px !important; + line-height: 14px !important; + font-weight: 300; + } + .article, .page, .page-right { + margin: 0px 0px 30px 30px; + } + .page div[class^="news"], + div[class^="full-span"], + .page div[class^="span"]{ + margin-left: 30px; + } + .content { + width: 630px; + margin: 0 30px 0 30px; + } + .row { + margin-left: -30px; + } + footer div.row { + margin-left: -15px; + } + .container, footer { + width: 1094px; + } + .sidebar { + width: 202px; + } + .img-container { + margin-bottom: 4px; + } + div[class^="news"] p, + div[class^="full-span"] p, + div[class^="span"] p { + line-height: 18px; + } + div.article.skin-important { + padding-bottom: 30px; + } + div.article.skin-important > div[class^="news"] > span.content-container, + div.article.skin-important > div[class^="news"] > span.title-*, + div.article.skin-info > div[class^="news"] > span.content-container, + div.article.skin-info > div[class^="news"] > span.title-container { + margin-left: 30px; + margin-right: 30px; + } + div.article.skin-important > div[class^="news"] > span.title-container, + div.article.skin-info > div[class^="news"] > span.title-container { + padding-top: 30px; + } + .row.news .page img { + width: 100%; + } + header > div.container .inner { + width: 640px; + } + div.page .span11 img { + max-width: 366px; + height: auto; + } + footer div.row div.row { + margin-left: -30px; + } + div.content > div.row > div.page > img { + width: 630px; + height: auto; + } + div.content > div.row.news > iframe.full { + width: 630px; + margin-left: 30px; + } + #galleria { + width: 630px; + } + .media-page { + margin-left: 30px; + } +} +@media (max-width: 767px) { + .media-page { + margin-left: 0px; + } + div.page.news33.category-news { + margin-bottom: 40px; + } + div.news-portal-header { + width: 100%; + margin-left: 0px !important; + } + .img-container.news100 img, + .img-container.news75 img, + .img-container.news66 img, + .img-container.news50 img, + .img-container.news33 img, + .img-container.news25 img, + div.page .span11 img { + width: 100%; + height: auto; + } + .img-container { width: 100%; } + .img-container a { display:block; width: 100%; } + div[class^="news"], + div[class^="span"], + div[class^="full-span"], + .page div[class^="news"], + .page div[class^="span"], + .clearer, .content, .container, .sidebar, .page, header > div.container .inner, footer { + width: auto; + float: none; + clear: both; + } + .content { + margin: 0px 20px 20px 20px; + } + div.article.skin-important { + padding-bottom: 20px; + } + div.article { + width: 100% !important; + margin-left: 0; + } + .row.news { + margin-left: 0; + } + div.article.skin-important > div[class^="news"] > span.content-container, + div.article.skin-important > div[class^="news"] > span.title-container, + div.article.skin-info > div[class^="news"] > span.content-container, + div.article.skin-info > div[class^="news"] > span.title-container { + width: auto; + margin-left: 10px; + margin-right: 10px; + } + div.article.skin-important > div[class^="news"] > span.title-container, + div.article.skin-info > div[class^="news"] > span.title-container { + padding-top: 20px; + } + .content > div[class^="news"], + div[class^="span"] { + margin: 0 0 0 20px; + } + h2[class^="size"] { + font-size: 15px; + } + .sidebar { + margin: 0 20px 20px 20px; + } + header, footer { + padding: 0 20px 20px 20px; + } + .sidebar.sponsor a { + margin: 0 10px 10px 0; + float: left; + } + .sidebar.sponsor div.vignette { + clear: both; + } + .footnote > div { + width: auto; + display: block; + text-align: center; + } + footer div[class^="full-span"] { + margin-bottom: 20px; + } + .social-news > div { + float: left; + margin-right: 20px; + } + menu.top-menu { + height: 100px; + } + menu.top-menu li { + width: 45%; + float: left; + background-color: #bfd4e5; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + } + menu.top-menu li > a { + color: white; + } + menu.top-menu .top-menu-text { + text-align: center; + margin: 0; + } + menu.top-menu .top-menu-text > span:first-child { + display: block; + font-size: 15px; + line-height: 38px; + } + menu.top-menu > li:nth-child(odd) { + margin-right: 10%; + } + div.top-menu-icon { + display: none; + } + .hidden-phone { + display: none; + } + .visible-phone { + display: block; + } + menu.section-menu { + margin: 20px 0px 0px; + padding: 60px 10px 10px; + background-color: #555; + border-radius: 5px; + color: white; + } + menu.section-menu li { + padding: 6px; + border-radius: 5px; + } + menu.section-menu a, menu.section-menu a:hover { + color: white; + } + div.top-menu-text > span.help-text { + display: none; + } + th, td { + min-width: 0px; + } + .section-menu-button { + float: right; + margin-bottom: 15px; + } + .section-menu-button a { + width: 70px; + height: 50px; + line-height: 50px; + display: block; + text-align: center; + border-radius: 5px; + background-color: #555; + color: white; + } + .section-menu-button a:hover, menu.section-menu li:hover { + background-color: #6f6f6f; + } + h1 { font-size: 25px; line-height: 30px; margin-bottom: 10px; } + h2 { font-size: 20px; line-height: 25px; margin-bottom: 8px;} + h3 { font-size: 15px; line-height: 20px; } + h4 { font-size: 12px; line-height: 17px; } + h5 { font-size: 12px; line-height: 17px; } + h6 { font-size: 12px; line-height: 17px; } + .row.news .page { + margin: 0px; + } + header { + margin-bottom: 0px; + } + menu.top-menu a:hover div.top-menu-text > span, menu.top-menu a:hover div.top-menu-text > span.help-text, div.top-menu-text > span { + color: white; + } + div.logo { + width: 132px; + } + div.logo img { + height: 100px; + } + div.inner div.when { + display: none; + } + div.inner div.right { + float: left; + } + footer > div.container > div.row { + margin-top: 30px; + } + div[class^="full-span"] { + margin: 0px 0px 0px 15px; + } + footer .search input[type="search"]{ + width: 100%; + } + footer .language { + text-align: center; + } + footer > div.container { + padding: 0px 0px 90px 0px; + } + header ul.promo-menu { + padding-top: 20px; + } + footer div.row div.row { + margin-left: -20px; + } + div.content > div.row > div.page > img { + width: 100%; + height: auto; + } + div.content > div.row.news > iframe.full { + width: 100%; + margin-left: 0px; + } + #galleria { + width: 100%; + } + div.calendar table, + div.calendar table thead, + div.calendar table tbody, + div.calendar table th, + div.calendar table td, + div.calendar table tr { + display: block; + } + div.calendar table thead tr { + position: absolute; + top: -9999px; + left: -9999px; + } + div.calendar table td { + border: none; + border-bottom: 1px solid #CCC; + position: relative; + padding-left: 20%; + white-space: normal; + text-align: left; + } + div.calendar table td:before { + position: absolute; + top: 6px; + left: 6px; + width: 45%; + padding-right: 10px; + white-space: nowrap; + text-align:left; + font-weight: bold; + content: attr(data-title); + } + .filterLink { + clear: right; + display: block; + text-align: center; + } + li.menu-creative a, li.menu-creative span, li.menu-creative + menu.sub-menu a, li.menu-creative + menu.submenu span, + li.menu-game a, li.menu-game span, li.menu-game + menu.sub-menu a, li.menu-game + menu.submenu span, + li.menu-tickets a, li.menu-tickets span, li.menu-tickets + menu.sub-menu a, li.menu-tickets + menu.submenu span, + li.menu-guide a, li.menu-guide span, li.menu-guide + menu.sub-menu a, li.menu-guide + menu.submenu span, + li.menu-entertainment-lectures a, li.menu-entertainment-lectures span, li.menu-entertainment-lectures + menu.sub-menu a, li.menu-entertainment-lectures + menu.submenu span { + color: white; + } +} diff --git a/web/stream.tg13.gathering.org/singularity.png b/web/stream.tg13.gathering.org/singularity.png Binary files differnew file mode 100644 index 0000000..3a13cdf --- /dev/null +++ b/web/stream.tg13.gathering.org/singularity.png diff --git a/web/stream.tg13.gathering.org/stream.pl b/web/stream.tg13.gathering.org/stream.pl new file mode 100755 index 0000000..8ccf05c --- /dev/null +++ b/web/stream.tg13.gathering.org/stream.pl @@ -0,0 +1,87 @@ +#!/usr/bin/perl -I /srv/streamlib + +use warnings; +use strict; + +use stream; +use stream::config; +use CGI; +my $client = CGI->new; + +my $stream = $client->param('stream'); +my $interlaced = $client->param('interlaced'); +my $delivery = $client->param('delivery'); + +my $v4net = $stream::config::v4net; +my $v6net = $stream::config::v6net; +my $multicast_ip = $stream::config::multicast; +my $tg = $stream::config::tg; +my $base_url = $stream::config::vlc_base_host; +my %streams = %stream::config::streams; + + + +#default +if (not defined $delivery) { + $delivery = "multicast"; +} + +if((not defined $stream) or (not defined $delivery)) { + print $client->header(); + die "No stream and/or delivery method, robots unhappy :/\n"; +} + +my $url = ""; +my $port_del = ""; +my $port_str = ""; +my $extinf = ""; +my $flash_appendix = ""; + +my $clip = $client->remote_addr(); + +if (exists($streams{$stream})) { + my $is_multicast = 0; + # add force is_ip_local in check? + $is_multicast = 1 if (exists($streams{$stream}->{has_multicast}) && $delivery eq "multicast"); + + if ($is_multicast) { + $port_del = 20; + $extinf .= "Multicasted"; + $url = $streams{$stream}->{multicast_ip}; + } else { + $port_del = 30; + $extinf .= "Unicasted"; + $url = $base_url; + + if ($streams{$stream}->{is_flash}) { + $port_del = 50; + $flash_appendix = "/stream.flv"; + } + } + + $port_del = $streams{$stream}->{preport} if (defined($streams{$stream}->{preport})); + $port_str = $streams{$stream}->{port}; + $extinf .= " $streams{$stream}->{title}"; + +} else { + &error("No stream and/or delivery method, robots unhappy :-/"); +} + +#print out new file +print $client->header(-type => "application/vlc", + "-Content-disposition" => "attachment; filename=tg-".$delivery."-".$stream.".vlc" +); + +print "#EXTM3U\n"; +print "#EXTINF:-1,TG$tg $extinf\n"; +if(defined $interlaced && $interlaced == 1) { + print "#EXTVLCOPT:deinterlace=1\n"; + print "#EXTVLCOPT:deinterlace-mode=linear\n"; +} +print "$url:$port_del$port_str$flash_appendix\n"; + +sub error($) { + my $message = shift; + print $client->header(); + die($message."\n"); +} diff --git a/web/stream.tg13.gathering.org/streamstats-fast.pl b/web/stream.tg13.gathering.org/streamstats-fast.pl new file mode 100755 index 0000000..f4caa24 --- /dev/null +++ b/web/stream.tg13.gathering.org/streamstats-fast.pl @@ -0,0 +1,15 @@ +#! /usr/bin/perl +use strict; +use warnings; +use POSIX; +use CGI qw(fatalsToBrowser); + +my $port_spec = CGI::param('port'); +my $proto_spec = CGI::param('proto'); +my $audience_spec = CGI::param('audience'); + +print CGI::header(-type=>'image/png'); + +# I'm sure this is really safe +system("/srv/stream.tg13.gathering.org/fix_count.pl | /srv/stream.tg13.gathering.org/streamstats - $port_spec $proto_spec $audience_spec"); +#system("/srv/stream.tg13.gathering.org/streamstats", "/home/techserver/cleaned_datacube.log", $port_spec, $proto_spec, $audience_spec); diff --git a/web/stream.tg13.gathering.org/streamstats.cpp b/web/stream.tg13.gathering.org/streamstats.cpp new file mode 100644 index 0000000..e81419f --- /dev/null +++ b/web/stream.tg13.gathering.org/streamstats.cpp @@ -0,0 +1,217 @@ +#include <stdio.h> +#include <string.h> +#include <map> +#include <set> +#include <string> +#include <vector> +#include <stdlib.h> + +using namespace std; + +map<string, string> port_desc = { + { "3013", "main (3013)" }, + { "3014", "main-sd (3014)" }, + { "3015", "webcam (3015)" }, + { "3016", "webcam-south (3016)" }, + { "3017", "webcam-south-transcode (3017)" }, + { "3018", "webcam-fisheye (3018)" }, + { "5013", "main-transcode (5013)" }, + { "5015", "webcam-transcode (5015)" }, +}; + +struct Spec { + set<string> incl; + bool compare; +}; + +Spec parse_spec(const string &spec) +{ + Spec ret; + ret.compare = false; + + if (spec == "compare") { + ret.compare = true; + return ret; + } + if (spec == "dontcare") { + return ret; + } + + const char *ptr = spec.c_str(); + if (strncmp(ptr, "compare:", 8) == 0) { + ptr += 8; + ret.compare = true; + } + + for ( ;; ) { + const char *end = strchr(ptr, ','); + if (end == NULL) { + ret.incl.insert(ptr); + break; + } else { + ret.incl.insert(string(ptr, end)); + ptr = end + 1; + } + } + + return ret; +} + +bool filter(const string &entry, const Spec &spec) +{ + if (spec.incl.empty()) { + return false; + } + return spec.incl.count(entry) == 0; +} + +vector<string> get_stream_id(const string& port, const string &proto, const string &audience, + const Spec& port_spec, const Spec &proto_spec, const Spec &audience_spec) +{ + vector<string> keys; + if (port_spec.compare) { + if (port_desc.count(port)) { + keys.push_back(port_desc[port]); + } else { + char buf[256]; + sprintf(buf, "___%s___", port.c_str()); + keys.push_back(buf); + } + } + if (proto_spec.compare) { + keys.push_back(proto); + } + if (audience_spec.compare) { + keys.push_back(audience); + } + return keys; +} + +string get_stream_desc(const vector<string> &stream_id) +{ + string ret; + for (int i = 0; i < stream_id.size(); ++i) { + if (i != 0) { + ret += ","; + } + ret += stream_id[i]; + } + return ret; +} + +int main(int argc, char **argv) +{ + Spec port_spec = parse_spec(argv[2]); + Spec proto_spec = parse_spec(argv[3]); + Spec audience_spec = parse_spec(argv[4]); + + map<string, map<vector<string>, int> > lines; + map<vector<string>, int> stream_ids; + vector<string> stream_descs; + + // Parse the log. + FILE *fp; + if (strcmp(argv[1], "-") == 0) { + fp = stdin; + } else { + fp = fopen(argv[1], "r"); + } + while (!feof(fp)) { + char buf[1024]; + fgets(buf, 1024, fp); + + if (buf == NULL) { + break; + } + char *ptr = strchr(buf, '\n'); + if (ptr != NULL) { + *ptr = 0; + } + + char *date = strtok(buf, " "); + char *port = strtok(NULL, " "); + char *proto = strtok(NULL, " "); + char *audience = strtok(NULL, " "); + char *count = strtok(NULL, " "); + + if (date == NULL || port == NULL || proto == NULL || audience == NULL || count == NULL) { + continue; + } + + if (filter(port, port_spec)) { + continue; + } + if (filter(proto, proto_spec)) { + continue; + } + if (filter(audience, audience_spec)) { + continue; + } + + vector<string> stream_id = get_stream_id(port, proto, audience, port_spec, proto_spec, audience_spec); + if (stream_ids.count(stream_id) == 0) { + int stream_id_num = stream_ids.size(); + stream_ids.insert(make_pair(stream_id, stream_id_num)); + stream_descs.push_back(get_stream_desc(stream_id)); + } + lines[date][stream_id] += atoi(count); + } + fclose(fp); + + // Output. + char *data_file = tempnam(NULL, "data"); + FILE *datafp = fopen(data_file, "w"); + if (datafp == NULL) { + perror(data_file); + exit(1); + } + + vector<int> cols(stream_ids.size()); + for (auto& it : lines) { + const string& date = it.first; + + for (const auto& it2 : stream_ids) { + const vector<string>& stream_id = it2.first; + int stream_id_num = it2.second; + + cols[stream_id_num] = it.second[stream_id]; // note: might zero-initialize + } + fprintf(datafp, "%s", date.c_str()); + for (int i = 0; i < cols.size(); ++i) { + fprintf(datafp, " %d", cols[i]); + } + fprintf(datafp, "\n"); + } + fclose(datafp); + + // Make gnuplot script. + char *plot_file = tempnam(NULL, "plot"); + FILE *plotfp = fopen(plot_file, "w"); + if (plotfp == NULL) { + perror(plot_file); + exit(1); + } + + fprintf(plotfp, "set terminal png\n"); + fprintf(plotfp, "set xdata time\n"); + fprintf(plotfp, "set timefmt \"20%%y-%%m-%%d-%%H:%%M:%%S\"\n"); + fprintf(plotfp, "set xtics axis \"2000-00-00-01:00:00\"\n"); + fprintf(plotfp, "set format x \"%%H\"\n"); + + fprintf(plotfp, "plot"); + for (int i = 0; i < cols.size(); ++i) { + if (i == 0) { + fprintf(plotfp, " "); + } else { + fprintf(plotfp, ","); + } + fprintf(plotfp, "\"%s\" using 1:%d title \"%s\" with lines", data_file, i + 2, stream_descs[i].c_str()); + } + fprintf(plotfp, "\n"); + + fclose(plotfp); + + char buf[1024]; + sprintf(buf, "gnuplot < %s", plot_file); + system(buf); +} diff --git a/web/stream.tg13.gathering.org/streamstats.html b/web/stream.tg13.gathering.org/streamstats.html new file mode 100644 index 0000000..5d6adc7 --- /dev/null +++ b/web/stream.tg13.gathering.org/streamstats.html @@ -0,0 +1,81 @@ +<html> + <head> + <script> + function construct_url(name, choices) { + // port + var url = name + '='; + if (document.getElementById('split_' + name).checked) { + url += 'compare:'; + } + var choices_so_far = 0; + for (var i = 0; i < choices.length; ++i) { + var check = document.getElementById(name + '_' + choices[i]); + if (!check.checked) { + continue; + } + if (choices_so_far++ != 0) { + url += ','; + } + url += choices[i]; + } + return url; + } + + function update() { + var url = 'http://stream.tg13.gathering.org/streamstats-fast.pl?'; + url += construct_url('port', [ 3013, 3014, 3015, 3016, 3017, 3018, 5013, 5015 ]); + url += '&' + construct_url('proto', [ 'IPv4', 'IPv6' ]); + url += '&' + construct_url('audience', [ 'internal', 'external' ]); + + document.getElementById('graph').src = url; + } + </script> + </head> + <body> + <table> + <tr> + <th>Ports:</th> + <td> + <label><input type="checkbox" id="port_3013" checked="checked" onchange="update();" /> 3013 (Main)</label><br /> + <label><input type="checkbox" id="port_3014" checked="checked" onchange="update();" /> 3014 (Main SD)</label><br /> + <label><input type="checkbox" id="port_3015" checked="checked" onchange="update();" /> 3015 (Webcam)</label><br /> + <label><input type="checkbox" id="port_3016" checked="checked" onchange="update();" /> 3016 (Webcam south)</label><br /> + <label><input type="checkbox" id="port_3017" checked="checked" onchange="update();" /> 3017 (Webcam south transcode)</label><br /> + <label><input type="checkbox" id="port_3018" checked="checked" onchange="update();" /> 3018 (Fisheye)</label><br /> + <label><input type="checkbox" id="port_5013" checked="checked" onchange="update();" /> 5013 (Main LQ/Flash)</label><br /> + <label><input type="checkbox" id="port_5015" checked="checked" onchange="update();" /> 5015 (Webcam LQ/Flash)</label> + </td> + <td> + <label><input type="checkbox" id="split_port" onchange="update();" /> Split</label> + </td> + </tr> + <tr> + <th>Protocol:</th> + <td> + <label><input type="checkbox" id="proto_IPv4" checked="checked" onchange="update();" /> IPv4</label><br /> + <label><input type="checkbox" id="proto_IPv6" checked="checked" onchange="update();" /> IPv6</label><br /> + </td> + <td> + <label><input type="checkbox" id="split_proto" onchange="update();" /> Split</label> + </td> + </tr> + <tr> + <th>Audience:</th> + <td> + <label><input type="checkbox" id="audience_internal" checked="checked" onchange="update();" /> Internal</label><br /> + <label><input type="checkbox" id="audience_external" checked="checked" onchange="update();" /> External</label><br /> + </td> + <td> + <label><input type="checkbox" id="split_audience" onchange="update();" /> Split</label> + </td> + </tr> + <tr> + <td colspan="3"> + <input type="button" value="Update display" onclick="update();" /> + </td> + </tr> + </table> + <p><img src="" id="graph" /></p> + <script>update();</script> + </body> +</html> diff --git a/web/stream.tg13.gathering.org/streamstats.pl b/web/stream.tg13.gathering.org/streamstats.pl new file mode 100755 index 0000000..e4c20f9 --- /dev/null +++ b/web/stream.tg13.gathering.org/streamstats.pl @@ -0,0 +1,116 @@ +#! /usr/bin/perl +use strict; +use warnings; +use POSIX; +use CGI qw(fatalsToBrowser); + +my %port_spec = prepare_spec(CGI::param('port')); +my %proto_spec = prepare_spec(CGI::param('proto')); +my %audience_spec = prepare_spec(CGI::param('audience')); + +#open LOG, "<", "/home/techserver/count_datacube.log" +open LOG, "-|", "/home/techserver/fix_count.pl" +#open LOG, "<", "/home/techserver/cleaned_datacube.log" + or die "count_datacube.log: $!"; + +our %desc = ( + 3013 => 'main (3013)', + 3014 => 'main-sd (3014)', + 3015 => 'webcam (3015)', + 3016 => 'webcam-south (3016)', + 3017 => 'webcam-south-transcode (3017)', + 3018 => 'webcam-fisheye (3018)', + 5013 => 'main-transcode (5013)', + 5015 => 'webcam-transcode (5015)', +); + +my $lines = {}; +my %streams = (); + +while (<LOG>) { + chomp; + my ($date, $port, $proto, $audience, $count) = split /\s+/; + next if (filter($port, $proto, $audience)); + my $stream_id = get_stream_id($port, $proto, $audience); + $streams{$stream_id} = 1; + $lines->{$date}{$stream_id} += $count; +} + +close LOG; + +print CGI::header(-type=>'image/png'); + +my $tmpfile = POSIX::tmpnam(); +open GRAPH, ">", $tmpfile + or die "$tmpfile: $!"; +for my $date (sort keys %$lines) { + my @cols = (); + for my $stream (keys %streams) { + push @cols, ($lines->{$date}{$stream} // "0"); + } + print GRAPH "$date ", join(' ', @cols), "\n"; +} +close GRAPH; + +my $tmpfile2 = POSIX::tmpnam(); +open GNUPLOT, ">", $tmpfile2 + or die "$tmpfile2: $!"; +print GNUPLOT "set terminal png\n"; +print GNUPLOT "set xdata time\n"; +print GNUPLOT "set timefmt \"20%y-%m-%d-%H:%M:%S\"\n"; +print GNUPLOT "set xtics axis \"2000-00-00-01:00:00\"\n"; +print GNUPLOT "set format x \"%H\"\n"; + +my @plots = (); +my $idx = 2; +for my $stream (keys %streams) { + push @plots, "\"$tmpfile\" using 1:$idx title \"$stream\" with lines"; + ++$idx; +} +print GNUPLOT "plot ", join(', ', @plots); + +# \"$tmpfile\" using 0:2 with lines, \"$tmpfile\" using 0:3 with lines\n"; +close GNUPLOT; + +system("gnuplot < $tmpfile2"); + +sub prepare_spec { + my $spec = shift; + return () if ($spec eq 'compare' || $spec eq 'dontcare'); + $spec =~ s/^compare://; + + my %ret = (); + for my $s (split /,/, $spec) { + $ret{$s} = 1; + } + return %ret; +} + +sub filter { + my ($port, $proto, $audience) = @_; + return 1 if (filter_list(\%port_spec, $port)); + return 1 if (filter_list(\%proto_spec, $proto)); + return 1 if (filter_list(\%audience_spec, $audience)); + return 0; +} + +sub filter_list { + my ($spec, $candidate) = @_; + return 0 if ((scalar keys %$spec) == 0); + return !exists($spec->{$candidate}); +} + +sub get_stream_id { + my ($port, $proto, $audience) = @_; + my @keys = (); + if (CGI::param('port') =~ /^compare/) { + if (exists($desc{$port})) { + push @keys, $desc{$port}; + } else { + push @keys, "___" . $port . "___"; + } + } + push @keys, $proto if (CGI::param('proto') =~ /^compare/); + push @keys, $audience if (CGI::param('audience') =~ /^compare/); + return join(',', @keys); +} diff --git a/web/stream.tg13.gathering.org/superawesomeness.css b/web/stream.tg13.gathering.org/superawesomeness.css new file mode 100644 index 0000000..b8c5545 --- /dev/null +++ b/web/stream.tg13.gathering.org/superawesomeness.css @@ -0,0 +1,24 @@ +* { font-family: 'Open Sans', sans-serif; + +} + +body { + background: #fff; color: #000; opacity: 1; +} + +#spaceship { background: url('singularity.png'); width: 237px; height: 200px;position:absolute; top: 0; right: 0;z-index: -1} + +@media screen and (max-width: 1145px) { /* Min iPad size*/ + #spaceship { + background: #fff; + } +} + + +/* #innhold { position: absolute; left:0px ; top: 50px; margin: 0 50px 0 50px; z-index: 9; width: 520px; }*/ +#innhold { width: 480px; } +footer { clear: both; width:480px; } +a { color: #000; } +h4 { margin: 0; margin-top: 35px;} +p { margin: 0; padding: 0; } +li { margin-bottom: 14px; } diff --git a/web/stream.tg13.gathering.org/test.pl b/web/stream.tg13.gathering.org/test.pl new file mode 100755 index 0000000..3b440d5 --- /dev/null +++ b/web/stream.tg13.gathering.org/test.pl @@ -0,0 +1,70 @@ +#!/usr/bin/perl -I /srv/streamlib +use warnings; +use strict; +use CGI; +use Geo::IP; +use NetAddr::IP; +use Net::IP; +# apt-get install libnet-ip-perl libnetaddr-ip-perl +use HTML::Template; +use stream; +use stream::config; + +my $client = CGI->new; + +my $v4net = $stream::config::v4net; +my $v6net = $stream::config::v6net; +my $tg = $stream::config::tg; +my $tg_full = $stream::config::tg_full; +my %streams = %stream::config::streams; + +my $force_unicast = $client->param('forceunicast'); + +my $location = undef; + +print $client->header(); + +my $clip = $client->remote_addr(); +my $template = HTML::Template->new(filename => 'test.tmpl'); +my $is_local = &is_ip_local($clip, $v4net, $v6net); + +my @streams = &html_local_test(); +$template->param(TG => $tg); +$template->param(TG_FULL => $tg_full); +$template->param(STREAMS => \@streams); +print $template->output(); + + +sub html_local_test() { + my @s = (); + foreach my $name (sort { $streams{$a}->{priority} <=> $streams{$b}->{priority} } keys %streams) { + my $title_link = "http://stream.tg$tg.gathering.org/stream.pl?delivery=%s&stream=${name}&interlaced=%s"; + my $multicast_link = $streams{$name}->{has_multicast} ? "multicast" : "unicast"; + $multicast_link = "unicast" if ($force_unicast == 1 || not $is_local); + + if ($streams{$name}->{external}) { + $title_link = $streams{$name}->{url}; + } else { + $title_link = sprintf($title_link, $multicast_link, $streams{$name}->{interlaced}); + } + my %hash = ( + 'title_link' => $title_link, + 'title' => $streams{$name}->{title}, + 'source' => $streams{$name}->{source}, + 'quality' => $streams{$name}->{quality}, + 'location' => $streams{$name}->{location}, + 'type' => $streams{$name}->{type}, + 'delivery' => $multicast_link, + ); + if ($multicast_link eq "multicast") { + $hash{'is_multicast'} .= 1; + my $unicast_link = $title_link; + $unicast_link=~s/multicast/unicast/g; + $hash{'unicast_link'} .= $unicast_link; + } + $hash{'description'} .= $streams{$name}->{description} if exists($streams{$name}->{description}); + push(@s, \%hash); + + } + return @s; +} diff --git a/web/stream.tg13.gathering.org/test.tmpl b/web/stream.tg13.gathering.org/test.tmpl new file mode 100644 index 0000000..ea0eaca --- /dev/null +++ b/web/stream.tg13.gathering.org/test.tmpl @@ -0,0 +1,31 @@ +<html> +<head> + <title>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</title> + <link rel="stylesheet" type="text/css" href="singularity.css" media="all"> +</head> +<body> + <div id="innhold"> + <h1>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</h1> + <TMPL_LOOP NAME="STREAMS"> + <div class="stream-link"> + <div class="stream-icon"><img src="img/icon_<TMPL_VAR NAME=QUALITY>.png" /> <img src="img/icon_<TMPL_VAR NAME=TYPE>.png" /> <TMPL_IF NAME=LOCATION><img src="img/icon_<TMPL_VAR NAME=LOCATION>.png"></TMPL_IF></div> + <div class="stream-link-content"> + <a href="<TMPL_VAR NAME=TITLE_LINK>"><TMPL_VAR NAME=TITLE></a><br> + Source: <TMPL_VAR NAME=SOURCE><br> + Delivery: <TMPL_VAR NAME=delivery> <TMPL_IF NAME=IS_MULTICAST>(<a href='<TMPL_VAR NAME=UNICAST_LINK>'>problems? try unicast vlc link here</a>)</TMPL_IF> + </div> + </div> + </TMPL_LOOP> + <div id="map"> + <img src="img/cam-map.png"> + </div> + + </div> + + <p>Problems with the non game streams? The easiest way to get hold of us is on IRC (EFNet); one of ViD, Rockj and Sesse should be available if there's too much traffic on #tg to be heard.</p> + <p><a href="http://stream.tg<TMPL_VAR NAME="TG">.gathering.org">http://stream.tg<TMPL_VAR NAME="TG">.gathering.org</a></p> + +</body> +</html> + + diff --git a/web/streamlib/stream.pm b/web/streamlib/stream.pm new file mode 100644 index 0000000..c28136e --- /dev/null +++ b/web/streamlib/stream.pm @@ -0,0 +1,36 @@ +package stream; +use strict; +use warnings; + +BEGIN { + use Exporter(); + + our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); + + @ISA = qw(Exporter); + $VERSION = 1.00; + @EXPORT = qw(&is_ip_local); + +} + +sub is_ip_local($$$) { + my $clip = shift; + my $v4net = shift; + my $v6net = shift; + return 0 unless defined($clip); + + my $is_local = 0; + if ($clip =~ m/\:/){ + if (NetAddr::IP->new($clip)->within($v6net)){ + $is_local = 1; + } + } else { + if (NetAddr::IP->new($clip)->within($v4net)){ + $is_local = 1; + } + } + return $is_local; +} + + +1; diff --git a/web/streamlib/stream/config.pm b/web/streamlib/stream/config.pm new file mode 100644 index 0000000..7c488b6 --- /dev/null +++ b/web/streamlib/stream/config.pm @@ -0,0 +1,160 @@ +package stream::config; +use strict; +use warnings; +use NetAddr::IP; + +our $v4net = NetAddr::IP->new("151.216.0.0/17"); +our $v6net = NetAddr::IP->new("2a02:ed02::/32"); +our $multicast = "udp://\@233.191.12.1"; +our $vlc_base_host = "http://stream.tg13.gathering.org"; +our $tg = 13; +our $tg_full = 2013; + + +# priority = sorting order in streaming list +# port , "post port number" +# has_external , shows on OVH/.fr reflector if set +# external , replaces static url link +# source , video source pew pew +# title , title doh \:D/ +our %streams = ( +# Deaktivert 31.mars kl 05.30 iush +# 'event-ios' => { +# 'type' => 'event', +# 'quality' => 'hd', +# 'priority' => 26, +# 'external' => 1, +# 'url' => "$vlc_base_host/ios/event.m3u8", +# 'source' => 'Event', +# 'title' => 'Event HD Stream for iOS devices (Apple)', +# }, +# 'event-hd' => { +# 'type' => 'event', +# 'quality' => 'hd', +# 'priority' => 20, +# 'port' => 13, +# 'interlaced' => 0, +# 'has_multicast' => 1, +# 'multicast_ip' => 'udp://@[ff7e:a40:2a02:ed02:ffff::13]', +# 'source' => 'Event', +# 'title' => 'Event HD (720p50)' +# }, +# 'event-sd' => { +# 'type' => 'event', +# 'quality' => 'sd', +# 'priority' => 24, +# 'port' => 14, +# 'interlaced' => 0, +# 'has_multicast' => 1, +# 'multicast_ip' => 'udp://@[ff7e:a40:2a02:ed02:ffff::14]', +# 'source' => 'Event', +# 'title' => 'Event SD (576p) (2mbps)' +# }, +# 'event-flash' => { +# 'type' => 'event', +# 'quality' => 'sd', +# 'priority' => 25, +# 'interlaced' => 0, +# 'external' => 1, +# 'url' => 'http://www.gathering.org/tg13/no/live-tv/', +# 'source' => 'Event', +# 'title' => 'Event SD (gathering.org flash player)', +# }, +# + + + 'south-raw' => { + 'type' => 'camera', + 'location' => 3, + 'quality' => 'hd', + 'priority' => 40, + 'port' => 16, + 'interlaced' => 1, + 'has_multicast' => 0, +# 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::16]", + 'source' => 'Tech', + 'title' => 'Webcam South (HD) (1080i25)', + }, + + 'south-transcode' => { + 'type' => 'camera', + 'location' => 3, + 'quality' => 'hd', + 'priority' => 50, + 'port' => 17, + 'interlaced' => 0, + 'has_multicast' => 1, + 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::17]", + 'source' => 'Tech', + 'title' => 'Webcam South (HD) (720p50)', + }, + + + 'fuglecam' => { + 'type' => 'camera', + 'location' => 2, + 'quality' => 'hd', + 'priority' => 118, + 'port' => 15, + 'interlaced' => 1, + 'has_multicast' => 1, + 'multicast_ip' => "udp://\@[ff7e:a40:2a02:ed02:ffff::15]", + 'source' => 'Tech', + 'title' => 'Webcam Fugleberget (HD) (1080i50)', + }, + + + + 'fuglecam-flv-sd' => { + 'location' => 2, + 'type' => 'camera', + 'quality' => 'sd', + 'priority' => 121, + 'interlaced' => 1, + 'external' => 1, + 'url' => 'http://www.gathering.org/tg13/no/webcam/', + 'title' => 'Webcam Fugleberget (SD) (gathering.org flash player)', + }, + + 'noc-fisheye' => { + 'type' => 'camera', + 'location' => 1, + 'quality' => 'hd', + 'priority' => 130, + 'port' => 18, + 'has_multicast' => 1, + 'interlaced' => 0, + 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::18]:2018", + 'source' => "Tech", + 'title' => "Webcam NOC Fisheye (HD)" + }, + 'noc-fisheye-transcode' => { + 'type' => 'camera', + 'location' => 1, + 'quality' => 'hd', + 'priority' => 131, + 'port' => 19, + 'has_multicast' => 1, + 'interlaced' => 0, + 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::19]:2019", + 'source' => "Tech", + 'title' => "Webcam NOC Fisheye (HD transcoded)" + }, + + + 'south-still' => { + 'location' => 3, + 'type' => 'camera', + 'quality' => 'hd', + 'priority' => 110, + 'external' => 1, + 'url' => 'http://stillcam.tg13.gathering.org/', + 'title' => 'Webcam South (Image)', + 'source' => 'Tech' + }, + + + ); + + +1; diff --git a/web/tech.gathering.org/event-720p.mp4.pl b/web/tech.gathering.org/event-720p.mp4.pl new file mode 100755 index 0000000..631e40d --- /dev/null +++ b/web/tech.gathering.org/event-720p.mp4.pl @@ -0,0 +1,11 @@ +#!/usr/bin/env +use strict; +use warnings; +use Capture::Tiny ':all'; + +$! = 1; +print "Content-Type: video/mp4\n\n"; + +my ($stdout, $stderr) = tee { + system('wget', '-qO-', 'http://stream.tg13.gathering.org:3013'); +}; diff --git a/web/tech.gathering.org/index.html b/web/tech.gathering.org/index.html new file mode 100644 index 0000000..9a5b0ad --- /dev/null +++ b/web/tech.gathering.org/index.html @@ -0,0 +1,20 @@ +<html> +<head> +<title>Tech resources - The Gathering 2013</title> +<link rel="stylesheet" type="text/css" href="/styles.css" media="all"> +</head> +<body> + +<h1>Tech resources - The Gathering 2013</h1> + +<img id="logo" src="logo.png" alt="The Gathering 2013" /> + +<h2><a href="http://stats.tg13.gathering.org">stats.tg13.gathering.org (weathermap)</a></h2> +<h2><a href="http://nms-public.tg13.gathering.org">nms-public.tg13.gathering.org</a></h2> +<h2><a href="http://stream.tg13.gathering.org">stream.tg13.gathering.org</a></h2> + +<h2><a href="http://techserver.gathering.org/ircrules">IRC rules for #tg@EFnet</a></h2> + +<p>Enjoy :-)</p> +</body> +</html> diff --git a/web/tech.gathering.org/logo.png b/web/tech.gathering.org/logo.png Binary files differnew file mode 100644 index 0000000..3a13cdf --- /dev/null +++ b/web/tech.gathering.org/logo.png diff --git a/web/tech.gathering.org/styles.css b/web/tech.gathering.org/styles.css new file mode 100644 index 0000000..e690989 --- /dev/null +++ b/web/tech.gathering.org/styles.css @@ -0,0 +1,24 @@ +* { font-family: 'Open Sans', sans-serif; + +} + +body { + background: #fff; color: #000; opacity: 1; +} + +#logo { background: url('logo.png'); width: 237px; height: 200px;position:absolute; top: 0; right: 0;z-index: -1} + +@media screen and (max-width: 1145px) { /* Min iPad size*/ + #spaceship { + background: #fff; + } +} + +/* #innhold { position: absolute; left:0px ; top: 50px; margin: 0 50px 0 50px; z-index: 9; width: 520px; }*/ +#innhold { width: 480px; } +footer { clear: both; width:480px; } +a { color: #000; } +h4 { margin: 0; margin-top: 35px;} +p { margin: 0; padding: 0; } +li { margin-bottom: 14px; } + |