\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 www.csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekle24/BackupShieldv1/
(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/yedekle24/BackupShieldv1/app.py


import os
import requests
import datetime
from flask import Flask, render_template, request, redirect, url_for, session, flash, jsonify, abort
import utils
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

app = Flask(__name__)
app.secret_key = os.environ.get("SESSION_SECRET", "yedekledb24-secret-key")

# reCAPTCHA keys
RECAPTCHA_SITE_KEY = os.environ.get('RECAPTCHA_SITE_KEY')
RECAPTCHA_SECRET_KEY = os.environ.get('RECAPTCHA_SECRET_KEY')

# Language settings
LANGUAGES = {
    'en': 'English',
    'tr': 'Türkçe'
}

@app.context_processor
def inject_globals():
    return dict(
        languages=LANGUAGES,
        current_language=session.get('language', 'en'),
        recaptcha_site_key=RECAPTCHA_SITE_KEY
    )

@app.route('/set_language/<language>')
def set_language(language):
    session['language'] = language
    return redirect(request.referrer or url_for('index'))

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/features')
def features():
    return render_template('features.html')

@app.route('/pricing')
def pricing():
    return render_template('pricing.html')

@app.route('/support')
def support():
    return render_template('support.html')
    
@app.route('/contact', methods=['GET', 'POST'])
def contact():
    if request.method == 'POST':
        try:
            # Get form data
            name = request.form.get('name', '').strip()
            email = request.form.get('email', '').strip()
            subject = request.form.get('subject', 'Genel İletişim').strip()
            message = request.form.get('message', '').strip()
            recaptcha_response = request.form.get('g-recaptcha-response')
            
            # Loglama
            log_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logs')
            os.makedirs(log_dir, exist_ok=True)
            log_file = os.path.join(log_dir, f'contact_form_{datetime.datetime.now().strftime("%Y%m%d")}.txt')
            
            with open(log_file, 'a', encoding='utf-8') as f:
                timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                f.write(f"[{timestamp}] FORM GÖNDERİMİ: name={name}, email={email}, subject={subject}, message={len(message)} karakter\n")
            
            # Form doğrulama
            errors = []
            
            if not name:
                errors.append('name_missing')
            
            if not email:
                errors.append('email_missing')
            
            if not message:
                errors.append('message_missing')
            
            # Hataları göster
            if errors:
                with open(log_file, 'a', encoding='utf-8') as f:
                    f.write(f"[{timestamp}] Form validation errors: {errors}\n")
                
                if 'name_missing' in errors or 'email_missing' in errors or 'message_missing' in errors:
                    if session.get('language', 'en') == 'tr':
                        flash('Lütfen tüm gerekli alanları doldurun.', 'danger')
                    else:
                        flash('Please fill in all required fields.', 'danger')
                return redirect(url_for('contact'))
            
            # Email formatını doğrula
            if not utils.is_valid_email(email):
                with open(log_file, 'a', encoding='utf-8') as f:
                    f.write(f"[{timestamp}] Geçersiz e-posta formatı: {email}\n")
                
                if session.get('language', 'en') == 'tr':
                    flash('Lütfen geçerli bir e-posta adresi girin.', 'danger')
                else:
                    flash('Please enter a valid email address.', 'danger')
                return redirect(url_for('contact'))
                
            # reCAPTCHA doğrula
            recaptcha_verified, recaptcha_error = utils.verify_recaptcha(recaptcha_response)
            
            with open(log_file, 'a', encoding='utf-8') as f:
                f.write(f"[{timestamp}] reCAPTCHA sonucu: {recaptcha_verified}, hata: {recaptcha_error}\n")
            
            if not recaptcha_verified:
                if session.get('language', 'en') == 'tr':
                    if 'required' in recaptcha_error.lower():
                        flash('Lütfen robot olmadığınızı doğrulayın.', 'danger')
                    else:
                        flash(f'reCAPTCHA doğrulaması başarısız oldu: {recaptcha_error}', 'danger')
                else:
                    if 'required' in recaptcha_error.lower():
                        flash('Please verify that you are not a robot.', 'danger')
                    else:
                        flash(f'reCAPTCHA verification failed: {recaptcha_error}', 'danger')
                return redirect(url_for('contact'))
            
            # E-posta gönderme modülünü içe aktar
            import email_service
            
            # Asenkron e-posta gönderimi başlat
            with open(log_file, 'a', encoding='utf-8') as f:
                f.write(f"[{timestamp}] Asenkron e-posta gönderimi başlatılıyor\n")
            
            # E-postayı asenkron olarak gönder (bekleme zamanı yok)
            email_service.send_email_async(name, email, subject, message)
            
            # Kullanıcıya başarı mesajı göster
            if session.get('language', 'en') == 'tr':
                flash('Mesajınız gönderildi. En kısa sürede size geri dönüş yapacağız.', 'success')
            else:
                flash('Your message has been sent. We will get back to you shortly.', 'success')
            
            with open(log_file, 'a', encoding='utf-8') as f:
                f.write(f"[{timestamp}] İşlem tamamlandı, kullanıcıya başarı mesajı gösterildi\n")
            
            return redirect(url_for('contact'))
            
        except Exception as e:
            # Genel hata durumunda
            import traceback
            error_str = str(e)
            trace_str = traceback.format_exc()
            
            # Hatayı logla
            log_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logs')
            os.makedirs(log_dir, exist_ok=True)
            error_log_file = os.path.join(log_dir, f'error_{datetime.datetime.now().strftime("%Y%m%d")}.txt')
            
            with open(error_log_file, 'a', encoding='utf-8') as f:
                timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                f.write(f"[{timestamp}] HATA: {error_str}\n")
                f.write(f"{trace_str}\n\n")
            
            if session.get('language', 'en') == 'tr':
                flash('İşlem sırasında beklenmeyen bir hata oluştu. Lütfen daha sonra tekrar deneyin.', 'danger')
            else:
                flash('An unexpected error occurred. Please try again later.', 'danger')
            return redirect(url_for('contact'))
    
    return render_template('contact.html')

@app.route('/demo')
def demo():
    # Redirect to the demo site
    return redirect("https://demo.yedekledb24.tr/")

@app.route('/cookie-policy')
def cookie_policy():
    return render_template('cookie_policy.html')

@app.route('/kvkk')
def kvkk():
    return render_template('kvkk.html')
    
@app.route('/privacy-policy')
def privacy_policy():
    return render_template('privacy_policy.html')
    
@app.route('/terms')
def terms():
    return render_template('terms.html')

# Serve robots.txt
@app.route('/robots.txt')
def robots():
    return app.send_static_file('robots.txt')

# Serve sitemap.xml
@app.route('/sitemap.xml')
def sitemap():
    return app.send_static_file('sitemap.xml')
    
# Serve site.webmanifest
@app.route('/site.webmanifest')
def webmanifest():
    return app.send_static_file('site.webmanifest')

# Error handlers
@app.errorhandler(404)
def page_not_found(e):
    current_language = session.get('language', 'en')
    return render_template('404.html', current_language=current_language, languages=LANGUAGES), 404

@app.errorhandler(500)
def server_error(e):
    current_language = session.get('language', 'en')
    return render_template('500.html', current_language=current_language, languages=LANGUAGES), 500

# Test 404 route for development
@app.route('/test-404')
def test_404():
    # Only accessible in development mode
    if app.debug:
        abort(404)
    return redirect(url_for('index'))

# Test 500 route for development
@app.route('/test-500')
def test_500():
    # Only accessible in development mode
    if app.debug:
        abort(500)
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

© KUJUNTI.ID