set_xgini.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package config
  2. import (
  3. "bufio"
  4. "bytes"
  5. "fmt"
  6. "strings"
  7. )
  8. func SetXginiBuffer(configBuffer *bytes.Buffer, xginiMap map[string]string) {
  9. tmpBuffer := new(bytes.Buffer)
  10. writer := bufio.NewWriter(tmpBuffer)
  11. scanner := bufio.NewScanner(configBuffer)
  12. for scanner.Scan() {
  13. line := scanner.Text()
  14. for k, v := range xginiMap {
  15. if strings.Contains(line, k) {
  16. parts := strings.SplitN(line, "=", 2)
  17. if len(parts) == 2 {
  18. newLine := strings.TrimSpace(parts[0]) + "= " + v + ";"
  19. line = fmt.Sprint(" " + newLine)
  20. break // 停止继续处理该行
  21. }
  22. }
  23. }
  24. _, err := writer.WriteString(line + "\n")
  25. if err != nil {
  26. fmt.Println(err)
  27. return
  28. }
  29. }
  30. err := writer.Flush()
  31. if err != nil {
  32. fmt.Println(err)
  33. return
  34. }
  35. // 使用 tmpBuffer 中的内容更新 configBuffer
  36. configBuffer.Reset()
  37. _, err = configBuffer.ReadFrom(tmpBuffer)
  38. if err != nil {
  39. fmt.Println(err)
  40. return
  41. }
  42. //fmt.Println("配置文件已成功更新。")
  43. }
  44. func GetXginiValue(buffer *bytes.Buffer, key string) (string, error) {
  45. scanner := bufio.NewScanner(buffer)
  46. for scanner.Scan() {
  47. line := scanner.Text()
  48. if strings.Contains(line, key) {
  49. parts := strings.Split(line, "=")
  50. if len(parts) > 1 && strings.TrimSpace(parts[0]) == key {
  51. valuePart := strings.Split(parts[1], ";")
  52. if len(valuePart) > 0 {
  53. return strings.TrimSpace(valuePart[0]), nil
  54. }
  55. }
  56. }
  57. }
  58. if err := scanner.Err(); err != nil {
  59. return "", err
  60. }
  61. return "", fmt.Errorf("未查找到xugu.ini %s 字段,key not found", key)
  62. }