Make the list of default repos dynamic
This patch iterates over the configured list of repos and adds them to the db on create. This means that the initial list of repositories is now fully configurable. Added the guardian project repo (disabled) as a testcase.
This commit is contained in:
parent
d55fc7cd69
commit
61bbbf442d
@ -1,10 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="default_repo_name" formatted="false">F-Droid</string>
|
||||
<integer name="default_repo_count">3</integer>
|
||||
<string name="default_repo_name1" formatted="false">F-Droid</string>
|
||||
<string name="default_repo_name2" formatted="false">F-Droid Archive</string>
|
||||
<string name="default_repo_address" formatted="false">https://f-droid.org/repo</string>
|
||||
<string name="default_repo_name3" formatted="false">GuardianProject</string>
|
||||
<integer name="default_repo_inuse1">1</integer>
|
||||
<integer name="default_repo_inuse2">0</integer>
|
||||
<integer name="default_repo_inuse3">0</integer>
|
||||
<string name="default_repo_address1" formatted="false">https://f-droid.org/repo</string>
|
||||
<string name="default_repo_address2" formatted="false">https://f-droid.org/archive</string>
|
||||
<string name="default_repo_description" formatted="false">The official FDroid repository. Applications in this repository are mostly built directory from the source code. Some are official binaries built by the original application developers - these will be replaced by source-built versions over time.</string>
|
||||
<string name="default_repo_address3" formatted="false">https://guardianproject.info/repo/</string>
|
||||
<string name="default_repo_description1" formatted="false">The official FDroid repository. Applications in this repository are mostly built directory from the source code. Some are official binaries built by the original application developers - these will be replaced by source-built versions over time.</string>
|
||||
<string name="default_repo_description2" formatted="false">The archive repository of the F-Droid client. This contains older versions of applications from the main repository.</string>
|
||||
<string name="default_repo_pubkey" formatted="false">3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef</string>
|
||||
<string name="default_repo_description3" formatted="false">A curated repository of apps developed by the Guardian Project and others focused on mobile security, privacy and safety.</string>
|
||||
<string name="default_repo_pubkey1" formatted="false">3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef</string>
|
||||
<string name="default_repo_pubkey2" formatted="false">3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef</string>
|
||||
<string name="default_repo_pubkey3" formatted="false">308203c5308202ada00302010202047b7cf549300d06092a864886f70d01010b0500308192310b30090603550406130255533111300f060355040813084e657720596f726b3111300f060355040713084e657720596f726b311d301b060355040a131454686520477561726469616e2050726f6a656374311f301d060355040b1316477561726469616e20462d44726f6964204275696c64311d301b06035504031314677561726469616e70726f6a6563742e696e666f301e170d3132313032393130323530305a170d3430303331363130323530305a308192310b30090603550406130255533111300f060355040813084e657720596f726b3111300f060355040713084e657720596f726b311d301b060355040a131454686520477561726469616e2050726f6a656374311f301d060355040b1316477561726469616e20462d44726f6964204275696c64311d301b06035504031314677561726469616e70726f6a6563742e696e666f30820122300d06092a864886f70d01010105000382010f003082010a0282010100b7f1f635fa3fce1a8042aaa960c2dc557e4ad2c082e5787488cba587fd26207cf59507919fc4dcebda5c8c0959d14146d0445593aa6c29dc639570b71712451fd5c231b0c9f5f0bec380503a1c2a3bc00048bc5db682915afa54d1ecf67b45e1e05c0934b3037a33d3a565899131f27a72c03a5de93df17a2376cc3107f03ee9d124c474dfab30d4053e8f39f292e2dcb6cc131bce12a0c5fc307985195d256bf1d7a2703d67c14bf18ed6b772bb847370b20335810e337c064fef7e2795a524c664a853cd46accb8494f865164dabfb698fa8318236432758bc40d52db00d5ce07fe2210dc06cd95298b4f09e6c9b7b7af61c1d62ea43ea36a2331e7b2d4e250203010001a321301f301d0603551d0e0416041404d763e981cf3a295b94a790d8536a783097232b300d06092a864886f70d01010b05000382010100654e6484ff032c54fed1d96d3c8e731302be9dbd7bb4fe635f2dac05b69f3ecbb5acb7c9fe405e2a066567a8f5c2beb8b199b5a4d5bb1b435cf02df026d4fb4edd9d8849078f085b00950083052d57467d65c6eebd98f037cff9b148d621cf8819c4f7dc1459bf8fc5c7d76f901495a7caf35d1e5c106e1d50610c4920c3c1b50adcfbd4ad83ce7353cdea7d856bba0419c224f89a2f3ebc203d20eb6247711ad2b55fd4737936dc42ced7a047cbbd24012079204a2883b6d55d5d5b66d9fd82fb51fca9a5db5fad9af8564cb380ff30ae8263dbbf01b46e01313f53279673daa3f893380285646b244359203e7eecde94ae141b7dfa8e6499bb8e7e0b25ab85</string>
|
||||
</resources>
|
||||
|
@ -2,6 +2,7 @@ package org.fdroid.fdroid.data;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
@ -175,40 +176,49 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||
createAppApk(db);
|
||||
|
||||
db.execSQL(CREATE_TABLE_REPO);
|
||||
ContentValues values = new ContentValues();
|
||||
values.put("address",
|
||||
context.getString(R.string.default_repo_address));
|
||||
values.put("name",
|
||||
context.getString(R.string.default_repo_name));
|
||||
values.put("description",
|
||||
context.getString(R.string.default_repo_description));
|
||||
values.put("version", 0);
|
||||
String pubkey = context.getString(R.string.default_repo_pubkey);
|
||||
String fingerprint = Utils.calcFingerprint(pubkey);
|
||||
values.put("pubkey", pubkey);
|
||||
values.put("fingerprint", fingerprint);
|
||||
values.put("maxage", 0);
|
||||
values.put("inuse", 1);
|
||||
values.put("priority", 10);
|
||||
values.put("lastetag", (String) null);
|
||||
db.insert(TABLE_REPO, null, values);
|
||||
|
||||
values = new ContentValues();
|
||||
values.put("address",
|
||||
context.getString(R.string.default_repo_address2));
|
||||
values.put("name",
|
||||
context.getString(R.string.default_repo_name2));
|
||||
values.put("description",
|
||||
context.getString(R.string.default_repo_description2));
|
||||
values.put("version", 0);
|
||||
// default #2 is /archive which has the same key as /repo
|
||||
values.put("pubkey", pubkey);
|
||||
values.put("fingerprint", fingerprint);
|
||||
values.put("maxage", 0);
|
||||
values.put("inuse", 0);
|
||||
values.put("priority", 20);
|
||||
values.put("lastetag", (String) null);
|
||||
db.insert(TABLE_REPO, null, values);
|
||||
Resources ress = context.getResources();
|
||||
|
||||
int repoCount = ress.getInteger(R.integer.default_repo_count);
|
||||
for (int i = 1; i <= repoCount; i++) {
|
||||
ContentValues values = new ContentValues();
|
||||
String repoName = context.getString(ress.getIdentifier(
|
||||
"default_repo_name" + i,
|
||||
"string",
|
||||
"org.fdroid.fdroid"
|
||||
));
|
||||
values.put("address",
|
||||
context.getString(ress.getIdentifier(
|
||||
"default_repo_address" + i,
|
||||
"string",
|
||||
"org.fdroid.fdroid"
|
||||
)));
|
||||
values.put("name",repoName);
|
||||
values.put("description",
|
||||
context.getString(ress.getIdentifier(
|
||||
"default_repo_description" + i,
|
||||
"string",
|
||||
"org.fdroid.fdroid"
|
||||
)));
|
||||
String pubkey = context.getString(ress.getIdentifier(
|
||||
"default_repo_pubkey" + i,
|
||||
"string",
|
||||
"org.fdroid.fdroid"
|
||||
));
|
||||
String fingerprint = Utils.calcFingerprint(pubkey);
|
||||
values.put("pubkey", pubkey);
|
||||
values.put("fingerprint", fingerprint);
|
||||
values.put("maxage", 0);
|
||||
values.put("inuse", ress.getInteger(ress.getIdentifier(
|
||||
"default_repo_inuse" + i,
|
||||
"integer",
|
||||
"org.fdroid.fdroid"
|
||||
)));
|
||||
values.put("priority", 10);
|
||||
values.put("lastetag", (String) null);
|
||||
Log.i("FDroid", "Add repository " + repoName);
|
||||
db.insert(TABLE_REPO, null, values);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -280,8 +290,8 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||
if (!descriptionExists)
|
||||
db.execSQL("alter table " + TABLE_REPO + " add column description text");
|
||||
ContentValues values = new ContentValues();
|
||||
values.put("name", context.getString(R.string.default_repo_name));
|
||||
values.put("description", context.getString(R.string.default_repo_description));
|
||||
values.put("name", context.getString(R.string.default_repo_name1));
|
||||
values.put("description", context.getString(R.string.default_repo_description1));
|
||||
db.update(TABLE_REPO, values, "address = ?", new String[]{
|
||||
context.getString(R.string.default_repo_address)});
|
||||
values.clear();
|
||||
|
Loading…
x
Reference in New Issue
Block a user