OPNsense links

This commit is contained in:
YuruC3 2025-05-13 13:44:36 +02:00
parent c265a83300
commit 8a5375c5c8
5 changed files with 492 additions and 0 deletions

2
opnsense/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
__pycache__
test

187
opnsense/main.log Normal file
View File

@ -0,0 +1,187 @@
[<div class="download_section">
<h2>Australia</h2>
<h3><a href="https://mirror.aarnet.edu.au/pub/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="AARNet Pty Ltd">AARNet Pty Ltd</a></h3>
</div>, <div class="download_section">
<h2>Brazil</h2>
<h3><a href="https://mirror.cloudfence.com.br/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Cloudfence">Cloudfence</a></h3>
</div>, <div class="download_section">
<h2>China</h2>
<h3><a href="https://opnsense.aivian.org/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Aivian">Aivian</a></h3>
<h3><a href="https://mirrors.pku.edu.cn/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Peking University open source software mirror">Peking University open source software mirror</a></h3>
</div>, <div class="download_section">
<h2>Colombia</h2>
<h3><a href="https://mirror.venturasystems.tech/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Ventura Systems">Ventura Systems</a></h3>
</div>, <div class="download_section">
<h2>Denmark</h2>
<h3><a href="https://mirrors.dotsrc.org/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Aalborg University">Aalborg University</a></h3>
<h3><a href="https://opnsense.c0urier.net/releases/mirror/" rel="noopener noreferrer" target="_blank" title="c0urier.net">c0urier.net</a></h3>
</div>, <div class="download_section">
<h2>Ecuador</h2>
<h3><a href="https://mirror.cedia.org.ec/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="CEDIA">CEDIA</a></h3>
<h3><a href="https://mirror.ueb.edu.ec/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Universidad Estatal de Bolívar">Universidad Estatal de Bolívar</a></h3>
</div>, <div class="download_section">
<h2>France</h2>
<h3><a href="https://mirror.vraphim.com/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Vraphim">Vraphim</a></h3>
</div>, <div class="download_section">
<h2>Germany</h2>
<h3><a href="https://mirror.dns-root.de/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="dns-root.de (Cloudflare CDN)">dns-root.de (Cloudflare CDN)</a></h3>
<h3><a href="https://mirror.level66.network/opnsense-dist/releases/mirror/" rel="noopener noreferrer" target="_blank" title="level66.network">level66.network</a></h3>
<h3><a href="https://mirror.uvensys.de/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="uvensys GmbH">uvensys GmbH</a></h3>
<h3><a href="https://mirror.fra10.de.leaseweb.net/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="LeaseWeb">LeaseWeb</a></h3>
</div>, <div class="download_section">
<h2>Greece</h2>
<h3><a href="https://ftp.cc.uoc.gr/mirrors/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="University of Crete / Department of Physics">University of Crete / Department of Physics</a></h3>
</div>, <div class="download_section">
<h2>Hungary</h2>
<h3><a href="https://quantum-mirror.hu/mirrors/pub/opnsense" rel="noopener noreferrer" target="_blank" title="Quantum Mirror">Quantum Mirror</a></h3>
</div>, <div class="download_section">
<h2>India</h2>
<h3><a href="https://mirrors.hopbox.net/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Hopbox">Hopbox</a></h3>
</div>, <div class="download_section">
<h2>Iran</h2>
<h3><a href="https://mirror1.isatisidc.ir/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Isatis Data Center (isatisidc.ir)">Isatis Data Center (isatisidc.ir)</a></h3>
</div>, <div class="download_section">
<h2>Korea</h2>
<h3><a href="https://mirror.amuksa.com/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="DAXNET, ROKFOSS PROJECT">DAXNET, ROKFOSS PROJECT</a></h3>
<h3><a href="https://mirror.techlabs.co.kr/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Techlabs, ROKFOSS PROJECT">Techlabs, ROKFOSS PROJECT</a></h3>
<h3><a href="https://mirror.zzunipark.com/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Zzunimirror, ROKFOSS PROJECT">Zzunimirror, ROKFOSS PROJECT</a></h3>
<h3><a href="https://mirror.hemino.net/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="HMirror, ROKFOSS PROJECT">HMirror, ROKFOSS PROJECT</a></h3>
<h3><a href="https://mirror.keiminem.com/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Keiverse (Gumi, South Korea)">Keiverse (Gumi, South Korea)</a></h3>
</div>, <div class="download_section">
<h2>Morocco</h2>
<h3><a href="https://mirror.marwan.ma/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="MARWAN, Rabat">MARWAN, Rabat</a></h3>
</div>, <div class="download_section">
<h2>New Zealand</h2>
<h3><a href="https://mirror.catalyst.net.nz/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="catalyst.net Ltd.">catalyst.net Ltd.</a></h3>
</div>, <div class="download_section">
<h2>Portugal</h2>
<h3><a href="https://mirror.leitecastro.com/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Community (Lisbon)">Community (Lisbon)</a></h3>
</div>, <div class="download_section">
<h2>Spain</h2>
<h3><a href="https://mirror.raiolanetworks.com/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Raiola Networks (Madrid)">Raiola Networks (Madrid)</a></h3>
</div>, <div class="download_section">
<h2>Switzerland</h2>
<h3><a href="https://opnsense-mirror.hiho.ch/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Hiho.ch">Hiho.ch</a></h3>
<h3><a href="https://mirror.init7.net/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Init7">Init7</a></h3>
<h3><a href="https://mirror-opnsense.serverbase.ch/releases/mirror/" rel="noopener noreferrer" target="_blank" title="ServerBase AG">ServerBase AG</a></h3>
</div>, <div class="download_section">
<h2>Taiwan</h2>
<h3><a href="https://mirror.ntct.edu.tw/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Nantou County Education Network Center">Nantou County Education Network Center</a></h3>
</div>, <div class="download_section">
<h2>The Netherlands</h2>
<h3><a href="https://mirror.ams1.nl.leaseweb.net/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="LeaseWeb">LeaseWeb</a></h3>
<h3><a href="https://mirror.serverion.com/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Serverion">Serverion</a></h3>
<h3><a href="https://pkg.opnsense.org/releases/mirror/" rel="noopener noreferrer" target="_blank" title="OPNsense">OPNsense</a></h3>
</div>, <div class="download_section">
<h2>Turkey</h2>
<h3><a href="https://mirror.verinomi.com/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="Verinomi">Verinomi</a></h3>
</div>, <div class="download_section">
<h2>United Kingdom</h2>
<h3><a href="https://www.mirrorservice.org/sites/opnsense.org/releases/mirror/" rel="noopener noreferrer" target="_blank" title="University of Kent">University of Kent</a></h3>
</div>, <div class="download_section">
<h2>United States</h2>
<h3><a href="https://mirrors.nycbug.org/pub/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="NYC*BUG (East Coast)">NYC*BUG (East Coast)</a></h3>
<h3><a href="https://mirror.wdc1.us.leaseweb.net/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="LeaseWeb (East Coast)">LeaseWeb (East Coast)</a></h3>
<h3><a href="https://mirror.sfo12.us.leaseweb.net/opnsense/releases/mirror/" rel="noopener noreferrer" target="_blank" title="LeaseWeb (West Coast)">LeaseWeb (West Coast)</a></h3>
<h3><a href="https://mirrors.ocf.berkeley.edu/opnsense/" rel="noopener noreferrer" target="_blank" title="Open Computing Facility at UC Berkeley (Berkeley, California)">Open Computing Facility at UC Berkeley (Berkeley, California)</a></h3>
</div>]
Found the URL: https://opnsense.org
Found the URL: /
Found the URL: #
Found the URL: https://opnsense.org/get-started/
Found the URL: #
Found the URL: https://opnsense.org/blog/
Found the URL: https://shop.opnsense.com/
Found the URL: https://opnsense.org/download/
Found the URL: https://opnsense.org/opnsense/
Found the URL: https://opnsense.org/roadmap/
Found the URL: https://opnsense.org/features/
Found the URL: https://opnsense.org/partners/
Found the URL: https://opnsense.org/legal-guidelines/
Found the URL: https://opnsense.org/contact/
Found the URL: https://opnsense.org/get-started/
Found the URL: https://docs.opnsense.org/
Found the URL: https://opnsense.org/your-invited/
Found the URL: http://forum.opnsense.org/
Found the URL: https://docs.opnsense.org/
Found the URL: https://opnsense.org/donate/
Found the URL: mailto:project@opnsense.org
Found the URL: /
Found the URL: #
Found the URL: https://opnsense.org/opnsense/
Found the URL: https://opnsense.org/roadmap/
Found the URL: https://opnsense.org/features/
Found the URL: https://opnsense.org/partners/
Found the URL: https://opnsense.org/legal-guidelines/
Found the URL: https://opnsense.org/contact/
Found the URL: https://opnsense.org/get-started/
Found the URL: https://opnsense.org/get-started/
Found the URL: https://docs.opnsense.org/
Found the URL: #
Found the URL: https://opnsense.org/your-invited/
Found the URL: http://forum.opnsense.org/
Found the URL: https://docs.opnsense.org/
Found the URL: https://opnsense.org/donate/
Found the URL: https://opnsense.org/blog/
Found the URL: https://shop.opnsense.com/
Found the URL: https://opnsense.org/download/
Found the URL: https://opnsense.org/
Found the URL: https://opnsense.org/donate/
Found the URL: https://mirror.ams1.nl.leaseweb.net/opnsense/releases/25.1/OPNsense-25.1-dvd-amd64.iso.bz2
Found the URL: #full-mirror-listing
Found the URL: https://docs.opnsense.org/manual/install.html#download-and-verification
Found the URL: https://shop.opnsense.com/product/opnsense-business-edition/
Found the URL: https://www.amazon.de/Practical-OPNsense-Building-Enterprise-Firewalls/dp/3757805364/
Found the URL: https://shop.opnsense.com/product/opnsense-business-edition/
Found the URL: https://mynetworktraining.com/p/official-opnsense-introduction-course
Found the URL: https://mirror.aarnet.edu.au/pub/opnsense/releases/mirror/
Found the URL: https://mirror.cloudfence.com.br/opnsense/releases/mirror/
Found the URL: https://opnsense.aivian.org/releases/mirror/
Found the URL: https://mirrors.pku.edu.cn/opnsense/releases/mirror/
Found the URL: https://mirror.venturasystems.tech/opnsense/releases/mirror/
Found the URL: https://mirrors.dotsrc.org/opnsense/releases/mirror/
Found the URL: https://opnsense.c0urier.net/releases/mirror/
Found the URL: https://mirror.cedia.org.ec/opnsense/releases/mirror/
Found the URL: https://mirror.ueb.edu.ec/opnsense/releases/mirror/
Found the URL: https://mirror.vraphim.com/opnsense/releases/mirror/
Found the URL: https://mirror.dns-root.de/opnsense/releases/mirror/
Found the URL: https://mirror.level66.network/opnsense-dist/releases/mirror/
Found the URL: https://mirror.uvensys.de/opnsense/releases/mirror/
Found the URL: https://mirror.fra10.de.leaseweb.net/opnsense/releases/mirror/
Found the URL: https://ftp.cc.uoc.gr/mirrors/opnsense/releases/mirror/
Found the URL: https://quantum-mirror.hu/mirrors/pub/opnsense
Found the URL: https://mirrors.hopbox.net/opnsense/releases/mirror/
Found the URL: https://mirror1.isatisidc.ir/opnsense/releases/mirror/
Found the URL: https://mirror.amuksa.com/opnsense/releases/mirror/
Found the URL: https://mirror.techlabs.co.kr/opnsense/releases/mirror/
Found the URL: https://mirror.zzunipark.com/opnsense/releases/mirror/
Found the URL: https://mirror.hemino.net/opnsense/releases/mirror/
Found the URL: https://mirror.keiminem.com/opnsense/releases/mirror/
Found the URL: https://mirror.marwan.ma/opnsense/releases/mirror/
Found the URL: https://mirror.catalyst.net.nz/opnsense/releases/mirror/
Found the URL: https://mirror.leitecastro.com/opnsense/releases/mirror/
Found the URL: https://mirror.raiolanetworks.com/opnsense/releases/mirror/
Found the URL: https://opnsense-mirror.hiho.ch/releases/mirror/
Found the URL: https://mirror.init7.net/opnsense/releases/mirror/
Found the URL: https://mirror-opnsense.serverbase.ch/releases/mirror/
Found the URL: https://mirror.ntct.edu.tw/opnsense/releases/mirror/
Found the URL: https://mirror.ams1.nl.leaseweb.net/opnsense/releases/mirror/
Found the URL: https://mirror.serverion.com/opnsense/releases/mirror/
Found the URL: https://pkg.opnsense.org/releases/mirror/
Found the URL: https://mirror.verinomi.com/opnsense/releases/mirror/
Found the URL: https://www.mirrorservice.org/sites/opnsense.org/releases/mirror/
Found the URL: https://mirrors.nycbug.org/pub/opnsense/releases/mirror/
Found the URL: https://mirror.wdc1.us.leaseweb.net/opnsense/releases/mirror/
Found the URL: https://mirror.sfo12.us.leaseweb.net/opnsense/releases/mirror/
Found the URL: https://mirrors.ocf.berkeley.edu/opnsense/
Found the URL: mailto:project@opnsense.org
Found the URL: mailto:sales@opnsense.com
Found the URL: https://forum.opnsense.org/
Found the URL: https://web-cdn.bsky.app/profile/did:plc:vpna73dxrqinj6ttwh3wryxv
Found the URL: https://www.linkedin.com/groups/6958160/
Found the URL: https://www.reddit.com/r/opnsense/?rdt=38653
Found the URL: https://github.com/opnsense
Found the URL: /donate
Found the URL: https://deciso.com
Found the URL: https://opnsense.org/terms-conditions/
Found the URL: https://opnsense.org/privacy-en-cookies/

