| OLD | NEW | 
|---|
| 1 # This file is part of the Adblock Plus web scripts, | 1 # This file is part of the Adblock Plus web scripts, | 
| 2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH | 
| 3 # | 3 # | 
| 4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify | 
| 5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as | 
| 6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. | 
| 7 # | 7 # | 
| 8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, | 
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| (...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 538         config = get_config() | 538         config = get_config() | 
| 539         iss = config.get('extensions', 'amo_key') | 539         iss = config.get('extensions', 'amo_key') | 
| 540         secret = config.get('extensions', 'amo_secret') | 540         secret = config.get('extensions', 'amo_secret') | 
| 541 | 541 | 
| 542         url = ('https://addons.mozilla.org/api/v3/addons/{}/' | 542         url = ('https://addons.mozilla.org/api/v3/addons/{}/' | 
| 543                'versions/{}/').format(app_id, version) | 543                'versions/{}/').format(app_id, version) | 
| 544 | 544 | 
| 545         request = self.generate_jwt_request(iss, secret, url, 'GET') | 545         request = self.generate_jwt_request(iss, secret, url, 'GET') | 
| 546         response = json.load(urllib2.urlopen(request)) | 546         response = json.load(urllib2.urlopen(request)) | 
| 547 | 547 | 
|  | 548         filename = '{}-{}.xpi'.format(self.basename, version) | 
|  | 549         self.path = os.path.join( | 
|  | 550             config.get('extensions', 'nightliesDirectory'), | 
|  | 551             self.basename, | 
|  | 552             filename | 
|  | 553         ) | 
|  | 554 | 
| 548         necessary = ['passed_review', 'reviewed', 'processed', 'valid'] | 555         necessary = ['passed_review', 'reviewed', 'processed', 'valid'] | 
| 549         if all(response[x] for x in necessary): | 556         if all(response[x] for x in necessary): | 
| 550             download_url = response['files'][0]['download_url'] | 557             download_url = response['files'][0]['download_url'] | 
| 551             checksum = response['files'][0]['hash'] | 558             checksum = response['files'][0]['hash'] | 
| 552 | 559 | 
| 553             filename = '{}-{}.xpi'.format(self.basename, version) |  | 
| 554             file_path = os.path.join( |  | 
| 555                 config.get('extensions', 'nightliesDirectory'), |  | 
| 556                 self.basename, |  | 
| 557                 filename |  | 
| 558             ) |  | 
| 559 |  | 
| 560             request = self.generate_jwt_request(iss, secret, download_url, | 560             request = self.generate_jwt_request(iss, secret, download_url, | 
| 561                                                 'GET') | 561                                                 'GET') | 
| 562             try: | 562             try: | 
| 563                 response = urllib2.urlopen(request) | 563                 response = urllib2.urlopen(request) | 
| 564             except urllib2.HTTPError as e: | 564             except urllib2.HTTPError as e: | 
| 565                 logging.error(e.read()) | 565                 logging.error(e.read()) | 
| 566 | 566 | 
| 567             # Verify the extension's integrity | 567             # Verify the extension's integrity | 
| 568             file_content = response.read() | 568             file_content = response.read() | 
| 569             sha256 = hashlib.sha256(file_content) | 569             sha256 = hashlib.sha256(file_content) | 
| 570             returned_checksum = '{}:{}'.format(sha256.name, sha256.hexdigest()) | 570             returned_checksum = '{}:{}'.format(sha256.name, sha256.hexdigest()) | 
| 571 | 571 | 
| 572             if returned_checksum != checksum: | 572             if returned_checksum != checksum: | 
| 573                 logging.error('Checksum could not be verified: {} vs {}' | 573                 logging.error('Checksum could not be verified: {} vs {}' | 
| 574                               ''.format(checksum, returned_checksum)) | 574                               ''.format(checksum, returned_checksum)) | 
| 575 | 575 | 
| 576             with open(file_path, 'w') as fp: | 576             with open(self.path, 'w') as fp: | 
| 577                 fp.write(file_content) | 577                 fp.write(file_content) | 
| 578 | 578 | 
| 579             self.update_link = os.path.join( | 579             self.update_link = os.path.join( | 
| 580                 config.get('extensions', 'nightliesURL'), | 580                 config.get('extensions', 'nightliesURL'), | 
| 581                 self.basename, | 581                 self.basename, | 
| 582                 filename | 582                 filename | 
| 583             ) | 583             ) | 
| 584 | 584 | 
| 585             self.remove_from_downloads_lockfile(self.config.type, | 585             self.remove_from_downloads_lockfile(self.config.type, | 
| 586                                                 'version', | 586                                                 'version', | 
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 828 | 828 | 
| 829         if self.config.type in downloads: | 829         if self.config.type in downloads: | 
| 830             try: | 830             try: | 
| 831                 self.copyRepository() | 831                 self.copyRepository() | 
| 832                 self.readGeckoMetadata() | 832                 self.readGeckoMetadata() | 
| 833 | 833 | 
| 834                 for data in download_info[self.config.type]: | 834                 for data in download_info[self.config.type]: | 
| 835                     self.version = data['version'] | 835                     self.version = data['version'] | 
| 836 | 836 | 
| 837                     self.download_from_mozilla_addons(**data) | 837                     self.download_from_mozilla_addons(**data) | 
|  | 838                     if os.path.exists(self.path): | 
|  | 839                         # write out changelog | 
|  | 840                         self.writeChangelog(self.getChanges()) | 
| 838 | 841 | 
| 839                     # write out changelog | 842                         # write update manifest | 
| 840                     self.writeChangelog(self.getChanges()) | 843                         self.writeUpdateManifest() | 
| 841 | 844 | 
| 842                     # write update manifest | 845                         # retire old builds | 
| 843                     self.writeUpdateManifest() | 846                         versions = self.retireBuilds() | 
|  | 847                         # update index page | 
|  | 848                         self.updateIndex(versions) | 
| 844 | 849 | 
| 845                     # retire old builds | 850                         # Update soft link to latest build | 
| 846                     versions = self.retireBuilds() | 851                         baseDir = os.path.join( | 
| 847                     # update index page | 852                             self.config.nightliesDirectory, self.basename | 
| 848                     self.updateIndex(versions) | 853                         ) | 
|  | 854                         linkPath = os.path.join( | 
|  | 855                             baseDir, '00latest' + self.config.packageSuffix | 
|  | 856                         ) | 
|  | 857 | 
|  | 858                         self.symlink_or_copy(self.path, linkPath) | 
| 849             finally: | 859             finally: | 
| 850                 # clean up | 860                 # clean up | 
| 851                 if self.tempdir: | 861                 if self.tempdir: | 
| 852                     shutil.rmtree(self.tempdir, ignore_errors=True) | 862                     shutil.rmtree(self.tempdir, ignore_errors=True) | 
| 853 | 863 | 
| 854 | 864 | 
| 855 def main(download=False): | 865 def main(download=False): | 
| 856     """ | 866     """ | 
| 857       main function for createNightlies.py | 867       main function for createNightlies.py | 
| 858     """ | 868     """ | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 879 | 889 | 
| 880     file = open(nightlyConfigFile, 'wb') | 890     file = open(nightlyConfigFile, 'wb') | 
| 881     nightlyConfig.write(file) | 891     nightlyConfig.write(file) | 
| 882 | 892 | 
| 883 | 893 | 
| 884 if __name__ == '__main__': | 894 if __name__ == '__main__': | 
| 885     parser = argparse.ArgumentParser() | 895     parser = argparse.ArgumentParser() | 
| 886     parser.add_argument('--download', action='store_true', default=False) | 896     parser.add_argument('--download', action='store_true', default=False) | 
| 887     args = parser.parse_args() | 897     args = parser.parse_args() | 
| 888     main(args.download) | 898     main(args.download) | 
| OLD | NEW | 
|---|