summaryrefslogtreecommitdiffstats
path: root/cmd/platform/channel.go
diff options
context:
space:
mode:
authorJesús Espino <jespinog@gmail.com>2018-03-07 20:04:18 +0000
committerGitHub <noreply@github.com>2018-03-07 20:04:18 +0000
commitb2dd00dd5b83fc7e8b311a55f5a2536e4f3d45a5 (patch)
tree00d2bbb524e27727dc111994082f5293e6d12b11 /cmd/platform/channel.go
parent03b6d1f652407fa9c3ec7e740e120a1c3e920de0 (diff)
downloadchat-b2dd00dd5b83fc7e8b311a55f5a2536e4f3d45a5.tar.gz
chat-b2dd00dd5b83fc7e8b311a55f5a2536e4f3d45a5.tar.bz2
chat-b2dd00dd5b83fc7e8b311a55f5a2536e4f3d45a5.zip
Adding enterprise commands support (#8327)
Diffstat (limited to 'cmd/platform/channel.go')
-rw-r--r--cmd/platform/channel.go483
1 files changed, 0 insertions, 483 deletions
diff --git a/cmd/platform/channel.go b/cmd/platform/channel.go
deleted file mode 100644
index 5d86ad9da..000000000
--- a/cmd/platform/channel.go
+++ /dev/null
@@ -1,483 +0,0 @@
-// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-package main
-
-import (
- "errors"
- "fmt"
-
- "github.com/mattermost/mattermost-server/app"
- "github.com/mattermost/mattermost-server/model"
- "github.com/spf13/cobra"
-)
-
-var channelCmd = &cobra.Command{
- Use: "channel",
- Short: "Management of channels",
-}
-
-var channelCreateCmd = &cobra.Command{
- Use: "create",
- Short: "Create a channel",
- Long: `Create a channel.`,
- Example: ` channel create --team myteam --name mynewchannel --display_name "My New Channel"
- channel create --team myteam --name mynewprivatechannel --display_name "My New Private Channel" --private`,
- RunE: createChannelCmdF,
-}
-
-var removeChannelUsersCmd = &cobra.Command{
- Use: "remove [channel] [users]",
- Short: "Remove users from channel",
- Long: "Remove some users from channel",
- Example: " channel remove mychannel user@example.com username",
- RunE: removeChannelUsersCmdF,
-}
-
-var addChannelUsersCmd = &cobra.Command{
- Use: "add [channel] [users]",
- Short: "Add users to channel",
- Long: "Add some users to channel",
- Example: " channel add mychannel user@example.com username",
- RunE: addChannelUsersCmdF,
-}
-
-var archiveChannelsCmd = &cobra.Command{
- Use: "archive [channels]",
- Short: "Archive channels",
- Long: `Archive some channels.
-Archive a channel along with all related information including posts from the database.
-Channels can be specified by [team]:[channel]. ie. myteam:mychannel or by channel ID.`,
- Example: " channel archive myteam:mychannel",
- RunE: archiveChannelsCmdF,
-}
-
-var deleteChannelsCmd = &cobra.Command{
- Use: "delete [channels]",
- Short: "Delete channels",
- Long: `Permanently delete some channels.
-Permanently deletes a channel along with all related information including posts from the database.
-Channels can be specified by [team]:[channel]. ie. myteam:mychannel or by channel ID.`,
- Example: " channel delete myteam:mychannel",
- RunE: deleteChannelsCmdF,
-}
-
-var listChannelsCmd = &cobra.Command{
- Use: "list [teams]",
- Short: "List all channels on specified teams.",
- Long: `List all channels on specified teams.
-Archived channels are appended with ' (archived)'.`,
- Example: " channel list myteam",
- RunE: listChannelsCmdF,
-}
-
-var moveChannelsCmd = &cobra.Command{
- Use: "move [team] [channels]",
- Short: "Moves channels to the specified team",
- Long: `Moves the provided channels to the specified team.
-Validates that all users in the channel belong to the target team. Incoming/Outgoing webhooks are moved along with the channel.
-Channels can be specified by [team]:[channel]. ie. myteam:mychannel or by channel ID.`,
- Example: " channel move newteam oldteam:mychannel",
- RunE: moveChannelsCmdF,
-}
-
-var restoreChannelsCmd = &cobra.Command{
- Use: "restore [channels]",
- Short: "Restore some channels",
- Long: `Restore a previously deleted channel
-Channels can be specified by [team]:[channel]. ie. myteam:mychannel or by channel ID.`,
- Example: " channel restore myteam:mychannel",
- RunE: restoreChannelsCmdF,
-}
-
-var modifyChannelCmd = &cobra.Command{
- Use: "modify [channel]",
- Short: "Modify a channel's public/private type",
- Long: `Change the public/private type of a channel.
-Channel can be specified by [team]:[channel]. ie. myteam:mychannel or by channel ID.`,
- Example: " channel modify myteam:mychannel --private",
- RunE: modifyChannelCmdF,
-}
-
-func init() {
- channelCreateCmd.Flags().String("name", "", "Channel Name")
- channelCreateCmd.Flags().String("display_name", "", "Channel Display Name")
- channelCreateCmd.Flags().String("team", "", "Team name or ID")
- channelCreateCmd.Flags().String("header", "", "Channel header")
- channelCreateCmd.Flags().String("purpose", "", "Channel purpose")
- channelCreateCmd.Flags().Bool("private", false, "Create a private channel.")
-
- moveChannelsCmd.Flags().String("username", "", "Required. Username who is moving the channel.")
-
- deleteChannelsCmd.Flags().Bool("confirm", false, "Confirm you really want to delete the channels.")
-
- modifyChannelCmd.Flags().Bool("private", false, "Convert the channel to a private channel")
- modifyChannelCmd.Flags().Bool("public", false, "Convert the channel to a public channel")
- modifyChannelCmd.Flags().String("username", "", "Required. Username who changes the channel privacy.")
-
- channelCmd.AddCommand(
- channelCreateCmd,
- removeChannelUsersCmd,
- addChannelUsersCmd,
- archiveChannelsCmd,
- deleteChannelsCmd,
- listChannelsCmd,
- moveChannelsCmd,
- restoreChannelsCmd,
- modifyChannelCmd,
- )
-}
-
-func createChannelCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- name, errn := cmd.Flags().GetString("name")
- if errn != nil || name == "" {
- return errors.New("Name is required")
- }
- displayname, errdn := cmd.Flags().GetString("display_name")
- if errdn != nil || displayname == "" {
- return errors.New("Display Name is required")
- }
- teamArg, errteam := cmd.Flags().GetString("team")
- if errteam != nil || teamArg == "" {
- return errors.New("Team is required")
- }
- header, _ := cmd.Flags().GetString("header")
- purpose, _ := cmd.Flags().GetString("purpose")
- useprivate, _ := cmd.Flags().GetBool("private")
-
- channelType := model.CHANNEL_OPEN
- if useprivate {
- channelType = model.CHANNEL_PRIVATE
- }
-
- team := getTeamFromTeamArg(a, teamArg)
- if team == nil {
- return errors.New("Unable to find team: " + teamArg)
- }
-
- channel := &model.Channel{
- TeamId: team.Id,
- Name: name,
- DisplayName: displayname,
- Header: header,
- Purpose: purpose,
- Type: channelType,
- CreatorId: "",
- }
-
- if _, err := a.CreateChannel(channel, false); err != nil {
- return err
- }
-
- return nil
-}
-
-func removeChannelUsersCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- if len(args) < 2 {
- return errors.New("Not enough arguments.")
- }
-
- channel := getChannelFromChannelArg(a, args[0])
- if channel == nil {
- return errors.New("Unable to find channel '" + args[0] + "'")
- }
-
- users := getUsersFromUserArgs(a, args[1:])
- for i, user := range users {
- removeUserFromChannel(a, channel, user, args[i+1])
- }
-
- return nil
-}
-
-func removeUserFromChannel(a *app.App, channel *model.Channel, user *model.User, userArg string) {
- if user == nil {
- CommandPrintErrorln("Can't find user '" + userArg + "'")
- return
- }
- if err := a.RemoveUserFromChannel(user.Id, "", channel); err != nil {
- CommandPrintErrorln("Unable to remove '" + userArg + "' from " + channel.Name + ". Error: " + err.Error())
- }
-}
-
-func addChannelUsersCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- if len(args) < 2 {
- return errors.New("Not enough arguments.")
- }
-
- channel := getChannelFromChannelArg(a, args[0])
- if channel == nil {
- return errors.New("Unable to find channel '" + args[0] + "'")
- }
-
- users := getUsersFromUserArgs(a, args[1:])
- for i, user := range users {
- addUserToChannel(a, channel, user, args[i+1])
- }
-
- return nil
-}
-
-func addUserToChannel(a *app.App, channel *model.Channel, user *model.User, userArg string) {
- if user == nil {
- CommandPrintErrorln("Can't find user '" + userArg + "'")
- return
- }
- if _, err := a.AddUserToChannel(user, channel); err != nil {
- CommandPrintErrorln("Unable to add '" + userArg + "' from " + channel.Name + ". Error: " + err.Error())
- }
-}
-
-func archiveChannelsCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- if len(args) < 1 {
- return errors.New("Enter at least one channel to archive.")
- }
-
- channels := getChannelsFromChannelArgs(a, args)
- for i, channel := range channels {
- if channel == nil {
- CommandPrintErrorln("Unable to find channel '" + args[i] + "'")
- continue
- }
- if result := <-a.Srv.Store.Channel().Delete(channel.Id, model.GetMillis()); result.Err != nil {
- CommandPrintErrorln("Unable to archive channel '" + channel.Name + "' error: " + result.Err.Error())
- }
- }
-
- return nil
-}
-
-func deleteChannelsCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- if len(args) < 1 {
- return errors.New("Enter at least one channel to delete.")
- }
-
- confirmFlag, _ := cmd.Flags().GetBool("confirm")
- if !confirmFlag {
- var confirm string
- CommandPrettyPrintln("Are you sure you want to delete the channels specified? All data will be permanently deleted? (YES/NO): ")
- fmt.Scanln(&confirm)
- if confirm != "YES" {
- return errors.New("ABORTED: You did not answer YES exactly, in all capitals.")
- }
- }
-
- channels := getChannelsFromChannelArgs(a, args)
- for i, channel := range channels {
- if channel == nil {
- CommandPrintErrorln("Unable to find channel '" + args[i] + "'")
- continue
- }
- if err := deleteChannel(a, channel); err != nil {
- CommandPrintErrorln("Unable to delete channel '" + channel.Name + "' error: " + err.Error())
- } else {
- CommandPrettyPrintln("Deleted channel '" + channel.Name + "'")
- }
- }
-
- return nil
-}
-
-func deleteChannel(a *app.App, channel *model.Channel) *model.AppError {
- return a.PermanentDeleteChannel(channel)
-}
-
-func moveChannelsCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- if len(args) < 2 {
- return errors.New("Enter the destination team and at least one channel to move.")
- }
-
- team := getTeamFromTeamArg(a, args[0])
- if team == nil {
- return errors.New("Unable to find destination team '" + args[0] + "'")
- }
-
- username, erru := cmd.Flags().GetString("username")
- if erru != nil || username == "" {
- return errors.New("Username is required")
- }
- user := getUserFromUserArg(a, username)
-
- channels := getChannelsFromChannelArgs(a, args[1:])
- for i, channel := range channels {
- if channel == nil {
- CommandPrintErrorln("Unable to find channel '" + args[i] + "'")
- continue
- }
- originTeamID := channel.TeamId
- if err := moveChannel(a, team, channel, user); err != nil {
- CommandPrintErrorln("Unable to move channel '" + channel.Name + "' error: " + err.Error())
- } else {
- CommandPrettyPrintln("Moved channel '" + channel.Name + "' to " + team.Name + "(" + team.Id + ") from " + originTeamID + ".")
- }
- }
-
- return nil
-}
-
-func moveChannel(a *app.App, team *model.Team, channel *model.Channel, user *model.User) *model.AppError {
- oldTeamId := channel.TeamId
-
- if err := a.MoveChannel(team, channel, user); err != nil {
- return err
- }
-
- if incomingWebhooks, err := a.GetIncomingWebhooksForTeamPage(oldTeamId, 0, 10000000); err != nil {
- return err
- } else {
- for _, webhook := range incomingWebhooks {
- if webhook.ChannelId == channel.Id {
- webhook.TeamId = team.Id
- if result := <-a.Srv.Store.Webhook().UpdateIncoming(webhook); result.Err != nil {
- CommandPrintErrorln("Failed to move incoming webhook '" + webhook.Id + "' to new team.")
- }
- }
- }
- }
-
- if outgoingWebhooks, err := a.GetOutgoingWebhooksForTeamPage(oldTeamId, 0, 10000000); err != nil {
- return err
- } else {
- for _, webhook := range outgoingWebhooks {
- if webhook.ChannelId == channel.Id {
- webhook.TeamId = team.Id
- if result := <-a.Srv.Store.Webhook().UpdateOutgoing(webhook); result.Err != nil {
- CommandPrintErrorln("Failed to move outgoing webhook '" + webhook.Id + "' to new team.")
- }
- }
- }
- }
-
- return nil
-}
-
-func listChannelsCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- if len(args) < 1 {
- return errors.New("Enter at least one team.")
- }
-
- teams := getTeamsFromTeamArgs(a, args)
- for i, team := range teams {
- if team == nil {
- CommandPrintErrorln("Unable to find team '" + args[i] + "'")
- continue
- }
- if result := <-a.Srv.Store.Channel().GetAll(team.Id); result.Err != nil {
- CommandPrintErrorln("Unable to list channels for '" + args[i] + "'")
- } else {
- channels := result.Data.([]*model.Channel)
-
- for _, channel := range channels {
- if channel.DeleteAt > 0 {
- CommandPrettyPrintln(channel.Name + " (archived)")
- } else {
- CommandPrettyPrintln(channel.Name)
- }
- }
- }
- }
-
- return nil
-}
-
-func restoreChannelsCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- if len(args) < 1 {
- return errors.New("Enter at least one channel.")
- }
-
- channels := getChannelsFromChannelArgs(a, args)
- for i, channel := range channels {
- if channel == nil {
- CommandPrintErrorln("Unable to find channel '" + args[i] + "'")
- continue
- }
- if result := <-a.Srv.Store.Channel().SetDeleteAt(channel.Id, 0, model.GetMillis()); result.Err != nil {
- CommandPrintErrorln("Unable to restore channel '" + args[i] + "'")
- }
- }
-
- return nil
-}
-
-func modifyChannelCmdF(cmd *cobra.Command, args []string) error {
- a, err := initDBCommandContextCobra(cmd)
- if err != nil {
- return err
- }
-
- if len(args) != 1 {
- return errors.New("Enter at one channel to modify.")
- }
-
- username, erru := cmd.Flags().GetString("username")
- if erru != nil || username == "" {
- return errors.New("Username is required")
- }
-
- public, _ := cmd.Flags().GetBool("public")
- private, _ := cmd.Flags().GetBool("private")
-
- if public == private {
- return errors.New("You must specify only one of --public or --private")
- }
-
- channel := getChannelFromChannelArg(a, args[0])
- if channel == nil {
- return errors.New("Unable to find channel '" + args[0] + "'")
- }
-
- if !(channel.Type == model.CHANNEL_OPEN || channel.Type == model.CHANNEL_PRIVATE) {
- return errors.New("You can only change the type of public/private channels.")
- }
-
- channel.Type = model.CHANNEL_OPEN
- if private {
- channel.Type = model.CHANNEL_PRIVATE
- }
-
- user := getUserFromUserArg(a, username)
- if _, err := a.UpdateChannelPrivacy(channel, user); err != nil {
- return errors.New("Failed to update channel ('" + args[0] + "') privacy - " + err.Error())
- }
-
- return nil
-}