Welcome to my personal place for love, peace and happiness❣️

Hi, I’m DeepSeek Coder. Feel free to ask me anything about coding.

Какая то Мега крутая китайская Great модель https://chat.deepseek.com тут можно попросить код написать бесплатно. https://github.com/deepseek-ai/DeepSeek-Coder-V2

———

Привет! Создание такого сайта на Python с использованием Flask и SSL включает несколько шагов. Вот пример кода, который реализует основные требования:

1. Установите Flask и Flask-SSLify, если они еще не установлены:
```bash
pip install Flask Flask-SSLify
```

2. Создайте файл `app.py` с следующим содержимым:

```python
from flask import Flask, request, redirect, url_for, render_template_string, session
from flask_sslify import SSLify
import os

app = Flask(__name__)
sslify = SSLify(app)

# Настройка секретного ключа для сессии
app.secret_key = os.urandom(24)

# Пароль для авторизации
PASSWORD = os.getenv('FLASK_PASSWORD')

# Путь к SSL сертификатам
SSL_CERT = os.getenv('SSL_CERT')
SSL_KEY = os.getenv('SSL_KEY')

# Список сохраненных сообщений
messages = []

@app.route('/')
def index():
    if 'logged_in' not in session:
        return redirect(url_for('login'))
    return render_template_string('''
        <h1>Hello, World!</h1>
        <form method="post" action="/save">
            <input type="text" name="message" placeholder="Enter your message">
            <button type="submit">Save</button>
        </form>
        <form method="get" action="/search">
            <input type="text" name="query" placeholder="Search messages">
            <button type="submit">Search</button>
        </form>
        <ul>
            {% for message in messages %}
                <li>{{ message }}</li>
            {% endfor %}
        </ul>
    ''', messages=messages)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        password = request.form['password']
        if password == PASSWORD:
            session['logged_in'] = True
            return redirect(url_for('index'))
        else:
            return 'Invalid password'
    return '''
        <form method="post">
            <input type="password" name="password" placeholder="Enter password">
            <button type="submit">Login</button>
        </form>
    '''

@app.route('/save', methods=['POST'])
def save():
    if 'logged_in' not in session:
        return redirect(url_for('login'))
    message = request.form['message']
    messages.append(message)
    with open('messages.txt', 'a') as f:
        f.write(message + '\n')
    return redirect(url_for('index'))

@app.route('/search')
def search():
    if 'logged_in' not in session:
        return redirect(url_for('login'))
    query = request.args.get('query')
    results = [msg for msg in messages if query in msg]
    return render_template_string('''
        <h1>Search Results</h1>
        <ul>
            {% for result in results %}
                <li>{{ result }}</li>
            {% endfor %}
        </ul>
        <a href="/">Back to Home</a>
    ''', results=results)

if __name__ == '__main__':
    app.run(ssl_context=(SSL_CERT, SSL_KEY), host='0.0.0.0', port=443)
```

3. Запустите сервер, указав пароль и пути к SSL сертификатам:
```bash
export FLASK_PASSWORD=your_password
export SSL_CERT=/path/to/cert.pem
export SSL_KEY=/path/to/key.pem
python app.py
```

Этот код создает простой сайт с авторизацией по паролю, SSL-шифрованием, страницей "Hello, World!", полем для ввода текста с сохранением на сервере в файл и поиском уже сохраненных сообщений. Убедитесь, что у вас есть SSL сертификаты и ключи, и укажите правильные пути к ним.

а вот пример от GPT4o на аналогичный Промт:

Создание веб-сайта с авторизацией по паролю, SSL-сертификатами, простым вводом текста и поиском сохраненных сообщений можно выполнить с использованием популярного фреймворка Flask. Flask — это легковесный и гибкий фреймворк для создания веб-приложений на Python.

Для реализации этого функционала нам потребуются следующие шаги:
1. Установка необходимых библиотек.
2. Создание главного файла приложения.
3. Настройка SSL.
4. Реализация авторизации.
5. Обработка текстового поля для ввода и сохранения сообщений.
6. Реализация поиска по сохраненным сообщениям.

