首页 > 其他分享 >go 读取.ini配置文件

go 读取.ini配置文件

时间:2024-11-15 18:07:37浏览次数:1  
标签:Key 配置文件 Section MustString ini conf go MINIO string

安装所需的库

go get gopkg.in/ini.v1

 

我这里集成到gin中配合之前的解密一起使用

package conf

import (
    "fmt"
    "gin__tte/utils/encryption"
    "log"

    "gopkg.in/ini.v1"
)

const SERVER_NAME = "gin_system"

var (
    SECRET       string
    MODE         string
    RUNPORT      string
    STORAGE_TYPE string

    MYSQL_USER     string
    MYSQL_PWD      string
    MYSQL_HOST     string
    MYSQL_PORT     string
    MYSQL_DATABASE string

    REDIS_HOST    string
    REDIS_PORT    string
    REDIS_PWD     string
    REDIS_LIBRARY int

    MINIO_HOST   string
    MINIO_PORT   string
    MINIO_USER   string
    MINIO_PWD    string
    MINIO_BUCKET string
    MINIO_SECURE bool

    COS_SECRET_ID  string
    COS_SECRET_KEY string
    COS_REGION     string
    COS_SCHEME     string
    COS_BUCKET     string
    COS_DOMAIN     string
)

func init() {
    conf, err := ini.Load("config.ini")
    if err != nil {
        fmt.Println("配置文件读取错误,请检查文件路径:", err)
        log.Fatalln("配置文件读取错误,请检查文件路径")
    }

    SECRET = conf.Section("serve").Key("secret").MustString("123456")
    MODE = conf.Section("serve").Key("mode").MustString("debug")
    RUNPORT = conf.Section("serve").Key("port").MustString("0.0.0.0:8080")
    STORAGE_TYPE = conf.Section("serve").Key("storage").MustString("minio")

    MYSQL_HOST = conf.Section("mysql").Key("host").MustString("127.0.0.1")
    MYSQL_PORT = conf.Section("mysql").Key("port").MustString("3306")
    MYSQL_USER = conf.Section("mysql").Key("user").MustString("")
    MYSQL_PWD = conf.Section("mysql").Key("password").MustString("")
    MYSQL_DATABASE = conf.Section("mysql").Key("database").MustString("")

    REDIS_HOST = conf.Section("redis").Key("host").MustString("127.0.0.1")
    REDIS_PORT = conf.Section("redis").Key("port").MustString("6379")
    REDIS_PWD = conf.Section("redis").Key("password").MustString("")
    REDIS_LIBRARY = conf.Section("redis").Key("library").MustInt(0)

    MINIO_HOST = conf.Section("minio").Key("host").MustString("127.0.0.1")
    MINIO_PORT = conf.Section("minio").Key("port").MustString("9000")
    MINIO_USER = conf.Section("minio").Key("user").MustString("")
    MINIO_PWD = conf.Section("minio").Key("password").MustString("")
    MINIO_BUCKET = conf.Section("minio").Key("bucket").MustString("")
    MINIO_SECURE = conf.Section("minio").Key("secure").MustBool(false)

    COS_SECRET_ID = conf.Section("cos").Key("secret_id").MustString("")
    COS_SECRET_KEY = conf.Section("cos").Key("secret_key").MustString("")
    COS_REGION = conf.Section("cos").Key("region").MustString("")
    COS_SCHEME = conf.Section("cos").Key("scheme").MustString("")
    COS_BUCKET = conf.Section("cos").Key("bucket").MustString("")
    COS_DOMAIN = conf.Section("cos").Key("domain").MustString("")

    MYSQL_USER = encryption.GetDataAes(SECRET, MYSQL_USER)
    REDIS_PWD = encryption.GetDataAes(SECRET, REDIS_PWD)
    MYSQL_PWD = encryption.GetDataAes(SECRET, MYSQL_PWD)
    // MINIO_USER = encryption.GetDataAes(SECRET, MINIO_USER)
    // MINIO_PWD = encryption.GetDataAes(SECRET, MINIO_PWD)

    if MYSQL_USER == "" || MYSQL_PWD == "" || REDIS_PWD == "" {
        log.Fatalln("配置文件解密错误,请检查文件")
    }

}

 

我的ini文件

[serve]
secret = R1546eOPjJzXwYoGC0rxIONR
mode = debug
port = 0.0.0.0:8081
storage = minio


[mysql]
host = 192.168.1.123
port = 3306
user = HDqnWhtu8Zyuv8OXShf27Q==
password = BKuhzXY4VmElqJG1Annvjw==
database = gin_tte


