Start intro if config is absent or corrupted.
Cleanups.
This commit is contained in:
		
							parent
							
								
									72857326d2
								
							
						
					
					
						commit
						e2beb5b566
					
				
							
								
								
									
										1
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								NEWS
									
									
									
									
									
								
							| @ -1,3 +1,4 @@ | |||||||
|  | * #2119 If config is missing start intro. (marco) | ||||||
| * #2083 Fix centering of items in the spread box. (marco) | * #2083 Fix centering of items in the spread box. (marco) | ||||||
| * #2486 In the intro screen name page enter goes to next page. (marco) | * #2486 In the intro screen name page enter goes to next page. (marco) | ||||||
| * #2570 Accept correctly image drops from Record. | * #2570 Accept correctly image drops from Record. | ||||||
|  | |||||||
| @ -232,10 +232,13 @@ class IntroWindow(gtk.Window): | |||||||
|         # Generate keypair |         # Generate keypair | ||||||
|         import commands |         import commands | ||||||
|         keypath = os.path.join(env.get_profile_path(), "owner.key") |         keypath = os.path.join(env.get_profile_path(), "owner.key") | ||||||
|         cmd = "ssh-keygen -q -t dsa -f %s -C '' -N ''" % keypath |         if not os.path.isfile(keypath): | ||||||
|         (s, o) = commands.getstatusoutput(cmd) |             cmd = "ssh-keygen -q -t dsa -f %s -C '' -N ''" % keypath | ||||||
|         if s != 0: |             (s, o) = commands.getstatusoutput(cmd) | ||||||
|             logging.error("Could not generate key pair: %d" % s) |             if s != 0: | ||||||
|  |                 logging.error("Could not generate key pair: %d" % s) | ||||||
|  |         else: | ||||||
|  |             logging.error("Keypair exists, skip generation.") | ||||||
| 
 | 
 | ||||||
|         gtk.main_quit() |         gtk.main_quit() | ||||||
|         return False |         return False | ||||||
|  | |||||||
| @ -74,8 +74,7 @@ _start_matchbox() | |||||||
| _setup_translations() | _setup_translations() | ||||||
| 
 | 
 | ||||||
| # Do initial setup if needed | # Do initial setup if needed | ||||||
| key = profile.get_pubkey()  | if not profile.is_valid(): | ||||||
| if not key or not len(key): |  | ||||||
| 	win = intro.IntroWindow() | 	win = intro.IntroWindow() | ||||||
| 	win.show_all() | 	win.show_all() | ||||||
| 	gtk.main() | 	gtk.main() | ||||||
|  | |||||||
| @ -49,6 +49,7 @@ class _Profile(object): | |||||||
|         privkey_hash -- SHA has of the child's public key  |         privkey_hash -- SHA has of the child's public key  | ||||||
|     """ |     """ | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|  |         self.valid = True | ||||||
|         self.name = None |         self.name = None | ||||||
|         self.color = None |         self.color = None | ||||||
|         self.pubkey = None |         self.pubkey = None | ||||||
| @ -56,26 +57,29 @@ class _Profile(object): | |||||||
|         self.server = None |         self.server = None | ||||||
|         self.server_registered = False |         self.server_registered = False | ||||||
|         self.backup1 = None |         self.backup1 = None | ||||||
|  | 
 | ||||||
|  |         self._config_path = os.path.join(env.get_profile_path(), 'config') | ||||||
|  | 
 | ||||||
|         self._load() |         self._load() | ||||||
| 
 | 
 | ||||||
|     def update(self): |     def update(self): | ||||||
|         self._load() |         self._load() | ||||||
| 
 | 
 | ||||||
|     def _load(self): |     def _load(self): | ||||||
|         cp = ConfigParser() |         self._load_config() | ||||||
|         config_path = os.path.join(env.get_profile_path(), 'config') |  | ||||||
|         parsed = cp.read([config_path]) |  | ||||||
|         self._load_config(cp) |  | ||||||
|         del cp |  | ||||||
| 
 |  | ||||||
