F-Droid’e güvenilmesi için şeffaf olmamız gerekir. İnsanların kullandığımız tüm süreçlere ve sistemlere dikkat etmesini kolaylaştırmak, güvende kalmamıza yardımcı olur. Bunlar, yayınlama süreci hakkında önemli bilgiler içeren API’lerdir.
Aktif paketler
Ana depodaki uygulamalar hakkında bilgi sorgulamak için kullanılabilecek
https://f-droid.org/api/v1/packages
adresinden erişilebilen bir uygulama
başına API vardır. JSON API şu anda yayınlanan ve önerilen sürümleri
listelemektedir. Arşivlenmiş uygulamalar ve paketler bu API’de mevcut
değildir.
Örnek istek:
GET https://f-droid.org/api/v1/packages/org.fdroid.fdroid HTTP/1.1
Örnek yanıt:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"packageName": "org.fdroid.fdroid",
"suggestedVersionCode": 1009000,
"packages": [
{
"versionName": "1.10-alpha0",
"versionCode": 1010000
},
{
"versionName": "1.9",
"versionCode": 1009000
}
]
}
Bu API, shields.io projesi tarafından bunun gibi F-Droid rozetleri sağlamak için zaten kullanılmaktadır.
Depo dizini
F-Droid, mevcut tüm uygulamaların ve paketlerin imzalı bir dizini etrafında
oluşturulmuştur. Bu bir JSON dosyasıdır, ancak tüm bilgiler tek bir dosya
aracılığıyla dağıtıldığı için bir API’den çok bir dizindir. Depo dizini,
index-v1.json içeren imzalı bir JAR dosyası biçimindedir. En iyi yöntem
JAR imzasını doğrulamak, ardından doğrulanırsa index-v1.json dosyasını
ayıklamaktır. _ fdroidserver_ Python kütüphanesi bunu kolaylaştırmak için
fdroidserver.download_repo_index()
sağlar. Herhangi bir ZIP kütüphanesi
kullanarak index-v1.json dosyasını okumak da mümkündür.
- https://f-droid.org/repo/index-v2.json
- https://f-droid.org/repo/index-v1.json
- https://f-droid.org/archive/index-v2.json
- https://f-droid.org/archive/index-v1.json
As of index-v2, there is support for files that only contain the changes, known as “diff” files. There is also a separate entry point, which is signed by a JAR and a GPG signature and lists the available index and diff files.
- https://f-droid.org/repo/entry.jar
- https://f-droid.org/repo/entry.json
- https://f-droid.org/repo/entry.json.asc
The v1 repo index formats come in the form of a signed JAR file that
contains index-v1.json. The best method is to verify the JAR signature,
then extract index-v1.json if it validates. The fdroidserver Python
library provides fdroidserver.download_repo_index()
to make this easy to
do.
JSON dosyalarını doğrulamak için GPG imzaları da vardır:
- https://f-droid.org/repo/index-v2.json.asc
- https://f-droid.org/repo/index-v1.json.asc
- https://f-droid.org/archive/index-v2.json.asc
- https://f-droid.org/archive/index-v1.json.asc
Uygulama Arama API’si
We’ve got a basic web-api for performing a full-text searches on the f-droid.org repository.
Uygulama yapı üst verileri
f-droid.org adresindeki her uygulamanın bir karşılığı vardır
meta veri dosyası oluştur içinde
fdroiddata. Teşvik etmek için
daha yaratıcı yeniden kullanım için verilerimizi standart formatlarda, kolay bulunabilen
yerler. Tüm uygulama koleksiyonu YAML formatında. Dosyaya doğrudan erişilebilir
GitLab Raw URL’sini kullanarak Uygulama Kimliğine göre
https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/<ApplicationID>.yml
(örneğin https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/org.fdroid.fdroid.yml).
Depo dizini ve GitLab Depo Dosyaları
API sorgulama yapmak için kullanılabilir
Uygulama Kimliklerinin mevcut olduğu. Bu dosyalara ayrıca şu adresten de erişilebilir
GitHub’da ayna,
örneğin https://raw.githubusercontent.com/f-droid/fdroiddata/master/metadata/org.fdroid.fdroid.yml
f-droid.org yapı sunucusu durumu
Oluşturma döngüsünün dört ana adımı şunlardır: checkupdates, build, update, ve deploy. Bunların her biri için durum bilgisi içeren bir JSON dosyası vardır. Bu adım çalışmayı tamamladığında yayınlanır. Şu anda çalışmakta olan adım running adresine gönderilir.
- https://f-droid.org/repo/status/running.json
- https://f-droid.org/repo/status/build.json
- https://f-droid.org/repo/status/update.json
- https://f-droid.org/repo/status/deploy.json
Bu JSON API’lerinin nasıl kullanılabileceğine ilişkin iki örnek, F-Droid İzleyicisi web sitesi ve F-Droid Yapı Durumu uygulamasıdır.
Yansıma ve depo izleme
mirror-monitor ve repo-monitor sırasıyla f-droid.org yansıları ve üçüncü taraf depoları hakkında çeşitli istatistikleri kontrol eden otomatik işlerdir. Her biri, kontrollerin yapıldığı tüm zamanların tek ve büyük bir JSON günlüğünü sağlar:
- f-droid.org yansıma durumu: https://fdroid.gitlab.io/mirror-monitor/report.json
- üçüncü taraf depo durumu: https://fdroid.gitlab.io/repo-monitor/report.json
Tekrarlanabilir yapılar
verification.f-droid.org is a rebuilder that rebuilds the official releases from f-droid.org, then checks to see if they were reproducibly built. There is an entry point for each package based on the package name: https://verification.f-droid.org/org.fdroid.fdroid.json
Then there is a JSON file per APK that has been checked, where the filename
follows the pattern <ApplicationId>_<VersionCode>.apk.json
, for example:
https://verification.f-droid.org/org.fdroid.fdroid_1010050.apk.json
Ayrıca başarıyla doğrulanmış tüm APK’ların bir listesi de bulunmaktadır: https://verification.f-droid.org/verified.json
İkili şeffaflık günlükleri
Binary transparency is the idea that all released packages should be logged as they are published. This provides a way to check if a given binary was produced by the publisher, or came from somewhere else, e.g. as an exploit. fdroidserver has built in tools for managing a binary transparency log of the index files as part of the release process. This has been enabled on f-droid.org: https://gitlab.com/fdroid/f-droid.org-transparency-log
Gradle ve Google Android Araçları ekibi bir tane bile yayınlamadığından, F-Droid bunu yaptı. Temel API, yayınlandığı bilinen tüm URL’lerin listesini içeren bir JSON dosyasıdır. Her URL daha sonra günlük işleminin gördüğü SHA-256 sağlama toplamlarının bir listesini içerir. Yayıncının sağladıklarına bağlı olarak izlenen başka dosyalar da vardır.
- https://gitlab.com/fdroid/gradle-transparency-log/-/raw/master/checksums.json
- https://gitlab.com/fdroid/android-sdk-transparency-log/-/raw/master/checksums.json
issuebot
issuebot uygulama birleştirme talepleri ve paketleme talepleri (RFP) üzerinde çalışarak inceleme yapanlara uygulama hakkında bilgi verir. Bu bilgilerin çoğu JSON formatında da yayınlanmaktadır. Her bir rapor, belli bir uygulama üzerinde çalışan modüllerden elde edilen verilerden oluşur. İki tane giriş noktası vardır:
- https://fdroid.gitlab.io/rfp/issuebot/applicationIds.json
- https://fdroid.gitlab.io/rfp/issuebot/sourceUrls.json
Ölçümler
Kullanım verileriçeşitli F-Droid web sitelerinden toplanır ve kişisel olarak tanımlanabilir bilgiler (PII) olmadan yayınlanır. Web sitesi başına bir JSON dizin dosyası ile her hafta bir JSON dosyası ile yayınlanır. Örneğin, burada bir haftalık arama ölçümleri yer almaktadır: https://fdroid.gitlab.io/metrics/search.f-droid.org/2021-01-18.json
Tam anlamıyla bir API olmasa da,
Git istatistikleri
Her git deposunun birçok ilginç üst verisi vardır. GitStats_ projesi bu verilerden güzel grafikler oluşturur. Bu tam olarak bir API değildir, ancak genel proje verilerini kullandığı için ilgilidir. Merkezi git depolarının her biri için önceden oluşturulmuş sayfalar burada görülebilir: https://fdroid.gitlab.io/.