mirror of
https://github.com/thiagoralves/OpenPLC_v3.git
synced 2026-02-06 10:23:51 +08:00
[RTOP-26] Fix logging on restapi
This commit is contained in:
@@ -11,7 +11,13 @@ from dotenv import load_dotenv
|
||||
ENV_PATH = Path(__file__).resolve().parent.parent / ".env"
|
||||
DB_PATH = Path(__file__).resolve().parent.parent / "restapi.db"
|
||||
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG, # Minimum level to capture
|
||||
format='[%(levelname)s] %(asctime)s - %(message)s',
|
||||
datefmt='%H:%M:%S'
|
||||
)
|
||||
|
||||
# Function to validate environment variable values
|
||||
def is_valid_env(var_name, value):
|
||||
@@ -34,17 +40,17 @@ def generate_env_file():
|
||||
f.write(f"PEPPER={pepper}\n")
|
||||
|
||||
os.chmod(ENV_PATH, 0o600)
|
||||
logger.info(f"✅ .env file created at {ENV_PATH}")
|
||||
logger.info(f".env file created at {ENV_PATH}")
|
||||
|
||||
# Ensure the database file exists and is writable
|
||||
# Deletion is required because new secrets will change the database saved hashes
|
||||
if os.path.exists(DB_PATH):
|
||||
os.remove(DB_PATH)
|
||||
logger.info(f"⚠️ Deleted existing database file: {DB_PATH}")
|
||||
logger.info(f"Deleted existing database file: {DB_PATH}")
|
||||
|
||||
# Load .env file
|
||||
if not os.path.isfile(ENV_PATH):
|
||||
logger.warning("⚠️ .env file not found, creating one...")
|
||||
logger.warning(".env file not found, creating one...")
|
||||
generate_env_file()
|
||||
|
||||
load_dotenv(dotenv_path=ENV_PATH, override=False)
|
||||
@@ -56,15 +62,15 @@ try:
|
||||
if not val or not is_valid_env(var, val):
|
||||
raise RuntimeError(f"Environment variable '{var}' is invalid or missing")
|
||||
except RuntimeError as e:
|
||||
logger.error(f"❌ {e}")
|
||||
logger.error(f"{e}")
|
||||
# Need to regenerate .env file and remove the database as well
|
||||
response = input("Do you want to regenerate the .env file? This will delete your database. [y/N]: ").strip().lower()
|
||||
if response == 'y':
|
||||
logger.info("🔁 Regenerating .env with new valid values...")
|
||||
logger.info("Regenerating .env with new valid values...")
|
||||
generate_env_file()
|
||||
load_dotenv(ENV_PATH)
|
||||
else:
|
||||
logger.error("🚫 Exiting due to invalid environment configuration.")
|
||||
logger.error("Exiting due to invalid environment configuration.")
|
||||
exit(1)
|
||||
|
||||
|
||||
|
||||
@@ -19,6 +19,12 @@ else:
|
||||
app_restapi.config.from_object(config.DevConfig)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG, # Minimum level to capture
|
||||
format='[%(levelname)s] %(asctime)s - %(message)s',
|
||||
datefmt='%H:%M:%S'
|
||||
)
|
||||
|
||||
restapi_bp = Blueprint('restapi_blueprint', __name__)
|
||||
_handler_callback_get: Optional[Callable[[str, dict], dict]] = None
|
||||
_handler_callback_post: Optional[Callable[[str, dict], dict]] = None
|
||||
@@ -74,12 +80,12 @@ def user_lookup_callback(_jwt_header, jwt_data):
|
||||
def register_callback_get(callback: Callable[[str, dict], dict]):
|
||||
global _handler_callback_get
|
||||
_handler_callback_get = callback
|
||||
print("GET Callback registered successfully for rest_blueprint!")
|
||||
logger.info("GET Callback registered successfully for rest_blueprint!")
|
||||
|
||||
def register_callback_post(callback: Callable[[str, dict], dict]):
|
||||
global _handler_callback_post
|
||||
_handler_callback_post = callback
|
||||
print("POST Callback registered successfully for rest_blueprint!")
|
||||
logger.info("POST Callback registered successfully for rest_blueprint!")
|
||||
|
||||
@restapi_bp.route("/create-user", methods=["POST"])
|
||||
def create_user():
|
||||
@@ -87,7 +93,7 @@ def create_user():
|
||||
try:
|
||||
users_exist = User.query.first() is not None
|
||||
except Exception as e:
|
||||
print(f"Error checking for users: {e}")
|
||||
logger.error(f"Error checking for users: {e}")
|
||||
return jsonify({"msg": "User creation error"}), 401
|
||||
|
||||
# if there are no users, we don't need to verify JWT
|
||||
@@ -121,7 +127,7 @@ def get_user_info(user_id):
|
||||
try:
|
||||
user = User.query.get(user_id)
|
||||
except Exception as e:
|
||||
print(f"Error retrieving user: {e}")
|
||||
logger.error(f"Error retrieving user: {e}")
|
||||
return jsonify({"msg": "User retrieval error"}), 500
|
||||
|
||||
if not user:
|
||||
@@ -135,11 +141,11 @@ def get_users_info():
|
||||
try:
|
||||
verify_jwt_in_request()
|
||||
except Exception as e:
|
||||
print("No JWT token provided, checking for users without authentication")
|
||||
logger.warning("No JWT token provided, checking for users without authentication")
|
||||
try:
|
||||
users_exist = User.query.first() is not None
|
||||
except Exception as e:
|
||||
print(f"Error checking for users: {e}")
|
||||
logger.error(f"Error checking for users: {e}")
|
||||
return jsonify({"msg": "User retrieval error"}), 500
|
||||
|
||||
if not users_exist:
|
||||
@@ -149,7 +155,7 @@ def get_users_info():
|
||||
try:
|
||||
users = User.query.all()
|
||||
except Exception as e:
|
||||
print(f"Error retrieving users: {e}")
|
||||
logger.error(f"Error retrieving users: {e}")
|
||||
return jsonify({"msg": "User retrieval error"}), 500
|
||||
|
||||
return jsonify([user.to_dict() for user in users]), 200
|
||||
@@ -169,7 +175,7 @@ def change_password(user_id):
|
||||
try:
|
||||
user = User.query.get(user_id)
|
||||
except Exception as e:
|
||||
print(f"Error retrieving user: {e}")
|
||||
logger.error(f"Error retrieving user: {e}")
|
||||
return jsonify({"msg": "User retrieval error"}), 500
|
||||
|
||||
if not user:
|
||||
|
||||
@@ -28,7 +28,13 @@ app = flask.Flask(__name__)
|
||||
app.secret_key = str(os.urandom(16))
|
||||
login_manager = flask_login.LoginManager()
|
||||
login_manager.init_app(app)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG, # Minimum level to capture
|
||||
format='[%(levelname)s] %(asctime)s - %(message)s',
|
||||
datefmt='%H:%M:%S'
|
||||
)
|
||||
|
||||
openplc_runtime = openplc.runtime()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user