func InitApi() { BaseRoutes = &Routes{} BaseRoutes.Root = Srv.Router BaseRoutes.ApiRoot = Srv.Router.PathPrefix(model.API_URL_SUFFIX).Subrouter() BaseRoutes.Users = BaseRoutes.ApiRoot.PathPrefix("/users").Subrouter() BaseRoutes.NeedUser = BaseRoutes.Users.PathPrefix("/{user_id:[A-Za-z0-9]+}").Subrouter() BaseRoutes.Teams = BaseRoutes.ApiRoot.PathPrefix("/teams").Subrouter() BaseRoutes.NeedTeam = BaseRoutes.Teams.PathPrefix("/{team_id:[A-Za-z0-9]+}").Subrouter() BaseRoutes.Channels = BaseRoutes.NeedTeam.PathPrefix("/channels").Subrouter() BaseRoutes.NeedChannel = BaseRoutes.Channels.PathPrefix("/{channel_id:[A-Za-z0-9]+}").Subrouter() BaseRoutes.NeedChannelName = BaseRoutes.Channels.PathPrefix("/name/{channel_name:[A-Za-z0-9_-]+}").Subrouter() BaseRoutes.Posts = BaseRoutes.NeedChannel.PathPrefix("/posts").Subrouter() BaseRoutes.NeedPost = BaseRoutes.Posts.PathPrefix("/{post_id:[A-Za-z0-9]+}").Subrouter() BaseRoutes.Commands = BaseRoutes.NeedTeam.PathPrefix("/commands").Subrouter() BaseRoutes.TeamFiles = BaseRoutes.NeedTeam.PathPrefix("/files").Subrouter() BaseRoutes.Files = BaseRoutes.ApiRoot.PathPrefix("/files").Subrouter() BaseRoutes.NeedFile = BaseRoutes.Files.PathPrefix("/{file_id:[A-Za-z0-9]+}").Subrouter() BaseRoutes.Hooks = BaseRoutes.NeedTeam.PathPrefix("/hooks").Subrouter() BaseRoutes.OAuth = BaseRoutes.ApiRoot.PathPrefix("/oauth").Subrouter() BaseRoutes.Admin = BaseRoutes.ApiRoot.PathPrefix("/admin").Subrouter() BaseRoutes.General = BaseRoutes.ApiRoot.PathPrefix("/general").Subrouter() BaseRoutes.Preferences = BaseRoutes.ApiRoot.PathPrefix("/preferences").Subrouter() BaseRoutes.License = BaseRoutes.ApiRoot.PathPrefix("/license").Subrouter() BaseRoutes.Public = BaseRoutes.ApiRoot.PathPrefix("/public").Subrouter() BaseRoutes.Emoji = BaseRoutes.ApiRoot.PathPrefix("/emoji").Subrouter() BaseRoutes.Webrtc = BaseRoutes.ApiRoot.PathPrefix("/webrtc").Subrouter() BaseRoutes.WebSocket = NewWebSocketRouter() InitUser() InitTeam() InitChannel() InitPost() InitWebSocket() InitFile() InitCommand() InitAdmin() InitGeneral() InitOAuth() InitWebhook() InitPreference() InitLicense() InitEmoji() InitStatus() InitWebrtc() InitReaction() InitDeprecated() // 404 on any api route before web.go has a chance to serve it Srv.Router.Handle("/api/{anything:.*}", http.HandlerFunc(Handle404)) utils.InitHTML() InitEmailBatching() }
func InitApi() { r := Srv.Router.PathPrefix("/api/v1").Subrouter() InitUser(r) InitTeam(r) InitChannel(r) InitPost(r) InitWebSocket(r) InitFile(r) InitCommand(r) InitAdmin(r) InitOAuth(r) InitWebhook(r) InitPreference(r) InitLicense(r) utils.InitHTML() }
func InitApi() { r := Srv.Router.PathPrefix("/api/v1").Subrouter() InitUser(r) InitTeam(r) InitChannel(r) InitPost(r) InitWebSocket(r) InitFile(r) InitCommand(r) InitAdmin(r) InitOAuth(r) InitWebhook(r) InitPreference(r) InitLicense(r) // 404 on any api route before web.go has a chance to serve it Srv.Router.Handle("/api/{anything:.*}", http.HandlerFunc(Handle404)) utils.InitHTML() }
func SetupEnterprise() *TestHelper { if Srv == nil { utils.LoadConfig("config.json") utils.InitTranslations(utils.Cfg.LocalizationSettings) utils.Cfg.TeamSettings.MaxUsersPerTeam = 50 utils.DisableDebugLogForTest() utils.License.Features.SetDefaults() NewServer() StartServer() utils.InitHTML() InitApi() utils.EnableDebugLogForTest() Srv.Store.MarkSystemRanUnitTests() *utils.Cfg.TeamSettings.EnableOpenServer = true } return &TestHelper{} }
func userInviteCmdF(cmd *cobra.Command, args []string) error { initDBCommandContextCobra(cmd) utils.InitHTML() if len(args) < 2 { return errors.New("Not enough arguments.") } email := args[0] if !model.IsValidEmail(email) { return errors.New("Invalid email") } teams := getTeamsFromTeamArgs(args[1:]) for i, team := range teams { inviteUser(email, team, args[i+1]) } return nil }
func Setup() *TestHelper { if Srv == nil { utils.TranslationsPreInit() utils.LoadConfig("config.json") utils.InitTranslations(utils.Cfg.LocalizationSettings) utils.Cfg.TeamSettings.MaxUsersPerTeam = 50 *utils.Cfg.RateLimitSettings.Enable = false utils.DisableDebugLogForTest() NewServer() InitStores() StartServer() utils.InitHTML() utils.EnableDebugLogForTest() Srv.Store.MarkSystemRanUnitTests() *utils.Cfg.TeamSettings.EnableOpenServer = true } return &TestHelper{} }
// ADDED for 3.0 REMOVE for 3.4 func cmdUpdateDb30() { if flagCmdUpdateDb30 { api.Srv = &api.Server{} api.Srv.Store = store.NewSqlStoreForUpgrade30() store := api.Srv.Store.(*store.SqlStore) utils.InitHTML() l4g.Info("Attempting to run speical upgrade of the database schema to version 3.0 for user model changes") time.Sleep(time.Second) if !store.DoesColumnExist("Users", "TeamId") { fmt.Println("**WARNING** the database schema appears to be upgraded to 3.0") flushLogAndExit(1) } if !(store.SchemaVersion == "2.2.0" || store.SchemaVersion == "2.1.0" || store.SchemaVersion == "2.0.0") { fmt.Println("**WARNING** the database schema needs to be version 2.2.0, 2.1.0 or 2.0.0 to upgrade") flushLogAndExit(1) } var confirmBackup string fmt.Println("\nPlease see http://www.mattermost.org/upgrade-to-3-0/") fmt.Println("**WARNING** This upgrade process will be irreversible.") fmt.Print("Have you performed a database backup? (YES/NO): ") fmt.Scanln(&confirmBackup) if confirmBackup != "YES" { fmt.Fprintln(os.Stderr, "ABORTED: You did not answer YES exactly, in all capitals.") flushLogAndExit(1) } var flagTeamName string var teams []*TeamForUpgrade if _, err := store.GetMaster().Select(&teams, "SELECT Id, Name FROM Teams"); err != nil { l4g.Error("Failed to load all teams details=%v", err) flushLogAndExit(1) } fmt.Println(fmt.Sprintf("We found %v teams.", len(teams))) for _, team := range teams { fmt.Println(team.Name) } fmt.Print("Please pick a primary team from the list above: ") fmt.Scanln(&flagTeamName) var team *TeamForUpgrade for _, t := range teams { if t.Name == flagTeamName { team = t break } } if team == nil { l4g.Error("Failed to find primary team details") flushLogAndExit(1) } l4g.Info("Starting speical 3.0 database upgrade with performed_backup=YES team_name=%v", team.Name) l4g.Info("Primary team %v will be left unchanged", team.Name) l4g.Info("Upgrading primary team %v", team.Name) uniqueEmails := make(map[string]bool) uniqueUsernames := make(map[string]bool) primaryUsers := convertTeamTo30(team.Name, team, uniqueEmails, uniqueUsernames) l4g.Info("Upgraded %v users", len(primaryUsers)) for _, otherTeam := range teams { if otherTeam.Id != team.Id { l4g.Info("Upgrading team %v", otherTeam.Name) users := convertTeamTo30(team.Name, otherTeam, uniqueEmails, uniqueUsernames) l4g.Info("Upgraded %v users", len(users)) } } l4g.Info("Altering other scheme changes needed 3.0 for user model changes") if _, err := store.GetMaster().Exec(` UPDATE Channels SET TeamId = '' WHERE Type = 'D' `, ); err != nil { l4g.Error("Failed to update direct channel types details=%v", err) flushLogAndExit(1) } extraLength := store.GetMaxLengthOfColumnIfExists("Audits", "ExtraInfo") if len(extraLength) > 0 && extraLength != "1024" { store.AlterColumnTypeIfExists("Audits", "ExtraInfo", "VARCHAR(1024)", "VARCHAR(1024)") } actionLength := store.GetMaxLengthOfColumnIfExists("Audits", "Action") if len(actionLength) > 0 && actionLength != "512" { store.AlterColumnTypeIfExists("Audits", "Action", "VARCHAR(512)", "VARCHAR(512)") } if store.DoesColumnExist("Sessions", "TeamId") { store.RemoveColumnIfExists("Sessions", "TeamId") store.GetMaster().Exec(`TRUNCATE Sessions`) } // ADDED for 2.2 REMOVE for 2.6 store.CreateColumnIfNotExists("Users", "MfaActive", "tinyint(1)", "boolean", "0") store.CreateColumnIfNotExists("Users", "MfaSecret", "varchar(128)", "character varying(128)", "") // ADDED for 2.2 REMOVE for 2.6 if store.DoesColumnExist("Users", "TeamId") { store.RemoveIndexIfExists("idx_users_team_id", "Users") store.CreateUniqueIndexIfNotExists("idx_users_email_unique", "Users", "Email") store.CreateUniqueIndexIfNotExists("idx_users_username_unique", "Users", "Username") store.RemoveColumnIfExists("Teams", "AllowTeamListing") store.RemoveColumnIfExists("Users", "TeamId") } l4g.Info("Finished running speical upgrade of the database schema to version 3.0 for user model changes") if result := <-store.System().Update(&model.System{Name: "Version", Value: model.CurrentVersion}); result.Err != nil { l4g.Error("Failed to update system schema version details=%v", result.Err) flushLogAndExit(1) } l4g.Info(utils.T("store.sql.upgraded.warn"), model.CurrentVersion) fmt.Println("**SUCCESS** with upgrade") flushLogAndExit(0) } }