added parsing for repository signing key property to provisioning files
This commit is contained in:
		
							parent
							
								
									4a5ad0a33d
								
							
						
					
					
						commit
						96def8adca
					
				@ -1,5 +1,8 @@
 | 
			
		||||
package org.fdroid.fdroid;
 | 
			
		||||
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.net.Uri;
 | 
			
		||||
import android.os.Environment;
 | 
			
		||||
import android.util.Base64;
 | 
			
		||||
 | 
			
		||||
@ -35,7 +38,7 @@ public class Provisioner {
 | 
			
		||||
    /**
 | 
			
		||||
     * search for provision files and process them
 | 
			
		||||
     */
 | 
			
		||||
    public void scanAndProcess() {
 | 
			
		||||
    public void scanAndProcess(Context context) {
 | 
			
		||||
 | 
			
		||||
        List<File> files = findProvisionFiles();
 | 
			
		||||
        List<ProvisionPlaintext> plaintexts = extractProvisionsPlaintext(files);
 | 
			
		||||
@ -52,6 +55,10 @@ public class Provisioner {
 | 
			
		||||
                        + " " + repo.getName()
 | 
			
		||||
                        + " " + repo.getUrl()
 | 
			
		||||
                        + " " + repo.getUsername());
 | 
			
		||||
 | 
			
		||||
                Intent i  = new Intent(Intent.ACTION_VIEW);
 | 
			
		||||
                i.setData(Uri.parse(repo.getUrl()));
 | 
			
		||||
                context.startActivity(i);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@ -81,9 +88,9 @@ public class Provisioner {
 | 
			
		||||
        for (int i = 0; i < text.length(); i++) {
 | 
			
		||||
            char c = text.charAt(i);
 | 
			
		||||
            if ((c >= 'a' && c <= 'm') || (c >= 'A' && c <= 'M')) {
 | 
			
		||||
                sb.append(c + 13);
 | 
			
		||||
                sb.append((char)(c + 13));
 | 
			
		||||
            } else if ((c >= 'n' && c <= 'z') || (c >= 'N' && c <= 'Z')) {
 | 
			
		||||
                sb.append(c - 13);
 | 
			
		||||
                sb.append((char)(c - 13));
 | 
			
		||||
            } else {
 | 
			
		||||
                sb.append(c);
 | 
			
		||||
            }
 | 
			
		||||
@ -204,6 +211,7 @@ public class Provisioner {
 | 
			
		||||
 | 
			
		||||
        private String name;
 | 
			
		||||
        private String url;
 | 
			
		||||
        private String sigfp;
 | 
			
		||||
        private String username;
 | 
			
		||||
        private String password;
 | 
			
		||||
 | 
			
		||||
@ -223,6 +231,14 @@ public class Provisioner {
 | 
			
		||||
            this.url = url;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public String getSigfp() {
 | 
			
		||||
            return sigfp;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void setSigfp(String sigfp) {
 | 
			
		||||
            this.sigfp = sigfp;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public String getUsername() {
 | 
			
		||||
            return username;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,8 @@
 | 
			
		||||
package org.fdroid.fdroid;
 | 
			
		||||
 | 
			
		||||
import org.fdroid.fdroid.shadows.ShadowLog;
 | 
			
		||||
import org.junit.Assert;
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
import org.robolectric.RobolectricTestRunner;
 | 
			
		||||
@ -19,6 +21,11 @@ import java.util.List;
 | 
			
		||||
@SuppressWarnings("LineLength")
 | 
			
		||||
public class ProvisionerTest {
 | 
			
		||||
 | 
			
		||||
    @Before
 | 
			
		||||
    public void setUp() {
 | 
			
		||||
        ShadowLog.stream = System.out;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void provisionLookup() throws IOException {
 | 
			
		||||
        // wired hack for getting resource dir path ...
 | 
			
		||||
@ -59,7 +66,7 @@ public class ProvisionerTest {
 | 
			
		||||
        List<Provisioner.ProvisionPlaintext> result = p.extractProvisionsPlaintext(files);
 | 
			
		||||
 | 
			
		||||
        Assert.assertEquals(result.size(), 1);
 | 
			
		||||
        Assert.assertEquals("{\"username\": \"user2\", \"name\": \"test repo a\", \"password\": \"other secret\", \"url\": \"https://example.com/repo\"}", result.get(0).getRepositoryProvision());
 | 
			
		||||
        Assert.assertEquals("{\"username\": \"user2\", \"password\": \"other secret\", \"name\": \"Example Repo\", \"url\": \"https://example.com/fdroid/repo\", \"sigfp\": \"1111222233334444555566667777888899990000aaaabbbbccccddddeeeeffff\"}", result.get(0).getRepositoryProvision());
 | 
			
		||||
        Assert.assertTrue(String.valueOf(result.get(0).getProvisionPath()).endsWith("demo_credentials_user2.fdrp"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -70,7 +77,7 @@ public class ProvisionerTest {
 | 
			
		||||
        List<Provisioner.ProvisionPlaintext> result = p.extractProvisionsPlaintext(files);
 | 
			
		||||
 | 
			
		||||
        Assert.assertEquals(result.size(), 1);
 | 
			
		||||
        Assert.assertEquals("{\"username\": \"user1\", \"password\": \"secret1\", \"name\": \"test repo a\", \"url\": \"https://example.com/repo\"}", result.get(0).getRepositoryProvision());
 | 
			
		||||
        Assert.assertEquals("{\"sigfp\": \"1111222233334444555566667777888899990000aaaabbbbccccddddeeeeffff\", \"name\": \"Example Repo\", \"password\": \"secret1\", \"url\": \"https://example.com/fdroid/repo\", \"username\": \"user1\"}", result.get(0).getRepositoryProvision());
 | 
			
		||||
        Assert.assertTrue(String.valueOf(result.get(0).getProvisionPath()).endsWith("demo_credentials_user1.fdrp"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -79,22 +86,24 @@ public class ProvisionerTest {
 | 
			
		||||
 | 
			
		||||
        List<Provisioner.ProvisionPlaintext> plaintexts = Arrays.asList(new Provisioner.ProvisionPlaintext(), new Provisioner.ProvisionPlaintext());
 | 
			
		||||
        plaintexts.get(0).setProvisionPath("/some/dir/abc.fdrp");
 | 
			
		||||
        plaintexts.get(0).setRepositoryProvision("{\"username\": \"user1\", \"password\": \"secret1\", \"name\": \"test repo a\", \"url\": \"https://example.com/repo\"}");
 | 
			
		||||
        plaintexts.get(0).setRepositoryProvision("{\"username\": \"user1\", \"password\": \"secret1\", \"name\": \"test repo a\", \"url\": \"https://example.com/fdroid/repo\", \"sigfp\": \"1111222233334444555566667777888899990000aaaabbbbccccddddeeeeffff\"}");
 | 
			
		||||
        plaintexts.get(1).setProvisionPath("/some/dir/def.fdrp");
 | 
			
		||||
        plaintexts.get(1).setRepositoryProvision("{\"username\": \"user2\", \"name\": \"test repo a\", \"password\": \"other secret\", \"url\": \"https://example.com/repo\"}");
 | 
			
		||||
        plaintexts.get(1).setRepositoryProvision("{\"username\": \"user2\", \"name\": \"test repo a\", \"password\": \"other secret\", \"url\": \"https://example.com/fdroid/repo\", \"sigfp\": \"1111222233334444555566667777888899990000aaaabbbbccccddddeeeeffff\"}");
 | 
			
		||||
 | 
			
		||||
        Provisioner p = new Provisioner();
 | 
			
		||||
        List<Provisioner.Provision> result = p.parseProvisions(plaintexts);
 | 
			
		||||
 | 
			
		||||
        Assert.assertEquals("/some/dir/abc.fdrp", result.get(0).getProvisonPath());
 | 
			
		||||
        Assert.assertEquals("test repo a", result.get(0).getRepositoryProvision().getName());
 | 
			
		||||
        Assert.assertEquals("https://example.com/repo", result.get(0).getRepositoryProvision().getUrl());
 | 
			
		||||
        Assert.assertEquals("https://example.com/fdroid/repo", result.get(0).getRepositoryProvision().getUrl());
 | 
			
		||||
        Assert.assertEquals("1111222233334444555566667777888899990000aaaabbbbccccddddeeeeffff", result.get(0).getRepositoryProvision().getSigfp());
 | 
			
		||||
        Assert.assertEquals("user1", result.get(0).getRepositoryProvision().getUsername());
 | 
			
		||||
        Assert.assertEquals("secret1", result.get(0).getRepositoryProvision().getPassword());
 | 
			
		||||
 | 
			
		||||
        Assert.assertEquals("/some/dir/def.fdrp", result.get(1).getProvisonPath());
 | 
			
		||||
        Assert.assertEquals("test repo a", result.get(1).getRepositoryProvision().getName());
 | 
			
		||||
        Assert.assertEquals("https://example.com/repo", result.get(1).getRepositoryProvision().getUrl());
 | 
			
		||||
        Assert.assertEquals("https://example.com/fdroid/repo", result.get(1).getRepositoryProvision().getUrl());
 | 
			
		||||
        Assert.assertEquals("1111222233334444555566667777888899990000aaaabbbbccccddddeeeeffff", result.get(1).getRepositoryProvision().getSigfp());
 | 
			
		||||
        Assert.assertEquals("user2", result.get(1).getRepositoryProvision().getUsername());
 | 
			
		||||
        Assert.assertEquals("other secret", result.get(1).getRepositoryProvision().getPassword());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user