1- import logging
2- from flask import Flask , request , jsonify
3- from adware_dashboard .core .adware_manager import AdwareManager
4- from adware_dashboard .core .payload_manager import PayloadManager
5- from adware_dashboard .core .deployment_manager import DeploymentManager
6- from adware_dashboard .core .ai_integration import AIIntegration
7- from adware_dashboard .models import Adware , Payload , DeploymentMethod
8- from adware_dashboard .api .serializers import AdwareSerializer , PayloadSerializer , DeploymentMethodSerializer
9- from adware_dashboard .api .utils import validate_input
10-
11- def create_api_app (logger : logging .Logger , adware_manager : AdwareManager , payload_manager : PayloadManager , deployment_manager : DeploymentManager , ai_integration : AIIntegration ) -> Flask :
12- """
13- Creates and configures the Flask API application.
14-
15- Args:
16- logger (logging.Logger): The logger instance to use.
17- adware_manager (AdwareManager): The adware manager instance.
18- payload_manager (PayloadManager): The payload manager instance.
19- deployment_manager (DeploymentManager): The deployment manager instance.
20- ai_integration (AIIntegration): The AI integration instance.
21-
22- Returns:
23- Flask: The configured Flask application.
24- """
25- app = Flask (__name__ )
26-
27- @app .route ('/adware' , methods = ['POST' ])
28- @validate_input (AdwareSerializer )
29- def create_adware ():
30- """
31- Creates a new adware configuration.
32- """
33- data = request .get_json ()
34- try :
35- adware = adware_manager .create_adware (
36- name = data ['name' ],
37- description = data ['description' ],
38- target_os = data ['target_os' ],
39- persistence_method = data ['persistence_method' ],
40- payload_id = data ['payload_id' ],
41- deployment_method_id = data ['deployment_method_id' ],
42- config = data ['config' ]
43- )
44- return jsonify (AdwareSerializer .serialize (adware )), 201
45- except ValueError as e :
46- return jsonify ({'error' : str (e )}), 400
47-
48- @app .route ('/adware/<int:adware_id>' , methods = ['GET' ])
49- def get_adware (adware_id ):
50- """
51- Retrieves an adware configuration by its ID.
52- """
53- adware = adware_manager .get_adware (adware_id )
54- if adware :
55- return jsonify (AdwareSerializer .serialize (adware )), 200
56- return jsonify ({'error' : 'Adware not found' }), 404
57-
58- @app .route ('/adware/<int:adware_id>' , methods = ['PUT' ])
59- @validate_input (AdwareSerializer , partial = True )
60- def update_adware (adware_id ):
61- """
62- Updates an existing adware configuration.
63- """
64- data = request .get_json ()
65- try :
66- adware = adware_manager .update_adware (adware_id , ** data )
67- if adware :
68- return jsonify (AdwareSerializer .serialize (adware )), 200
69- return jsonify ({'error' : 'Adware not found' }), 404
70- except ValueError as e :
71- return jsonify ({'error' : str (e )}), 400
72-
73- @app .route ('/adware/<int:adware_id>' , methods = ['DELETE' ])
74- def delete_adware (adware_id ):
75- """
76- Deletes an adware configuration by its ID.
77- """
78- if adware_manager .delete_adware (adware_id ):
79- return jsonify ({'message' : 'Adware deleted successfully' }), 200
80- return jsonify ({'error' : 'Adware not found' }), 404
81-
82- @app .route ('/adware' , methods = ['GET' ])
83- def list_adware ():
84- """
85- Lists all adware configurations.
86- """
87- adware_list = adware_manager .list_adware ()
88- return jsonify ([AdwareSerializer .serialize (adware ) for adware in adware_list ]), 200
89-
90- @app .route ('/adware/<int:adware_id>/deploy' , methods = ['POST' ])
91- def deploy_adware (adware_id ):
92- """
93- Deploys an adware configuration.
94- """
95- if adware_manager .deploy_adware (adware_id ):
96- return jsonify ({'message' : 'Adware deployed successfully' }), 200
97- return jsonify ({'error' : 'Adware not found or deployment failed' }), 404
98-
99- @app .route ('/payloads' , methods = ['GET' ])
100- def list_payloads ():
101- """
102- Lists all available payloads.
103- """
104- payload_list = payload_manager .list_payloads ()
105- return jsonify ([PayloadSerializer .serialize (payload ) for payload in payload_list ]), 200
106-
107- @app .route ('/deployment_methods' , methods = ['GET' ])
108- def list_deployment_methods ():
109- """
110- Lists all available deployment methods.
111- """
112- deployment_method_list = deployment_manager .list_deployment_methods ()
113- return jsonify ([DeploymentMethodSerializer .serialize (deployment_method ) for deployment_method in deployment_method_list ]), 200
114-
115- @app .route ('/ai/generate' , methods = ['POST' ])
116- def generate_ai_config ():
117- """
118- Generates an adware configuration using the AI model.
119- """
120- data = request .get_json ()
121- try :
122- config = ai_integration .generate_adware_config (data ['goal' ], data .get ('constraints' ))
123- return jsonify (config ), 200
124- except ValueError as e :
125- return jsonify ({'error' : str (e )}), 400
126-
127- return app
1+ import logging
2+ from flask import Flask , request , jsonify
3+ from adware_dashboard .core .adware_manager import AdwareManager
4+ from adware_dashboard .core .payload_manager import PayloadManager
5+ from adware_dashboard .core .deployment_manager import DeploymentManager
6+ from adware_dashboard .core .ai_integration import AIIntegration
7+ from adware_dashboard .models import Adware , Payload , DeploymentMethod
8+ from adware_dashboard .api .serializers import AdwareSerializer , PayloadSerializer , DeploymentMethodSerializer
9+ from adware_dashboard .api .utils import validate_input
10+
11+ def create_api_app (logger : logging .Logger , adware_manager : AdwareManager , payload_manager : PayloadManager , deployment_manager : DeploymentManager , ai_integration : AIIntegration ) -> Flask :
12+ """
13+ Creates and configures the Flask API application.
14+
15+ Args:
16+ logger (logging.Logger): The logger instance to use.
17+ adware_manager (AdwareManager): The adware manager instance.
18+ payload_manager (PayloadManager): The payload manager instance.
19+ deployment_manager (DeploymentManager): The deployment manager instance.
20+ ai_integration (AIIntegration): The AI integration instance.
21+
22+ Returns:
23+ Flask: The configured Flask application.
24+ """
25+ app = Flask (__name__ )
26+
27+ @app .route ('/adware' , methods = ['POST' ])
28+ @validate_input (AdwareSerializer )
29+ def create_adware ():
30+ """
31+ Creates a new adware configuration.
32+ """
33+ data = request .get_json ()
34+ try :
35+ payload = payload_manager .get_payload (data ['payload_id' ])
36+ if not payload :
37+ return jsonify ({'error' : f"Payload with ID { data ['payload_id' ]} not found." }), 400
38+
39+ deployment_method = deployment_manager .get_deployment_method (data ['deployment_method_id' ])
40+ if not deployment_method :
41+ return jsonify ({'error' : f"Deployment method with ID { data ['deployment_method_id' ]} not found." }), 400
42+
43+ adware = adware_manager .create_adware (
44+ name = data ['name' ],
45+ description = data ['description' ],
46+ target_os = data ['target_os' ],
47+ persistence_method = data ['persistence_method' ],
48+ payload_id = data ['payload_id' ],
49+ deployment_method_id = data ['deployment_method_id' ],
50+ config = data ['config' ]
51+ )
52+ return jsonify (AdwareSerializer .serialize (adware )), 201
53+ except ValueError as e :
54+ return jsonify ({'error' : str (e )}), 400
55+
56+ @app .route ('/adware/<int:adware_id>' , methods = ['GET' ])
57+ def get_adware (adware_id ):
58+ """
59+ Retrieves an adware configuration by its ID.
60+ """
61+ adware = adware_manager .get_adware (adware_id )
62+ if adware :
63+ return jsonify (AdwareSerializer .serialize (adware )), 200
64+ return jsonify ({'error' : 'Adware not found' }), 404
65+
66+ @app .route ('/adware/<int:adware_id>' , methods = ['PUT' ])
67+ @validate_input (AdwareSerializer , partial = True )
68+ def update_adware (adware_id ):
69+ """
70+ Updates an existing adware configuration.
71+ """
72+ data = request .get_json ()
73+ try :
74+ adware = adware_manager .update_adware (adware_id , ** data )
75+ if adware :
76+ return jsonify (AdwareSerializer .serialize (adware )), 200
77+ return jsonify ({'error' : 'Adware not found' }), 404
78+ except ValueError as e :
79+ return jsonify ({'error' : str (e )}), 400
80+
81+ @app .route ('/adware/<int:adware_id>' , methods = ['DELETE' ])
82+ def delete_adware (adware_id ):
83+ """
84+ Deletes an adware configuration by its ID.
85+ """
86+ if adware_manager .delete_adware (adware_id ):
87+ return jsonify ({'message' : 'Adware deleted successfully' }), 200
88+ return jsonify ({'error' : 'Adware not found' }), 404
89+
90+ @app .route ('/adware' , methods = ['GET' ])
91+ def list_adware ():
92+ """
93+ Lists all adware configurations.
94+ """
95+ adware_list = adware_manager .list_adware ()
96+ return jsonify ([AdwareSerializer .serialize (adware ) for adware in adware_list ]), 200
97+
98+ @app .route ('/adware/<int:adware_id>/deploy' , methods = ['POST' ])
99+ def deploy_adware (adware_id ):
100+ """
101+ Deploys an adware configuration.
102+ """
103+ if adware_manager .deploy_adware (adware_id ):
104+ return jsonify ({'message' : 'Adware deployed successfully' }), 200
105+ return jsonify ({'error' : 'Adware not found or deployment failed' }), 404
106+
107+ @app .route ('/payloads' , methods = ['GET' ])
108+ def list_payloads ():
109+ """
110+ Lists all available payloads.
111+ """
112+ payload_list = payload_manager .list_payloads ()
113+ return jsonify ([PayloadSerializer .serialize (payload ) for payload in payload_list ]), 200
114+
115+ @app .route ('/deployment_methods' , methods = ['GET' ])
116+ def list_deployment_methods ():
117+ """
118+ Lists all available deployment methods.
119+ """
120+ deployment_method_list = deployment_manager .list_deployment_methods ()
121+ return jsonify ([DeploymentMethodSerializer .serialize (deployment_method ) for deployment_method in deployment_method_list ]), 200
122+
123+ @app .route ('/ai/generate' , methods = ['POST' ])
124+ def generate_ai_config ():
125+ """
126+ Generates an adware configuration using the AI model.
127+ """
128+ data = request .get_json ()
129+ try :
130+ config = ai_integration .generate_adware_config (data ['goal' ], data .get ('constraints' ))
131+ return jsonify (config ), 200
132+ except ValueError as e :
133+ return jsonify ({'error' : str (e )}), 400
134+
135+ return app
0 commit comments