# 'Summary': 80,
# 'Description': 4000,
# }
+
+# It is possible for the server operator to specify lists of apps that
+# must be installed or deleted on the client (aka "push installs). If
+# the user has opted in, or the device is already setup to respond to
+# these requests, then fdroidclient will automatically install/delete
+# the packageNames listed. This is protected by the same signing key
+# as the app index metadata.
+#
+# install_list = {
+# 'at.bitfire.davdroid',
+# 'com.fsck.k9',
+# 'us.replicant',
+# }
+#
+# delete_list = {
+# 'com.facebook.orca',
+# 'com.android.vending',
+# }
#!/usr/bin/env python3
#
# update.py - part of the FDroid server tools
-# Copyright (C) 2010-2015, Ciaran Gultnieks, ciaran@ciarang.com
-# Copyright (C) 2013-2014 Daniel Martà <mvdan@mvdan.cc>
+# Copyright (C) 2016, Blue Jay Wireless
+# Copyright (C) 2014-2016, Hans-Christoph Steiner <hans@eds.org>
+# Copyright (C) 2010-2015, Ciaran Gultnieks <ciaran@ciarang.com>
+# Copyright (C) 2013-2014, Daniel Martà <mvdan@mvdan.cc>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
repoel.setAttribute("pubkey", extract_pubkey().decode('utf-8'))
root.appendChild(repoel)
+ for command in ('install', 'delete'):
+ packageNames = []
+ key = command + '_list'
+ if key in config:
+ if isinstance(config[key], str):
+ packageNames = [config[key]]
+ elif all(isinstance(item, str) for item in config[key]):
+ packageNames = config[key]
+ else:
+ raise TypeError('only accepts strings, lists, and tuples')
+ for packageName in packageNames:
+ element = doc.createElement(command)
+ root.appendChild(element)
+ element.setAttribute('packageName', packageName)
+
for appid in sortedids:
app = apps[appid]
$fdroid init
cp -a $WORKSPACE/tests/metadata $WORKSPACE/tests/repo $REPOROOT/
echo "accepted_formats = ['json', 'txt', 'xml', 'yml']" >> config.py
+echo "install_list = 'org.adaway'" >> config.py
+echo "delete_list = {'com.android.vending', 'com.facebook.orca',}" >> config.py
$fdroid update --verbose
test -e repo/index.xml
test -e repo/index.jar
grep -F '<application id=' repo/index.xml > /dev/null
+grep -F '<install packageName=' repo/index.xml > /dev/null
+grep -F '<delete packageName=' repo/index.xml > /dev/null
#------------------------------------------------------------------------------#