summaryrefslogtreecommitdiffstats
path: root/mattermost.go
diff options
context:
space:
mode:
Diffstat (limited to 'mattermost.go')
-rw-r--r--mattermost.go270
1 files changed, 268 insertions, 2 deletions
diff --git a/mattermost.go b/mattermost.go
index fc9baa56d..423e00536 100644
--- a/mattermost.go
+++ b/mattermost.go
@@ -45,6 +45,10 @@ var flagCmdCreateTeam bool
var flagCmdCreateUser bool
var flagCmdInviteUser bool
var flagCmdAssignRole bool
+var flagCmdJoinChannel bool
+var flagCmdLeaveChannel bool
+var flagCmdListChannels bool
+var flagCmdRestoreChannel bool
var flagCmdJoinTeam bool
var flagCmdVersion bool
var flagCmdRunWebClientTests bool
@@ -63,6 +67,7 @@ var flagLicenseFile string
var flagEmail string
var flagPassword string
var flagTeamName string
+var flagChannelName string
var flagSiteURL string
var flagConfirmBackup string
var flagRole string
@@ -198,6 +203,10 @@ func doSecurityAndDiagnostics() {
v.Set(utils.PROP_DIAGNOSTIC_ACTIVE_USER_COUNT, strconv.FormatInt(ucr.Data.(int64), 10))
}
+ if tcr := <-api.Srv.Store.Team().AnalyticsTeamCount(); tcr.Err == nil {
+ v.Set(utils.PROP_DIAGNOSTIC_TEAM_COUNT, strconv.FormatInt(tcr.Data.(int64), 10))
+ }
+
res, err := http.Get(utils.DIAGNOSTIC_URL + "/security?" + v.Encode())
if err != nil {
l4g.Error(utils.T("mattermost.security_info.error"))
@@ -262,6 +271,7 @@ func parseCmds() {
flag.StringVar(&flagEmail, "email", "", "")
flag.StringVar(&flagPassword, "password", "", "")
flag.StringVar(&flagTeamName, "team_name", "", "")
+ flag.StringVar(&flagChannelName, "channel_name", "", "")
flag.StringVar(&flagSiteURL, "site_url", "", "")
flag.StringVar(&flagConfirmBackup, "confirm_backup", "", "")
flag.StringVar(&flagRole, "role", "", "")
@@ -271,6 +281,10 @@ func parseCmds() {
flag.BoolVar(&flagCmdCreateUser, "create_user", false, "")
flag.BoolVar(&flagCmdInviteUser, "invite_user", false, "")
flag.BoolVar(&flagCmdAssignRole, "assign_role", false, "")
+ flag.BoolVar(&flagCmdJoinChannel, "join_channel", false, "")
+ flag.BoolVar(&flagCmdLeaveChannel, "leave_channel", false, "")
+ flag.BoolVar(&flagCmdListChannels, "list_channels", false, "")
+ flag.BoolVar(&flagCmdRestoreChannel, "restore_channel", false, "")
flag.BoolVar(&flagCmdJoinTeam, "join_team", false, "")
flag.BoolVar(&flagCmdVersion, "version", false, "")
flag.BoolVar(&flagCmdRunWebClientTests, "run_web_client_tests", false, "")
@@ -290,6 +304,10 @@ func parseCmds() {
flagCmdCreateUser ||
flagCmdInviteUser ||
flagCmdAssignRole ||
+ flagCmdJoinChannel ||
+ flagCmdLeaveChannel ||
+ flagCmdListChannels ||
+ flagCmdRestoreChannel ||
flagCmdJoinTeam ||
flagCmdResetPassword ||
flagCmdResetMfa ||
@@ -311,6 +329,10 @@ func runCmds() {
cmdCreateUser()
cmdInviteUser()
cmdAssignRole()
+ cmdJoinChannel()
+ cmdLeaveChannel()
+ cmdListChannels()
+ cmdRestoreChannel()
cmdJoinTeam()
cmdResetPassword()
cmdResetMfa()
@@ -905,10 +927,230 @@ func cmdAssignRole() {
}
}
+func cmdJoinChannel() {
+ if flagCmdJoinChannel {
+ if len(flagTeamName) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if len(flagEmail) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -email")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if len(flagChannelName) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -channel_name")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if !utils.IsLicensed {
+ fmt.Fprintln(os.Stderr, utils.T("cli.license.critical"))
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ var team *model.Team
+ if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ team = result.Data.(*model.Team)
+ }
+
+ var user *model.User
+ if result := <-api.Srv.Store.User().GetByEmail(flagEmail); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ user = result.Data.(*model.User)
+ }
+
+ var channel *model.Channel
+ if result := <-api.Srv.Store.Channel().GetByName(team.Id, flagChannelName); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ channel = result.Data.(*model.Channel)
+ }
+
+ _, err := api.AddUserToChannel(user, channel)
+ if err != nil {
+ l4g.Error("%v", err)
+ flushLogAndExit(1)
+ }
+
+ os.Exit(0)
+ }
+}
+
+func cmdLeaveChannel() {
+ if flagCmdLeaveChannel {
+ if len(flagTeamName) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if len(flagEmail) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -email")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if len(flagChannelName) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -channel_name")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if flagChannelName == model.DEFAULT_CHANNEL {
+ fmt.Fprintln(os.Stderr, "flag has invalid argument: -channel_name (cannot leave town-square)")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if !utils.IsLicensed {
+ fmt.Fprintln(os.Stderr, utils.T("cli.license.critical"))
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ var team *model.Team
+ if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ team = result.Data.(*model.Team)
+ }
+
+ var user *model.User
+ if result := <-api.Srv.Store.User().GetByEmail(flagEmail); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ user = result.Data.(*model.User)
+ }
+
+ var channel *model.Channel
+ if result := <-api.Srv.Store.Channel().GetByName(team.Id, flagChannelName); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ channel = result.Data.(*model.Channel)
+ }
+
+ err := api.RemoveUserFromChannel(user.Id, user.Id, channel)
+ if err != nil {
+ l4g.Error("%v", err)
+ flushLogAndExit(1)
+ }
+
+ os.Exit(0)
+ }
+}
+
+func cmdListChannels() {
+ if flagCmdListChannels {
+ if len(flagTeamName) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if !utils.IsLicensed {
+ fmt.Fprintln(os.Stderr, utils.T("cli.license.critical"))
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ var team *model.Team
+ if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ team = result.Data.(*model.Team)
+ }
+
+ if result := <-api.Srv.Store.Channel().GetAll(team.Id); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ channels := result.Data.([]*model.Channel)
+
+ for _, channel := range channels {
+
+ if channel.DeleteAt > 0 {
+ fmt.Fprintln(os.Stdout, channel.Name+" (archived)")
+ } else {
+ fmt.Fprintln(os.Stdout, channel.Name)
+ }
+ }
+ }
+
+ os.Exit(0)
+ }
+}
+
+func cmdRestoreChannel() {
+ if flagCmdRestoreChannel {
+ if len(flagTeamName) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if len(flagChannelName) == 0 {
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -channel_name")
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ if !utils.IsLicensed {
+ fmt.Fprintln(os.Stderr, utils.T("cli.license.critical"))
+ flag.Usage()
+ os.Exit(1)
+ }
+
+ var team *model.Team
+ if result := <-api.Srv.Store.Team().GetByName(flagTeamName); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ team = result.Data.(*model.Team)
+ }
+
+ var channel *model.Channel
+ if result := <-api.Srv.Store.Channel().GetAll(team.Id); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ } else {
+ channels := result.Data.([]*model.Channel)
+
+ for _, ctemp := range channels {
+ if ctemp.Name == flagChannelName {
+ channel = ctemp
+ break
+ }
+ }
+ }
+
+ if result := <-api.Srv.Store.Channel().SetDeleteAt(channel.Id, 0, model.GetMillis()); result.Err != nil {
+ l4g.Error("%v", result.Err)
+ flushLogAndExit(1)
+ }
+
+ os.Exit(0)
+ }
+}
+
func cmdJoinTeam() {
if flagCmdJoinTeam {
if len(flagTeamName) == 0 {
- fmt.Fprintln(os.Stderr, "flag needs an argument: -email")
+ fmt.Fprintln(os.Stderr, "flag needs an argument: -team_name")
flag.Usage()
os.Exit(1)
}
@@ -1275,7 +1517,7 @@ COMMANDS:
Example:
platform -invite_user -team_name="name" -email="user@example.com" -site_url="https://mattermost.example.com"
- -join_team Joins a user to the team. It required the -email and
+ -join_team Joins a user to the team. It requires the -email and
-team_name. You may need to logout of your current session
for the new team to be applied.
Example:
@@ -1288,6 +1530,30 @@ COMMANDS:
Example:
platform -assign_role -email="user@example.com" -role="system_admin"
+ -join_channel Joins a user to the channel. It requires the -email, channel_name and
+ -team_name flags. You may need to logout of your current session
+ for the new channel to be applied. Requires an enterprise license.
+ Example:
+ platform -join_channel -email="user@example.com" -team_name="name" -channel_name="channel_name"
+
+ -leave_channel Removes a user from the channel. It requires the -email, channel_name and
+ -team_name flags. You may need to logout of your current session
+ for the channel to be removed. Requires an enterprise license.
+ Example:
+ platform -leave_channel -email="user@example.com" -team_name="name" -channel_name="channel_name"
+
+ -list_channels Lists all public channels and private groups for a given team.
+ It will append ' (archived)' to the channel name if archived. It requires the
+ -team_name flag. Requires an enterprise license.
+ Example:
+ platform -list_channels -team_name="name"
+
+ -restore_channel Restores a previously deleted channel.
+ It requires the -channel_name and
+ -team_name flags. Requires an enterprise license.
+ Example:
+ platform -restore_channel -team_name="name" -channel_name="channel_name"
+
-reset_password Resets the password for a user. It requires the
-email and -password flag.
Example: