// 个人信息 func (this *MainController) Profile() { beego.ReadFromRequest(&this.Controller) user, _ := models.UserGetById(this.userId) if this.isPost() { flash := beego.NewFlash() user.Email = this.GetString("email") user.Update() password1 := this.GetString("password1") password2 := this.GetString("password2") if password1 != "" { if len(password1) < 6 { flash.Error("密码长度必须大于6位") flash.Store(&this.Controller) this.redirect(beego.URLFor(".Profile")) } else if password2 != password1 { flash.Error("两次输入的密码不一致") flash.Store(&this.Controller) this.redirect(beego.URLFor(".Profile")) } else { user.Salt = string(utils.RandomCreateBytes(10)) user.Password = libs.Md5([]byte(password1 + user.Salt)) user.Update() } } flash.Success("修改成功!") flash.Store(&this.Controller) this.redirect(beego.URLFor(".Profile")) } this.Data["pageTitle"] = "个人信息" this.Data["user"] = user this.display() }
// 任务执行日志列表 func (this *TaskController) Logs() { taskId, _ := this.GetInt("id") page, _ := this.GetInt("page") if page < 1 { page = 1 } task, err := models.TaskGetById(taskId) if err != nil { this.showMsg(err.Error()) } result, count := models.TaskLogGetList(page, this.pageSize, "task_id", task.Id) list := make([]map[string]interface{}, len(result)) for k, v := range result { row := make(map[string]interface{}) row["id"] = v.Id row["start_time"] = beego.Date(time.Unix(v.CreateTime, 0), "Y-m-d H:i:s") row["process_time"] = float64(v.ProcessTime) / 1000 row["ouput_size"] = libs.SizeFormat(float64(len(v.Output))) row["status"] = v.Status list[k] = row } this.Data["pageTitle"] = "任务执行日志" this.Data["list"] = list this.Data["task"] = task this.Data["pageBar"] = libs.NewPager(page, int(count), this.pageSize, beego.URLFor("TaskController.Logs", "id", taskId), true).ToString() this.display() }
// FilterAuth prevents the user from accessing protected pages if they are not // logged in. func FilterAuth(ctx *context.Context) { if ctx.Input.GetData("user") == nil { ctx.Redirect(302, fmt.Sprintf( "%s?redirect=%s", beego.URLFor("UserController.Login"), url.QueryEscape(ctx.Request.URL.Path), )) } }
// 任务列表 func (this *TaskController) List() { page, _ := this.GetInt("page") if page < 1 { page = 1 } groupId, _ := this.GetInt("groupid") filters := make([]interface{}, 0) if groupId > 0 { filters = append(filters, "group_id", groupId) } result, count := models.TaskGetList(page, this.pageSize, filters...) list := make([]map[string]interface{}, len(result)) for k, v := range result { row := make(map[string]interface{}) row["id"] = v.Id row["name"] = v.TaskName row["cron_spec"] = v.CronSpec row["status"] = v.Status row["description"] = v.Description e := jobs.GetEntryById(v.Id) if e != nil { row["next_time"] = beego.Date(e.Next, "Y-m-d H:i:s") row["prev_time"] = "-" if e.Prev.Unix() > 0 { row["prev_time"] = beego.Date(e.Prev, "Y-m-d H:i:s") } else if v.PrevTime > 0 { row["prev_time"] = beego.Date(time.Unix(v.PrevTime, 0), "Y-m-d H:i:s") } row["running"] = 1 } else { row["next_time"] = "-" if v.PrevTime > 0 { row["prev_time"] = beego.Date(time.Unix(v.PrevTime, 0), "Y-m-d H:i:s") } else { row["prev_time"] = "-" } row["running"] = 0 } list[k] = row } // 分组列表 groups, _ := models.TaskGroupGetList(1, 100) this.Data["pageTitle"] = "任务列表" this.Data["list"] = list this.Data["groups"] = groups this.Data["groupid"] = groupId this.Data["pageBar"] = libs.NewPager(page, int(count), this.pageSize, beego.URLFor("TaskController.List", "groupid", groupId), true).ToString() this.display() }
// 登录 func (this *MainController) Login() { if this.userId > 0 { this.redirect("/") } beego.ReadFromRequest(&this.Controller) if this.isPost() { flash := beego.NewFlash() username := strings.TrimSpace(this.GetString("username")) password := strings.TrimSpace(this.GetString("password")) remember := this.GetString("remember") if username != "" && password != "" { user, err := models.UserGetByName(username) errorMsg := "" if err != nil || user.Password != libs.Md5([]byte(password+user.Salt)) { errorMsg = "帐号或密码错误" } else if user.Status == -1 { errorMsg = "该帐号已禁用" } else { user.LastIp = this.getClientIp() user.LastLogin = time.Now().Unix() models.UserUpdate(user) authkey := libs.Md5([]byte(this.getClientIp() + "|" + user.Password + user.Salt)) if remember == "yes" { this.Ctx.SetCookie("auth", strconv.Itoa(user.Id)+"|"+authkey, 7*86400) } else { this.Ctx.SetCookie("auth", strconv.Itoa(user.Id)+"|"+authkey) } this.redirect(beego.URLFor("TaskController.List")) } flash.Error(errorMsg) flash.Store(&this.Controller) this.redirect(beego.URLFor("MainController.Login")) } } this.TplName = "main/login.html" }
func (this *GroupController) List() { page, _ := this.GetInt("page") if page < 1 { page = 1 } list, count := models.TaskGroupGetList(page, this.pageSize) this.Data["pageTitle"] = "分组列表" this.Data["list"] = list this.Data["pageBar"] = libs.NewPager(page, int(count), this.pageSize, beego.URLFor("GroupController.List"), true).ToString() this.display() }
// 立即执行 func (this *TaskController) Run() { id, _ := this.GetInt("id") task, err := models.TaskGetById(id) if err != nil { this.showMsg(err.Error()) } job, err := jobs.NewJobFromTask(task) if err != nil { this.showMsg(err.Error()) } job.Run() this.redirect(beego.URLFor("TaskController.ViewLog", "id", job.GetLogId())) }
// 暂停任务 func (this *TaskController) Pause() { id, _ := this.GetInt("id") task, err := models.TaskGetById(id) if err != nil { this.showMsg(err.Error()) } jobs.RemoveJob(id) task.Status = 0 task.Update() refer := this.Ctx.Request.Referer() if refer == "" { refer = beego.URLFor("TaskController.List") } this.redirect(refer) }
//登录状态验证 func (this *BaseController) auth() { arr := strings.Split(this.Ctx.GetCookie("auth"), "|") if len(arr) == 2 { idstr, password := arr[0], arr[1] userId, _ := strconv.Atoi(idstr) if userId > 0 { user, err := models.UserGetById(userId) if err == nil && password == libs.Md5([]byte(this.getClientIp()+"|"+user.Password+user.Salt)) { this.userId = user.Id this.userName = user.UserName this.user = user } } } if this.userId == 0 && (this.controllerName != "main" || (this.controllerName == "main" && this.actionName != "logout" && this.actionName != "login")) { this.redirect(beego.URLFor("MainController.Login")) } }
func (node *tagURLForNode) Execute(ctx *p2.ExecutionContext, buffer *bytes.Buffer) *p2.Error { args := make([]string, len(node.objectEvaluators)) for i, ev := range node.objectEvaluators { obj, err := ev.Evaluate(ctx) if err != nil { return err } args[i] = obj.String() } params := make([]interface{}, len(args)-1) for i := range params { params[i] = args[i+1] } url := beego.URLFor(args[0], params...) buffer.WriteString(url) return nil }
// 启动任务 func (this *TaskController) Start() { id, _ := this.GetInt("id") task, err := models.TaskGetById(id) if err != nil { this.showMsg(err.Error()) } job, err := jobs.NewJobFromTask(task) if err != nil { this.showMsg(err.Error()) } if jobs.AddJob(task.CronSpec, job) { task.Status = 1 task.Update() } refer := this.Ctx.Request.Referer() if refer == "" { refer = beego.URLFor("TaskController.List") } this.redirect(refer) }
// 退出登录 func (this *MainController) Logout() { this.Ctx.SetCookie("auth", "") this.redirect(beego.URLFor("MainController.Login")) }