Firmware download seite links ondemand generieren
https://ffnw.de/firmware/download/
Die links zu den images sollten nur dann generriert werden wenn die zugehörigen datei auch existieren.
Zudem sollte es noch eine kategorie geben für unzuordbare files
als beispiel wie man das ungefair lösen könnte
Dependencies = ['time'] #do not cache
def macro_stablefirmwaredl(macro,routerid,sysupgrade,filenameExtension=".bin",checksum="",rev="1.x"):
import requests
import re
import os.path
import time
import datetime
fwv = ""
cacheLiveTime = 86400 # 24 h in sec
storeFile = "/tmp/.macro_stablefirmwaredl_index_cache"
# manage firmware mirror file
if os.path.isfile(storeFile):
cacheFile = open(storeFile, "rb")
res = cacheFile.readlines()
storeFileTimestamp = time.mktime(datetime.datetime.strptime(time.strftime('%d/%m/%Y/%H/%M/%S', time.gmtime(os.path.getmtime(storeFile))), "%d/%m/%Y/%H/%M/%S").timetuple()) +3600
if (time.time() - storeFileTimestamp) >= cacheLiveTime:
os.remove(storeFile)
else:
res = requests.get('http://firmware.nordwest.freifunk.net/stable/')
cacheFile = open(storeFile, 'w+')
for line0 in res:
cacheFile.write(line0)
cacheFile.close()
# get version number out of the index file from the remote firmware dir
md5 = ""
sha1 = ""
sha2 = ""
for line in res:
if fwv == "" :
if re.search(routerid,line):
sLine = line.split("-")
if sLine[1] == "ffnw":
fwv = sLine[2]
elif checksum != "true":
break
if checksum == "true":
if md5 != "true" or sha1 != "true" or sha2 != "true":
if re.search(routerid,line) and re.search("md5",line):
md5 = "true"
if re.search(routerid,line) and re.search("sha1",line):
sha1 = "true"
if re.search(routerid,line) and re.search("sha2",line):
sha2 = "true"
elif fwv != "" :
break
if sysupgrade == "sysupgrade":
sysupgrade="-sysupgrade"
else:
sysupgrade=""
if filenameExtension[:1] != ".":
filenameExtension="."+filenameExtension
if checksum == "true":
ret = ""
if md5 == "true":
ret +="<a class='http' href='http://firmware.nordwest.freifunk.net/stable/gluon-ffnw-"+fwv+"-"+routerid+sysupgrade+filenameExtension+".md5'>md5</a>"
if sha1 == "true":
ret +="<a class='http' href='http://firmware.nordwest.freifunk.net/stable/gluon-ffnw-"+fwv+"-"+routerid+sysupgrade+filenameExtension+".sha1'>sha1</a>"
if sha2 == "true":
ret +="<a class='http' href='http://firmware.nordwest.freifunk.net/stable/gluon-ffnw-"+fwv+"-"+routerid+sysupgrade+filenameExtension+".sha2'>sha2</a>"
else:
ret = "<a class='http' href='http://firmware.nordwest.freifunk.net/stable/gluon-ffnw-"+fwv+"-"+routerid+sysupgrade+filenameExtension+"'>"+rev+"</a>"
return macro.formatter.rawHTML(ret)