206
opnsense/main.py Normal file
View File

@ -0,0 +1,206 @@
import requests, schedule, time
from bs4 import BeautifulSoup
from whatDomain import *
OPNSNSMIRRORURL = "https://opnsense.org/download/#full-mirror-listing"
IPv4FILE = "./OPNS_MirrorListV4"
IPv6FILE = "./OPNS_MirrorListV6"
# Define EU and American countries as well as Security for security updates
target_countries = set([
# Europe
"Austria", "Belgium", "Bulgaria", "Croatia", "Czech Republic", "Denmark",
"Estonia", "Finland", "France", "Germany", "Greece", "Hungary", "Iceland",
"Ireland", "Italy", "Latvia", "Lithuania", "Netherlands", "Norway", "Poland",
"Portugal", "Romania", "Slovakia", "Slovenia", "Spain", "Sweden", "Switzerland",
"United Kingdom", "Moldova",
# America
"Argentina", "Brazil", "Canada", "Chile", "Colombia", "Costa Rica", "Ecuador",
"Mexico", "Peru", "United States", "Uruguay", "Venezuela",
# Others
"Security", "Extras"
])
def sanitizeURL(inpurl: str):
# if not "/" in inpurl[:-1]:
# inpurl += "/"
if "https://" in inpurl:
outurl = inpurl[8:]
elif "http://" in inpurl:
outurl = inpurl[7:]
elif "http://" or "https://" not in url:
outurl = inpurl
else:
return -1
# how the fuck does it work?
# I mean I wrote this but I don't know why does it work.
i = 0
for char in outurl:
i += 1
if char == "/":
outurl = outurl[:i]
if char == "/":
outurl = outurl[:-1]
return outurl
def getFreshData():
payload = requests.get(DEBMIRRORURL)
soup = BeautifulSoup(payload.content, "html.parser")
return soup
def sanitizeUrlsGodWhatTheFuckIsThis(SoupInput: BeautifulSoup):
outMirrorDict = {}
current_country = None
# Iterate through all table rows
for table in SoupInput.find_all("table"):
for row in table.find_all("tr"):
# Check for country name in a full-row header (<strong><big>)
strong = row.find("strong")
if strong:
country_name = strong.get_text(strip=True)
if country_name in target_countries:
current_country = country_name
else:
current_country = None
continue # move to next row
# Check for inline country name in first column
cols = row.find_all("td")
if len(cols) >= 2:
possible_country = cols[0].get_text(strip=True)
link_tag = cols[1].find("a", href=True)
if possible_country in target_countries:
current_country = possible_country
if current_country and link_tag:
url = link_tag['href']
if current_country not in outMirrorDict:
outMirrorDict[current_country] = []
outMirrorDict[current_country].append(url)
outMirrorDict.update({"Security": DEBSECURITYURL})
outMirrorDict.update({"Extras": EXTRASURL})
return outMirrorDict
def LeJob():
print("Starting lookup")
LeSoup = getFreshData()
LeMirrorDict = sanitizeUrlsGodWhatTheFuckIsThis(LeSoup)
# print(LeMirrorDict)
with open(IPv4FILE, "r",) as fR, open(IPv4FILE, "w",) as fW:
for key, urls in LeMirrorDict.items():
# print(urls)
if key in target_countries:
for url in urls:
# print(url)
if url not in fR:
goodurl = sanitizeURL(url)
# print(goodurl)
ip4Dict = ermWhatATheIpFromDomainYaCrazy(goodurl)
if ip4Dict == -1:
continue
for key, ip in ip4Dict.items():
print(ip)
fW.write(ip + "/32" + "\n")
with open(IPv6FILE, "r",) as fR, open(IPv6FILE, "w",) as fW:
for key, urls in LeMirrorDict.items():
if key in target_countries:
for url in urls:
if url not in fR:
goodurl = sanitizeURL(url)
# print(goodurl)
ip6Dict = ermWhatAAAATheIpFromDomainYaCrazy(goodurl)
if ip6Dict == -1:
continue
for key, ip in ip6Dict.items():
# print(ip)
fW.write(ip + "/128" + "\n")
# schedule.every().day.at("12:45").do(LeJob)
# schedule.every().day.at("17:44").do(LeJob)
# while True:
# schedule.run_pending()
# print("Waiting...")
# time.sleep(30) #Wait one minute
# # LeJob()
gigalist = []
payload = requests.get(OPNSNSMIRRORURL)
soup = BeautifulSoup(payload.content, "html.parser")
# print(soup)
# divs = soup.find_all("div", {"class": "download_section"})
for data in soup.find_all('div', class_='download_section'):
for a in data.find_all('a', href=True):
url = a['href']
saniturl = sanitizeURL(url)
print(saniturl)
IPv4Dict = ermWhatATheIpFromDomainYaCrazy(saniturl)
IPv6Dict = ermWhatAAAATheIpFromDomainYaCrazy(saniturl)
if IPv4Dict == -1:
print(f"ERROR RESOLVING {saniturl} IPv4 address")
continue
elif IPv6Dict == -1:
print(f"ERROR RESOLVING {saniturl} IPv6 address")
continue
for key, ip in IPv4Dict.items():
print(f"Found the ipv4: {ip}")
for key, ip in IPv6Dict.items():
print(f"Found the ipv6: {ip}")
# print(a.get('href')) #for getting link
# print(a.text) #for getting text between the link
# for a in soup.find_all("div", {"class": "download_section"}, "a", href=True):
# h2zz = divs = soup.find_all("h3")
# print(f" one link is: {h2zz}")

