44from app .models import db , User
55from app .auth import auth_bp
66from app .admin import admin_bp
7+ from app .settings import settings_bp
78from app .directadmin_api import DirectAdminAPI
89from app .config import Config
910import os
1011
1112def create_app ():
1213 app = Flask (__name__ ,
13- static_folder = '../static' , # Fix static path
14+ static_folder = '../static' ,
1415 template_folder = 'templates' )
1516 app .config .from_object (Config )
1617
@@ -34,6 +35,7 @@ def load_user(user_id):
3435
3536 app .register_blueprint (auth_bp )
3637 app .register_blueprint (admin_bp )
38+ app .register_blueprint (settings_bp ) # Register settings blueprint
3739
3840 # Initialize database
3941 with app .app_context ():
@@ -49,30 +51,44 @@ def load_user(user_id):
4951 except Exception as e :
5052 print (f"Database initialization error: { e } " )
5153
52- # Static file serving for development
5354 @app .route ('/static/<path:filename>' )
5455 def serve_static (filename ):
5556 return send_from_directory (app .static_folder , filename )
5657
5758 @app .route ('/' )
5859 @login_required
5960 def index ():
61+ # Check if user has configured DirectAdmin settings
62+ if not current_user .has_da_config ():
63+ return redirect (url_for ('settings.index' ))
6064 return redirect (url_for ('dashboard' ))
6165
6266 @app .route ('/dashboard' )
6367 @login_required
6468 def dashboard ():
69+ # Check if user has configured DirectAdmin settings
70+ if not current_user .has_da_config ():
71+ flash ('Please configure your DirectAdmin settings first.' , 'warning' )
72+ return redirect (url_for ('settings.index' ))
73+
6574 # Update last login
6675 current_user .last_login = datetime .utcnow ()
6776 db .session .commit ()
68- return render_template ('dashboard.html' , domain = Config . DA_DOMAIN )
77+ return render_template ('dashboard.html' , domain = current_user . da_domain )
6978
7079 @app .route ('/api/email-accounts' )
7180 @login_required
7281 def get_email_accounts ():
82+ if not current_user .has_da_config ():
83+ return jsonify ({'error' : 'DirectAdmin not configured' }), 400
84+
7385 try :
74- api = DirectAdminAPI (Config .DA_SERVER , Config .DA_USERNAME , Config .DA_PASSWORD )
75- accounts = api .get_email_accounts (Config .DA_DOMAIN )
86+ api = DirectAdminAPI (
87+ current_user .da_server ,
88+ current_user .da_username ,
89+ current_user .get_da_password ()
90+ )
91+ accounts = api .get_email_accounts (current_user .da_domain )
7692 return jsonify (accounts )
7793 except Exception as e :
7894 print (f"Error getting email accounts: { e } " )
@@ -81,9 +97,16 @@ def get_email_accounts():
8197 @app .route ('/api/forwarders' )
8298 @login_required
8399 def get_forwarders ():
100+ if not current_user .has_da_config ():
101+ return jsonify ({'error' : 'DirectAdmin not configured' }), 400
102+
84103 try :
85- api = DirectAdminAPI (Config .DA_SERVER , Config .DA_USERNAME , Config .DA_PASSWORD )
86- forwarders = api .get_forwarders (Config .DA_DOMAIN )
104+ api = DirectAdminAPI (
105+ current_user .da_server ,
106+ current_user .da_username ,
107+ current_user .get_da_password ()
108+ )
109+ forwarders = api .get_forwarders (current_user .da_domain )
87110 return jsonify (forwarders )
88111 except Exception as e :
89112 print (f"Error getting forwarders: { e } " )
@@ -92,10 +115,17 @@ def get_forwarders():
92115 @app .route ('/api/forwarders' , methods = ['POST' ])
93116 @login_required
94117 def create_forwarder ():
118+ if not current_user .has_da_config ():
119+ return jsonify ({'error' : 'DirectAdmin not configured' }), 400
120+
95121 try :
96122 data = request .json
97- api = DirectAdminAPI (Config .DA_SERVER , Config .DA_USERNAME , Config .DA_PASSWORD )
98- success = api .create_forwarder (Config .DA_DOMAIN , data ['alias' ], data ['destination' ])
123+ api = DirectAdminAPI (
124+ current_user .da_server ,
125+ current_user .da_username ,
126+ current_user .get_da_password ()
127+ )
128+ success = api .create_forwarder (current_user .da_domain , data ['alias' ], data ['destination' ])
99129 return jsonify ({'success' : success })
100130 except Exception as e :
101131 print (f"Error creating forwarder: { e } " )
@@ -104,9 +134,16 @@ def create_forwarder():
104134 @app .route ('/api/forwarders/<alias>' , methods = ['DELETE' ])
105135 @login_required
106136 def delete_forwarder (alias ):
137+ if not current_user .has_da_config ():
138+ return jsonify ({'error' : 'DirectAdmin not configured' }), 400
139+
107140 try :
108- api = DirectAdminAPI (Config .DA_SERVER , Config .DA_USERNAME , Config .DA_PASSWORD )
109- success = api .delete_forwarder (Config .DA_DOMAIN , alias )
141+ api = DirectAdminAPI (
142+ current_user .da_server ,
143+ current_user .da_username ,
144+ current_user .get_da_password ()
145+ )
146+ success = api .delete_forwarder (current_user .da_domain , alias )
110147 return jsonify ({'success' : success })
111148 except Exception as e :
112149 print (f"Error deleting forwarder: { e } " )
0 commit comments