Example #1
0
func DeleteApplication(ctx *context.Context) {
	if err := models.DeleteApplicationByID(ctx.ParamsInt64(":id")); err != nil {
		ctx.Error(500, err.Error())
		return
	}

	ctx.Redirect("/applications")
}
Example #2
0
func DeleteCollector(ctx *context.Context) {
	if err := models.DeleteCollectorByID(ctx.ParamsInt64(":id")); err != nil {
		ctx.Error(500, err.Error())
		return
	}

	ctx.Redirect("/collectors")
}
Example #3
0
func RegenerateApplicationSecret(ctx *context.Context) {
	if err := models.RegenerateApplicationToken(ctx.ParamsInt64(":id")); err != nil {
		ctx.Error(500, err.Error())
		return
	}

	ctx.Redirect(fmt.Sprintf("/applications/%d", ctx.ParamsInt64(":id")))
}
Example #4
0
func RegenerateCollectorSecret(ctx *context.Context) {
	if err := models.RegenerateCollectorSecret(ctx.ParamsInt64(":id")); err != nil {
		ctx.Error(500, err.Error())
		return
	}

	ctx.Redirect(fmt.Sprintf("/collectors/%d", ctx.ParamsInt64(":id")))
}
Example #5
0
func Collectors(ctx *context.Context) {
	ctx.Data["Title"] = "Collectors"
	ctx.Data["PageIsCollector"] = true

	collectors, err := models.ListCollectors()
	if err != nil {
		ctx.Error(500, err.Error())
		return
	}
	ctx.Data["Collectors"] = collectors

	ctx.HTML(200, "collector/list")
}
Example #6
0
func Webhooks(ctx *context.Context) {
	ctx.Data["Title"] = "Webhooks"
	ctx.Data["PageIsWebhook"] = true

	webhooks, err := models.QueryWebhooks(models.QueryWebhookOptions{
		Limit: 50,
		Order: "created desc",
	})
	if err != nil {
		ctx.Error(500, err.Error())
		return
	}
	ctx.Data["Webhooks"] = webhooks

	ctx.HTML(200, "webhook/list")
}
Example #7
0
func EditApplicationPost(ctx *context.Context, form NewApplicationForm) {
	ctx.Data["Title"] = "Edit Application"
	ctx.Data["PageIsApplication"] = true

	app := parseApplicationByID(ctx)
	if ctx.Written() {
		return
	}

	app.Name = form.Name
	if err := models.UpdateApplication(app); err != nil {
		if errors.IsApplicationExists(err) {
			ctx.Data["Err_Name"] = true
			ctx.RenderWithErr("Application name has been used.", "application/edit", form)
		} else {
			ctx.Error(500, err.Error())
		}
		return
	}

	ctx.Redirect(fmt.Sprintf("/applications/%d", app.ID))
}
Example #8
0
func EditCollectorPost(ctx *context.Context, form NewCollectorForm) {
	ctx.Data["Title"] = "Edit Collector"
	ctx.Data["PageIsCollector"] = true

	collector := parseCollectorByID(ctx)
	if ctx.Written() {
		return
	}

	collector.Name = form.Name
	if err := models.UpdateCollector(collector); err != nil {
		if errors.IsCollectorExists(err) {
			ctx.Data["Err_Name"] = true
			ctx.RenderWithErr("Collector name has been used.", "collector/edit", form)
		} else {
			ctx.Error(500, err.Error())
		}
		return
	}

	ctx.Redirect(fmt.Sprintf("/collectors/%d", collector.ID))
}
Example #9
0
func Hook(ctx *context.Context) {
	collector, err := models.GetCollectorBySecret(ctx.Query("secret"))
	if err != nil {
		if errors.IsCollectorNotFound(err) {
			ctx.Error(403)
		} else {
			ctx.Error(500, err.Error())
		}
		return
	}

	payload, err := ctx.Req.Body().Bytes()
	if err != nil {
		ctx.Error(500, err.Error())
		return
	}

	// NOTE: Currently only support GitHub
	event, err := webhook.ParseGitHubEvent(payload)
	if err != nil {
		ctx.Error(500, err.Error())
		return
	}

	if err = models.NewWebhook(&models.Webhook{
		CollectorID: collector.ID,
		Owner:       tool.FirstNonEmptyString(event.Repository.Owner.Login, event.Repository.Owner.Name),
		RepoName:    event.Repository.Name,
		EventType:   ctx.Req.Header.Get("X-GitHub-Event"),
		Sender:      event.Sender.Login,
		Payload:     string(payload),
	}); err != nil {
		ctx.Error(500, err.Error())
		return
	}

	ctx.Status(202)
}