👆 add repo fingerprint to index v2

This commit is contained in:
Michael Pöhn 2024-04-17 18:04:32 +02:00
parent 6a84fe1ae8
commit adf5822e53
No known key found for this signature in database
GPG Key ID: 725F386C05529A5A
3 changed files with 13 additions and 11 deletions

View File

@ -117,14 +117,16 @@ def make(apps, apks, repodir, archive):
requestsdict[command] = packageNames
fdroid_signing_key_fingerprints = load_stats_fdroid_signing_key_fingerprints()
_ignored, repo_pubkey_fingerprint = extract_pubkey()
repo_pubkey_fingerprint = repo_pubkey_fingerprint.replace(" ", "")
make_v0(sortedapps, apks, repodir, repodict, requestsdict,
fdroid_signing_key_fingerprints)
make_v1(sortedapps, apks, repodir, repodict, requestsdict,
fdroid_signing_key_fingerprints)
make_v2(sortedapps, apks, repodir, repodict, requestsdict,
fdroid_signing_key_fingerprints, archive)
make_website(sortedapps, repodir, repodict)
fdroid_signing_key_fingerprints, repo_pubkey_fingerprint, archive)
make_website(sortedapps, repodir, repodict, repo_pubkey_fingerprint)
def _should_file_be_generated(path, magic_string):
@ -136,12 +138,10 @@ def _should_file_be_generated(path, magic_string):
return True
def make_website(apps, repodir, repodict):
_ignored, repo_pubkey_fingerprint = extract_pubkey()
repo_pubkey_fingerprint_stripped = repo_pubkey_fingerprint.replace(" ", "")
def make_website(apps, repodir, repodict, repo_pubkey_fingerprint):
link = repodict["address"]
link_fingerprinted = ('{link}?fingerprint={fingerprint}'
.format(link=link, fingerprint=repo_pubkey_fingerprint_stripped))
.format(link=link, fingerprint=repo_pubkey_fingerprint))
# do not change this string, as it will break updates for files with older versions of this string
autogenerate_comment = "auto-generated - fdroid index updates will overwrite this file"
@ -656,7 +656,7 @@ def convert_version(version, app, repodir):
return ver
def v2_repo(repodict, repodir, archive):
def v2_repo(repodict, repodir, archive, repo_pubkey_fingerprint):
repo = {}
repo["name"] = {DEFAULT_LOCALE: repodict["name"]}
@ -676,6 +676,7 @@ def v2_repo(repodict, repodir, archive):
repo["mirrors"] = repodict["mirrors"]
if "webBaseUrl" in repodict:
repo["webBaseUrl"] = repodict["webBaseUrl"]
repo["fingerprint"] = repo_pubkey_fingerprint
repo["timestamp"] = repodict["timestamp"]
@ -694,7 +695,7 @@ def v2_repo(repodict, repodir, archive):
return repo
def make_v2(apps, packages, repodir, repodict, requestsdict, fdroid_signing_key_fingerprints, archive):
def make_v2(apps, packages, repodir, repodict, requestsdict, fdroid_signing_key_fingerprints, repo_pubkey_fingerprint, archive):
def _index_encoder_default(obj):
if isinstance(obj, set):
@ -711,7 +712,7 @@ def make_v2(apps, packages, repodir, repodict, requestsdict, fdroid_signing_key_
raise TypeError(repr(obj) + " is not JSON serializable")
output = collections.OrderedDict()
output["repo"] = v2_repo(repodict, repodir, archive)
output["repo"] = v2_repo(repodict, repodir, archive, repo_pubkey_fingerprint)
if requestsdict and (requestsdict["install"] or requestsdict["uninstall"]):
output["repo"]["requests"] = requestsdict

View File

@ -642,7 +642,7 @@ class IndexTest(unittest.TestCase):
common.config['repo_pubkey'] = 'ffffffffffffffffffffffffffffffffff'
index.make_website([], "repo", repodict)
index.make_website([], "repo", repodict, "fake_repo_pubkey_fingerprint")
self.assertTrue(os.path.exists(os.path.join('repo', 'index.html')))
self.assertTrue(os.path.exists(os.path.join('repo', 'index.css')))
self.assertTrue(os.path.exists(os.path.join('repo', 'index.png')))

View File

@ -26,6 +26,7 @@
"url": "https://foo.bar/fdroid/repo"
}
],
"fingerprint": "F49AF3F11EFDDF20DFFD70F5E3117B9976674167ADCA280E6B1932A0601B26F6",
"timestamp": 1676634233000,
"antiFeatures": {
"Ads": {
@ -1460,4 +1461,4 @@
}
}
}
}
}