Skip to content

Commit 411de1b

Browse files
Update main.py
1 parent ecb8d0d commit 411de1b

File tree

1 file changed

+48
-11
lines changed

1 file changed

+48
-11
lines changed

app/main.py

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
from app.models import db, User
55
from app.auth import auth_bp
66
from app.admin import admin_bp
7+
from app.settings import settings_bp
78
from app.directadmin_api import DirectAdminAPI
89
from app.config import Config
910
import os
1011

1112
def 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

Comments
 (0)