View File

@ -0,0 +1,4 @@
beautifulsoup4==4.13.4
requests==2.32.3
schedule==1.2.2
nslookup==1.8.1

93
opnsense/whatDomain.py Normal file
View File

@ -0,0 +1,93 @@
#from nslookup import Nslookup
from typing import Optional, Annotated
import dns, dns.resolver
# https://www.codeunderscored.com/nslookup-python/
def ermWhatATheIpFromDomainYaCrazy(inpDomainNameOrSomething: Annotated[str, "Domain name to lookup IP for"]):
#dns_query = Nslookup()
"""
Tells you what IPv4 address/es a domain point to.
Returns:
dict: A dictionary with IP addresses associated with that domain.
"""
# i = 0
outDict = {}
#result = dns_query.dns_lookup("example.com")
#result = Nslookup.dns_lookup(inpDomainNameOrSomething)
try:
result = dns.resolver.resolve(inpDomainNameOrSomething, 'A')
except dns.resolver.NoAnswer:
return -1
except dns.resolver.NoNameservers or dns.resolver.LifetimeTimeout:
return -1
for i, something in enumerate(result):
outDict[i] = something.to_text()
# i += 1
return outDict
def ermWhatAAAATheIpFromDomainYaCrazy(inpDomainNameOrSomething: Annotated[str, "Domain name to lookup IP for"]):
#dns_query = Nslookup()
"""
Tells you what IPv6 address/es a domain point to.
Returns:
dict: A dictionary with IP addresses associated with that domain.
"""
# i = 0
outDict = {}
#result = dns_query.dns_lookup("example.com")
#result = Nslookup.dns_lookup(inpDomainNameOrSomething)
try:
result = dns.resolver.resolve(inpDomainNameOrSomething, 'AAAA')
except dns.resolver.NoAnswer:
return -1
except dns.resolver.NoNameservers or dns.resolver.LifetimeTimeout:
return -1
for i, something in enumerate(result):
outDict[i] = something.to_text()
# i += 1
return outDict
def ermWhatPTRTheIpFromDomainYaCrazy(inpIpAddressOrSomething: Annotated[str, "IP address to lookup domain for"]):
#dns_query = Nslookup()
"""
Tells you what IPv6 address/es a domain point to.
Returns:
dict: A dictionary with IP addresses associated with that domain.
"""
whatToCheck = inpIpAddressOrSomething + ".in-addr.arpa"
# i = 0
outDict = {}
#result = dns_query.dns_lookup("example.com")
#result = Nslookup.dns_lookup(inpDomainNameOrSomething)
try:
result = dns.resolver.resolve(whatToCheck, 'PTR')
except dns.resolver.NoAnswer:
return -1
except dns.resolver.NoNameservers:
return -1
for i, something in enumerate(result):
outDict[i] = something.to_text()
# i += 1
return outDict
#print(ermWhatATheIpFromDomainYaCrazy("fubukus.net"))
#print(ermWhatAAAATheIpFromDomainYaCrazy("fubukus.net"))
#print(ermWhatPTRTheIpFromDomainYaCrazy("192.168.1.226"))