Исправления в ветке main

This commit is contained in:
2025-11-09 14:02:35 +06:00
parent 487f3d484c
commit a78e1d24bf
9 changed files with 55 additions and 17 deletions

View File

@@ -60,6 +60,8 @@ RUN chown -R ollama:ollama /app/data 2>/dev/null || \
(chown -R 1000:1000 /app/data 2>/dev/null || true)
# Настройки по умолчанию
ENV TZ='Asia/Omsk'
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV LCG_PROVIDER=ollama
ENV LCG_HOST=http://127.0.0.1:11434/
ENV LCG_MODEL=qwen2.5-coder:1.5b

View File

@@ -1 +1 @@
v.2.0.17
v.2.0.18

View File

@@ -1 +1 @@
v.2.0.17
v.2.0.18

View File

@@ -5,7 +5,7 @@ metadata:
namespace: lcg
data:
# Основные настройки
LCG_VERSION: "v.2.0.17"
LCG_VERSION: "v.2.0.18"
LCG_BASE_PATH: "/lcg"
LCG_SERVER_HOST: "0.0.0.0"
LCG_SERVER_PORT: "8080"

View File

@@ -5,7 +5,7 @@ metadata:
namespace: lcg
labels:
app: lcg
version: v.2.0.17
version: v.2.0.18
spec:
replicas: 1
selector:
@@ -18,7 +18,7 @@ spec:
spec:
containers:
- name: lcg
image: kuznetcovay/lcg:v.2.0.17
image: kuznetcovay/lcg:v.2.0.18
imagePullPolicy: Always
ports:
- containerPort: 8080

View File

@@ -15,11 +15,11 @@ resources:
# Common labels
# commonLabels:
# app: lcg
# version: v.2.0.17
# version: v.2.0.18
# managed-by: kustomize
# Images
# images:
# - name: lcg
# newName: kuznetcovay/lcg
# newTag: v.2.0.17
# newTag: v.2.0.18

View File

@@ -127,7 +127,6 @@ func getTokenFromCookie(r *http.Request) (string, error) {
func setAuthCookie(w http.ResponseWriter, token string) {
cookie := &http.Cookie{
Name: "auth_token",
Domain: config.AppConfig.Server.Domain,
Value: token,
Path: config.AppConfig.Server.CookiePath,
HttpOnly: true,
@@ -136,9 +135,16 @@ func setAuthCookie(w http.ResponseWriter, token string) {
MaxAge: config.AppConfig.Server.CookieTTLHours * 60 * 60,
}
// Добавляем домен если указан
// Устанавливаем Domain только если это не IP адрес и не 0.0.0.0
// При доступе по IP адресу не устанавливаем Domain, иначе cookie не будет работать
if config.AppConfig.Server.Domain != "" {
cookie.Domain = config.AppConfig.Server.Domain
domain := config.AppConfig.Server.Domain
// Проверяем, не является ли домен IP адресом или 0.0.0.0
if !isIPAddress(domain) && domain != "0.0.0.0" && domain != "::" && domain != "::1" {
cookie.Domain = domain
}
// Если domain пустой, 0.0.0.0 или IP адрес - не устанавливаем Domain
// Браузер автоматически применит cookie к текущему хосту
}
http.SetCookie(w, cookie)
@@ -156,9 +162,12 @@ func clearAuthCookie(w http.ResponseWriter) {
MaxAge: -1, // Удаляем cookie
}
// Добавляем домен если указан
// Устанавливаем Domain только если это не IP адрес
if config.AppConfig.Server.Domain != "" {
cookie.Domain = config.AppConfig.Server.Domain
domain := config.AppConfig.Server.Domain
if !isIPAddress(domain) && domain != "0.0.0.0" && domain != "::" && domain != "::1" {
cookie.Domain = domain
}
}
http.SetCookie(w, cookie)

View File

@@ -8,6 +8,8 @@ import (
"fmt"
"net/http"
"os"
"strconv"
"strings"
"time"
"github.com/direct-dev-ru/linux-command-gpt/config"
@@ -172,9 +174,16 @@ func setCSRFCookie(w http.ResponseWriter, token string) {
MaxAge: CSRFTokenLifetimeSeconds, // Минимум 12 часов в секундах
}
// Добавляем домен если указан
// Устанавливаем Domain только если это не IP адрес и не 0.0.0.0
// При доступе по IP адресу не устанавливаем Domain, иначе cookie не будет работать
if config.AppConfig.Server.Domain != "" {
cookie.Domain = config.AppConfig.Server.Domain
domain := config.AppConfig.Server.Domain
// Проверяем, не является ли домен IP адресом или 0.0.0.0
if !isIPAddress(domain) && domain != "0.0.0.0" && domain != "::" && domain != "::1" {
cookie.Domain = domain
}
// Если domain пустой, 0.0.0.0 или IP адрес - не устанавливаем Domain
// Браузер автоматически применит cookie к текущему хосту
}
http.SetCookie(w, cookie)
@@ -192,9 +201,12 @@ func СlearCSRFCookie(w http.ResponseWriter) {
MaxAge: -1,
}
// Добавляем домен если указан
// Устанавливаем Domain только если это не IP адрес
if config.AppConfig.Server.Domain != "" {
cookie.Domain = config.AppConfig.Server.Domain
domain := config.AppConfig.Server.Domain
if !isIPAddress(domain) && domain != "0.0.0.0" && domain != "::" && domain != "::1" {
cookie.Domain = domain
}
}
http.SetCookie(w, cookie)
@@ -270,3 +282,17 @@ func InitCSRFManager() error {
func GetCSRFManager() *CSRFManager {
return csrfManager
}
// isIPAddress проверяет, является ли строка IPv4 адресом
func isIPAddress(s string) bool {
parts := strings.Split(s, ".")
if len(parts) != 4 {
return false
}
for _, part := range parts {
if num, err := strconv.Atoi(part); err != nil || num < 0 || num > 255 {
return false
}
}
return true
}

View File

@@ -72,8 +72,9 @@ var ExecutePageCSSTemplate = template.Must(template.New("execute_css").Parse(`
text-align: center;
}
.header h1 {
margin: 0;
font-size: 2.5em;
margin-bottom: 10px;
font-weight: 300;
}
.header p {
opacity: 0.9;