boxdd: Add insecure mode

This commit is contained in:
世界
2026-08-30 17:41:43 +08:00
parent b4600dd4f7
commit 0a4e4c8061
60 changed files with 1055 additions and 285 deletions
+6 -4
View File
@@ -2,6 +2,7 @@ package ocm
import (
"bytes"
"context"
"encoding/json"
"io"
"net/http"
@@ -11,6 +12,7 @@ import (
"time"
E "github.com/sagernet/sing/common/exceptions"
"github.com/sagernet/sing/service/filemanager"
)
const (
@@ -42,8 +44,8 @@ func getDefaultCredentialsPath() (string, error) {
return filepath.Join(userInfo.HomeDir, ".codex", "auth.json"), nil
}
func readCredentialsFromFile(path string) (*oauthCredentials, error) {
data, err := os.ReadFile(path)
func readCredentialsFromFile(ctx context.Context, path string) (*oauthCredentials, error) {
data, err := filemanager.ReadFile(ctx, path)
if err != nil {
return nil, err
}
@@ -55,12 +57,12 @@ func readCredentialsFromFile(path string) (*oauthCredentials, error) {
return &credentials, nil
}
func writeCredentialsToFile(credentials *oauthCredentials, path string) error {
func writeCredentialsToFile(ctx context.Context, credentials *oauthCredentials, path string) error {
data, err := json.MarshalIndent(credentials, "", " ")
if err != nil {
return err
}
return os.WriteFile(path, data, 0o600)
return filemanager.WriteFile(ctx, path, data, 0o600)
}
type oauthCredentials struct {
+6 -4
View File
@@ -2,7 +2,9 @@
package ocm
func platformReadCredentials(customPath string) (*oauthCredentials, error) {
import "context"
func platformReadCredentials(ctx context.Context, customPath string) (*oauthCredentials, error) {
if customPath == "" {
var err error
customPath, err = getDefaultCredentialsPath()
@@ -10,10 +12,10 @@ func platformReadCredentials(customPath string) (*oauthCredentials, error) {
return nil, err
}
}
return readCredentialsFromFile(customPath)
return readCredentialsFromFile(ctx, customPath)
}
func platformWriteCredentials(credentials *oauthCredentials, customPath string) error {
func platformWriteCredentials(ctx context.Context, credentials *oauthCredentials, customPath string) error {
if customPath == "" {
var err error
customPath, err = getDefaultCredentialsPath()
@@ -21,5 +23,5 @@ func platformWriteCredentials(credentials *oauthCredentials, customPath string)
return err
}
}
return writeCredentialsToFile(credentials, customPath)
return writeCredentialsToFile(ctx, credentials, customPath)
}
+6 -4
View File
@@ -2,7 +2,9 @@
package ocm
func platformReadCredentials(customPath string) (*oauthCredentials, error) {
import "context"
func platformReadCredentials(ctx context.Context, customPath string) (*oauthCredentials, error) {
if customPath == "" {
var err error
customPath, err = getDefaultCredentialsPath()
@@ -10,10 +12,10 @@ func platformReadCredentials(customPath string) (*oauthCredentials, error) {
return nil, err
}
}
return readCredentialsFromFile(customPath)
return readCredentialsFromFile(ctx, customPath)
}
func platformWriteCredentials(credentials *oauthCredentials, customPath string) error {
func platformWriteCredentials(ctx context.Context, credentials *oauthCredentials, customPath string) error {
if customPath == "" {
var err error
customPath, err = getDefaultCredentialsPath()
@@ -21,5 +23,5 @@ func platformWriteCredentials(credentials *oauthCredentials, customPath string)
return err
}
}
return writeCredentialsToFile(credentials, customPath)
return writeCredentialsToFile(ctx, credentials, customPath)
}
+3 -2
View File
@@ -179,6 +179,7 @@ func NewService(ctx context.Context, logger log.ContextLogger, tag string, optio
usageTracker = &AggregatedUsage{
LastUpdated: time.Now(),
Combinations: make([]CostCombination, 0),
ctx: ctx,
filePath: options.UsagesPath,
logger: logger,
}
@@ -222,7 +223,7 @@ func (s *Service) Start(stage adapter.StartStage) error {
s.userManager.UpdateUsers(s.users)
credentials, err := platformReadCredentials(s.credentialPath)
credentials, err := platformReadCredentials(s.ctx, s.credentialPath)
if err != nil {
return E.Cause(err, "read credentials")
}
@@ -292,7 +293,7 @@ func (s *Service) getAccessToken() (string, error) {
s.credentials = newCredentials
err = platformWriteCredentials(newCredentials, s.credentialPath)
err = platformWriteCredentials(s.ctx, newCredentials, s.credentialPath)
if err != nil {
s.logger.Warn("persist refreshed token: ", err)
}
+7 -4
View File
@@ -1,6 +1,7 @@
package ocm
import (
"context"
"encoding/json"
"fmt"
"math"
@@ -12,6 +13,7 @@ import (
"github.com/sagernet/sing-box/log"
E "github.com/sagernet/sing/common/exceptions"
"github.com/sagernet/sing/service/filemanager"
)
type UsageStats struct {
@@ -56,6 +58,7 @@ type AggregatedUsage struct {
LastUpdated time.Time `json:"last_updated"`
Combinations []CostCombination `json:"combinations"`
mutex sync.Mutex
ctx context.Context
filePath string
logger log.ContextLogger
lastSaveTime time.Time
@@ -1072,7 +1075,7 @@ func (u *AggregatedUsage) Load() error {
u.LastUpdated = time.Time{}
u.Combinations = nil
data, err := os.ReadFile(u.filePath)
data, err := filemanager.ReadFile(u.ctx, u.filePath)
if err != nil {
if os.IsNotExist(err) {
return nil
@@ -1106,12 +1109,12 @@ func (u *AggregatedUsage) Save() error {
}
tmpFile := u.filePath + ".tmp"
err = os.WriteFile(tmpFile, data, 0o644)
err = filemanager.WriteFile(u.ctx, tmpFile, data, 0o644)
if err != nil {
return err
}
defer os.Remove(tmpFile)
err = os.Rename(tmpFile, u.filePath)
defer filemanager.Remove(u.ctx, tmpFile)
err = filemanager.Rename(u.ctx, tmpFile, u.filePath)
if err == nil {
u.saveMutex.Lock()
u.lastSaveTime = time.Now()