|         self._load_pubkey() |         self._load_pubkey() | ||||||
|         self._hash_private_key() |         self._hash_private_key() | ||||||
| 
 | 
 | ||||||
|     def _load_config(self, cp): |     def _load_config(self): | ||||||
|  |         cp = ConfigParser() | ||||||
|  |         parsed = cp.read([self._config_path]) | ||||||
|  | 
 | ||||||
|         if cp.has_option('Buddy', 'NickName'): |         if cp.has_option('Buddy', 'NickName'): | ||||||
|             name = cp.get('Buddy', 'NickName') |             name = cp.get('Buddy', 'NickName') | ||||||
|             # decode nickname from ascii-safe chars to unicode |             # decode nickname from ascii-safe chars to unicode | ||||||
|             self.name = name.decode("utf-8") |             self.name = name.decode("utf-8") | ||||||
|  |         else: | ||||||
|  |             self.valid = False | ||||||
| 
 | 
 | ||||||
|         if cp.has_option('Buddy', 'Color'): |         if cp.has_option('Buddy', 'Color'): | ||||||
|             self.color = XoColor(cp.get('Buddy', 'Color')) |             self.color = XoColor(cp.get('Buddy', 'Color')) | ||||||
| @ -91,6 +95,8 @@ class _Profile(object): | |||||||
|         if cp.has_option('Server', 'Backup1'): |         if cp.has_option('Server', 'Backup1'): | ||||||
|             self.backup1 = cp.get('Server', 'Backup1') |             self.backup1 = cp.get('Server', 'Backup1') | ||||||
| 
 | 
 | ||||||
|  |         del cp | ||||||
|  | 
 | ||||||
|     def _load_pubkey(self): |     def _load_pubkey(self): | ||||||
|         self.pubkey = None |         self.pubkey = None | ||||||
| 
 | 
 | ||||||
| @ -100,6 +106,7 @@ class _Profile(object): | |||||||
|             lines = f.readlines() |             lines = f.readlines() | ||||||
|             f.close() |             f.close() | ||||||
|         except IOError, e: |         except IOError, e: | ||||||
|  |             self.valid = False | ||||||
|             logging.error("Error reading public key: %s" % e) |             logging.error("Error reading public key: %s" % e) | ||||||
|             return |             return | ||||||
| 
 | 
 | ||||||
| @ -142,20 +149,23 @@ class _Profile(object): | |||||||
| 
 | 
 | ||||||
|     def set_key(self, section, key, value): |     def set_key(self, section, key, value): | ||||||
|         cp = ConfigParser() |         cp = ConfigParser() | ||||||
|         config_path = os.path.join(env.get_profile_path(), 'config') |         parsed = cp.read([self._config_path]) | ||||||
|         parsed = cp.read([config_path]) |  | ||||||
| 
 | 
 | ||||||
|         if not cp.has_section(section): |         if not cp.has_section(section): | ||||||
|             cp.add_section(section) |             cp.add_section(section) | ||||||
|         cp.set(section, key, value) |         cp.set(section, key, value) | ||||||
| 
 | 
 | ||||||
|         f = open(config_path, 'w') |         f = open(self._config_path, 'w') | ||||||
|         cp.write(f) |         cp.write(f) | ||||||
|         f.close() |         f.close() | ||||||
| 
 | 
 | ||||||
|         self._load_config(cp) |  | ||||||
|         del cp |         del cp | ||||||
| 
 | 
 | ||||||
|  |         self._load_config() | ||||||
|  | 
 | ||||||
|  | def is_valid(): | ||||||
|  |     return _profile.valid | ||||||
|  | 
 | ||||||
| def get_nick_name(): | def get_nick_name(): | ||||||
|     return _profile.name |     return _profile.name | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Marco Pesenti Gritti
						Marco Pesenti Gritti