mirror of
https://github.com/Rayzggz/server_torii.git
synced 2025-06-16 20:21:22 +08:00
fix: Lock block and system log out error
This commit is contained in:
@ -2,7 +2,7 @@ port: "25555"
|
|||||||
web_path: "/torii"
|
web_path: "/torii"
|
||||||
rule_path: "/www/server_torii/config/rules"
|
rule_path: "/www/server_torii/config/rules"
|
||||||
error_page: "/www/server_torii/config/error_page"
|
error_page: "/www/server_torii/config/error_page"
|
||||||
log_path: "/www/server_torii/log/access.log"
|
log_path: "/www/server_torii/log/"
|
||||||
node_name: "Server Torii"
|
node_name: "Server Torii"
|
||||||
connecting_host_headers:
|
connecting_host_headers:
|
||||||
- "Torii-Real-Host"
|
- "Torii-Real-Host"
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package dataType
|
package dataType
|
||||||
|
|
||||||
|
import "server_torii/internal/utils"
|
||||||
|
|
||||||
type UserRequest struct {
|
type UserRequest struct {
|
||||||
RemoteIP string
|
RemoteIP string
|
||||||
Uri string
|
Uri string
|
||||||
@ -34,4 +36,5 @@ type HTTPFloodRule struct {
|
|||||||
type SharedMemory struct {
|
type SharedMemory struct {
|
||||||
HTTPFloodSpeedLimitCounter *Counter
|
HTTPFloodSpeedLimitCounter *Counter
|
||||||
HTTPFloodSameURILimitCounter *Counter
|
HTTPFloodSameURILimitCounter *Counter
|
||||||
|
Logger *utils.LogxManager
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,8 @@ import (
|
|||||||
|
|
||||||
type LogxManager struct {
|
type LogxManager struct {
|
||||||
basePath string
|
basePath string
|
||||||
access *os.File
|
|
||||||
loggers map[string]*zap.Logger
|
loggers map[string]*zap.Logger
|
||||||
mu sync.Mutex
|
mu sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewManager(base string) *LogxManager {
|
func NewManager(base string) *LogxManager {
|
||||||
@ -25,24 +24,18 @@ func NewManager(base string) *LogxManager {
|
|||||||
if err := os.MkdirAll(m.basePath, 0744); err != nil {
|
if err := os.MkdirAll(m.basePath, 0744); err != nil {
|
||||||
log.Printf("failed to create base log dir %s: %v", m.basePath, err)
|
log.Printf("failed to create base log dir %s: %v", m.basePath, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
accessPath := filepath.Join(m.basePath, "access.log")
|
|
||||||
f, err := os.OpenFile(accessPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
|
||||||
if err != nil {
|
|
||||||
panic(fmt.Sprintf("failed to open access.log: %v", err))
|
|
||||||
}
|
|
||||||
m.access = f
|
|
||||||
log.SetOutput(f)
|
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *LogxManager) getLogger(host string) *zap.Logger {
|
func (m *LogxManager) getLogger(host string) *zap.Logger {
|
||||||
m.mu.Lock()
|
m.mu.RLock()
|
||||||
defer m.mu.Unlock()
|
|
||||||
if lg, ok := m.loggers[host]; ok {
|
if lg, ok := m.loggers[host]; ok {
|
||||||
|
m.mu.RUnlock()
|
||||||
return lg
|
return lg
|
||||||
}
|
}
|
||||||
|
m.mu.RUnlock()
|
||||||
|
m.mu.Lock()
|
||||||
|
defer m.mu.Unlock()
|
||||||
dir := filepath.Join(m.basePath, host)
|
dir := filepath.Join(m.basePath, host)
|
||||||
if err := os.MkdirAll(dir, 0744); err != nil {
|
if err := os.MkdirAll(dir, 0744); err != nil {
|
||||||
log.Printf("failed to create log dir %s: %v", dir, err)
|
log.Printf("failed to create log dir %s: %v", dir, err)
|
||||||
|
5
main.go
5
main.go
@ -5,6 +5,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"server_torii/internal/config"
|
"server_torii/internal/config"
|
||||||
"server_torii/internal/dataType"
|
"server_torii/internal/dataType"
|
||||||
@ -38,7 +39,8 @@ func main() {
|
|||||||
log.Printf("Ready to start server on port %s", cfg.Port)
|
log.Printf("Ready to start server on port %s", cfg.Port)
|
||||||
|
|
||||||
//set log file
|
//set log file
|
||||||
logFile, err := os.OpenFile(cfg.LogPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
|
defaultLogPath := filepath.Join(cfg.LogPath + "server_torii.log")
|
||||||
|
logFile, err := os.OpenFile(defaultLogPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to open log file: %v", err)
|
log.Fatalf("Failed to open log file: %v", err)
|
||||||
}
|
}
|
||||||
@ -54,6 +56,7 @@ func main() {
|
|||||||
sharedMem := &dataType.SharedMemory{
|
sharedMem := &dataType.SharedMemory{
|
||||||
HTTPFloodSpeedLimitCounter: dataType.NewCounter(max(runtime.NumCPU()*8, 16), utils.FindMaxRateTime(ruleSet.HTTPFloodRule.HTTPFloodSpeedLimit)),
|
HTTPFloodSpeedLimitCounter: dataType.NewCounter(max(runtime.NumCPU()*8, 16), utils.FindMaxRateTime(ruleSet.HTTPFloodRule.HTTPFloodSpeedLimit)),
|
||||||
HTTPFloodSameURILimitCounter: dataType.NewCounter(max(runtime.NumCPU()*8, 16), utils.FindMaxRateTime(ruleSet.HTTPFloodRule.HTTPFloodSameURILimit)),
|
HTTPFloodSameURILimitCounter: dataType.NewCounter(max(runtime.NumCPU()*8, 16), utils.FindMaxRateTime(ruleSet.HTTPFloodRule.HTTPFloodSameURILimit)),
|
||||||
|
Logger: utils.NewManager(cfg.LogPath),
|
||||||
}
|
}
|
||||||
|
|
||||||
//GC
|
//GC
|
||||||
|
Reference in New Issue
Block a user