Skip to content

Commit 14d6ba3

Browse files
Create main.py
1 parent e1b11ae commit 14d6ba3

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

app/main.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
from flask import Flask, render_template, request, jsonify, redirect, url_for
2+
from flask_login import LoginManager, login_required, current_user
3+
from app.models import db, User
4+
from app.auth import auth_bp
5+
from app.directadmin_api import DirectAdminAPI
6+
from app.config import Config
7+
import os
8+
9+
def create_app():
10+
app = Flask(__name__)
11+
app.config.from_object(Config)
12+
13+
db.init_app(app)
14+
15+
login_manager = LoginManager()
16+
login_manager.init_app(app)
17+
login_manager.login_view = 'auth.login'
18+
19+
@login_manager.user_loader
20+
def load_user(user_id):
21+
return User.query.get(int(user_id))
22+
23+
app.register_blueprint(auth_bp)
24+
25+
with app.app_context():
26+
db.create_all()
27+
# Create default user if none exists
28+
if User.query.count() == 0:
29+
user = User(username='admin')
30+
user.set_password('changeme')
31+
db.session.add(user)
32+
db.session.commit()
33+
34+
@app.route('/')
35+
@login_required
36+
def index():
37+
return redirect(url_for('dashboard'))
38+
39+
@app.route('/dashboard')
40+
@login_required
41+
def dashboard():
42+
return render_template('dashboard.html', domain=Config.DA_DOMAIN)
43+
44+
@app.route('/api/email-accounts')
45+
@login_required
46+
def get_email_accounts():
47+
api = DirectAdminAPI(Config.DA_SERVER, Config.DA_USERNAME, Config.DA_PASSWORD)
48+
accounts = api.get_email_accounts(Config.DA_DOMAIN)
49+
return jsonify(accounts)
50+
51+
@app.route('/api/forwarders')
52+
@login_required
53+
def get_forwarders():
54+
api = DirectAdminAPI(Config.DA_SERVER, Config.DA_USERNAME, Config.DA_PASSWORD)
55+
forwarders = api.get_forwarders(Config.DA_DOMAIN)
56+
return jsonify(forwarders)
57+
58+
@app.route('/api/forwarders', methods=['POST'])
59+
@login_required
60+
def create_forwarder():
61+
data = request.json
62+
api = DirectAdminAPI(Config.DA_SERVER, Config.DA_USERNAME, Config.DA_PASSWORD)
63+
success = api.create_forwarder(Config.DA_DOMAIN, data['alias'], data['destination'])
64+
return jsonify({'success': success})
65+
66+
@app.route('/api/forwarders/<alias>', methods=['DELETE'])
67+
@login_required
68+
def delete_forwarder(alias):
69+
api = DirectAdminAPI(Config.DA_SERVER, Config.DA_USERNAME, Config.DA_PASSWORD)
70+
success = api.delete_forwarder(Config.DA_DOMAIN, alias)
71+
return jsonify({'success': success})
72+
73+
return app
74+
75+
if __name__ == '__main__':
76+
app = create_app()
77+
app.run(debug=True)

0 commit comments

Comments
 (0)