\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/ofisbulutta.com/OfisTeknoloji/ |
|
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 |
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'] = 'ooka5mel1ai0ee2C2'
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