config file location overwrite
+ add environment toggle to overwrite the config directory setting ejabberd_metrics_dev to 1 / true -> set the config path inside the dev directory
This commit is contained in:
		
							parent
							
								
									89176536ad
								
							
						
					
					
						commit
						cf0357197e
					
				
							
								
								
									
										18
									
								
								config.py
								
								
								
								
							
							
						
						
									
										18
									
								
								config.py
								
								
								
								
							| 
						 | 
				
			
			@ -2,15 +2,19 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
import json
 | 
			
		||||
import sys
 | 
			
		||||
from os import environ
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Config:
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        # global config path
 | 
			
		||||
        conf_path = '/etc/ejabberd-metrics.conf'
 | 
			
		||||
        self.file = Path(conf_path)
 | 
			
		||||
        # class variables
 | 
			
		||||
        self.content = None
 | 
			
		||||
        self.conf_file = Path('/etc/ejabberd-metrics.conf')
 | 
			
		||||
 | 
			
		||||
        # dev config overwrite
 | 
			
		||||
        if environ.get('ejabberd_metrics_dev'):
 | 
			
		||||
            self.conf_file = Path('config.json')
 | 
			
		||||
 | 
			
		||||
        # read config file
 | 
			
		||||
        self._read()
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +24,7 @@ class Config:
 | 
			
		|||
        self._check()
 | 
			
		||||
 | 
			
		||||
        # open and load json content from config
 | 
			
		||||
        with open(self.file, 'r', encoding='utf-8') as f:
 | 
			
		||||
        with open(self.conf_file, 'r', encoding='utf-8') as f:
 | 
			
		||||
            try:
 | 
			
		||||
                self.content = json.load(f)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -32,13 +36,13 @@ class Config:
 | 
			
		|||
    def _check(self):
 | 
			
		||||
        """internal method to check if the config file exists"""
 | 
			
		||||
        try:
 | 
			
		||||
            # if file is present try to read it's contents
 | 
			
		||||
            if self.file.exists():
 | 
			
		||||
            # if file is present continue
 | 
			
		||||
            if self.conf_file.exists():
 | 
			
		||||
                return
 | 
			
		||||
 | 
			
		||||
            # if not create a blank file
 | 
			
		||||
            else:
 | 
			
		||||
                Path.touch(self.file)
 | 
			
		||||
                self.conf_file.touch(mode=0o640)
 | 
			
		||||
 | 
			
		||||
        # catch permission exceptions as this tries to write to /etc/
 | 
			
		||||
        except PermissionError as err:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue