\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/yedekle24/BackupShieldv1/ |
|
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)