示例#1
0
func LoadServers() (servers *Servers, err error) {
	servers = new(Servers)
	*servers = make(Servers)
	MergedConfig, err := revel.LoadConfig(SERVERS_CONF)

	if err != nil {
		if err.Error() == "not found" {
			err = nil
			return
		}
		err = errors.New(fmt.Sprintf("Could not load config file \"%s\" : %s", SERVERS_CONF, err.Error()))
		return
	}

	for _, sectionName := range MergedConfig.Raw().Sections() {

		if sectionName == "DEFAULT" || strings.HasSuffix(sectionName, CMD_SECTION_SUFFIX) {
			continue
		}
		MergedConfig.SetSection(sectionName)

		server := NewServerFromConfig(MergedConfig)
		(*server).Label = sectionName

		if MergedConfig.HasSection(sectionName + CMD_SECTION_SUFFIX) {
			MergedConfig.SetSection(sectionName + CMD_SECTION_SUFFIX)
			(*server).Commands = *LoadOptionsFromConfig(MergedConfig)
		}

		(*servers)[sectionName] = server
	}
	return
}
示例#2
0
文件: send.go 项目: 11101171/whale
func InitEmail() {
	conf, err := revel.LoadConfig("app.conf")
	if err != nil {
		revel.INFO.Panicln("Email Load app.conf failed")
	}

	config = fmt.Sprintf(
		`{"username":"******","password":"******","host":"%s","port":%d,"from":"%s"}`,
		conf.StringDefault("mail.loginUsername", ""),
		conf.StringDefault("mail.loginPassword", ""),
		conf.StringDefault("mail.host", ""),
		conf.IntDefault("mail.port", 25),
		conf.StringDefault("mail.from", ""),
	)
	queueSize := conf.IntDefault("mail.queueSize", 20)
	revel.INFO.Printf(mate, queueSize)
	sendChannel = make(chan *Email, queueSize)

	go func() {
		for {
			select {
			case m, ok := <-sendChannel:
				if !ok {
					revel.INFO.Println("email send successful", m)
					return
				}
				if err := m.Send(); err != nil {
					revel.ERROR.Println("SendMail:", err.Error())
				}
			}
		}
	}()
}
func loadPriorConfig(filename string) (*revel.MergedConfig, error) {
	filename = addSuffix(filename)

	// load overrided config
	if revel.RunMode != "test" {
		c, err := loadOverrideConfig(filename)
		if err == nil {
			return c, err
		}
	}

	// load enviromental config
	c, err := revel.LoadConfig(revel.RunMode + getSeparator() + filename)
	if err == nil {
		return c, err
	}

	// load root config
	return revel.LoadConfig(filename)
}
示例#4
0
文件: cron.go 项目: 11101171/whale
func InitCorn() {
	conf, err := revel.LoadConfig("app.conf")
	if err != nil {
		revel.ERROR.Panicln("读取app.conf失败")
	}
	cronPoolSize, _ := conf.Raw().Int(revel.RunMode, "cron.poolSize")
	workPool = make(chan bool, cronPoolSize)
	mainCron = cron.New()
	// job := NewCommandJob("11111", "zhangsan", "ls")
	// mainCron.Schedule(Every(5*time.Second+5*time.Nanosecond), job)
	// AddJob("1 1 10 14,18 9 ?", job)
	mainCron.Start()
	revel.INFO.Printf(mate, cronPoolSize)
}
示例#5
0
func revel_db(project_dir string) (*sql.DB, error) {
	CONFIG, err := revel.LoadConfig("app.conf")
	if err != nil {
		return nil, err
	}

	driver := CONFIG.StringDefault("db.driver", "mysql")
	host := CONFIG.StringDefault("db.host", "127.0.0.1")
	port := CONFIG.IntDefault("db.port", 3306)
	user := CONFIG.StringDefault("db.username", "mym_dev_user")
	pass := CONFIG.StringDefault("db.password", "mym_dev_pass")
	name := CONFIG.StringDefault("db.database", "mym_dev")

	dsn := symbol.DSNFormat(host, port, user, pass, name)
	return sql.Open(driver, dsn)
}
示例#6
0
文件: base.go 项目: 11101171/whale
func InitDB() *gorp.DbMap {
	// connect to db using standard Go database/sql API
	// use whatever database/sql driver you wish
	conf, err := revel.LoadConfig("app.conf")
	CheckErr(err, "Load app.conf failed")
	mysqluser, _ := conf.Raw().String(revel.RunMode, "mysql.user")
	mysqlpass, _ := conf.Raw().String(revel.RunMode, "mysql.pass")
	mysqlurls, _ := conf.Raw().String(revel.RunMode, "mysql.urls")
	mysqldb, _ := conf.Raw().String(revel.RunMode, "mysql.db")

	db, err := sql.Open("mymysql",
		fmt.Sprintf("tcp:%s:3306*%s/%s/%s",
			mysqlurls,
			mysqldb,
			mysqluser,
			mysqlpass,
		),
	)
	CheckErr(err, "mysql.Open.failed")

	// construct a gorp DbMap
	dbmap = &gorp.DbMap{Db: db, Dialect: gorp.MySQLDialect{"InnoDB", "UTF8"}}

	setColumnSizes := func(t *gorp.TableMap, colSizes map[string]int) {
		for col, size := range colSizes {
			t.ColMap(col).MaxSize = size
		}
	}
	userTable := dbmap.AddTableWithName(User{}, "s_user")
	userTable.SetKeys(false, "UserId")
	userTable.ColMap("Username").SetUnique(true).SetNotNull(true)
	userTable.ColMap("Password").SetNotNull(true)
	userTable.ColMap("Role").SetNotNull(true)
	setColumnSizes(userTable, map[string]int{
		"UserId":   50,
		"Username": 50,
		"Password": 50,
		"Role":     1,
	})

	agentAable := dbmap.AddTableWithName(Agent{}, "o_agent")
	agentAable.SetKeys(false, "AgentId")
	agentAable.ColMap("Host").SetNotNull(true)
	agentAable.ColMap("Port").SetNotNull(true)
	agentAable.ColMap("LoginName").SetNotNull(true)
	agentAable.ColMap("LoginPass").SetNotNull(true)
	setColumnSizes(agentAable, map[string]int{
		"Host":         100,
		"Port":         4,
		"LoginName":    30,
		"LoginPass":    100,
		"InitShellCmd": 2000,
		"Memo":         500,
		"UserId":       45,
	})

	cmdAable := dbmap.AddTableWithName(Cmd{}, "o_cmd")
	cmdAable.SetKeys(false, "CmdId")
	cmdAable.ColMap("Shell").SetNotNull(true)
	setColumnSizes(cmdAable, map[string]int{
		"Shell":   100,
		"CmdId":   45,
		"AgentId": 45,
	})

	serverAable := dbmap.AddTableWithName(Server{}, "p_server")
	serverAable.SetKeys(false, "ServerId")
	serverAable.ColMap("Theme").SetNotNull(true)
	serverAable.ColMap("Content").SetNotNull(true)
	// setColumnSizes(serverAable, map[string]int{
	// "Theme":   100,
	// "Content": 30000,
	// })

	// Task
	taskTable := dbmap.AddTableWithName(Task{}, "t_task")
	taskTable.SetKeys(false, "TaskId")
	taskTable.ColMap("TaskName").SetNotNull(true)
	taskTable.ColMap("Command").SetNotNull(true)
	setColumnSizes(taskTable, map[string]int{
		"TaskName":      100,
		"Command":       3000,
		"NotifyContent": 3000,
	})

	taskGroupTable := dbmap.AddTableWithName(TaskGroup{}, "t_task_group")
	taskGroupTable.SetKeys(false, "TaskGroupId")
	taskGroupTable.ColMap("GroupName").SetNotNull(true)
	setColumnSizes(taskGroupTable, map[string]int{
		"TaskGroupId": 45,
		"GroupName":   300,
		"Description": 2000,
	})

	taskLogTable := dbmap.AddTableWithName(TaskLog{}, "t_task_log")
	taskLogTable.SetKeys(false, "TaskLogId")
	setColumnSizes(taskLogTable, map[string]int{
		"TaskName": 100,
		"Output":   30000,
		"Error":    30000,
	})

	dbmap.TraceOn("[gorp]", revel.INFO)
	err = dbmap.CreateTablesIfNotExists()
	CheckErr(err, "Create tables failed")

	return dbmap
}
func loadOverrideConfig(filename string) (*revel.MergedConfig, error) {
	return revel.LoadConfig(overrideDir + getSeparator() + filename)
}