| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Helper script to perform actions as a super-user on ChromeOS. | 6 """Helper script to perform actions as a super-user on ChromeOS. |
| 7 | 7 |
| 8 Needs to be run with superuser privileges, typically using the | 8 Needs to be run with superuser privileges, typically using the |
| 9 suid_python binary. | 9 suid_python binary. |
| 10 | 10 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 self._ParseArgs() | 37 self._ParseArgs() |
| 38 assert os.geteuid() == 0, 'Needs superuser privileges.' | 38 assert os.geteuid() == 0, 'Needs superuser privileges.' |
| 39 handler = getattr(self, self._options.action) | 39 handler = getattr(self, self._options.action) |
| 40 assert handler and callable(handler), \ | 40 assert handler and callable(handler), \ |
| 41 'No handler for %s' % self._options.action | 41 'No handler for %s' % self._options.action |
| 42 handler() | 42 handler() |
| 43 return 0 | 43 return 0 |
| 44 | 44 |
| 45 ## Actions ## | 45 ## Actions ## |
| 46 def CleanFlimflamDirs(self): | 46 def CleanFlimflamDirs(self): |
| 47 """Clean the contents of all flimflam profiles.""" | 47 """Clean the contents of all flimflam profiles. |
| 48 |
| 49 TODO(stanleyw): crosbug.com/29421 This method restarts flimflam. It should |
| 50 wait until flimflam is fully initialized and accessible via DBus. Otherwise, |
| 51 there is a race conditions and subsequent accesses to flimflam may fail. |
| 52 """ |
| 48 flimflam_dirs = ['/home/chronos/user/flimflam', | 53 flimflam_dirs = ['/home/chronos/user/flimflam', |
| 49 '/var/cache/flimflam'] | 54 '/var/cache/flimflam'] |
| 50 os.system('stop flimflam') | 55 os.system('stop flimflam') |
| 51 try: | 56 try: |
| 52 for flimflam_dir in flimflam_dirs: | 57 for flimflam_dir in flimflam_dirs: |
| 53 if not os.path.exists(flimflam_dir): | 58 if not os.path.exists(flimflam_dir): |
| 54 continue | 59 continue |
| 55 for item in os.listdir(flimflam_dir): | 60 for item in os.listdir(flimflam_dir): |
| 56 path = os.path.join(flimflam_dir, item) | 61 path = os.path.join(flimflam_dir, item) |
| 57 if os.path.isdir(path): | 62 if os.path.isdir(path): |
| 58 shutil.rmtree(path) | 63 shutil.rmtree(path) |
| 59 else: | 64 else: |
| 60 os.remove(path) | 65 os.remove(path) |
| 61 finally: | 66 finally: |
| 62 os.system('start flimflam') | 67 os.system('start flimflam') |
| 63 | 68 |
| 64 def RemoveAllCryptohomeVaults(self): | 69 def RemoveAllCryptohomeVaults(self): |
| 65 """Remove any existing cryptohome vaults.""" | 70 """Remove any existing cryptohome vaults.""" |
| 66 cryptohome.remove_all_vaults() | 71 cryptohome.remove_all_vaults() |
| 67 | 72 |
| 68 | 73 |
| 69 if __name__ == '__main__': | 74 if __name__ == '__main__': |
| 70 sys.exit(SuidAction().Run()) | 75 sys.exit(SuidAction().Run()) |
| OLD | NEW |