### Шаг 1: Установка зависимостей

Убедитесь, что у вас установлен Python. Установите Flask и другие необходимые библиотеки:

```sh
pip install flask flask-wtf
```

### Шаг 2: Создание главного файла приложения

Создадим файл `app.py`, который будет содержать основной код нашего приложения:

```python
from flask import Flask, request, render_template, redirect, url_for, session
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
import ssl
import os

app = Flask(__name__)
app.secret_key = os.urandom(24)

admin_password = os.getenv('ADMIN_PASSWORD')

messages_file = 'messages.txt'


class MessageForm(FlaskForm):
    message = StringField('Message', validators=[DataRequired()])
    submit = SubmitField('Submit')


@app.route('/')
def index():
    return 'Hello World'


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        password = request.form['password']
        if password == admin_password:
            session['logged_in'] = True
            return redirect(url_for('home'))
        else:
            return 'Invalid password', 403
    return render_template('login.html')


@app.route('/home', methods=['GET', 'POST'])
def home():
    if not session.get('logged_in'):
        return redirect(url_for('login'))

    form = MessageForm()
    messages = load_messages()

    if form.validate_on_submit():
        with open(messages_file, 'a') as f:
            f.write(form.message.data + '\n')
        return redirect(url_for('home'))

    return render_template('home.html', form=form, messages=messages)


@app.route('/search', methods=['GET'])
def search():
    if not session.get('logged_in'):
        return redirect(url_for('login'))

    query = request.args.get('query')
    messages = load_messages()
    results = [msg for msg in messages if query.lower() in msg.lower()]

    return render_template('search.html', query=query, results=results)


def load_messages():
    if not os.path.exists(messages_file):
        return []
    with open(messages_file, 'r') as f:
        return f.readlines()


if __name__ == '__main__':
    admin_password = 'your_admin_password_here'  # Change this to the desired password

    context = ssl.SSLContext(ssl.PROTOCOL_TLS)
    context.load_cert_chain(certfile='cert.pem', keyfile='key.pem')

    app.run(ssl_context=context, host='0.0.0.0', port=5000, debug=True)
```

### Шаг 3: Настройка SSL

Для SSL сертификации создадим самоподписанный сертификат (в реальной среде используйте сертификаты из официальных источников):

```sh
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem
```

### Шаг 4: Шаблоны HTML

Создадим простые HTML-шаблоны для страниц входа, домашней страницы и поиска. Создадим папку `templates` и добавим в нее следующие файлы:

#### login.html

```html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <form method="post">
        <label for="password">Password:</label>
        <input type="password" id="password" name="password">
        <button type="submit">Login</button>
    </form>
</body>
</html>
```

#### home.html

```html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>
    <form method="post">
        {{ form.csrf_token }}
        {{ form.message.label }} {{ form.message }}<br>
        {{ form.submit }}
    </form>

    <h2>Saved Messages</h2>
    <ul>
    {% for message in messages %}
        <li>{{ message }}</li>
    {% endfor %}
    </ul>
    
    <form action="{{ url_for('search') }}" method="get">
        <input type="text" name="query" placeholder="Search messages">
        <button type="submit">Search</button>
    </form>
</body>
</html>
```

#### search.html

```html
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Search Results</title>
</head>
<body>
    <h2>Search Results for "{{ query }}"</h2>
    <ul>
    {% for result in results %}
        <li>{{ result }}</li>
    {% endfor %}
    </ul>
    <a href="{{ url_for('home') }}">Back to Home</a>
</body>
</html>
```

### Шаг 5: Запуск сервера

Перед запуском сервера установите переменную окружения для пароля администратора:

```sh
export ADMIN_PASSWORD=your_admin_password_here
```

Запустите сервер:

```sh
python app.py
```

Теперь ваш сайт будет доступен на https://localhost:5000. Перейдите на `/login`, введите ваш пароль и получите доступ к функционалу ввода и поиска сообщений.

Это базовое приложение можно расширять и улучшать по мере необходимости.
Follow this blog
Send
Share
Pin
6 mo   AI