22from flask_login import login_required , current_user
33from app .models import db
44from app .directadmin_api import DirectAdminAPI
5+ import traceback
56
67settings_bp = Blueprint ('settings' , __name__ , url_prefix = '/settings' )
78
@@ -23,34 +24,45 @@ def get_da_config():
2324@settings_bp .route ('/api/da-config' , methods = ['POST' ])
2425@login_required
2526def update_da_config ():
26- data = request .json
27+ try :
28+ data = request .json
29+ print (f"Received settings update: { data } " ) # Debug log
30+
31+ # Validate required fields
32+ required_fields = ['da_server' , 'da_username' , 'da_domain' ]
33+ for field in required_fields :
34+ if not data .get (field ):
35+ return jsonify ({'error' : f'{ field } is required' }), 400
2736
28- # Validate required fields
29- required_fields = ['da_server' , 'da_username' , 'da_domain' ]
30- for field in required_fields :
31- if not data .get (field ):
32- return jsonify ({'error' : f'{ field } is required' }), 400
37+ # Update DirectAdmin settings
38+ current_user .da_server = data ['da_server' ].rstrip ('/' )
39+ current_user .da_username = data ['da_username' ]
40+ current_user .da_domain = data ['da_domain' ]
3341
34- # Update DirectAdmin settings
35- current_user . da_server = data [ 'da_server' ]. rstrip ( '/' )
36- current_user . da_username = data [ 'da_username' ]
37- current_user . da_domain = data ['da_domain' ]
42+ # Only update password if provided
43+ if data . get ( 'da_password' ):
44+ print ( "Setting new DA password" ) # Debug log
45+ current_user . set_da_password ( data ['da_password' ])
3846
39- # Only update password if provided
40- if data .get ('da_password' ):
41- current_user .set_da_password (data ['da_password' ])
47+ db .session .commit ()
48+ print ("Settings saved successfully" ) # Debug log
4249
43- db . session . commit ( )
50+ return jsonify ({ 'success' : True , 'message' : 'DirectAdmin settings updated successfully' } )
4451
45- return jsonify ({'success' : True , 'message' : 'DirectAdmin settings updated successfully' })
52+ except Exception as e :
53+ print (f"Error updating settings: { str (e )} " ) # Debug log
54+ print (traceback .format_exc ()) # Full traceback
55+ db .session .rollback ()
56+ return jsonify ({'error' : f'Failed to save settings: { str (e )} ' }), 500
4657
4758@settings_bp .route ('/api/test-connection' , methods = ['POST' ])
4859@login_required
4960def test_connection ():
5061 """Test DirectAdmin connection with provided credentials"""
51- data = request .json
52-
5362 try :
63+ data = request .json
64+ print (f"Testing connection with: { data .get ('da_server' )} " ) # Debug log
65+
5466 # Use provided credentials or current user's
5567 server = data .get ('da_server' ) or current_user .da_server
5668 username = data .get ('da_username' ) or current_user .da_username
@@ -61,13 +73,14 @@ def test_connection():
6173
6274 # Test connection
6375 api = DirectAdminAPI (server , username , password )
64- # Try to get domains as a test
65- response = api ._make_request ('API_SHOW_DOMAINS' )
76+ success , message = api .test_connection ()
6677
67- if response . status_code == 200 :
68- return jsonify ({'success' : True , 'message' : 'Connection successful!' })
78+ if success :
79+ return jsonify ({'success' : True , 'message' : message })
6980 else :
70- return jsonify ({'error' : 'Connection failed' }), 400
81+ return jsonify ({'error' : message }), 400
7182
7283 except Exception as e :
84+ print (f"Test connection error: { str (e )} " ) # Debug log
85+ print (traceback .format_exc ()) # Full traceback
7386 return jsonify ({'error' : str (e )}), 500
0 commit comments