示例#1
0
文件: conf.go 项目: kulasama/gopm
func SaveLocalNodes() {
	if err := goconfig.SaveConfigFile(LocalNodes,
		path.Join(HomeDir+LocalNodesFile)); err != nil {
		log.Error("", "Fail to save localnodes.list:")
		log.Error("", "\t"+err.Error())
	}
}
示例#2
0
func InitModels() {
	if !com.IsFile(_CFG_PATH) {
		os.Create(_CFG_PATH)
	}

	var err error
	Cfg, err = goconfig.LoadConfigFile(_CFG_PATH)
	if err == nil {
		beego.Info("Initialize app.ini")
	}

	setGithubCredentials(Cfg.MustValue("github", "client_id"),
		Cfg.MustValue("github", "client_secret"))

	docLock = new(sync.RWMutex)
	blogLock = new(sync.RWMutex)

	initMaps()

	// Start check ticker.
	checkTicker = time.NewTicker(5 * time.Minute)
	go checkTickerTimer(checkTicker.C)

	// ATTENTION: you'd better comment following code when developing.
	if needCheckUpdate() {
		checkFileUpdates()

		Cfg.SetValue("app", "update_check_time", strconv.Itoa(int(time.Now().Unix())))
		goconfig.SaveConfigFile(Cfg, _CFG_PATH)
	}
}
示例#3
0
func CreateIniFile() error {
	f, err := os.OpenFile("./server.ini", os.O_CREATE|os.O_RDWR, 0666)
	if err != nil {
		return err
	}

	defer f.Close()

	config, err = goconfig.LoadConfigFile("./server.ini")
	if err != nil {
		return err
	}

	config.SetSectionComments("App", "")
	config.SetSectionComments("User", "")

	config.SetValue("App", "IP", "127.0.0.1")
	config.SetValue("App", "Port", "8080")
	config.SetValue("User", "username", "admin")
	config.SetValue("User", "password", helper.MD5("admin"))

	err = goconfig.SaveConfigFile(config, "./server.ini")
	if err != nil {
		return err
	}

	return nil
}
示例#4
0
文件: gen.go 项目: nashtsai/gopm
// scan a directory and gen a gopm file
func runGen(ctx *cli.Context) {
	setup(ctx)

	if !com.IsExist(".gopmfile") {
		os.Create(".gopmfile")
	}

	gf, err := goconfig.LoadConfigFile(".gopmfile")
	if err != nil {
		log.Error("gen", "Cannot load gopmfile:")
		log.Fatal("", "\t"+err.Error())
	}

	// Get dependencies.
	imports := doc.GetAllImports([]string{workDir},
		parseTarget(gf.MustValue("target", "path")), ctx.Bool("example"))

	for _, p := range imports {
		p = doc.GetProjectPath(p)
		if strings.HasSuffix(workDir, p) {
			continue
		}
		if value := gf.MustValue("deps", p); len(value) == 0 {
			gf.SetValue("deps", p, "")
		}
	}

	err = goconfig.SaveConfigFile(gf, ".gopmfile")
	if err != nil {
		log.Error("gen", "Fail to save gopmfile:")
		log.Fatal("", "\t"+err.Error())
	}

	log.Success("SUCC", "gen", "Generate gopmfile successfully!")
}
示例#5
0
func main() {
	read, err := goconfig.LoadConfigFile("read.ini")
	if err != nil {
		fmt.Println(err)
	}
	goconfig.PrettyFormat = false

	/*ini cfg配置文件读取*/
	fmt.Println(read.GetSectionList())              // 获取选项名称
	fmt.Println(read.GetKeyList("Cody"))            // 获取Cody选项下的key
	fmt.Println(read.GetSection("Cody"))            // 以map形式获取Cody选项下的key和value的值
	fmt.Println(read.GetSectionComments("work"))    // 获取选项work上的以“#”和“;”开头的注解
	fmt.Println(read.GetKeyComments("Cody", "sex")) // 获取选项Cody的sex键上的注解
	fmt.Println(read.GetValue("Cody", "name"))      // 获取选项Cody的name键的值

	read.DeleteKey("Cody", "hell")
	// /**/
	// read.SetValue("Cody", "name", "cody.guo") // 设置选项Cody的name键的值为cody.guo
	goconfig.SaveConfigFile(read, "read.ini") // 保存

	// read.DeleteKey("work", "work")                 // 删除选项work中的work键
	// goconfig.SaveConfigFile(read, "readWrite.ini") // 另存为readWrite.ini

	// read.DeleteSection("work")                // 删除选项work
	// goconfig.SaveConfigFile(read, "read.ini") // 保存配置文件,会把 " : "的修改为" = "
}
示例#6
0
文件: config.go 项目: ncw/rclone
// SaveConfig saves configuration file.
// if configKey has been set, the file will be encrypted.
func SaveConfig() {
	if len(configKey) == 0 {
		err := goconfig.SaveConfigFile(configData, ConfigPath)
		if err != nil {
			log.Fatalf("Failed to save config file: %v", err)
		}
		err = os.Chmod(ConfigPath, 0600)
		if err != nil {
			ErrorLog(nil, "Failed to set permissions on config file: %v", err)
		}
		return
	}
	var buf bytes.Buffer
	err := goconfig.SaveConfigData(configData, &buf)
	if err != nil {
		log.Fatalf("Failed to save config file: %v", err)
	}

	f, err := os.Create(ConfigPath)
	if err != nil {
		log.Fatalf("Failed to save config file: %v", err)
	}

	fmt.Fprintln(f, "# Encrypted rclone configuration File")
	fmt.Fprintln(f, "")
	fmt.Fprintln(f, "RCLONE_ENCRYPT_V0:")

	// Generate new nonce and write it to the start of the ciphertext
	var nonce [24]byte
	n, _ := rand.Read(nonce[:])
	if n != 24 {
		log.Fatalf("nonce short read: %d", n)
	}
	enc := base64.NewEncoder(base64.StdEncoding, f)
	_, err = enc.Write(nonce[:])
	if err != nil {
		log.Fatalf("Failed to write config file: %v", err)
	}

	var key [32]byte
	copy(key[:], configKey[:32])

	b := secretbox.Seal(nil, buf.Bytes(), &nonce, &key)
	_, err = enc.Write(b)
	if err != nil {
		log.Fatalf("Failed to write config file: %v", err)
	}
	_ = enc.Close()
	err = f.Close()
	if err != nil {
		log.Fatalf("Failed to close config file: %v", err)
	}

	err = os.Chmod(ConfigPath, 0600)
	if err != nil {
		ErrorLog(nil, "Failed to set permissions on config file: %v", err)
	}
}
示例#7
0
// SaveConfig saves configuration file.
func SaveConfig() {
	err := goconfig.SaveConfigFile(ConfigFile, ConfigPath)
	if err != nil {
		log.Fatalf("Failed to save config file: %v", err)
	}
	err = os.Chmod(ConfigPath, 0600)
	if err != nil {
		log.Printf("Failed to set permissions on config file: %v", err)
	}
}
示例#8
0
文件: main.go 项目: CodyGuo/Go-Cody
func (p *ProxyConf) Write(proxy []Proxy) {
	if len(proxy) == 0 {
		return
	}
	p.load()
	for _, pro := range proxy {
		switch pro.pTtype {
		case HTTP:
			p.SetValue(HTTP, pro.ip, pro.port)
		case HTTPS:
			p.SetValue(HTTPS, pro.ip, pro.port)
		}
	}
	goconfig.SaveConfigFile(p.ConfigFile, proxyFile)
}
示例#9
0
文件: main.go 项目: pengswift/go-test
func main() {
	cfg, err := goconfig.LoadConfigFile("conf.ini")
	if err != nil {
		log.Fatalf("无法加载配置文件: %s", err)
	}

	value, err := cfg.GetValue(goconfig.DEFAULT_SECTION, "key_default")
	if err != nil {
		log.Fatalf("无法获取键值(%s): %s", "key_default", nil)
	}

	log.Printf("%s > %s: %s", goconfig.DEFAULT_SECTION, "key_default", value)

	isInsert := cfg.SetValue(goconfig.DEFAULT_SECTION, "key_default", "这是新的值")
	if err != nil {
		log.Fatalf("无法设置键值(%s): %s", "key_default", err)
	}
	log.Printf("设置键值 %s 为插入操作: %v", "key_default", isInsert)

	comment := cfg.GetSectionComments("super")
	log.Printf("分区 %s 的注释: %s", "super", comment)

	v := cfg.SetSectionComments("super", "# 这是新的分区注释")
	log.Printf("分区 %s 的注释被插入或删除: %v", "super", v)

	vInt, err := cfg.Int("must", "int")
	if err != nil {
		log.Fatalf("无法获取键值(%s): %s)", "int", err)
	}

	log.Printf("%s > %s: %v", "must", "int", vInt)

	vBool := cfg.MustBool("must", "bool")
	log.Printf("%s > %s: %v", "must", "bool", vBool)

	vBool = cfg.MustBool("must", "bool404")
	log.Printf("%s > %s: %v", "must", "bool", vBool)

	ok := cfg.DeleteKey("must", "string")
	log.Printf("删除键值 %s 是否成功: %v", "string", ok)

	err = goconfig.SaveConfigFile(cfg, "conf_save.ini")
	if err != nil {
		log.Fatalf("无法保存配置文件: %s", err)
	}
}
示例#10
0
文件: gen.go 项目: puma007/gopm
func runGen(ctx *cli.Context) {
	setup(ctx)

	if !com.IsExist(".gopmfile") {
		os.Create(".gopmfile")
	}

	gf, err := goconfig.LoadConfigFile(".gopmfile")
	if err != nil {
		log.Error("gen", "Cannot load gopmfile:")
		log.Fatal("", "\t"+err.Error())
	}

	targetPath := parseTarget(gf.MustValue("target", "path"))
	// Get and set dependencies.
	imports := doc.GetAllImports([]string{workDir}, targetPath, ctx.Bool("example"), false)
	for _, p := range imports {
		p = doc.GetProjectPath(p)
		// Skip subpackage(s) of current project.
		if isSubpackage(p, targetPath) {
			continue
		}

		// Check if user specified the version.
		if value := gf.MustValue("deps", p); len(value) == 0 {
			gf.SetValue("deps", p, "")
		}
	}

	// Get and set resources.
	res := make([]string, 0, len(commonRes))
	for _, cr := range commonRes {
		if com.IsExist(cr) {
			res = append(res, cr)
		}
	}
	gf.SetValue("res", "include", strings.Join(res, "|"))

	err = goconfig.SaveConfigFile(gf, ".gopmfile")
	if err != nil {
		log.Error("gen", "Fail to save gopmfile:")
		log.Fatal("", "\t"+err.Error())
	}

	log.Success("SUCC", "gen", "Generate gopmfile successfully!")
}
示例#11
0
文件: config.go 项目: jexwn/gopm
func runConfig(ctx *cli.Context) {
	setup(ctx)

	if len(ctx.Args()) == 0 {
		log.Error("config", "Cannot start command:")
		log.Fatal("", "\tNo section specified")
	}

	switch ctx.Args()[0] {
	case "github":
		if len(ctx.Args()) < 3 {
			log.Error("config", "Cannot config section 'github'")
			log.Fatal("", "\tNot enough arguments for client_id and client_secret")
		}
		doc.Cfg.SetValue("github", "client_id", ctx.Args()[1])
		doc.Cfg.SetValue("github", "client_secret", ctx.Args()[2])
		goconfig.SaveConfigFile(doc.Cfg, path.Join(doc.HomeDir, doc.GOPM_CONFIG_FILE))
	}

	log.Success("SUCC", "config", "Command executed successfully!")
}
func main() {
	cfg, err := goconfig.LoadConfigFile("conf.ini")
	if err != nil {
		log.Fatalf("无法加载配置文件:%s", err)
	}
	value, err := cfg.GetValue(goconfig.DEFAULT_SECTION, "key_default")
	if err != nil {
		log.Fatalf("无法获取值:%s", err)
	}
	log.Printf("%s > %s:%s", goconfig.DEFAULT_SECTION, "key_default", value)
	isInsert := cfg.SetValue(goconfig.DEFAULT_SECTION, "key_default", "这是新的值")
	log.Printf("设在键值%s: %v", "key_default", isInsert)
	comment := cfg.GetSectionComments("super")
	log.Printf("分区%s的注释:%s", "supper", comment)
	_ = cfg.SetSectionComments("super", "# 这是一个新的注释")
	_, err = cfg.Int("must", "int")
	err = goconfig.SaveConfigFile(cfg, "conf_save.ini")
	if err != nil {
		log.Fatalf("无法获取值:%s", err)
	}

}
示例#13
0
文件: main.go 项目: CodyGuo/Go-Cody
func (p *ProxyConf) Update() {
	p.Read()
	ok := make(chan bool)
	for _, proxy := range p.proxy {
		ip := proxy.ip
		prot := proxy.port
		go func() {
			_, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%s", ip, prot), 10*time.Second)
			if err != nil {
				fmt.Printf("代理服务器 [%s:%s] 不可用,已删除.\n", ip, prot)
				p.DeleteKey(HTTP, ip)
				p.DeleteKey(HTTPS, ip)
			}
			ok <- true
		}()
	}
	for range p.proxy {
		<-ok
	}
	goconfig.SaveConfigFile(p.ConfigFile, proxyFile)
	p.Reload()
}
示例#14
0
func main() {
	// 读取证书文件
	rootPEM, err := ioutil.ReadFile("cert.pem")
	if err != nil {
		log.Println("读取 cert.pem 出错:", err, "请检查文件是否存在")
		return
	}
	roots := x509.NewCertPool()
	ok := roots.AppendCertsFromPEM(rootPEM)
	if !ok {
		log.Println("证书分析失败,请检查证书文件是否正确")
		return
	}

	// 加载配置文件
	cfg, err := goconfig.LoadConfigFile("client.ini")
	if err != nil {
		log.Println("配置文件加载失败,自动重置配置文件:", err)
		cfg, err = goconfig.LoadFromData([]byte{})
		if err != nil {
			log.Println(err)
			return
		}
	}

	var (
		port, ok1       = cfg.MustValueSet("client", "port", "7071")
		key, ok2        = cfg.MustValueSet("client", "key", "eGauUecvzS05U5DIsxAN4n2hadmRTZGBqNd2zsCkrvwEBbqoITj36mAMk4Unw6Pr")
		serverHost, ok3 = cfg.MustValueSet("server", "host", "localhost")
		serverPort, ok4 = cfg.MustValueSet("server", "port", "8081")
	)

	// 如果缺少配置则保存为默认配置
	if ok1 || ok2 || ok3 || ok4 {
		err = goconfig.SaveConfigFile(cfg, "client.ini")
		if err != nil {
			log.Println("配置文件保存失败:", err)
		}
	}

	ln, err := net.Listen("tcp", ":"+port)
	if err != nil {
		log.Println(err)
		return
	}
	defer ln.Close()

	log.Println("|>>>>>>>>>>>>>>>|<<<<<<<<<<<<<<<|")
	log.Println("程序版本:" + VERSION)
	log.Println("代理端口:" + port)
	log.Println("Key:" + key)
	log.Println("服务器地址:" + serverHost + ":" + serverPort)
	log.Println("|>>>>>>>>>>>>>>>|<<<<<<<<<<<<<<<|")

	s := &serve{
		serverHost: serverHost,
		serverPort: serverPort,
		key:        key,
		conf: &tls.Config{
			RootCAs: roots,
		},
	}

	// 登录
	if err = s.updateSession(); err != nil {
		log.Println("与服务器连接失败:", err)
		return
	}
	log.Println("登录成功,服务器连接完毕")
	go s.updateSessionLoop()

	for {
		conn, err := ln.Accept()
		if err != nil {
			log.Println(err)
			continue
		}
		go s.handleConnection(conn)
	}
}
示例#15
0
// SaveConfig saves configuration file.
func SaveConfig() error {
	return goconfig.SaveConfigFile(Cfg, "conf/app.ini")
}
示例#16
0
func (c *CliConfig) WriteProfile(p, id, key string) {
	cfg := c.ConfigFile
	cfg.SetValue(p, "aws_access_key_id", id)
	cfg.SetValue(p, "aws_secret_access_key", key)
	goconfig.SaveConfigFile(c.ConfigFile, c.CredentialsFile)
}
func main() {
	// 创建并获取一个 ConfigFile 对象,以进行后续操作
	// 文件名支持相对和绝对路径
	cfg, err := goconfig.LoadConfigFile("conf.ini")
	if err != nil {
		log.Fatalf("无法加载配置文件:%s", err)
	}

	// 加载完成后所有数据均已存入内存,任何对文件的修改操作都不会影响到已经获取到的对象

	// >>>>>>>>>>>>>>> 基本读写操作 >>>>>>>>>>>>>>>

	// 对默认分区进行普通读取操作
	value, err := cfg.GetValue(goconfig.DEFAULT_SECTION, "key_default")
	if err != nil {
		log.Fatalf("无法获取键值(%s):%s", "key_default", err)
	}
	log.Printf("%s > %s: %s", goconfig.DEFAULT_SECTION, "key_default", value)

	// 对已有的键进行值重写操作,返回值为 bool 类型,表示是否为插入操作
	isInsert := cfg.SetValue(goconfig.DEFAULT_SECTION, "key_default", "这是新的值")
	log.Printf("设置键值 %s 为插入操作:%v", "key_default", isInsert)

	// 对不存在的键进行插入操作
	isInsert = cfg.SetValue(goconfig.DEFAULT_SECTION, "key_new", "这是新插入的键")
	log.Printf("设置键值 %s 为插入操作:%v", "key_new", isInsert)

	// 传入空白字符串也可直接操作默认分区
	value, err = cfg.GetValue("", "key_default")
	if err != nil {
		log.Fatalf("无法获取键值(%s):%s", "key_default", err)
	}
	log.Printf("%s > %s: %s", goconfig.DEFAULT_SECTION, "key_default", value)

	// 获取冒号为分隔符的键值
	value, err = cfg.GetValue("super", "key_super2")
	if err != nil {
		log.Fatalf("无法获取键值(%s):%s", "key_super2", err)
	}
	log.Printf("%s > %s: %s", "super", "key_super2", value)

	// <<<<<<<<<<<<<<< 基本读写操作 <<<<<<<<<<<<<<<

	// >>>>>>>>>>>>>>> 对注释进行读写操作 >>>>>>>>>>>>>>>

	// 获取某个分区的注释
	comment := cfg.GetSectionComments("super")
	log.Printf("分区 %s 的注释:%s", "super", comment)

	// 获取某个键的注释
	comment = cfg.GetKeyComments("super", "key_super")
	log.Printf("键 %s 的注释:%s", "key_super", comment)

	// 设置某个键的注释,返回值为 true 时表示注释被插入或删除(空字符串),false 表示注释被重写
	v := cfg.SetKeyComments("super", "key_super", "# 这是新的键注释")
	log.Printf("键 %s 的注释被插入或删除:%v", "key_super", v)

	// 设置某个分区的注释,返回值效果同上
	v = cfg.SetSectionComments("super", "# 这是新的分区注释")
	log.Printf("分区 %s 的注释被插入或删除:%v", "super", v)

	// <<<<<<<<<<<<<<< 对注释进行读写操作 <<<<<<<<<<<<<<<

	// >>>>>>>>>>>>>>> 自动转换和 Must 系列方法 >>>>>>>>>>>>>>>

	// 自动转换类型读取操作,直接返回指定类型,error 类型用于指示是否发生错误
	vInt, err := cfg.Int("must", "int")
	if err != nil {
		log.Fatalf("无法获取键值(%s):%s", "int", err)
	}
	log.Printf("%s > %s: %v", "must", "int", vInt)

	// Must 系列方法,一定返回某个类型的值;如果失败则返回零值
	vBool := cfg.MustBool("must", "bool")
	log.Printf("%s > %s: %v", "must", "bool", vBool)

	// 若键不存在则返回零值,此例应返回 false
	vBool = cfg.MustBool("must", "bool404")
	log.Printf("%s > %s: %v", "must", "bool404", vBool)

	// <<<<<<<<<<<<<<< 自动转换和 Must 系列方法 <<<<<<<<<<<<<<<

	// 删除键值,返回值用于表示是否删除成功
	ok := cfg.DeleteKey("must", "string")
	log.Printf("删除键值 %s 是否成功:%v", "string", ok)

	// 保存 ConfigFile 对象到文件系统,保存后的键顺序与读取时的一样
	err = goconfig.SaveConfigFile(cfg, "conf_save.ini")
	if err != nil {
		log.Fatalf("无法保存配置文件:%s", err)
	}
}
示例#18
0
// SaveConfig saves configuration file.
func SaveConfig() error {
	os.MkdirAll("custom", os.ModePerm)
	return goconfig.SaveConfigFile(Cfg, "custom/app.ini")
}
示例#19
0
文件: main.go 项目: bsdos/record
func main() {
	m := macaron.Classic()
	m.Get("/", func() string {
		return "Hello world!"
	})

	m.Get("/:username/:leixing", func(ctx *macaron.Context) string {
		leixing := ctx.Params(":leixing")
		username := ctx.Params(":username")
		conf, _ := goconfig.LoadConfigFile("data.ini")
		times, _ := conf.Int(username, "times")
		if leixing == "use" {
			if times > 0 {
				times -= 1
				stimes := strconv.Itoa(times)
				conf.SetValue(username, "times", stimes)
				goconfig.SaveConfigFile(conf, "data.ini")
				return "yes "
			} else {
				return "no"
			}
		} else if leixing == "query" {
			return strconv.Itoa(times)
		}

		return ""
	})
	m.Get("/:username/:leixing/:num/:password", func(ctx *macaron.Context) string {
		leixing := ctx.Params(":leixing")
		snum := ctx.Params(":num")
		username := ctx.Params(":username")
		password := ctx.Params(":password")
		conf, _ := goconfig.LoadConfigFile("data.ini")
		pwd, _ := conf.GetValue("app", "password")
		if password != pwd {
			return "sorry!"
		}
		fmt.Println(username)
		times, _ := conf.Int(username, "times")
		fmt.Println(times)
		num, _ := strconv.Atoi(snum)
		if leixing == "remove" {
			times = times - num
			fmt.Println(times)
			stimes := strconv.Itoa(times)
			if times > 0 {
				conf.SetValue(username, "times", stimes)
				goconfig.SaveConfigFile(conf, "data.ini")
			}
			return "now is " + stimes
		} else if leixing == "add" {
			times = times + num
			stimes := strconv.Itoa(times)
			conf.SetValue(username, "times", stimes)
			goconfig.SaveConfigFile(conf, "data.ini")
			return "now is " + stimes
		}
		return ""
	})

	m.Run()
}
示例#20
0
文件: config.go 项目: CodyGuo/Go-Cody
func (b *BuildConfig) saveConfigFile() error {
	return goconfig.SaveConfigFile(b.configFile, configName)
}
示例#21
0
func checkDocUpdates() {
	beego.Trace("Checking documentation updates")

	var tmpTree struct {
		Tree []*docNode
	}
	err := com.HttpGetJSON(httpClient, "https://api.github.com/repos/beego/beedoc/git/trees/master?recursive=1&"+githubCred, &tmpTree)
	if err != nil {
		beego.Error("models.checkDocUpdates -> get trees:", err.Error())
		return
	}

	updated := Cfg.MustValue("log", "updated")
	// Compare SHA.
	files := make([]com.RawFile, 0, len(tmpTree.Tree))
	for _, node := range tmpTree.Tree {
		// Skip non-md files and "README.MD".
		if !strings.HasSuffix(node.Path, ".md") || node.Path == "README.md" {
			continue
		}

		// Trim ".md".
		name := node.Path[:len(node.Path)-3]
		if checkSHA(name, node.Sha) {
			beego.Info("Need to update:", name)
			files = append(files, &rawFile{
				name:   name,
				rawURL: "https://raw.github.com/beego/beedoc/master/" + node.Path,
			})
		}

		// For save purpose, reset name.
		node.Path = name

		// Add to updated list for syncing docs. of multiple languages.
		if strings.Index(updated, name+"|") == -1 {
			updated += name + "|"
		}
	}
	Cfg.SetValue("log", "updated", updated)
	goconfig.SaveConfigFile(Cfg, _CFG_PATH)

	// Fetch files.
	if err := com.FetchFiles(httpClient, files, nil); err != nil {
		beego.Error("models.checkDocUpdates -> fetch files:", err.Error())
		return
	}

	// Update data.
	for _, f := range files {
		fw, err := os.Create("docs/" + f.Name() + ".md")
		if err != nil {
			beego.Error("models.checkDocUpdates -> open file:", err.Error())
			return
		}

		_, err = fw.Write(f.Data())
		fw.Close()
		if err != nil {
			beego.Error("models.checkDocUpdates -> write data:", err.Error())
			return
		}
	}

	beego.Trace("Finish check documentation updates")
	initDocMap()

	// Save documentation information.
	f, err := os.Create("conf/docTree.json")
	if err != nil {
		beego.Error("models.checkDocUpdates -> save data:", err.Error())
		return
	}
	defer f.Close()

	e := json.NewEncoder(f)
	err = e.Encode(&tmpTree)
	if err != nil {
		beego.Error("models.checkDocUpdates -> encode data:", err.Error())
		return
	}
}
示例#22
0
func InstallPost(ctx *middleware.Context, form auth.InstallForm) {
	if setting.InstallLock {
		ctx.Handle(404, "install.InstallPost", errors.New("Installation is prohibited"))
		return
	}

	ctx.Data["Title"] = "Install"
	ctx.Data["PageIsInstall"] = true

	renderDbOption(ctx)
	ctx.Data["CurDbOption"] = form.Database

	if ctx.HasError() {
		ctx.HTML(200, INSTALL)
		return
	}

	if _, err := exec.LookPath("git"); err != nil {
		ctx.RenderWithErr("Fail to test 'git' command: "+err.Error(), INSTALL, &form)
		return
	}

	// Pass basic check, now test configuration.
	// Test database setting.
	dbTypes := map[string]string{"MySQL": "mysql", "PostgreSQL": "postgres", "SQLite3": "sqlite3"}
	models.DbCfg.Type = dbTypes[form.Database]
	models.DbCfg.Host = form.Host
	models.DbCfg.User = form.User
	models.DbCfg.Pwd = form.Passwd
	models.DbCfg.Name = form.DatabaseName
	models.DbCfg.SslMode = form.SslMode
	models.DbCfg.Path = form.DatabasePath

	// Set test engine.
	var x *xorm.Engine
	if err := models.NewTestEngine(x); err != nil {
		// NOTE: should use core.QueryDriver (github.com/go-xorm/core)
		if strings.Contains(err.Error(), `Unknown database type: sqlite3`) {
			ctx.RenderWithErr("Your release version does not support SQLite3, please download the official binary version "+
				"from http://gogs.io/docs/installation/install_from_binary.md, NOT the gobuild version.", INSTALL, &form)
		} else {
			ctx.RenderWithErr("Database setting is not correct: "+err.Error(), INSTALL, &form)
		}
		return
	}

	// Test repository root path.
	if err := os.MkdirAll(form.RepoRootPath, os.ModePerm); err != nil {
		ctx.RenderWithErr("Repository root path is invalid: "+err.Error(), INSTALL, &form)
		return
	}

	// Check run user.
	curUser := os.Getenv("USER")
	if len(curUser) == 0 {
		curUser = os.Getenv("USERNAME")
	}
	// Does not check run user when the install lock is off.
	if form.RunUser != curUser {
		ctx.RenderWithErr("Run user isn't the current user: "******" -> "+curUser, INSTALL, &form)
		return
	}

	// Save settings.
	setting.Cfg.SetValue("database", "DB_TYPE", models.DbCfg.Type)
	setting.Cfg.SetValue("database", "HOST", models.DbCfg.Host)
	setting.Cfg.SetValue("database", "NAME", models.DbCfg.Name)
	setting.Cfg.SetValue("database", "USER", models.DbCfg.User)
	setting.Cfg.SetValue("database", "PASSWD", models.DbCfg.Pwd)
	setting.Cfg.SetValue("database", "SSL_MODE", models.DbCfg.SslMode)
	setting.Cfg.SetValue("database", "PATH", models.DbCfg.Path)

	setting.Cfg.SetValue("repository", "ROOT", form.RepoRootPath)
	setting.Cfg.SetValue("", "RUN_USER", form.RunUser)
	setting.Cfg.SetValue("server", "DOMAIN", form.Domain)
	setting.Cfg.SetValue("server", "ROOT_URL", form.AppUrl)

	if len(strings.TrimSpace(form.SmtpHost)) > 0 {
		setting.Cfg.SetValue("mailer", "ENABLED", "true")
		setting.Cfg.SetValue("mailer", "HOST", form.SmtpHost)
		setting.Cfg.SetValue("mailer", "USER", form.SmtpEmail)
		setting.Cfg.SetValue("mailer", "PASSWD", form.SmtpPasswd)

		setting.Cfg.SetValue("service", "REGISTER_EMAIL_CONFIRM", com.ToStr(form.RegisterConfirm == "on"))
		setting.Cfg.SetValue("service", "ENABLE_NOTIFY_MAIL", com.ToStr(form.MailNotify == "on"))
	}

	setting.Cfg.SetValue("", "RUN_MODE", "prod")

	setting.Cfg.SetValue("log", "MODE", "file")

	setting.Cfg.SetValue("security", "INSTALL_LOCK", "true")

	os.MkdirAll("custom/conf", os.ModePerm)
	if err := goconfig.SaveConfigFile(setting.Cfg, path.Join(setting.CustomPath, "conf/app.ini")); err != nil {
		ctx.RenderWithErr("Fail to save configuration: "+err.Error(), INSTALL, &form)
		return
	}

	GlobalInit()

	// Create admin account.
	if err := models.CreateUser(&models.User{Name: form.AdminName, Email: form.AdminEmail, Passwd: form.AdminPasswd,
		IsAdmin: true, IsActive: true}); err != nil {
		if err != models.ErrUserAlreadyExist {
			setting.InstallLock = false
			ctx.RenderWithErr("Admin account setting is invalid: "+err.Error(), INSTALL, &form)
			return
		}
		log.Info("Admin account already exist")
	}

	log.Info("First-time run install finished!")
	ctx.Flash.Success("Welcome! We're glad that you choose Gogs, have fun and take care.")
	ctx.Redirect("/user/login")
}
示例#23
0
文件: install.go 项目: last1here/gogs
func InstallPost(ctx *middleware.Context, form auth.InstallForm) {
	if setting.InstallLock {
		ctx.Handle(404, "InstallPost", errors.New("Installation is prohibited"))
		return
	}

	ctx.Data["Title"] = ctx.Tr("install.install")
	ctx.Data["PageIsInstall"] = true

	renderDbOption(ctx)
	ctx.Data["CurDbOption"] = form.Database

	if ctx.HasError() {
		ctx.HTML(200, INSTALL)
		return
	}

	if _, err := exec.LookPath("git"); err != nil {
		ctx.RenderWithErr(ctx.Tr("install.test_git_failed", err), INSTALL, &form)
		return
	}

	// Pass basic check, now test configuration.
	// Test database setting.
	dbTypes := map[string]string{"MySQL": "mysql", "PostgreSQL": "postgres", "SQLite3": "sqlite3"}
	models.DbCfg.Type = dbTypes[form.Database]
	models.DbCfg.Host = form.DbHost
	models.DbCfg.User = form.DbUser
	models.DbCfg.Pwd = form.DbPasswd
	models.DbCfg.Name = form.DatabaseName
	models.DbCfg.SslMode = form.SslMode
	models.DbCfg.Path = form.DatabasePath

	// Set test engine.
	var x *xorm.Engine
	if err := models.NewTestEngine(x); err != nil {
		// NOTE: should use core.QueryDriver (github.com/go-xorm/core)
		if strings.Contains(err.Error(), `Unknown database type: sqlite3`) {
			ctx.RenderWithErr(ctx.Tr("install.sqlite3_not_available"), INSTALL, &form)
		} else {
			ctx.RenderWithErr(ctx.Tr("install.invalid_db_setting", err), INSTALL, &form)
		}
		return
	}

	// Test repository root path.
	if err := os.MkdirAll(form.RepoRootPath, os.ModePerm); err != nil {
		ctx.RenderWithErr(ctx.Tr("install.invalid_repo_path", err), INSTALL, &form)
		return
	}

	// Check run user.
	curUser := os.Getenv("USER")
	if len(curUser) == 0 {
		curUser = os.Getenv("USERNAME")
	}
	// Does not check run user when the install lock is off.
	if form.RunUser != curUser {
		ctx.RenderWithErr(ctx.Tr("install.run_user_not_match", form.RunUser, curUser), INSTALL, &form)
		return
	}

	// Check admin password.
	if form.AdminPasswd != form.ConfirmPasswd {
		ctx.RenderWithErr(ctx.Tr("form.password_not_match"), INSTALL, form)
		return
	}

	// Save settings.
	setting.Cfg.SetValue("database", "DB_TYPE", models.DbCfg.Type)
	setting.Cfg.SetValue("database", "HOST", models.DbCfg.Host)
	setting.Cfg.SetValue("database", "NAME", models.DbCfg.Name)
	setting.Cfg.SetValue("database", "USER", models.DbCfg.User)
	setting.Cfg.SetValue("database", "PASSWD", models.DbCfg.Pwd)
	setting.Cfg.SetValue("database", "SSL_MODE", models.DbCfg.SslMode)
	setting.Cfg.SetValue("database", "PATH", models.DbCfg.Path)

	setting.Cfg.SetValue("repository", "ROOT", form.RepoRootPath)
	setting.Cfg.SetValue("", "RUN_USER", form.RunUser)
	setting.Cfg.SetValue("server", "DOMAIN", form.Domain)
	setting.Cfg.SetValue("server", "ROOT_URL", form.AppUrl)

	if len(strings.TrimSpace(form.SmtpHost)) > 0 {
		setting.Cfg.SetValue("mailer", "ENABLED", "true")
		setting.Cfg.SetValue("mailer", "HOST", form.SmtpHost)
		setting.Cfg.SetValue("mailer", "USER", form.SmtpEmail)
		setting.Cfg.SetValue("mailer", "PASSWD", form.SmtpPasswd)

		setting.Cfg.SetValue("service", "REGISTER_EMAIL_CONFIRM", com.ToStr(form.RegisterConfirm == "on"))
		setting.Cfg.SetValue("service", "ENABLE_NOTIFY_MAIL", com.ToStr(form.MailNotify == "on"))
	}

	setting.Cfg.SetValue("", "RUN_MODE", "prod")

	setting.Cfg.SetValue("log", "MODE", "file")

	setting.Cfg.SetValue("security", "INSTALL_LOCK", "true")

	os.MkdirAll("custom/conf", os.ModePerm)
	if err := goconfig.SaveConfigFile(setting.Cfg, path.Join(setting.CustomPath, "conf/app.ini")); err != nil {
		ctx.RenderWithErr(ctx.Tr("install.save_config_failed", err), INSTALL, &form)
		return
	}

	GlobalInit()

	// Create admin account.
	if err := models.CreateUser(&models.User{Name: form.AdminName, Email: form.AdminEmail, Passwd: form.AdminPasswd,
		IsAdmin: true, IsActive: true}); err != nil {
		if err != models.ErrUserAlreadyExist {
			setting.InstallLock = false
			ctx.RenderWithErr(ctx.Tr("install.invalid_admin_setting", err), INSTALL, &form)
			return
		}
		log.Info("Admin account already exist")
	}

	log.Info("First-time run install finished!")
	ctx.Flash.Success(ctx.Tr("install.install_success"))
	ctx.Redirect("/user/login")
}
示例#24
0
func Install(ctx *middleware.Context, form auth.InstallForm) {
	if base.InstallLock {
		ctx.Handle(404, "install.Install", errors.New("Installation is prohibited"))
		return
	}

	ctx.Data["Title"] = "Install"
	ctx.Data["PageIsInstall"] = true

	if ctx.Req.Method == "GET" {
		// Get and assign value to install form.
		if len(form.Host) == 0 {
			form.Host = models.DbCfg.Host
		}
		if len(form.User) == 0 {
			form.User = models.DbCfg.User
		}
		if len(form.Passwd) == 0 {
			form.Passwd = models.DbCfg.Pwd
		}
		if len(form.DatabaseName) == 0 {
			form.DatabaseName = models.DbCfg.Name
		}
		if len(form.DatabasePath) == 0 {
			form.DatabasePath = models.DbCfg.Path
		}

		if len(form.RepoRootPath) == 0 {
			form.RepoRootPath = base.RepoRootPath
		}
		if len(form.RunUser) == 0 {
			form.RunUser = base.RunUser
		}
		if len(form.Domain) == 0 {
			form.Domain = base.Domain
		}
		if len(form.AppUrl) == 0 {
			form.AppUrl = base.AppUrl
		}

		auth.AssignForm(form, ctx.Data)
		ctx.HTML(200, "install")
		return
	}

	if ctx.HasError() {
		ctx.HTML(200, "install")
		return
	}

	// Pass basic check, now test configuration.
	// Test database setting.
	dbTypes := map[string]string{"mysql": "mysql", "pgsql": "postgres", "sqlite": "sqlite3"}
	models.DbCfg.Type = dbTypes[form.Database]
	models.DbCfg.Host = form.Host
	models.DbCfg.User = form.User
	models.DbCfg.Pwd = form.Passwd
	models.DbCfg.Name = form.DatabaseName
	models.DbCfg.SslMode = form.SslMode
	models.DbCfg.Path = form.DatabasePath

	// Set test engine.
	var x *xorm.Engine
	if err := models.NewTestEngine(x); err != nil {
		if strings.Contains(err.Error(), `Unknown database type: sqlite3`) {
			ctx.RenderWithErr("Your release version does not support SQLite3, please download the official binary version "+
				"from https://github.com/gogits/gogs/wiki/Install-from-binary, NOT the gobuild version.", "install", &form)
		} else {
			ctx.RenderWithErr("Database setting is not correct: "+err.Error(), "install", &form)
		}
		return
	}

	// Test repository root path.
	if err := os.MkdirAll(form.RepoRootPath, os.ModePerm); err != nil {
		ctx.RenderWithErr("Repository root path is invalid: "+err.Error(), "install", &form)
		return
	}

	// Check run user.
	curUser := os.Getenv("USERNAME")
	if len(curUser) == 0 {
		curUser = os.Getenv("USER")
	}
	// Does not check run user when the install lock is off.
	if form.RunUser != curUser {
		ctx.RenderWithErr("Run user isn't the current user: "******" -> "+curUser, "install", &form)
		return
	}

	// Save settings.
	base.Cfg.SetValue("database", "DB_TYPE", models.DbCfg.Type)
	base.Cfg.SetValue("database", "HOST", models.DbCfg.Host)
	base.Cfg.SetValue("database", "NAME", models.DbCfg.Name)
	base.Cfg.SetValue("database", "USER", models.DbCfg.User)
	base.Cfg.SetValue("database", "PASSWD", models.DbCfg.Pwd)
	base.Cfg.SetValue("database", "SSL_MODE", models.DbCfg.SslMode)
	base.Cfg.SetValue("database", "PATH", models.DbCfg.Path)

	base.Cfg.SetValue("repository", "ROOT", form.RepoRootPath)
	base.Cfg.SetValue("", "RUN_USER", form.RunUser)
	base.Cfg.SetValue("server", "DOMAIN", form.Domain)
	base.Cfg.SetValue("server", "ROOT_URL", form.AppUrl)

	if len(strings.TrimSpace(form.SmtpHost)) > 0 {
		base.Cfg.SetValue("mailer", "ENABLED", "true")
		base.Cfg.SetValue("mailer", "HOST", form.SmtpHost)
		base.Cfg.SetValue("mailer", "USER", form.SmtpEmail)
		base.Cfg.SetValue("mailer", "PASSWD", form.SmtpPasswd)

		base.Cfg.SetValue("service", "REGISTER_EMAIL_CONFIRM", base.ToStr(form.RegisterConfirm == "on"))
		base.Cfg.SetValue("service", "ENABLE_NOTIFY_MAIL", base.ToStr(form.MailNotify == "on"))
	}

	base.Cfg.SetValue("", "RUN_MODE", "prod")

	base.Cfg.SetValue("security", "INSTALL_LOCK", "true")

	os.MkdirAll("custom/conf", os.ModePerm)
	if err := goconfig.SaveConfigFile(base.Cfg, "custom/conf/app.ini"); err != nil {
		ctx.RenderWithErr("Fail to save configuration: "+err.Error(), "install", &form)
		return
	}

	GlobalInit()

	// Create admin account.
	if _, err := models.RegisterUser(&models.User{Name: form.AdminName, Email: form.AdminEmail, Passwd: form.AdminPasswd,
		IsAdmin: true, IsActive: true}); err != nil {
		if err != models.ErrUserAlreadyExist {
			ctx.RenderWithErr("Admin account setting is invalid: "+err.Error(), "install", &form)
			return
		}
		log.Info("Admin account already exist")
	}

	log.Info("First-time run install finished!")
	ctx.Redirect("/user/login")
}
示例#25
0
func main() {
	// 读取配置文件
	cfg, err := goconfig.LoadConfigFile("server.ini")
	if err != nil {
		log.Println("配置文件加载失败,自动重置配置文件", err)
		cfg, err = goconfig.LoadFromData([]byte{})
		if err != nil {
			log.Println(err)
			return
		}
	}

	var (
		key, ok1  = cfg.MustValueSet("client", "key", "eGauUecvzS05U5DIsxAN4n2hadmRTZGBqNd2zsCkrvwEBbqoITj36mAMk4Unw6Pr")
		port, ok2 = cfg.MustValueSet("server", "port", "8081")
	)

	// 如果缺少配置则保存为默认配置
	if ok1 || ok2 {
		err = goconfig.SaveConfigFile(cfg, "server.ini")
		if err != nil {
			log.Println("配置文件保存失败:", err)
		}
	}

	// 读取公私钥
	cer, err := tls.LoadX509KeyPair("cert.pem", "key.pem")
	if err != nil {
		log.Println(err)
		return
	}

	// 监听端口
	ln, err := tls.Listen("tcp", ":"+port, &tls.Config{
		Certificates: []tls.Certificate{cer},
	})
	if err != nil {
		log.Println(err)
		return
	}
	defer ln.Close()

	s := &serve{
		key:     key,
		clients: make(map[string]uint),
	}

	// 加载完成后输出配置信息
	log.Println("|>>>>>>>>>>>>>>>|<<<<<<<<<<<<<<<|")
	log.Println("程序版本:" + version)
	log.Println("监听端口:" + port)
	log.Println("Key:" + key)
	log.Println("|>>>>>>>>>>>>>>>|<<<<<<<<<<<<<<<|")

	for {
		conn, err := ln.Accept()
		if err != nil {
			log.Println(err)
			continue
		}
		go s.handleConnection(conn)
	}
}
示例#26
0
文件: main.go 项目: CodyGuo/Go-Cody
func main() {
	// 获取当前setup路径
	filepath := os.Args[0]
	setupPath, _ := path.Split(filepath)
	fmt.Println(setupPath)

	// 安装xinetd
	xinetInserr := GetRpmInfo("xinetd-2.3.14-39.el6_4.i686")
	if xinetInserr != nil {
		err := InstallRpm(setupPath + "rpm/xinetd-2.3.14-39.el6_4.i686.rpm")
		if err != nil {
			fmt.Println(err)
		}
	}
	// 安装tftp
	tftpInserr := GetRpmInfo("tftp-server-0.49-7.el6.i686")
	if tftpInserr != nil {
		err := InstallRpm(setupPath + "rpm/tftp-server-0.49-7.el6.i686.rpm")
		if err != nil {
			fmt.Println(err)
		}
	}
	// 修改tftp配置文件
	tftperr := CopyFile(setupPath+"config/tftp", "/etc/xinetd.d/tftp")
	if tftperr != nil {
		fmt.Println(tftperr)
	}

	// 创建tftp根目录
	os.Mkdir("/data/tftproot", 000)
	os.Chmod("/data/tftproot", 0777)

	// 启动tftp服务
	StartServers("xinetd")

	/******************************************************/

	// 修改iptables防火墙配置
	configerr := CopyFile(setupPath+"config/iptables-config", "/etc/sysconfig/iptables-config")
	if configerr != nil {
		fmt.Println(configerr)
	}
	// 修改iptables防火墙配置
	iptableserr := CopyFile(setupPath+"config/iptables", "/etc/sysconfig/iptables")
	if iptableserr != nil {
		fmt.Println(iptableserr)
	}

	// 重启iptables防火墙
	StartServers("iptables")

	/******************************************************/

	// 修改数据库接收数据的大小
	mysql, mysqlerr := goconfig.LoadConfigFile("/etc/my.cnf")
	if mysqlerr != nil {
		fmt.Println(mysqlerr)
	}
	mysql.SetValue("mysqld", "max_allowed_packet", "32M")
	goconfig.SaveConfigFile(mysql, "/etc/my.cnf")

	/******************************************************/

	// 升级tomcat重启文件
	tomcatErr := CopyFile(setupPath+"config/tomcat", "/etc/init.d/tomcat")
	if tomcatErr != nil {
		fmt.Println(tomcatErr)
	}
	os.Chmod("/etc/init.d/tomcat", 0755)

	webErr := CopyFile(setupPath+"config/web.xml", "/nac/web/tomcat/conf/web.xml")
	if webErr != nil {
		fmt.Println(webErr)
	}
	os.Chmod("/nac/web/tomcat/conf/web.xml", 0755)

}
示例#27
0
func main() {
	file := os.Args[1]

	if _, err := os.Stat(file); err == nil {
		config, _ := goconfig.LoadConfigFile(file)

		app_name := os.Getenv("APP_NAME")
		domain := os.Getenv("DOMAIN")
		root_url := os.Getenv("ROOT_URL")
		mem_type := os.Getenv("MEM_TYPE")
		db_type := os.Getenv("DB_TYPE")
		ssh_port := os.Getenv("SSH_PORT")

		var mem_addr string
		var mem_port string
		if mem_type == "redis" {
			mem_addr = os.Getenv("REDIS_PORT_6379_TCP_ADDR")
			mem_port = os.Getenv("REDIS_PORT_6379_TCP_PORT")
		} else if mem_type == "memcache" {
			mem_addr = os.Getenv("MEMCACHE_PORT_11211_TCP_ADDR")
			mem_port = os.Getenv("MEMCACHE_PORT_11211_TCP_PORT")
		} else if mem_type == "memory" {

		} else {
			// Invalid Memory Type
		}

		var db_addr string
		var db_port string
		if db_type == "mysql" {
			db_addr = os.Getenv("MYSQL_PORT_3306_TCP_ADDR")
			db_port = os.Getenv("MYSQL_PORT_3306_TCP_PORT")
		} else if db_type == "postgres" {
			db_addr = os.Getenv("POSTGRES_PORT_5432_TCP_ADDR")
			db_port = os.Getenv("POSTGRES_PORT_5432_TCP_PORT")
		} else if db_type == "sqlite" {
			config.SetValue("database", "PATH", "data/gogs.db")
		} else {
			// Invalid DB Type
		}

		config.SetValue(goconfig.DEFAULT_SECTION, "APP_NAME", app_name)

		// Server
		config.SetValue("server", "DOMAIN", domain)
		config.SetValue("server", "ROOT_URL", root_url)
		if ssh_port != "" {
			config.SetValue("server", "SSH_PORT", ssh_port)
		}

		// Database
		config.SetValue("database", "DB_TYPE", db_type)
		if db_addr != "" && db_port != "" {
			config.SetValue("database", "HOST", fmt.Sprintf("%s:%s", db_addr, db_port))
		}
		if db_type == "mysql" || db_type == "postgres" {
			config.SetValue("database", "NAME", os.Getenv("DB_NAME"))
			config.SetValue("database", "USER", os.Getenv("DB_USER"))
			config.SetValue("database", "PASSWORD", os.Getenv("DB_PASSWORD"))
		}

		// Cache
		config.SetValue("cache", "ADAPTER", mem_type)
		if mem_addr != "" && mem_port != "" {
			config.SetValue("cache", "HOST", fmt.Sprintf("%s:%s", mem_addr, mem_port))
		}

		// Session
		if mem_type == "redis" {
			config.SetValue("session", "PROVIDER", "redis")
			config.SetValue("session", "PROVIDER_CONFIG", fmt.Sprintf("%s:%s,100", mem_addr, mem_port))
		} else {
			config.SetValue("session", "PROVIDER", "memory")
		}

		goconfig.SaveConfigFile(config, file)
	} else {
		fmt.Printf("File does not exist.")
	}
}