[redis]
host = 192.168.1.123
port = 6379
password = 54vFJmKuP4MGYBH6oG72dg==
library = 1

[minio]
host = 192.168.1.123
port = 9000
user = ZVF8VV2KKWH687VZ41MY
password = Vya75gyOQmAWnNKVkuLvwendrpaJDswK0LinK
bucket = media
secure = false

[cos]
secret_id = 你的SecretID
secret_key = 你的SecretKey
region = 你的region在go中好像没有用到
scheme = https
bucket = 你的bucket在go中好像没有用到
domain = 你的domain自定义域名访问

 

标签:Key,配置文件,Section,MustString,ini,conf,go,MINIO,string
From: https://www.cnblogs.com/moon3496694/p/18548444

相关文章

  • 大数据项目-Django基于机器学习实现的音乐推荐系统
    《[含文档+PPT+源码等]精品Django基于机器学习实现的音乐推荐系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sqlyog后台管理系统涉......
  • 大数据项目-Django基于Python实现的农产品销售量数据分析与可视化系统
    《[含文档+PPT+源码等]精品Django基于Python实现的农产品销售量数据分析与可视化系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!数据库管理工具:phpstudy/Navicat或者phpstudy/sqly......
  • GoFurther - Chapter 5: Database Setup and Configuration
     zzh@ZZHPC:/zdata/Github/greenlight$dockerpullpostgreszzh@ZZHPC:/zdata/Github/greenlight$dockerrun--namepostgres17-p5432:5432-ePOSTGRES_USER=root-ePOSTGRES_PASSWORD=root-dpostgres:latest zzh@ZZHPC:~$dockerexec-itpostgres17psql......
  • 出现了智能涌现效应!Vidu 引领视觉模型迈入上下文时代,无问芯穹Infini-AI异构云平台助力
    昨日,在Vidu上线逾百日之际,生数科技宣布Vidu1.5新版本(www.vidu.studio)问世,该版本实现了世界领先水平的突破:理解多样化的输入,突破“一致性”难题。无问芯穹作为生数科技重要战略产品伙伴,以Infini-AI异构云平台的澎湃算力和训练产品,助力生数科技模型迭代,持续引领视觉模型“一致......
  • cmu15545笔记-Join算法(Join Algorithms)
    目录OverviewNestedLoopJoinNaïveBlockIndexSort-MergeJoinHashJoinSimpleHashJoinPartitionHashJoin总结Overview输出形式:早物化与晚物化(OLAP一般都是晚物化)代价分析:一般用IO次数计算(最终结果可能落盘,也可能不落盘,所以我们只计算输出结果之前的IO次数)。Join左边称为......
  • 迅为RK3588开发板Android12动态替换开机logo
    性能强iTOP-3588开发板采用瑞芯微RK3588处理器,是全新一代AloT高端应用芯片,采用8nmLP制程,搭载八核64位CPU,四核Cortex-A76和四核Cortex-A55架构,主频高达2.4GHz。 四核心架构GPU集成MaliG610MP4四核GPU、支持OpenGLES1.1、2.0、3.2,OpenCL2.2和Vulkan1.2。带有MMU的特殊2D硬......
  • Python-django-flask游戏虚拟物品道具商城管理系统
    文章目录项目介绍系统开发技术路线具体实现截图开发技术django项目代码结构参考解析论文大纲目录参考核心代码部分展示源码/演示视频获取方式项目介绍游戏虚拟物品管理系统的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、游戏虚拟物品......
  • 第 13 章 -Go 语言 接口
    在面向对象编程中,接口(Interface)是一种规范的定义,它描述了一组操作方法(方法签名)但不提供具体的实现。接口是实现抽象的一种方式,它允许将行为与实现分离,从而支持灵活的设计和代码复用。下面我将从接口的定义、实现以及接口的多态性三个方面来展开详细讲解。Go语言中的接口G......
  • go fiber: 抛出自定义异常
    一,代码:1,自定义错误类:packageconfigimport("fmt")//定义错误代码和错误信息typeMyErrorstruct{CodeintMsgstring}//需要定义通用的Error()方法func(eMyError)Error()string{returnfmt.Sprintf("Code:%d,Msg:%s",e.Code,e.M......
  • 【ARM】MDK-烧录配置文件无权限访问
    【更多软件使用问题请点击亿道电子官方网站】1、问题场景客户代码编译正常、调试出现报错<Error:FlashDownloadfailed-"Cortex-M4">仿真器识别正常,keil-Debug内显示相关信息、设备启动正常。记录排查步骤,找到配置文件位置,查找相关文件,确认读取权限,后续成功烧录。......