SYMBOL INDEX (1021 symbols across 124 files) FILE: cmd/gocron/gocron.go constant DefaultPort (line 37) | DefaultPort = 5920 constant shutdownTimeout (line 40) | shutdownTimeout = 30 * time.Second function main (line 42) | func main() { function getCommands (line 62) | func getCommands() []*cli.Command { function runWeb (line 91) | func runWeb(ctx *cli.Context) error { function initModule (line 140) | func initModule() { function parsePort (line 193) | func parsePort(ctx *cli.Context) int { function parseHost (line 205) | func parseHost(ctx *cli.Context) string { function setEnvironment (line 213) | func setEnvironment(ctx *cli.Context) { function waitForShutdown (line 230) | func waitForShutdown(srv *http.Server) { function closeDatabase (line 293) | func closeDatabase() { function upgradeIfNeed (line 310) | func upgradeIfNeed() { function ensureTables (line 330) | func ensureTables() { FILE: cmd/node/node.go function main (line 20) | func main() { FILE: embed.go function StaticFS (line 11) | func StaticFS() (fs.FS, error) { FILE: internal/models/agent_token.go type AgentToken (line 8) | type AgentToken struct method Create (line 17) | func (t *AgentToken) Create() error { method FindByToken (line 21) | func (t *AgentToken) FindByToken(token string) error { method MarkAsUsed (line 25) | func (t *AgentToken) MarkAsUsed() error { method IsValid (line 35) | func (t *AgentToken) IsValid() bool { method CleanExpired (line 40) | func (t *AgentToken) CleanExpired() error { FILE: internal/models/audit_log.go type AuditLog (line 10) | type AuditLog struct method Create (line 23) | func (log *AuditLog) Create() (insertId int, err error) { method List (line 32) | func (log *AuditLog) List(params CommonMap) ([]AuditLog, error) { method Total (line 40) | func (log *AuditLog) Total(params CommonMap) (int64, error) { method buildQuery (line 47) | func (log *AuditLog) buildQuery(params CommonMap) *gorm.DB { FILE: internal/models/audit_log_test.go function setupAuditLogTestDB (line 12) | func setupAuditLogTestDB(t *testing.T) func() { function TestAuditLog_Create (line 36) | func TestAuditLog_Create(t *testing.T) { function TestAuditLog_List_Empty (line 59) | func TestAuditLog_List_Empty(t *testing.T) { function TestAuditLog_List_Pagination (line 74) | func TestAuditLog_List_Pagination(t *testing.T) { function TestAuditLog_List_FilterByModule (line 112) | func TestAuditLog_List_FilterByModule(t *testing.T) { function TestAuditLog_List_FilterByAction (line 143) | func TestAuditLog_List_FilterByAction(t *testing.T) { function TestAuditLog_List_FilterByUsername (line 169) | func TestAuditLog_List_FilterByUsername(t *testing.T) { function TestAuditLog_List_FilterByDateRange (line 196) | func TestAuditLog_List_FilterByDateRange(t *testing.T) { function TestAuditLog_Total (line 225) | func TestAuditLog_Total(t *testing.T) { function TestAuditLog_Total_WithFilter (line 262) | func TestAuditLog_Total_WithFilter(t *testing.T) { function TestAuditLog_List_OrderByIdDesc (line 288) | func TestAuditLog_List_OrderByIdDesc(t *testing.T) { FILE: internal/models/cleanup_verify_test.go function TestCleanupIntegration (line 13) | func TestCleanupIntegration(t *testing.T) { FILE: internal/models/host.go type Host (line 8) | type Host struct method Create (line 19) | func (host *Host) Create() (insertId int, err error) { method UpdateBean (line 28) | func (host *Host) UpdateBean(id int) (int64, error) { method Update (line 36) | func (host *Host) Update(id int, data CommonMap) (int64, error) { method Delete (line 46) | func (host *Host) Delete(id int) (int64, error) { method Find (line 51) | func (host *Host) Find(id int) error { method NameExists (line 55) | func (host *Host) NameExists(name string, id int) (bool, error) { method List (line 65) | func (host *Host) List(params CommonMap) ([]Host, error) { method AllList (line 75) | func (host *Host) AllList() ([]Host, error) { method Total (line 82) | func (host *Host) Total(params CommonMap) (int64, error) { method parseWhere (line 91) | func (host *Host) parseWhere(query *gorm.DB, params CommonMap) { FILE: internal/models/login_log.go type LoginLog (line 8) | type LoginLog struct method Create (line 16) | func (log *LoginLog) Create() (insertId int, err error) { method List (line 25) | func (log *LoginLog) List(params CommonMap) ([]LoginLog, error) { method Total (line 33) | func (log *LoginLog) Total() (int64, error) { FILE: internal/models/migration.go type Migration (line 10) | type Migration struct method Install (line 13) | func (migration *Migration) Install(dbName string) error { method Upgrade (line 43) | func (migration *Migration) Upgrade(oldVersionId int) { method upgradeFor110 (line 104) | func (migration *Migration) upgradeFor110(tx *gorm.DB) error { method upgradeFor122 (line 144) | func (migration *Migration) upgradeFor122(tx *gorm.DB) error { method upgradeFor130 (line 161) | func (migration *Migration) upgradeFor130(tx *gorm.DB) error { method upgradeFor140 (line 178) | func (migration *Migration) upgradeFor140(tx *gorm.DB) error { method upgradeFor150 (line 203) | func (m *Migration) upgradeFor150(tx *gorm.DB) error { method upgradeFor151 (line 273) | func (m *Migration) upgradeFor151(tx *gorm.DB) error { method upgradeFor152 (line 298) | func (m *Migration) upgradeFor152(tx *gorm.DB) error { method upgradeFor153 (line 365) | func (m *Migration) upgradeFor153(tx *gorm.DB) error { method upgradeFor154 (line 454) | func (m *Migration) upgradeFor154(tx *gorm.DB) error { method upgradeFor155 (line 471) | func (m *Migration) upgradeFor155(tx *gorm.DB) error { method upgradeFor156 (line 514) | func (m *Migration) upgradeFor156(tx *gorm.DB) error { method upgradeFor157 (line 538) | func (m *Migration) upgradeFor157(tx *gorm.DB) error { method upgradeFor158 (line 554) | func (m *Migration) upgradeFor158(tx *gorm.DB) error { method upgradeFor159 (line 579) | func (m *Migration) upgradeFor159(tx *gorm.DB) error { method upgradeFor1510 (line 615) | func (m *Migration) upgradeFor1510(tx *gorm.DB) error { method upgradeFor160 (line 628) | func (m *Migration) upgradeFor160(tx *gorm.DB) error { method fixSQLiteAutoIncrement (line 669) | func (m *Migration) fixSQLiteAutoIncrement() { function contains (line 655) | func contains(s, substr string) bool { function containsMiddle (line 659) | func containsMiddle(s, substr string) bool { FILE: internal/models/model.go type Status (line 23) | type Status type CommonMap (line 24) | type CommonMap constant Disabled (line 33) | Disabled Status = 0 constant Failure (line 34) | Failure Status = 0 constant Enabled (line 35) | Enabled Status = 1 constant Running (line 36) | Running Status = 1 constant Finish (line 37) | Finish Status = 2 constant Cancel (line 38) | Cancel Status = 3 constant Page (line 42) | Page = 1 constant PageSize (line 43) | PageSize = 20 constant MaxPageSize (line 44) | MaxPageSize = 1000 constant DefaultTimeFormat (line 47) | DefaultTimeFormat = "2006-01-02 15:04:05" constant dbPingInterval (line 50) | dbPingInterval = 90 * time.Second constant dbMaxLiftTime (line 51) | dbMaxLiftTime = 2 * time.Hour type BaseModel (line 54) | type BaseModel struct method parsePageAndPageSize (line 59) | func (model *BaseModel) parsePageAndPageSize(params CommonMap) { method pageLimitOffset (line 76) | func (model *BaseModel) pageLimitOffset() int { function CreateDb (line 81) | func CreateDb() *gorm.DB { function StopKeepAlive (line 142) | func StopKeepAlive() { function CreateTmpDb (line 155) | func CreateTmpDb(setting *setting.Setting) (*gorm.DB, error) { function getDbEngineDSN (line 176) | func getDbEngineDSN(setting *setting.Setting) string { function keepDbAlived (line 202) | func keepDbAlived(db *gorm.DB, stop <-chan struct{}) { function ensureSqliteDir (line 225) | func ensureSqliteDir(dbPath string) { FILE: internal/models/scheduler_lock.go type SchedulerLock (line 7) | type SchedulerLock struct method TableName (line 18) | func (SchedulerLock) TableName() string { FILE: internal/models/scheduler_lock_test.go function TestSchedulerLock_TableName (line 5) | func TestSchedulerLock_TableName(t *testing.T) { FILE: internal/models/setting.go type Setting (line 8) | type Setting struct method Slack (line 76) | func (setting *Setting) Slack() (Slack, error) { method formatSlack (line 89) | func (setting *Setting) formatSlack(list []Setting, slack *Slack) { method UpdateSlack (line 104) | func (setting *Setting) UpdateSlack(url, template string) error { method CreateChannel (line 115) | func (setting *Setting) CreateChannel(channel string) (int64, error) { method IsChannelExist (line 124) | func (setting *Setting) IsChannelExist(channel string) bool { method RemoveChannel (line 131) | func (setting *Setting) RemoveChannel(id int) (int64, error) { method Mail (line 154) | func (setting *Setting) Mail() (Mail, error) { method formatMail (line 167) | func (setting *Setting) formatMail(list []Setting, mail *Mail) { method UpdateMail (line 188) | func (setting *Setting) UpdateMail(config, template string) error { method CreateMailUser (line 195) | func (setting *Setting) CreateMailUser(username, email string) (int64,... method RemoveMailUser (line 209) | func (setting *Setting) RemoveMailUser(id int) (int64, error) { method Webhook (line 225) | func (setting *Setting) Webhook() (WebHook, error) { method formatWebhook (line 238) | func (setting *Setting) formatWebhook(list []Setting, webHook *WebHook) { method UpdateWebHook (line 254) | func (setting *Setting) UpdateWebHook(template string) error { method CreateWebhookUrl (line 259) | func (setting *Setting) CreateWebhookUrl(name, url string) (int64, err... method RemoveWebhookUrl (line 276) | func (setting *Setting) RemoveWebhookUrl(id int) (int64, error) { method getSettingValue (line 286) | func (setting *Setting) getSettingValue(code, key string) (string, err... method updateOrCreateSetting (line 296) | func (setting *Setting) updateOrCreateSetting(code, key, value string)... method GetLogRetentionDays (line 315) | func (setting *Setting) GetLogRetentionDays() int { method UpdateLogRetentionDays (line 327) | func (setting *Setting) UpdateLogRetentionDays(days int) error { method GetLogCleanupTime (line 331) | func (setting *Setting) GetLogCleanupTime() string { method UpdateLogCleanupTime (line 339) | func (setting *Setting) UpdateLogCleanupTime(cleanupTime string) error { method GetLogFileSizeLimit (line 343) | func (setting *Setting) GetLogFileSizeLimit() int { method UpdateLogFileSizeLimit (line 355) | func (setting *Setting) UpdateLogFileSizeLimit(size int) error { constant slackTemplate (line 15) | slackTemplate = `Task ID: {{.TaskId}} constant emailTemplate (line 21) | emailTemplate = `Task ID: {{.TaskId}} constant webhookTemplate (line 26) | webhookTemplate = ` constant SlackCode (line 37) | SlackCode = "slack" constant SlackUrlKey (line 38) | SlackUrlKey = "url" constant SlackTemplateKey (line 39) | SlackTemplateKey = "template" constant SlackChannelKey (line 40) | SlackChannelKey = "channel" constant MailCode (line 44) | MailCode = "mail" constant MailTemplateKey (line 45) | MailTemplateKey = "template" constant MailServerKey (line 46) | MailServerKey = "server" constant MailUserKey (line 47) | MailUserKey = "user" constant WebhookCode (line 51) | WebhookCode = "webhook" constant WebhookTemplateKey (line 52) | WebhookTemplateKey = "template" constant WebhookUrlKey (line 53) | WebhookUrlKey = "url" constant SystemCode (line 57) | SystemCode = "system" constant LogRetentionDaysKey (line 58) | LogRetentionDaysKey = "log_retention_days" constant LogCleanupTimeKey (line 59) | LogCleanupTimeKey = "log_cleanup_time" constant LogFileSizeLimitKey (line 60) | LogFileSizeLimitKey = "log_file_size_limit" type Slack (line 65) | type Slack struct type Channel (line 71) | type Channel struct type Mail (line 138) | type Mail struct type MailUser (line 147) | type MailUser struct type WebHook (line 214) | type WebHook struct type WebhookUrl (line 219) | type WebhookUrl struct FILE: internal/models/setting_init.go function RepairSettings (line 7) | func RepairSettings() error { FILE: internal/models/setting_refactor_test.go function TestSettingRefactorBackwardCompatibility (line 11) | func TestSettingRefactorBackwardCompatibility(t *testing.T) { function TestSettingHelperMethods (line 152) | func TestSettingHelperMethods(t *testing.T) { FILE: internal/models/task.go type TaskProtocol (line 13) | type TaskProtocol constant TaskHTTP (line 16) | TaskHTTP TaskProtocol = iota + 1 constant TaskRPC (line 17) | TaskRPC type TaskLevel (line 20) | type TaskLevel constant TaskLevelParent (line 23) | TaskLevelParent TaskLevel = 1 constant TaskLevelChild (line 24) | TaskLevelChild TaskLevel = 2 type TaskDependencyStatus (line 27) | type TaskDependencyStatus constant TaskDependencyStatusStrong (line 30) | TaskDependencyStatusStrong TaskDependencyStatus = 1 constant TaskDependencyStatusWeak (line 31) | TaskDependencyStatusWeak TaskDependencyStatus = 2 type TaskHTTPMethod (line 34) | type TaskHTTPMethod constant TaskHTTPMethodGet (line 37) | TaskHTTPMethodGet TaskHTTPMethod = 1 constant TaskHttpMethodPost (line 38) | TaskHttpMethodPost TaskHTTPMethod = 2 type NextRunTime (line 42) | type NextRunTime method MarshalJSON (line 44) | func (t NextRunTime) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 52) | func (t *NextRunTime) UnmarshalJSON(data []byte) error { type Task (line 70) | type Task struct method Create (line 103) | func (task *Task) Create() (insertId int, err error) { method UpdateBean (line 121) | func (task *Task) UpdateBean(id int) (int64, error) { method Update (line 156) | func (task *Task) Update(id int, data CommonMap) (int64, error) { method Delete (line 166) | func (task *Task) Delete(id int) (int64, error) { method Disable (line 172) | func (task *Task) Disable(id int) (int64, error) { method Enable (line 177) | func (task *Task) Enable(id int) (int64, error) { method ActiveList (line 182) | func (task *Task) ActiveList(page, pageSize int) ([]Task, error) { method ActiveListByHostId (line 198) | func (task *Task) ActiveListByHostId(hostId int) ([]Task, error) { method setHostsForTasks (line 219) | func (task *Task) setHostsForTasks(tasks []Task) ([]Task, error) { method NameExist (line 250) | func (task *Task) NameExist(name string, id int) (bool, error) { method GetStatus (line 260) | func (task *Task) GetStatus(id int) (Status, error) { method Detail (line 269) | func (task *Task) Detail(id int) (Task, error) { method List (line 286) | func (task *Task) List(params CommonMap) ([]Task, error) { method GetDependencyTaskList (line 309) | func (task *Task) GetDependencyTaskList(ids string) ([]Task, error) { method Total (line 327) | func (task *Task) Total(params CommonMap) (int64, error) { method parseWhere (line 344) | func (task *Task) parseWhere(query *gorm.DB, params CommonMap) { method GetAllTags (line 376) | func (task *Task) GetAllTags() ([]string, error) { FILE: internal/models/task_host.go type TaskHost (line 3) | type TaskHost struct method Remove (line 20) | func (th *TaskHost) Remove(taskId int) error { method Add (line 24) | func (th *TaskHost) Add(taskId int, hostIds []int) error { method GetHostIdsByTaskId (line 39) | func (th *TaskHost) GetHostIdsByTaskId(taskId int) ([]TaskHostDetail, ... method GetTaskIdsByHostId (line 50) | func (th *TaskHost) GetTaskIdsByHostId(hostId int) ([]interface{}, err... method HostIdExist (line 66) | func (th *TaskHost) HostIdExist(hostId int) (bool, error) { method GetHostsByTaskIds (line 73) | func (th *TaskHost) GetHostsByTaskIds(taskIds []int) (map[int][]TaskHo... type TaskHostDetail (line 9) | type TaskHostDetail struct method TableName (line 16) | func (TaskHostDetail) TableName() string { FILE: internal/models/task_log.go type LocalTime (line 11) | type LocalTime method MarshalJSON (line 13) | func (t LocalTime) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 18) | func (t *LocalTime) UnmarshalJSON(data []byte) error { method Value (line 29) | func (t LocalTime) Value() (driver.Value, error) { method Scan (line 33) | func (t *LocalTime) Scan(value interface{}) error { type TaskType (line 44) | type TaskType type TaskLog (line 47) | type TaskLog struct method Create (line 65) | func (taskLog *TaskLog) Create() (insertId int64, err error) { method Update (line 75) | func (taskLog *TaskLog) Update(id int64, data CommonMap) (int64, error) { method List (line 84) | func (taskLog *TaskLog) List(params CommonMap) ([]TaskLog, error) { method Clear (line 106) | func (taskLog *TaskLog) Clear() (int64, error) { method ClearByTaskId (line 112) | func (taskLog *TaskLog) ClearByTaskId(taskId int) (int64, error) { method Remove (line 132) | func (taskLog *TaskLog) Remove(id int) (int64, error) { method RemoveByDays (line 139) | func (taskLog *TaskLog) RemoveByDays(days int) (int64, error) { method RemoveByDaysExcludingCustomRetention (line 149) | func (taskLog *TaskLog) RemoveByDaysExcludingCustomRetention(days int)... method RemoveByTaskIdAndDays (line 159) | func (taskLog *TaskLog) RemoveByTaskIdAndDays(taskId int, days int) (i... method Total (line 180) | func (taskLog *TaskLog) Total(params CommonMap) (int64, error) { method parseWhere (line 189) | func (taskLog *TaskLog) parseWhere(query *gorm.DB, params CommonMap) { method GetLast7DaysTrend (line 218) | func (taskLog *TaskLog) GetLast7DaysTrend() ([]DailyStats, error) { method GetTodayStats (line 241) | func (taskLog *TaskLog) GetTodayStats() (total, success, failed int64,... type DailyStats (line 210) | type DailyStats struct FILE: internal/models/task_log_test.go function setupTaskLogTestDb (line 10) | func setupTaskLogTestDb(t *testing.T) func() { function TestClearByTaskId_Normal (line 27) | func TestClearByTaskId_Normal(t *testing.T) { function TestClearByTaskId_NoLogs (line 68) | func TestClearByTaskId_NoLogs(t *testing.T) { function TestClearByTaskId_ZeroId (line 82) | func TestClearByTaskId_ZeroId(t *testing.T) { FILE: internal/models/task_optimization_test.go function TestGetHostsByTaskIds (line 8) | func TestGetHostsByTaskIds(t *testing.T) { function TestSetHostsForTasks_Optimized (line 24) | func TestSetHostsForTasks_Optimized(t *testing.T) { function TestSetHostsForTasks_Consistency (line 41) | func TestSetHostsForTasks_Consistency(t *testing.T) { function TestPerformanceImprovement (line 50) | func TestPerformanceImprovement(t *testing.T) { FILE: internal/models/task_retention_test.go function setupRetentionTestDB (line 12) | func setupRetentionTestDB(t *testing.T) func() { function TestRemoveByTaskIdAndDays_BasicCleanup (line 39) | func TestRemoveByTaskIdAndDays_BasicCleanup(t *testing.T) { function TestRemoveByTaskIdAndDays_ZeroDays (line 84) | func TestRemoveByTaskIdAndDays_ZeroDays(t *testing.T) { function TestRemoveByTaskIdAndDays_ZeroTaskId (line 98) | func TestRemoveByTaskIdAndDays_ZeroTaskId(t *testing.T) { function TestRemoveByTaskIdAndDays_NegativeInputs (line 112) | func TestRemoveByTaskIdAndDays_NegativeInputs(t *testing.T) { FILE: internal/models/task_script_version.go type TaskScriptVersion (line 10) | type TaskScriptVersion struct method Create (line 21) | func (v *TaskScriptVersion) Create() (int, error) { method List (line 26) | func (v *TaskScriptVersion) List(taskId int, params CommonMap) ([]Task... method Total (line 36) | func (v *TaskScriptVersion) Total(taskId int) (int64, error) { method Detail (line 42) | func (v *TaskScriptVersion) Detail(id int) (TaskScriptVersion, error) { method GetLatestVersion (line 48) | func (v *TaskScriptVersion) GetLatestVersion(taskId int) (int, error) { method CleanOldVersions (line 60) | func (v *TaskScriptVersion) CleanOldVersions(taskId int, keep int) err... FILE: internal/models/task_script_version_test.go function setupVersionTestDB (line 11) | func setupVersionTestDB(t *testing.T) func() { function TestTaskScriptVersion_Create (line 35) | func TestTaskScriptVersion_Create(t *testing.T) { function TestTaskScriptVersion_List_Empty (line 56) | func TestTaskScriptVersion_List_Empty(t *testing.T) { function TestTaskScriptVersion_List_OrderByVersionDesc (line 71) | func TestTaskScriptVersion_List_OrderByVersionDesc(t *testing.T) { function TestTaskScriptVersion_List_Pagination (line 106) | func TestTaskScriptVersion_List_Pagination(t *testing.T) { function TestTaskScriptVersion_List_IsolatedByTaskId (line 142) | func TestTaskScriptVersion_List_IsolatedByTaskId(t *testing.T) { function TestTaskScriptVersion_Total (line 170) | func TestTaskScriptVersion_Total(t *testing.T) { function TestTaskScriptVersion_Detail (line 197) | func TestTaskScriptVersion_Detail(t *testing.T) { function TestTaskScriptVersion_Detail_NotFound (line 225) | func TestTaskScriptVersion_Detail_NotFound(t *testing.T) { function TestTaskScriptVersion_GetLatestVersion (line 236) | func TestTaskScriptVersion_GetLatestVersion(t *testing.T) { function TestTaskScriptVersion_GetLatestVersion_IsolatedByTask (line 266) | func TestTaskScriptVersion_GetLatestVersion_IsolatedByTask(t *testing.T) { function TestTaskScriptVersion_CleanOldVersions (line 292) | func TestTaskScriptVersion_CleanOldVersions(t *testing.T) { function TestTaskScriptVersion_CleanOldVersions_NoOpWhenUnderLimit (line 325) | func TestTaskScriptVersion_CleanOldVersions_NoOpWhenUnderLimit(t *testin... function TestTaskScriptVersion_CleanOldVersions_IsolatedByTask (line 347) | func TestTaskScriptVersion_CleanOldVersions_IsolatedByTask(t *testing.T) { FILE: internal/models/task_tag_test.go function setupTagTestDB (line 11) | func setupTagTestDB(t *testing.T) func() { function TestGetAllTags_MultipleTags (line 36) | func TestGetAllTags_MultipleTags(t *testing.T) { function TestGetAllTags_EmptyTagsExcluded (line 69) | func TestGetAllTags_EmptyTagsExcluded(t *testing.T) { function TestGetAllTags_NoTasks (line 95) | func TestGetAllTags_NoTasks(t *testing.T) { function TestGetAllTags_SingleTagBackwardCompatibility (line 110) | func TestGetAllTags_SingleTagBackwardCompatibility(t *testing.T) { function TestGetAllTags_Deduplication (line 134) | func TestGetAllTags_Deduplication(t *testing.T) { function TestLikeQueryWithCommaSeparatedTags (line 166) | func TestLikeQueryWithCommaSeparatedTags(t *testing.T) { FILE: internal/models/task_template.go type TaskTemplate (line 11) | type TaskTemplate struct method Create (line 41) | func (t *TaskTemplate) Create() (int, error) { method UpdateBean (line 46) | func (t *TaskTemplate) UpdateBean(id int) (int64, error) { method Delete (line 77) | func (t *TaskTemplate) Delete(id int) (int64, error) { method Detail (line 82) | func (t *TaskTemplate) Detail(id int) (TaskTemplate, error) { method List (line 88) | func (t *TaskTemplate) List(params CommonMap) ([]TaskTemplate, error) { method Total (line 101) | func (t *TaskTemplate) Total(params CommonMap) (int64, error) { method parseWhere (line 109) | func (t *TaskTemplate) parseWhere(query *gorm.DB, params CommonMap) { method IncrementUsage (line 120) | func (t *TaskTemplate) IncrementUsage(id int) error { method NameExist (line 125) | func (t *TaskTemplate) NameExist(name string, id int) (bool, error) { method GetCategories (line 135) | func (t *TaskTemplate) GetCategories() ([]string, error) { function seedBuiltinTemplates (line 142) | func seedBuiltinTemplates(tx *gorm.DB) { FILE: internal/models/task_template_test.go function setupTemplateTestDB (line 11) | func setupTemplateTestDB(t *testing.T) func() { function TestTaskTemplate_Create (line 35) | func TestTaskTemplate_Create(t *testing.T) { function TestTaskTemplate_Detail (line 58) | func TestTaskTemplate_Detail(t *testing.T) { function TestTaskTemplate_Detail_NotFound (line 89) | func TestTaskTemplate_Detail_NotFound(t *testing.T) { function TestTaskTemplate_UpdateBean (line 100) | func TestTaskTemplate_UpdateBean(t *testing.T) { function TestTaskTemplate_Delete (line 136) | func TestTaskTemplate_Delete(t *testing.T) { function TestTaskTemplate_List_Empty (line 163) | func TestTaskTemplate_List_Empty(t *testing.T) { function TestTaskTemplate_List_Pagination (line 178) | func TestTaskTemplate_List_Pagination(t *testing.T) { function TestTaskTemplate_List_FilterByCategory (line 212) | func TestTaskTemplate_List_FilterByCategory(t *testing.T) { function TestTaskTemplate_List_FilterByName (line 241) | func TestTaskTemplate_List_FilterByName(t *testing.T) { function TestTaskTemplate_Total (line 265) | func TestTaskTemplate_Total(t *testing.T) { function TestTaskTemplate_Total_WithFilter (line 289) | func TestTaskTemplate_Total_WithFilter(t *testing.T) { function TestTaskTemplate_NameExist (line 309) | func TestTaskTemplate_NameExist(t *testing.T) { function TestTaskTemplate_IncrementUsage (line 338) | func TestTaskTemplate_IncrementUsage(t *testing.T) { function TestTaskTemplate_GetCategories (line 357) | func TestTaskTemplate_GetCategories(t *testing.T) { function TestTaskTemplate_GetCategories_Empty (line 389) | func TestTaskTemplate_GetCategories_Empty(t *testing.T) { function TestSeedBuiltinTemplates (line 403) | func TestSeedBuiltinTemplates(t *testing.T) { function TestSeedBuiltinTemplates_Idempotent (line 432) | func TestSeedBuiltinTemplates_Idempotent(t *testing.T) { function TestTaskTemplate_List_BuiltinFirst (line 447) | func TestTaskTemplate_List_BuiltinFirst(t *testing.T) { FILE: internal/models/user.go constant PasswordSaltLength (line 9) | PasswordSaltLength = 6 type User (line 12) | type User struct method Create (line 28) | func (user *User) Create() (insertId int, err error) { method Update (line 45) | func (user *User) Update(id int, data CommonMap) (int64, error) { method UpdatePassword (line 54) | func (user *User) UpdatePassword(id int, password string) (int64, erro... method Delete (line 63) | func (user *User) Delete(id int) (int64, error) { method Disable (line 69) | func (user *User) Disable(id int) (int64, error) { method Enable (line 74) | func (user *User) Enable(id int) (int64, error) { method Match (line 79) | func (user *User) Match(username, password string) bool { method Find (line 88) | func (user *User) Find(id int) error { method UsernameExists (line 93) | func (user *User) UsernameExists(username string, uid int) (int64, err... method EmailExists (line 104) | func (user *User) EmailExists(email string, uid int) (int64, error) { method List (line 114) | func (user *User) List(params CommonMap) ([]User, error) { method Total (line 122) | func (user *User) Total() (int64, error) { FILE: internal/models/webhook_test.go function setupTestDB (line 12) | func setupTestDB(t *testing.T) *gorm.DB { function TestWebhookUrl_JSONMarshaling (line 27) | func TestWebhookUrl_JSONMarshaling(t *testing.T) { function TestSetting_CreateWebhookUrl (line 59) | func TestSetting_CreateWebhookUrl(t *testing.T) { function TestSetting_RemoveWebhookUrl (line 96) | func TestSetting_RemoveWebhookUrl(t *testing.T) { function TestSetting_Webhook (line 133) | func TestSetting_Webhook(t *testing.T) { function TestSetting_UpdateWebHook (line 183) | func TestSetting_UpdateWebHook(t *testing.T) { function TestSetting_Webhook_EmptyUrls (line 215) | func TestSetting_Webhook_EmptyUrls(t *testing.T) { function TestSetting_CreateWebhookUrl_DuplicateNames (line 239) | func TestSetting_CreateWebhookUrl_DuplicateNames(t *testing.T) { function BenchmarkSetting_CreateWebhookUrl (line 266) | func BenchmarkSetting_CreateWebhookUrl(b *testing.B) { function BenchmarkSetting_Webhook (line 282) | func BenchmarkSetting_Webhook(b *testing.B) { FILE: internal/modules/app/app.go function InitEnv (line 36) | func InitEnv(versionString string) { function IsInstalled (line 73) | func IsInstalled() bool { function CreateInstallLock (line 79) | func CreateInstallLock() error { function UpdateVersionFile (line 93) | func UpdateVersionFile() { function GetCurrentVersionId (line 105) | func GetCurrentVersionId() int { function ToNumberVersion (line 125) | func ToNumberVersion(versionString string) int { function createDirIfNotExists (line 141) | func createDirIfNotExists(path ...string) { FILE: internal/modules/app/app_test.go function initTempEnv (line 9) | func initTempEnv(t *testing.T, version string) string { function TestInitEnvCreatesDirectoriesAndSetsVersion (line 37) | func TestInitEnvCreatesDirectoriesAndSetsVersion(t *testing.T) { function TestCreateInstallLockAndIsInstalled (line 57) | func TestCreateInstallLockAndIsInstalled(t *testing.T) { function TestCreateInstallLockSetsSecurePermissions (line 74) | func TestCreateInstallLockSetsSecurePermissions(t *testing.T) { function TestUpdateVersionFileAndGetCurrentVersionId (line 92) | func TestUpdateVersionFileAndGetCurrentVersionId(t *testing.T) { function TestUpdateVersionFileSetsSecurePermissions (line 102) | func TestUpdateVersionFileSetsSecurePermissions(t *testing.T) { function TestGetCurrentVersionIdWhenMissing (line 118) | func TestGetCurrentVersionIdWhenMissing(t *testing.T) { function TestToNumberVersion (line 132) | func TestToNumberVersion(t *testing.T) { function TestCreateDirIfNotExists (line 149) | func TestCreateDirIfNotExists(t *testing.T) { FILE: internal/modules/httpclient/http_client.go type ResponseWrapper (line 16) | type ResponseWrapper struct type httpDoer (line 22) | type httpDoer interface function Get (line 52) | func Get(url string, timeout int) ResponseWrapper { function PostParams (line 61) | func PostParams(url string, params string, timeout int) ResponseWrapper { function PostJson (line 72) | func PostJson(url string, body string, timeout int) ResponseWrapper { function IsBlockedHeader (line 97) | func IsBlockedHeader(name string) bool { function ValidateHeaders (line 102) | func ValidateHeaders(headersJSON string) error { function SetCustomHeaders (line 120) | func SetCustomHeaders(req *http.Request, headersJSON string) { function GetWithHeaders (line 139) | func GetWithHeaders(url string, headersJSON string, timeout int) Respons... function PostJsonWithHeaders (line 149) | func PostJsonWithHeaders(url string, body string, headersJSON string, ti... function PostParamsWithHeaders (line 161) | func PostParamsWithHeaders(url string, params string, headersJSON string... function request (line 172) | func request(req *http.Request, timeout int) ResponseWrapper { function setRequestHeader (line 195) | func setRequestHeader(req *http.Request) { function createRequestError (line 199) | func createRequestError(err error) ResponseWrapper { FILE: internal/modules/httpclient/http_client_benchmark_test.go function setupTestServer (line 12) | func setupTestServer() *httptest.Server { function TestSequentialRequests (line 21) | func TestSequentialRequests(t *testing.T) { function TestConcurrentRequests (line 44) | func TestConcurrentRequests(t *testing.T) { function TestDifferentTimeouts (line 87) | func TestDifferentTimeouts(t *testing.T) { function BenchmarkSingleRequest (line 106) | func BenchmarkSingleRequest(b *testing.B) { function BenchmarkConcurrentRequests (line 117) | func BenchmarkConcurrentRequests(b *testing.B) { function BenchmarkPostRequest (line 129) | func BenchmarkPostRequest(b *testing.B) { function TestHighConcurrency (line 140) | func TestHighConcurrency(t *testing.T) { function TestConnectionReuse (line 190) | func TestConnectionReuse(t *testing.T) { FILE: internal/modules/httpclient/http_client_test.go type mockDoer (line 12) | type mockDoer method Do (line 14) | func (m mockDoer) Do(req *http.Request) (*http.Response, error) { function withMockClient (line 18) | func withMockClient(t *testing.T, doer mockDoer) { function TestGetRequest (line 27) | func TestGetRequest(t *testing.T) { function TestPostParamsRequest (line 48) | func TestPostParamsRequest(t *testing.T) { function TestPostJsonRequest (line 73) | func TestPostJsonRequest(t *testing.T) { function TestRequestHandlesClientError (line 92) | func TestRequestHandlesClientError(t *testing.T) { function TestRequestHandlesReadError (line 102) | func TestRequestHandlesReadError(t *testing.T) { type failingReader (line 113) | type failingReader struct method Read (line 115) | func (f *failingReader) Read(p []byte) (int, error) { function TestCreateRequestError (line 119) | func TestCreateRequestError(t *testing.T) { function TestSetCustomHeaders (line 126) | func TestSetCustomHeaders(t *testing.T) { function TestIsBlockedHeader (line 167) | func TestIsBlockedHeader(t *testing.T) { function TestValidateHeaders (line 183) | func TestValidateHeaders(t *testing.T) { function TestGetWithHeaders (line 221) | func TestGetWithHeaders(t *testing.T) { function TestPostJsonWithHeaders (line 238) | func TestPostJsonWithHeaders(t *testing.T) { FILE: internal/modules/i18n/i18n.go type Locale (line 7) | type Locale constant ZhCN (line 10) | ZhCN Locale = "zh-CN" constant EnUS (line 11) | EnUS Locale = "en-US" function T (line 19) | func T(c *gin.Context, key string, args ...interface{}) string { function Translate (line 32) | func Translate(key string) string { function GetLocale (line 40) | func GetLocale(c *gin.Context) Locale { FILE: internal/modules/leader/election.go constant LockName (line 18) | LockName = "scheduler_leader" constant LeaseDuration (line 20) | LeaseDuration = 15 * time.Second constant RenewInterval (line 22) | RenewInterval = 5 * time.Second constant RetryInterval (line 24) | RetryInterval = 5 * time.Second type Election (line 28) | type Election struct method Start (line 55) | func (e *Election) Start() { method Stop (line 60) | func (e *Election) Stop() { method IsLeader (line 66) | func (e *Election) IsLeader() bool { method InstanceID (line 71) | func (e *Election) InstanceID() string { method run (line 75) | func (e *Election) run() { method ensureLockRecord (line 125) | func (e *Election) ensureLockRecord() { method tryAcquireLock (line 137) | func (e *Election) tryAcquireLock() bool { method renewLock (line 169) | func (e *Election) renewLock() bool { method releaseLock (line 186) | func (e *Election) releaseLock() { function New (line 40) | func New(db *gorm.DB, onElected, onEvicted func()) *Election { FILE: internal/modules/leader/election_test.go function TestMain (line 15) | func TestMain(m *testing.M) { function setupTestDB (line 20) | func setupTestDB(t *testing.T) *gorm.DB { function TestElection_SingleNode_BecomesLeader (line 39) | func TestElection_SingleNode_BecomesLeader(t *testing.T) { function TestElection_Stop_ReleasesLock (line 59) | func TestElection_Stop_ReleasesLock(t *testing.T) { function TestElection_TwoNodes_OnlyOneLeader (line 82) | func TestElection_TwoNodes_OnlyOneLeader(t *testing.T) { function TestElection_Failover (line 130) | func TestElection_Failover(t *testing.T) { function TestElection_InstanceID (line 166) | func TestElection_InstanceID(t *testing.T) { function TestElection_EnsureLockRecord_CreatesRow (line 174) | func TestElection_EnsureLockRecord_CreatesRow(t *testing.T) { function TestElection_TryAcquireLock_ExpiredLock (line 200) | func TestElection_TryAcquireLock_ExpiredLock(t *testing.T) { function TestElection_TryAcquireLock_ActiveLockBlocks (line 228) | func TestElection_TryAcquireLock_ActiveLockBlocks(t *testing.T) { function TestElection_RenewLock_Success (line 249) | func TestElection_RenewLock_Success(t *testing.T) { function TestElection_RenewLock_FailsWhenNotOwner (line 274) | func TestElection_RenewLock_FailsWhenNotOwner(t *testing.T) { function TestElection_ReleaseLock_OnlyWhenLeader (line 293) | func TestElection_ReleaseLock_OnlyWhenLeader(t *testing.T) { function TestElection_NilCallbacks (line 317) | func TestElection_NilCallbacks(t *testing.T) { function TestElection_ReacquireOwnLock (line 335) | func TestElection_ReacquireOwnLock(t *testing.T) { FILE: internal/modules/logger/async_logger.go type asyncHandler (line 12) | type asyncHandler struct method worker (line 39) | func (h *asyncHandler) worker() { method log (line 74) | func (h *asyncHandler) log(level slog.Level, msg string, args ...any) { method close (line 87) | func (h *asyncHandler) close() { type logRecord (line 21) | type logRecord struct function newAsyncHandler (line 26) | func newAsyncHandler(writer io.Writer, batchSize int, flushTime time.Dur... FILE: internal/modules/logger/async_logger_test.go function TestAsyncLoggerPerformance (line 12) | func TestAsyncLoggerPerformance(t *testing.T) { function TestAsyncLoggerBatchFlush (line 33) | func TestAsyncLoggerBatchFlush(t *testing.T) { function TestAsyncLoggerFullBatch (line 53) | func TestAsyncLoggerFullBatch(t *testing.T) { function TestAsyncLoggerClose (line 71) | func TestAsyncLoggerClose(t *testing.T) { function BenchmarkSyncLogger (line 86) | func BenchmarkSyncLogger(b *testing.B) { function BenchmarkAsyncLogger (line 96) | func BenchmarkAsyncLogger(b *testing.B) { FILE: internal/modules/logger/compatibility_test.go function TestAPICompatibility (line 14) | func TestAPICompatibility(t *testing.T) { function TestLogFormatCompatibility (line 50) | func TestLogFormatCompatibility(t *testing.T) { function TestFallbackToSync (line 76) | func TestFallbackToSync(t *testing.T) { function TestCloseIdempotent (line 99) | func TestCloseIdempotent(t *testing.T) { FILE: internal/modules/logger/logger.go type Level (line 17) | type Level constant DEBUG (line 26) | DEBUG = iota constant INFO (line 27) | INFO constant WARN (line 28) | WARN constant ERROR (line 29) | ERROR constant FATAL (line 30) | FATAL function InitLogger (line 33) | func InitLogger() { function Close (line 57) | func Close() { function Debug (line 63) | func Debug(v ...interface{}) { function Debugf (line 70) | func Debugf(format string, v ...interface{}) { function Info (line 77) | func Info(v ...interface{}) { function Infof (line 81) | func Infof(format string, v ...interface{}) { function Warn (line 85) | func Warn(v ...interface{}) { function Warnf (line 89) | func Warnf(format string, v ...interface{}) { function Error (line 93) | func Error(v ...interface{}) { function Errorf (line 97) | func Errorf(format string, v ...interface{}) { function Fatal (line 101) | func Fatal(v ...interface{}) { function Fatalf (line 105) | func Fatalf(format string, v ...interface{}) { function write (line 109) | func write(level Level, v ...interface{}) { function writef (line 155) | func writef(level Level, format string, v ...interface{}) { FILE: internal/modules/logger/logger_test.go type logEntry (line 12) | type logEntry struct type recordingHandler (line 17) | type recordingHandler struct method Enabled (line 25) | func (r *recordingHandler) Enabled(_ context.Context, level slog.Level... method Handle (line 29) | func (r *recordingHandler) Handle(_ context.Context, record slog.Recor... method WithAttrs (line 34) | func (r *recordingHandler) WithAttrs(attrs []slog.Attr) slog.Handler { method WithGroup (line 38) | func (r *recordingHandler) WithGroup(name string) slog.Handler { function newRecordingHandler (line 21) | func newRecordingHandler() *recordingHandler { function setupRecordingLogger (line 42) | func setupRecordingLogger(t *testing.T) *recordingHandler { function TestDebugLoggingDependsOnGinMode (line 51) | func TestDebugLoggingDependsOnGinMode(t *testing.T) { function TestInfoLogsAndFlushes (line 67) | func TestInfoLogsAndFlushes(t *testing.T) { function TestFatalLogsAndInvokesExit (line 76) | func TestFatalLogsAndInvokesExit(t *testing.T) { function TestInitLogger (line 97) | func TestInitLogger(t *testing.T) { function hasLevel (line 108) | func hasLevel(entries []logEntry, level slog.Level) bool { FILE: internal/modules/logger/performance_report_test.go function TestPerformanceReport (line 14) | func TestPerformanceReport(t *testing.T) { FILE: internal/modules/logger/performance_test.go function BenchmarkConcurrentSync (line 14) | func BenchmarkConcurrentSync(b *testing.B) { function BenchmarkConcurrentAsync (line 26) | func BenchmarkConcurrentAsync(b *testing.B) { function TestRealWorldScenario (line 40) | func TestRealWorldScenario(t *testing.T) { function TestThroughput (line 96) | func TestThroughput(t *testing.T) { function BenchmarkRealFileSync (line 150) | func BenchmarkRealFileSync(b *testing.B) { function BenchmarkRealFileAsync (line 160) | func BenchmarkRealFileAsync(b *testing.B) { FILE: internal/modules/notify/mail.go type Mail (line 17) | type Mail struct method Send (line 20) | func (mail *Mail) Send(msg Message) { method send (line 49) | func (mail *Mail) send(mailSetting models.Mail, toUsers []string, msg ... method getActiveMailUsers (line 74) | func (mail *Mail) getActiveMailUsers(mailSetting models.Mail, msg Mess... FILE: internal/modules/notify/notify.go type Message (line 12) | type Message type Notifiable (line 14) | type Notifiable interface function init (line 20) | func init() { function Push (line 25) | func Push(msg Message) { function run (line 29) | func run() { function parseNotifyTemplate (line 61) | func parseNotifyTemplate(notifyTemplate string, msg Message) string { FILE: internal/modules/notify/notify_test.go function TestNotifyDispatch (line 8) | func TestNotifyDispatch(t *testing.T) { function TestParseNotifyTemplate (line 149) | func TestParseNotifyTemplate(t *testing.T) { function TestNotifyTypeValues (line 208) | func TestNotifyTypeValues(t *testing.T) { function contains (line 242) | func contains(s, substr string) bool { function containsHelper (line 246) | func containsHelper(s, substr string) bool { FILE: internal/modules/notify/slack.go type Slack (line 18) | type Slack struct method Send (line 20) | func (slack *Slack) Send(msg Message) { method send (line 45) | func (slack *Slack) send(msg Message, slackUrl string, channel string) { method getActiveSlackChannels (line 63) | func (slack *Slack) getActiveSlackChannels(slackSetting models.Slack, ... method format (line 76) | func (slack *Slack) format(content string, channel string) string { FILE: internal/modules/notify/webhook.go type WebHook (line 15) | type WebHook struct method Send (line 17) | func (webHook *WebHook) Send(msg Message) { method getActiveWebhookUrls (line 43) | func (webHook *WebHook) getActiveWebhookUrls(webHookSetting models.Web... method send (line 54) | func (webHook *WebHook) send(msg Message, url string) { FILE: internal/modules/notify/webhook_test.go function TestWebHook_getActiveWebhookUrls (line 10) | func TestWebHook_getActiveWebhookUrls(t *testing.T) { function TestWebHook_getActiveWebhookUrls_EdgeCases (line 115) | func TestWebHook_getActiveWebhookUrls_EdgeCases(t *testing.T) { function TestWebHook_getActiveWebhookUrls_LargeDataset (line 174) | func TestWebHook_getActiveWebhookUrls_LargeDataset(t *testing.T) { function BenchmarkWebHook_getActiveWebhookUrls (line 212) | func BenchmarkWebHook_getActiveWebhookUrls(b *testing.B) { function TestMessage_Type (line 239) | func TestMessage_Type(t *testing.T) { FILE: internal/modules/rpc/auth/Certification.go type Certificate (line 13) | type Certificate struct method GetTLSConfigForServer (line 20) | func (c Certificate) GetTLSConfigForServer() (*tls.Config, error) { method GetTransportCredsForClient (line 49) | func (c Certificate) GetTransportCredsForClient() (credentials.Transpo... FILE: internal/modules/rpc/client/client.go function generateTaskUniqueKey (line 25) | func generateTaskUniqueKey(ip string, port int, id int64) string { function Stop (line 29) | func Stop(ip string, port int, id int64) { function Exec (line 52) | func Exec(ip string, port int, taskReq *pb.TaskRequest) (string, error) { function parseGRPCError (line 97) | func parseGRPCError(err error) (string, error) { function parseGRPCErrorOnly (line 110) | func parseGRPCErrorOnly(err error) error { FILE: internal/modules/rpc/grpcpool/grpc_pool.go constant backOffMaxDelay (line 19) | backOffMaxDelay = 3 * time.Second constant dialTimeout (line 20) | dialTimeout = 2 * time.Second type Client (line 35) | type Client struct type GRPCPool (line 40) | type GRPCPool struct method Get (line 46) | func (p *GRPCPool) Get(addr string) (pb.TaskClient, error) { method Release (line 63) | func (p *GRPCPool) Release(addr string) { method factory (line 75) | func (p *GRPCPool) factory(addr string) (*Client, error) { FILE: internal/modules/rpc/proto/task.pb.go constant _ (line 19) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 21) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type TaskRequest (line 24) | type TaskRequest struct method Reset (line 33) | func (x *TaskRequest) Reset() { method String (line 40) | func (x *TaskRequest) String() string { method ProtoMessage (line 44) | func (*TaskRequest) ProtoMessage() {} method ProtoReflect (line 46) | func (x *TaskRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 59) | func (*TaskRequest) Descriptor() ([]byte, []int) { method GetCommand (line 63) | func (x *TaskRequest) GetCommand() string { method GetTimeout (line 70) | func (x *TaskRequest) GetTimeout() int32 { method GetId (line 77) | func (x *TaskRequest) GetId() int64 { type TaskResponse (line 84) | type TaskResponse struct method Reset (line 92) | func (x *TaskResponse) Reset() { method String (line 99) | func (x *TaskResponse) String() string { method ProtoMessage (line 103) | func (*TaskResponse) ProtoMessage() {} method ProtoReflect (line 105) | func (x *TaskResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 118) | func (*TaskResponse) Descriptor() ([]byte, []int) { method GetOutput (line 122) | func (x *TaskResponse) GetOutput() string { method GetError (line 129) | func (x *TaskResponse) GetError() string { constant file_task_proto_rawDesc (line 138) | file_task_proto_rawDesc = "" + function file_task_proto_rawDescGZIP (line 157) | func file_task_proto_rawDescGZIP() []byte { function init (line 179) | func init() { file_task_proto_init() } function file_task_proto_init (line 180) | func file_task_proto_init() { FILE: internal/modules/rpc/proto/task_grpc.pb.go constant _ (line 19) | _ = grpc.SupportPackageIsVersion9 constant Task_Run_FullMethodName (line 22) | Task_Run_FullMethodName = "/rpc.Task/Run" type TaskClient (line 28) | type TaskClient interface type taskClient (line 32) | type taskClient struct method Run (line 40) | func (c *taskClient) Run(ctx context.Context, in *TaskRequest, opts ..... function NewTaskClient (line 36) | func NewTaskClient(cc grpc.ClientConnInterface) TaskClient { type TaskServer (line 53) | type TaskServer interface type UnimplementedTaskServer (line 63) | type UnimplementedTaskServer struct method Run (line 65) | func (UnimplementedTaskServer) Run(context.Context, *TaskRequest) (*Ta... method mustEmbedUnimplementedTaskServer (line 68) | func (UnimplementedTaskServer) mustEmbedUnimplementedTaskServer() {} method testEmbeddedByValue (line 69) | func (UnimplementedTaskServer) testEmbeddedByValue() {} type UnsafeTaskServer (line 74) | type UnsafeTaskServer interface function RegisterTaskServer (line 78) | func RegisterTaskServer(s grpc.ServiceRegistrar, srv TaskServer) { function _Task_Run_Handler (line 89) | func _Task_Run_Handler(srv interface{}, ctx context.Context, dec func(in... FILE: internal/modules/rpc/server/server.go type Server (line 23) | type Server struct method Run (line 41) | func (s *Server) Run(ctx context.Context, req *pb.TaskRequest) (*pb.Ta... function Start (line 118) | func Start(addr string, enableTLS bool, certificate auth.Certificate) { FILE: internal/modules/setting/setting.go constant DefaultSection (line 12) | DefaultSection = "default" type Setting (line 14) | type Setting struct function Read (line 43) | func Read(filename string) (*Setting, error) { function Write (line 97) | func Write(config []string, filename string) error { FILE: internal/modules/setting/setting_test.go function TestReadReturnsConfiguredValues (line 11) | func TestReadReturnsConfiguredValues(t *testing.T) { function TestReadGeneratesAuthSecretWhenMissing (line 54) | func TestReadGeneratesAuthSecretWhenMissing(t *testing.T) { function TestReadEnableTLSSucceedsWhenFilesExist (line 73) | func TestReadEnableTLSSucceedsWhenFilesExist(t *testing.T) { function TestWriteValidatesArguments (line 99) | func TestWriteValidatesArguments(t *testing.T) { function TestWritePersistsKeyValuePairs (line 108) | func TestWritePersistsKeyValuePairs(t *testing.T) { function TestWriteSetsSecureFilePermissions (line 134) | func TestWriteSetsSecureFilePermissions(t *testing.T) { FILE: internal/modules/utils/execshell_integration_test.go function TestExecShell_RealWorldScenario_Timeout (line 11) | func TestExecShell_RealWorldScenario_Timeout(t *testing.T) { function TestExecShell_RealWorldScenario_ManualStop (line 54) | func TestExecShell_RealWorldScenario_ManualStop(t *testing.T) { FILE: internal/modules/utils/execshell_test.go function TestExecShell_NormalCompletion (line 15) | func TestExecShell_NormalCompletion(t *testing.T) { function TestExecShell_TimeoutWithPartialOutput (line 29) | func TestExecShell_TimeoutWithPartialOutput(t *testing.T) { function TestExecShell_ManualCancelWithPartialOutput (line 73) | func TestExecShell_ManualCancelWithPartialOutput(t *testing.T) { function TestExecShell_CommandFailureWithOutput (line 119) | func TestExecShell_CommandFailureWithOutput(t *testing.T) { function TestExecShell_LongRunningCommand (line 151) | func TestExecShell_LongRunningCommand(t *testing.T) { function TestExecShell_QuickCommand (line 180) | func TestExecShell_QuickCommand(t *testing.T) { function TestExecShell_EmptyCommand (line 196) | func TestExecShell_EmptyCommand(t *testing.T) { function TestExecShell_StderrOutput (line 209) | func TestExecShell_StderrOutput(t *testing.T) { function BenchmarkExecShell_Normal (line 234) | func BenchmarkExecShell_Normal(b *testing.B) { function BenchmarkExecShell_Timeout (line 242) | func BenchmarkExecShell_Timeout(b *testing.B) { function TestExecShell_SpecialCharacters (line 251) | func TestExecShell_SpecialCharacters(t *testing.T) { function TestExecShell_MultilineScript (line 271) | func TestExecShell_MultilineScript(t *testing.T) { function TestExecShell_WorkingDirectory (line 306) | func TestExecShell_WorkingDirectory(t *testing.T) { function TestExecShell_HTMLEntityCleaning (line 325) | func TestExecShell_HTMLEntityCleaning(t *testing.T) { FILE: internal/modules/utils/html_entity.go function CleanHTMLEntities (line 8) | func CleanHTMLEntities(command string) string { function ContainsHTMLEntity (line 38) | func ContainsHTMLEntity(command string) bool { FILE: internal/modules/utils/html_entity_test.go function TestHTMLEntityDetection (line 9) | func TestHTMLEntityDetection(t *testing.T) { function TestCommandLength (line 96) | func TestCommandLength(t *testing.T) { function TestWindowsCommandSimulation (line 149) | func TestWindowsCommandSimulation(t *testing.T) { FILE: internal/modules/utils/json.go type response (line 11) | type response struct type JsonResponse (line 17) | type JsonResponse struct method Success (line 39) | func (j *JsonResponse) Success(message string, data interface{}) string { method Failure (line 43) | func (j *JsonResponse) Failure(code int, message string) string { method CommonFailure (line 47) | func (j *JsonResponse) CommonFailure(message string, err ...error) str... method response (line 54) | func (j *JsonResponse) response(code int, message string, data interfa... constant ResponseSuccess (line 19) | ResponseSuccess = 0 constant ResponseFailure (line 20) | ResponseFailure = 1 constant UnauthorizedError (line 21) | UnauthorizedError = 403 constant AuthError (line 22) | AuthError = 401 constant NotFound (line 23) | NotFound = 404 constant ServerError (line 24) | ServerError = 500 constant AppNotInstall (line 25) | AppNotInstall = 801 constant SuccessContent (line 27) | SuccessContent = "操作成功" constant FailureContent (line 28) | FailureContent = "操作失败" function JsonResponseByErr (line 30) | func JsonResponseByErr(err error) string { FILE: internal/modules/utils/login_limiter.go constant MaxLoginAttempts (line 10) | MaxLoginAttempts = 5 constant LockDuration (line 12) | LockDuration = 10 * time.Minute constant CleanupInterval (line 14) | CleanupInterval = 30 * time.Minute type LoginAttempt (line 18) | type LoginAttempt struct type LoginLimiter (line 24) | type LoginLimiter struct method IsLocked (line 45) | func (l *LoginLimiter) IsLocked(username string) (bool, time.Time) { method RecordFailure (line 63) | func (l *LoginLimiter) RecordFailure(username string) { method RecordSuccess (line 88) | func (l *LoginLimiter) RecordSuccess(username string) { method GetRemainingAttempts (line 96) | func (l *LoginLimiter) GetRemainingAttempts(username string) int { method cleanup (line 123) | func (l *LoginLimiter) cleanup() { function init (line 31) | func init() { function GetLoginLimiter (line 40) | func GetLoginLimiter() *LoginLimiter { FILE: internal/modules/utils/login_limiter_test.go function TestLoginLimiter_IsLocked (line 8) | func TestLoginLimiter_IsLocked(t *testing.T) { function TestLoginLimiter_RecordSuccess (line 36) | func TestLoginLimiter_RecordSuccess(t *testing.T) { function TestLoginLimiter_GetRemainingAttempts (line 56) | func TestLoginLimiter_GetRemainingAttempts(t *testing.T) { function TestLoginLimiter_LockExpiration (line 80) | func TestLoginLimiter_LockExpiration(t *testing.T) { FILE: internal/modules/utils/password.go constant PasswordMinLength (line 9) | PasswordMinLength = 8 function ValidatePassword (line 13) | func ValidatePassword(password string) (bool, string) { function ValidatePasswordStrong (line 39) | func ValidatePasswordStrong(password string) (bool, string) { FILE: internal/modules/utils/password_test.go function TestValidatePassword (line 5) | func TestValidatePassword(t *testing.T) { function TestValidatePasswordStrong (line 30) | func TestValidatePasswordStrong(t *testing.T) { FILE: internal/modules/utils/utils.go function RandAuthToken (line 22) | func RandAuthToken() string { function RandString (line 33) | func RandString(length int64) string { function Md5 (line 48) | func Md5(str string) string { function HashPassword (line 55) | func HashPassword(password string) (string, error) { function VerifyPassword (line 61) | func VerifyPassword(hashedPassword, password, salt string) bool { function Sha256 (line 72) | func Sha256(str string) string { function RandNumber (line 79) | func RandNumber(max int) int { function GBK2UTF8 (line 86) | func GBK2UTF8(s string) (string, bool) { function ReplaceStrings (line 93) | func ReplaceStrings(s string, old []string, replace []string) string { function InStringSlice (line 108) | func InStringSlice(slice []string, element string) bool { function EscapeJson (line 120) | func EscapeJson(s string) string { function FileExist (line 128) | func FileExist(file string) bool { function PrintAppVersion (line 141) | func PrintAppVersion(appVersion, GitCommit, BuildDate string) { function FormatAppVersion (line 150) | func FormatAppVersion(appVersion, GitCommit, BuildDate string) (string, ... function PanicToError (line 179) | func PanicToError(f func()) (err error) { function PanicTrace (line 190) | func PanicTrace(err interface{}) string { function IsWindows (line 198) | func IsWindows() bool { FILE: internal/modules/utils/utils_test.go function TestRandAuthToken (line 15) | func TestRandAuthToken(t *testing.T) { function TestRandString (line 25) | func TestRandString(t *testing.T) { function TestMd5 (line 49) | func TestMd5(t *testing.T) { function TestRandNumber (line 57) | func TestRandNumber(t *testing.T) { function TestGBK2UTF8 (line 67) | func TestGBK2UTF8(t *testing.T) { function TestReplaceStrings (line 79) | func TestReplaceStrings(t *testing.T) { function TestInStringSlice (line 100) | func TestInStringSlice(t *testing.T) { function TestEscapeJson (line 109) | func TestEscapeJson(t *testing.T) { function TestFileExist (line 118) | func TestFileExist(t *testing.T) { function TestFormatAppVersion (line 132) | func TestFormatAppVersion(t *testing.T) { function TestPanicToError (line 144) | func TestPanicToError(t *testing.T) { function TestPanicTrace (line 163) | func TestPanicTrace(t *testing.T) { FILE: internal/modules/utils/utils_unix.go type Result (line 19) | type Result struct function ExecShell (line 26) | func ExecShell(ctx context.Context, command string) (string, error) { FILE: internal/modules/utils/utils_unix_test.go function TestExecShellSuccess (line 13) | func TestExecShellSuccess(t *testing.T) { function TestExecShellTimeout (line 24) | func TestExecShellTimeout(t *testing.T) { function TestExecShellCancel (line 45) | func TestExecShellCancel(t *testing.T) { function TestExecShellCommandError (line 67) | func TestExecShellCommandError(t *testing.T) { FILE: internal/modules/utils/utils_windows.go type Result (line 24) | type Result struct function ExecShell (line 31) | func ExecShell(ctx context.Context, command string) (string, error) { function ConvertEncoding (line 178) | func ConvertEncoding(outputGBK string) string { FILE: internal/modules/utils/utils_windows_test.go function TestExecShellWithQuotes (line 12) | func TestExecShellWithQuotes(t *testing.T) { FILE: internal/routers/agent/agent.go constant tokenExpiration (line 19) | tokenExpiration = 3 * time.Hour function GenerateToken (line 22) | func GenerateToken(c *gin.Context) { function InstallScript (line 48) | func InstallScript(c *gin.Context) { function Register (line 252) | func Register(c *gin.Context) { function Download (line 320) | func Download(c *gin.Context) { function generateRandomToken (line 405) | func generateRandomToken() string { function getServerURL (line 411) | func getServerURL(c *gin.Context) string { FILE: internal/routers/audit/audit.go function Index (line 12) | func Index(c *gin.Context) { FILE: internal/routers/audit/audit_test.go type apiResponse (line 16) | type apiResponse struct type auditListData (line 22) | type auditListData struct function setupAuditTestRouter (line 27) | func setupAuditTestRouter(t *testing.T) (*gin.Engine, func()) { function TestAuditIndex_Empty (line 58) | func TestAuditIndex_Empty(t *testing.T) { function TestAuditIndex_WithData (line 92) | func TestAuditIndex_WithData(t *testing.T) { function TestAuditIndex_FilterByModule (line 138) | func TestAuditIndex_FilterByModule(t *testing.T) { function TestAuditIndex_FilterByAction (line 181) | func TestAuditIndex_FilterByAction(t *testing.T) { function TestAuditIndex_FilterByUsername (line 215) | func TestAuditIndex_FilterByUsername(t *testing.T) { function TestAuditIndex_Pagination (line 249) | func TestAuditIndex_Pagination(t *testing.T) { function TestAuditIndex_MultipleFilters (line 287) | func TestAuditIndex_MultipleFilters(t *testing.T) { FILE: internal/routers/base/base.go function ParsePageAndPageSize (line 11) | func ParsePageAndPageSize(c *gin.Context, params models.CommonMap) { FILE: internal/routers/base/response.go function RespondSuccess (line 12) | func RespondSuccess(c *gin.Context, message string, data interface{}) { function RespondSuccessWithDefaultMsg (line 19) | func RespondSuccessWithDefaultMsg(c *gin.Context, data interface{}) { function RespondError (line 26) | func RespondError(c *gin.Context, message string, err ...error) { function RespondErrorWithDefaultMsg (line 36) | func RespondErrorWithDefaultMsg(c *gin.Context, err ...error) { function RespondValidationError (line 46) | func RespondValidationError(c *gin.Context, err error) { function RespondAuthError (line 53) | func RespondAuthError(c *gin.Context, message string) { FILE: internal/routers/host/host.go constant testConnectionCommand (line 20) | testConnectionCommand = "echo hello" constant testConnectionTimeout (line 21) | testConnectionTimeout = 5 function Index (line 24) | func Index(c *gin.Context) { function All (line 45) | func All(c *gin.Context) { function Detail (line 57) | func Detail(c *gin.Context) { type HostForm (line 69) | type HostForm struct function Store (line 78) | func Store(c *gin.Context) { function Remove (line 140) | func Remove(c *gin.Context) { function Ping (line 177) | func Ping(c *gin.Context) { function parseQueryParams (line 198) | func parseQueryParams(c *gin.Context) models.CommonMap { FILE: internal/routers/install/install.go type InstallForm (line 21) | type InstallForm struct function Store (line 36) | func Store(c *gin.Context) { function writeConfig (line 106) | func writeConfig(form InstallForm) error { function createAdminUser (line 140) | func createAdminUser(form InstallForm) error { function testDbConnection (line 152) | func testDbConnection(form InstallForm) error { FILE: internal/routers/loginlog/login_log.go function Index (line 10) | func Index(c *gin.Context) { FILE: internal/routers/manage/manage.go function Slack (line 16) | func Slack(c *gin.Context) { function UpdateSlack (line 26) | func UpdateSlack(c *gin.Context) { function CreateSlackChannel (line 43) | func CreateSlackChannel(c *gin.Context) { function RemoveSlackChannel (line 64) | func RemoveSlackChannel(c *gin.Context) { function Mail (line 78) | func Mail(c *gin.Context) { type MailServerForm (line 88) | type MailServerForm struct type CreateMailUserForm (line 97) | type CreateMailUserForm struct type UpdateSlackForm (line 103) | type UpdateSlackForm struct type UpdateWebHookForm (line 109) | type UpdateWebHookForm struct type CreateWebhookUrlForm (line 114) | type CreateWebhookUrlForm struct type CreateSlackChannelForm (line 120) | type CreateSlackChannelForm struct function UpdateMail (line 124) | func UpdateMail(c *gin.Context) { function CreateMailUser (line 171) | func CreateMailUser(c *gin.Context) { function RemoveMailUser (line 188) | func RemoveMailUser(c *gin.Context) { function WebHook (line 199) | func WebHook(c *gin.Context) { function UpdateWebHook (line 209) | func UpdateWebHook(c *gin.Context) { function CreateWebhookUrl (line 226) | func CreateWebhookUrl(c *gin.Context) { function RemoveWebhookUrl (line 243) | func RemoveWebhookUrl(c *gin.Context) { function GetLogRetentionDays (line 257) | func GetLogRetentionDays(c *gin.Context) { function UpdateLogRetentionDays (line 269) | func UpdateLogRetentionDays(c *gin.Context) { FILE: internal/routers/routers.go constant urlPrefix (line 34) | urlPrefix = "/api" function init (line 39) | func init() { function Register (line 48) | func Register(r *gin.Engine) { function RegisterMiddleware (line 239) | func RegisterMiddleware(r *gin.Engine) { function securityHeaders (line 251) | func securityHeaders(c *gin.Context) { function isStaticFileRequest (line 262) | func isStaticFileRequest(path string) bool { function checkAppInstall (line 267) | func checkAppInstall(c *gin.Context) { function ipAuth (line 285) | func ipAuth(c *gin.Context) { function userAuth (line 309) | func userAuth(c *gin.Context) { function urlAuth (line 365) | func urlAuth(c *gin.Context) { function auditLog (line 424) | func auditLog(c *gin.Context) { function resolveModuleAction (line 479) | func resolveModuleAction(path string, c *gin.Context) (module, action st... function resolveTargetName (line 554) | func resolveTargetName(ctx context.Context, module string, targetId int)... function apiAuth (line 588) | func apiAuth(c *gin.Context) { FILE: internal/routers/statistics/statistics.go type OverviewData (line 12) | type OverviewData struct function Overview (line 21) | func Overview(c *gin.Context) { FILE: internal/routers/task/cron_preview.go type cronPreviewRequest (line 11) | type cronPreviewRequest struct function CronPreview (line 19) | func CronPreview(c *gin.Context) { FILE: internal/routers/task/task.go type TaskForm (line 20) | type TaskForm struct function Index (line 48) | func Index(c *gin.Context) { function Detail (line 73) | func Detail(c *gin.Context) { function Store (line 93) | func Store(c *gin.Context) { function Remove (line 270) | func Remove(c *gin.Context) { function Enable (line 289) | func Enable(c *gin.Context) { function Disable (line 294) | func Disable(c *gin.Context) { function Run (line 299) | func Run(c *gin.Context) { function BatchEnable (line 317) | func BatchEnable(c *gin.Context) { function BatchDisable (line 322) | func BatchDisable(c *gin.Context) { function batchChangeStatus (line 327) | func batchChangeStatus(c *gin.Context, status models.Status) { function BatchRemove (line 359) | func BatchRemove(c *gin.Context) { function changeStatus (line 387) | func changeStatus(c *gin.Context, status models.Status) { function addTaskToTimer (line 410) | func addTaskToTimer(id int) { function GetAllTags (line 422) | func GetAllTags(c *gin.Context) { function parseQueryParams (line 435) | func parseQueryParams(c *gin.Context) models.CommonMap { function buildTaskDiff (line 456) | func buildTaskDiff(old, new models.Task) string { FILE: internal/routers/task/task_tag_test.go function setupTestRouter (line 16) | func setupTestRouter(t *testing.T) (*gin.Engine, func()) { type apiResponse (line 48) | type apiResponse struct function TestGetAllTagsHandler_Empty (line 54) | func TestGetAllTagsHandler_Empty(t *testing.T) { function TestGetAllTagsHandler_WithTags (line 85) | func TestGetAllTagsHandler_WithTags(t *testing.T) { FILE: internal/routers/task/task_version.go function VersionList (line 19) | func VersionList(c *gin.Context) { function VersionDetail (line 51) | func VersionDetail(c *gin.Context) { function VersionRollback (line 72) | func VersionRollback(c *gin.Context) { FILE: internal/routers/tasklog/task_log.go function Index (line 16) | func Index(c *gin.Context) { function Clear (line 36) | func Clear(c *gin.Context) { function Stop (line 47) | func Stop(c *gin.Context) { function Remove (line 80) | func Remove(c *gin.Context) { function ClearByTaskId (line 96) | func ClearByTaskId(c *gin.Context) { function parseQueryParams (line 114) | func parseQueryParams(c *gin.Context) models.CommonMap { FILE: internal/routers/tasklog/task_log_test.go function init (line 15) | func init() { function setupTestDb (line 19) | func setupTestDb(t *testing.T) { function TestClearByTaskId_InvalidId (line 32) | func TestClearByTaskId_InvalidId(t *testing.T) { function TestClearByTaskId_ValidId (line 67) | func TestClearByTaskId_ValidId(t *testing.T) { FILE: internal/routers/template/template.go type TemplateForm (line 17) | type TemplateForm struct type SaveFromTaskForm (line 41) | type SaveFromTaskForm struct function Index (line 49) | func Index(c *gin.Context) { function Detail (line 74) | func Detail(c *gin.Context) { function Store (line 93) | func Store(c *gin.Context) { function Remove (line 163) | func Remove(c *gin.Context) { function Apply (line 188) | func Apply(c *gin.Context) { function SaveFromTask (line 208) | func SaveFromTask(c *gin.Context) { function Categories (line 274) | func Categories(c *gin.Context) { function parseQueryParams (line 286) | func parseQueryParams(c *gin.Context) models.CommonMap { FILE: internal/routers/user/twofa.go function Setup2FA (line 17) | func Setup2FA(c *gin.Context) { type Enable2FAForm (line 63) | type Enable2FAForm struct function Enable2FA (line 69) | func Enable2FA(c *gin.Context) { type Disable2FAForm (line 100) | type Disable2FAForm struct function Disable2FA (line 105) | func Disable2FA(c *gin.Context) { function Get2FAStatus (line 147) | func Get2FAStatus(c *gin.Context) { FILE: internal/routers/user/user.go constant tokenDuration (line 21) | tokenDuration = 4 * time.Hour type UserForm (line 24) | type UserForm struct type UpdatePasswordForm (line 35) | type UpdatePasswordForm struct type UpdateMyPasswordForm (line 41) | type UpdateMyPasswordForm struct function Index (line 48) | func Index(c *gin.Context) { function parseQueryParams (line 69) | func parseQueryParams(c *gin.Context) models.CommonMap { function Detail (line 77) | func Detail(c *gin.Context) { function Store (line 92) | func Store(c *gin.Context) { function Remove (line 173) | func Remove(c *gin.Context) { function Enable (line 185) | func Enable(c *gin.Context) { function Disable (line 190) | func Disable(c *gin.Context) { function changeStatus (line 195) | func changeStatus(c *gin.Context, status models.Status) { function UpdatePassword (line 209) | func UpdatePassword(c *gin.Context) { function UpdateMyPassword (line 236) | func UpdateMyPassword(c *gin.Context) { function ValidateLogin (line 270) | func ValidateLogin(c *gin.Context) { function Username (line 356) | func Username(c *gin.Context) string { function Uid (line 369) | func Uid(c *gin.Context) int { function IsLogin (line 382) | func IsLogin(c *gin.Context) bool { function IsAdmin (line 387) | func IsAdmin(c *gin.Context) bool { function generateToken (line 400) | func generateToken(user *models.User) (string, error) { function RestoreToken (line 415) | func RestoreToken(c *gin.Context) (string, error) { FILE: internal/service/cron_preview.go constant maxHeatmapIterations (line 18) | maxHeatmapIterations = 2000 constant heatmapWindowHours (line 19) | heatmapWindowHours = 24 * 7 constant maxNextRunsRequested (line 20) | maxNextRunsRequested = 20 constant defaultNextRuns (line 21) | defaultNextRuns = 10 constant maxSpecLength (line 22) | maxSpecLength = 128 type CronRun (line 25) | type CronRun struct type HeatmapCell (line 31) | type HeatmapCell struct type CronPreviewResult (line 37) | type CronPreviewResult struct function PreviewCron (line 48) | func PreviewCron(spec, timezone string, count int) *CronPreviewResult { function previewCronAt (line 53) | func previewCronAt(spec, timezone string, count int, now time.Time) *Cro... function resolveSpecTimezone (line 145) | func resolveSpecTimezone(spec, timezone string) (finalSpec, effectiveTZ,... function stripTimezonePrefix (line 169) | func stripTimezonePrefix(spec string) (bareSpec, timezone string) { FILE: internal/service/cron_preview_test.go function TestPreviewCron_ValidStandardExpressions (line 12) | func TestPreviewCron_ValidStandardExpressions(t *testing.T) { function TestPreviewCron_InvalidInput (line 95) | func TestPreviewCron_InvalidInput(t *testing.T) { function TestPreviewCron_Timezone (line 125) | func TestPreviewCron_Timezone(t *testing.T) { function TestPreviewCron_Heatmap (line 168) | func TestPreviewCron_Heatmap(t *testing.T) { function TestPreviewCron_CountClamp (line 218) | func TestPreviewCron_CountClamp(t *testing.T) { function TestStripTimezonePrefix (line 239) | func TestStripTimezonePrefix(t *testing.T) { function BenchmarkPreviewCron_HighFrequency (line 260) | func BenchmarkPreviewCron_HighFrequency(b *testing.B) { function BenchmarkPreviewCron_Standard (line 267) | func BenchmarkPreviewCron_Standard(b *testing.B) { FILE: internal/service/issue66_test.go function TestIssue66RaceCondition (line 15) | func TestIssue66RaceCondition(t *testing.T) { FILE: internal/service/single_instance_test.go function TestSingleInstanceControl (line 12) | func TestSingleInstanceControl(t *testing.T) { function TestBeforeExecJobSingleInstance (line 97) | func TestBeforeExecJobSingleInstance(t *testing.T) { function TestCreateJobSingleInstanceLogic (line 151) | func TestCreateJobSingleInstanceLogic(t *testing.T) { function TestInstanceThreadSafety (line 198) | func TestInstanceThreadSafety(t *testing.T) { function TestSingleInstanceRealScenario (line 235) | func TestSingleInstanceRealScenario(t *testing.T) { FILE: internal/service/task.go type ConcurrencyQueue (line 59) | type ConcurrencyQueue struct method Add (line 63) | func (cq *ConcurrencyQueue) Add() { method Done (line 67) | func (cq *ConcurrencyQueue) Done() { type TaskCount (line 72) | type TaskCount struct method Add (line 77) | func (tc *TaskCount) Add() { method Done (line 81) | func (tc *TaskCount) Done() { method Exit (line 85) | func (tc *TaskCount) Exit() { method Wait (line 90) | func (tc *TaskCount) Wait() { type Instance (line 97) | type Instance struct method has (line 102) | func (i *Instance) has(key int) bool { method add (line 108) | func (i *Instance) add(key int) { method done (line 112) | func (i *Instance) done(key int) { method tryAdd (line 118) | func (i *Instance) tryAdd(key int) bool { type Task (line 123) | type Task struct method Initialize (line 133) | func (task Task) Initialize() { method StartScheduler (line 141) | func (task Task) StartScheduler() { method StopScheduler (line 180) | func (task Task) StopScheduler() { method IsSchedulerRunning (line 195) | func (task Task) IsSchedulerRunning() bool { method initLogCleanupTask (line 202) | func (task Task) initLogCleanupTask() { method ReloadLogCleanupTask (line 264) | func (task Task) ReloadLogCleanupTask() { method BatchAdd (line 276) | func (task Task) BatchAdd(tasks []models.Task) { method RemoveAndAdd (line 283) | func (task Task) RemoveAndAdd(taskModel models.Task) { method Add (line 289) | func (task Task) Add(taskModel models.Task) { method NextRunTime (line 312) | func (task Task) NextRunTime(taskModel models.Task) time.Time { method Stop (line 332) | func (task Task) Stop(ip string, port int, id int64) { method Remove (line 336) | func (task Task) Remove(id int) { method WaitAndExit (line 344) | func (task Task) WaitAndExit() { method Run (line 355) | func (task Task) Run(taskModel models.Task) { type TaskResult (line 125) | type TaskResult struct type Handler (line 359) | type Handler interface type HTTPHandler (line 364) | type HTTPHandler struct method Run (line 369) | func (h *HTTPHandler) Run(taskModel models.Task, taskUniqueId int64) (... constant HttpDefaultTimeout (line 367) | HttpDefaultTimeout = 300 function compactJSON (line 429) | func compactJSON(s string) string { type RPCHandler (line 438) | type RPCHandler struct method Run (line 440) | func (h *RPCHandler) Run(taskModel models.Task, taskUniqueId int64) (r... function createTaskLog (line 489) | func createTaskLog(taskModel models.Task, status models.Status) (int64, ... function updateTaskLog (line 515) | func updateTaskLog(taskLogId int64, taskResult TaskResult) (int64, error) { function createJob (line 540) | func createJob(taskModel models.Task) cron.FuncJob { function createHandler (line 572) | func createHandler(taskModel models.Task) Handler { function beforeExecJob (line 585) | func beforeExecJob(taskModel models.Task) (taskLogId int64) { function afterExecJob (line 609) | func afterExecJob(taskModel models.Task, taskResult TaskResult, taskLogI... function execDependencyTask (line 622) | func execDependencyTask(taskModel models.Task, taskResult TaskResult) { function SendNotification (line 660) | func SendNotification(taskModel models.Task, taskResult TaskResult) { function execJob (line 700) | func execJob(handler Handler, taskModel models.Task, taskUniqueId int64)... function cleanupLogFiles (line 737) | func cleanupLogFiles() { FILE: internal/service/task_cleanup_test.go function setupCleanupTestDB (line 13) | func setupCleanupTestDB(t *testing.T) func() { function TestTaskLevelRetentionBeforeGlobal (line 42) | func TestTaskLevelRetentionBeforeGlobal(t *testing.T) { function TestTaskWithoutCustomRetentionUsesGlobal (line 139) | func TestTaskWithoutCustomRetentionUsesGlobal(t *testing.T) { FILE: internal/service/task_partial_output_test.go type mockRPCHandlerWithPartialOutput (line 13) | type mockRPCHandlerWithPartialOutput struct method Run (line 18) | func (m *mockRPCHandlerWithPartialOutput) Run(taskModel models.Task, t... function TestExecJobWithPartialOutput_Timeout (line 39) | func TestExecJobWithPartialOutput_Timeout(t *testing.T) { function TestExecJobWithPartialOutput_ManualStop (line 70) | func TestExecJobWithPartialOutput_ManualStop(t *testing.T) { function TestExecJobWithPartialOutput_NormalError (line 98) | func TestExecJobWithPartialOutput_NormalError(t *testing.T) { function TestExecJobWithPartialOutput_Success (line 127) | func TestExecJobWithPartialOutput_Success(t *testing.T) { type overridableHandler (line 153) | type overridableHandler struct method Run (line 157) | func (h *overridableHandler) Run(taskModel models.Task, taskUniqueId i... function TestExecJobWithPartialOutput_RetryWithTimeout (line 161) | func TestExecJobWithPartialOutput_RetryWithTimeout(t *testing.T) { FILE: internal/service/task_test.go function TestMain (line 17) | func TestMain(m *testing.M) { function TestHTTPHandlerRunGetUsesCustomTimeout (line 23) | func TestHTTPHandlerRunGetUsesCustomTimeout(t *testing.T) { function TestHTTPHandlerRunGetDefaultTimeout (line 55) | func TestHTTPHandlerRunGetDefaultTimeout(t *testing.T) { function TestHTTPHandlerRunPostParsesParams (line 77) | func TestHTTPHandlerRunPostParsesParams(t *testing.T) { function TestHTTPHandlerRunReturnsErrorForNon200 (line 111) | func TestHTTPHandlerRunReturnsErrorForNon200(t *testing.T) { function TestHTTPHandlerRunPostJsonBody (line 129) | func TestHTTPHandlerRunPostJsonBody(t *testing.T) { function TestHTTPHandlerRunPostFallbackToParams (line 155) | func TestHTTPHandlerRunPostFallbackToParams(t *testing.T) { function TestHTTPHandlerRunSuccessPatternMatch (line 181) | func TestHTTPHandlerRunSuccessPatternMatch(t *testing.T) { function TestHTTPHandlerRunSuccessPatternNoMatch (line 202) | func TestHTTPHandlerRunSuccessPatternNoMatch(t *testing.T) { function TestHTTPHandlerRunSuccessPatternInvalidRegex (line 226) | func TestHTTPHandlerRunSuccessPatternInvalidRegex(t *testing.T) { function TestHTTPHandlerRunSuccessPatternMatchCompactJSON (line 250) | func TestHTTPHandlerRunSuccessPatternMatchCompactJSON(t *testing.T) { function TestHTTPHandlerRunEmptyPatternSkipsCheck (line 280) | func TestHTTPHandlerRunEmptyPatternSkipsCheck(t *testing.T) { function TestHTTPHandlerRunGetWithHeaders (line 301) | func TestHTTPHandlerRunGetWithHeaders(t *testing.T) { function TestHTTPHandlerRunPostJsonWithHeaders (line 327) | func TestHTTPHandlerRunPostJsonWithHeaders(t *testing.T) { type fakeHandler (line 358) | type fakeHandler struct method Run (line 368) | func (f *fakeHandler) Run(taskModel models.Task, taskUniqueId int64) (... type handlerResponse (line 363) | type handlerResponse struct function TestExecJobRetriesUntilSuccess (line 374) | func TestExecJobRetriesUntilSuccess(t *testing.T) { function TestExecJobReturnsErrorAfterRetriesExhausted (line 405) | func TestExecJobReturnsErrorAfterRetriesExhausted(t *testing.T) { function TestSendNotificationBehavior (line 436) | func TestSendNotificationBehavior(t *testing.T) { function stubNotifyPush (line 501) | func stubNotifyPush(t *testing.T) *[]notify.Message { function TestExecDependencyTaskLogic (line 517) | func TestExecDependencyTaskLogic(t *testing.T) { FILE: test_windows_cmd.go function main (line 11) | func main() { FILE: web/vue/src/api/agent.js method generateToken (line 4) | generateToken (callback) { FILE: web/vue/src/api/audit.js method list (line 4) | list (query, callback) { FILE: web/vue/src/api/host.js method list (line 5) | list (query, callback) { method all (line 9) | all (query, callback) { method detail (line 13) | detail (id, callback) { method update (line 17) | update (data, callback) { method remove (line 21) | remove (id, callback) { method ping (line 25) | ping (id, callback) { FILE: web/vue/src/api/install.js method store (line 4) | store (data, callback) { method status (line 7) | status (callback) { FILE: web/vue/src/api/notification.js method slack (line 4) | slack(callback) { method updateSlack (line 7) | updateSlack(data, callback) { method createSlackChannel (line 10) | createSlackChannel(channel, callback) { method removeSlackChannel (line 13) | removeSlackChannel(channelId, callback) { method mail (line 16) | mail(callback) { method updateMail (line 19) | updateMail(data, callback) { method createMailUser (line 22) | createMailUser(data, callback) { method removeMailUser (line 25) | removeMailUser(userId, callback) { method webhook (line 28) | webhook(callback) { method updateWebHook (line 31) | updateWebHook(data, callback) { method createWebhookUrl (line 34) | createWebhookUrl(data, callback) { method removeWebhookUrl (line 37) | removeWebhookUrl(urlId, callback) { FILE: web/vue/src/api/statistics.js method getOverview (line 4) | getOverview (callback) { FILE: web/vue/src/api/system.js method loginLogList (line 4) | loginLogList (query, callback) { FILE: web/vue/src/api/task.js method list (line 4) | list(query, callback) { method detail (line 8) | detail(id, callback) { method update (line 18) | update(data, callback) { method remove (line 22) | remove(id, callback) { method enable (line 26) | enable(id, callback) { method disable (line 30) | disable(id, callback) { method run (line 34) | run(id, callback) { method allTags (line 38) | allTags(callback) { method batchEnable (line 42) | batchEnable(ids, callback) { method batchDisable (line 46) | batchDisable(ids, callback) { method batchRemove (line 50) | batchRemove(ids, callback) { method cronPreview (line 58) | cronPreview(params, callback) { method versions (line 62) | versions(taskId, params, callback) { method versionDetail (line 66) | versionDetail(taskId, versionId, callback) { method versionRollback (line 70) | versionRollback(taskId, versionId, callback) { FILE: web/vue/src/api/taskLog.js method list (line 4) | list (query, callback) { method clear (line 8) | clear (callback) { method stop (line 12) | stop (id, taskId, callback) { method clearByTaskId (line 16) | clearByTaskId (taskId, callback) { FILE: web/vue/src/api/template.js method list (line 4) | list(query, callback) { method categories (line 8) | categories(callback) { method detail (line 12) | detail(id, callback) { method store (line 16) | store(data, callback) { method remove (line 20) | remove(id, callback) { method apply (line 24) | apply(id, callback) { method saveFromTask (line 28) | saveFromTask(data, callback) { FILE: web/vue/src/api/user.js method list (line 4) | list (query, callback) { method detail (line 8) | detail (id, callback) { method update (line 12) | update (data, callback) { method login (line 16) | login (username, password, twoFactorCode, callback, errorCallback) { method enable (line 24) | enable (id, callback) { method disable (line 28) | disable (id, callback) { method remove (line 32) | remove (id, callback) { method editPassword (line 36) | editPassword (data, callback) { method editMyPassword (line 43) | editMyPassword (data, callback) { method get2FAStatus (line 47) | get2FAStatus (callback) { method setup2FA (line 51) | setup2FA (callback) { method enable2FA (line 55) | enable2FA (secret, code, callback) { method disable2FA (line 59) | disable2FA (code, callback, errorCallback) { FILE: web/vue/src/composables/useDebounce.js function useDebounce (line 3) | function useDebounce(value, delay = 300) { function useDebounceFn (line 22) | function useDebounceFn(fn, delay = 300) { FILE: web/vue/src/composables/useLoading.js function useLoading (line 4) | function useLoading(initialState = false) { function useFullScreenLoading (line 20) | function useFullScreenLoading() { FILE: web/vue/src/composables/useMessage.js function useMessage (line 4) | function useMessage() { FILE: web/vue/src/main.js method mounted (line 26) | mounted(el) { method formatTime (line 48) | formatTime(time) { FILE: web/vue/src/storage/user.js class User (line 1) | class User { method get (line 2) | get () { method getToken (line 11) | getToken () { method setToken (line 15) | setToken (token) { method clear (line 20) | clear () { method getUid (line 24) | getUid () { method setUid (line 28) | setUid (uid) { method getUsername (line 33) | getUsername () { method setUsername (line 37) | setUsername (username) { method getIsAdmin (line 42) | getIsAdmin () { method setIsAdmin (line 47) | setIsAdmin (isAdmin) { FILE: web/vue/src/stores/user.js method setUser (line 16) | setUser(user) { method logout (line 23) | logout() { FILE: web/vue/src/utils/cronValidator.js constant SHORTCUTS (line 12) | const SHORTCUTS = [ constant EVERY_PATTERN (line 24) | const EVERY_PATTERN = /^@every\s+(\d+[smh])+$/ function extractTimezone (line 30) | function extractTimezone(spec) { function validateCronSpec (line 47) | function validateCronSpec(spec) { function validateShortcut (line 72) | function validateShortcut(spec) { function validateStandardCron (line 100) | function validateStandardCron(spec) { function validateSegment (line 135) | function validateSegment(segment, range) { function validateRange (line 200) | function validateRange(segment, range) { function validateStep (line 236) | function validateStep(segment, range) { function validateList (line 264) | function validateList(segment, range) { function getCronExamples (line 280) | function getCronExamples() { FILE: web/vue/src/utils/httpClient.js constant SUCCESS_CODE (line 30) | const SUCCESS_CODE = 0 constant AUTH_ERROR_CODE (line 32) | const AUTH_ERROR_CODE = 401 constant APP_NOT_INSTALL_CODE (line 34) | const APP_NOT_INSTALL_CODE = 801 function handle (line 99) | function handle(promise, next, errorCallback) { function checkResponseCode (line 105) | function checkResponseCode(code, msg) { function successCallback (line 134) | function successCallback(res, next, errorCallback) { function failureCallback (line 150) | function failureCallback(error) { method get (line 164) | get(uri, params, next) { method batchGet (line 169) | batchGet(uriGroup, next) { method post (line 193) | post(uri, data, next, errorCallback) { method postJson (line 202) | postJson(uri, data, next, errorCallback) { FILE: web/vue/src/utils/progress/index.js function start (line 19) | function start() { function done (line 26) | function done() { FILE: web/vue/src/utils/request.js constant SUCCESS_CODE (line 6) | const SUCCESS_CODE = 0 constant AUTH_ERROR_CODE (line 7) | const AUTH_ERROR_CODE = 401 constant APP_NOT_INSTALL_CODE (line 8) | const APP_NOT_INSTALL_CODE = 801 FILE: webhook-test/webhook-test-server.go type WebhookPayload (line 13) | type WebhookPayload struct function main (line 21) | func main() { function handleWebhook (line 32) | func handleWebhook(w http.ResponseWriter, r *http.Request) { function handleHealth (line 87) | func handleHealth(w http.ResponseWriter, r *http.Request) {