diff --git a/TShockAPI/Permissions.cs b/TShockAPI/Permissions.cs index 82945147..e7dee2b7 100644 --- a/TShockAPI/Permissions.cs +++ b/TShockAPI/Permissions.cs @@ -166,9 +166,6 @@ namespace TShockAPI [Description("User can save all the players SSI state.")] public static readonly string savessi; - [Description("User can use rest api calls.")] - public static readonly string restapi; - [Description("User can force the server to Christmas mode.")] public static readonly string xmas; [Description("User can use /home.")] public static readonly string home; @@ -179,60 +176,6 @@ namespace TShockAPI [Description("User can download updates to plugins that are currently running.")] public static readonly string updateplugins; - #region Rest Endpoint Permissions - [Description("Rest user can turn off / restart the server.")] - public static readonly string restmaintenance; - - [Description("Rest user can reload configurations, save the world and set auto save settings.")] - public static readonly string restcfg; - - - [Description("Rest user can list and get detailed information about users.")] - public static readonly string restviewusers; - - [Description("Rest user can alter users.")] - public static readonly string restmanageusers; - - [Description("Rest user can list and get detailed information about bans.")] - public static readonly string restviewbans; - - [Description("Rest user can alter bans.")] - public static readonly string restmanagebans; - - [Description("Rest user can list and get detailed information about groups.")] - public static readonly string restviewgroups; - - [Description("Rest user can alter groups.")] - public static readonly string restmanagegroups; - - - [Description("Rest user can get user information.")] - public static readonly string restuserinfo; - - [Description("Rest user can kick players.")] - public static readonly string restkick; - - [Description("Rest user can ban players.")] - public static readonly string restban; - - [Description("Rest user can mute and unmute players.")] - public static readonly string restmute; - - [Description("Rest user can kill players.")] - public static readonly string restkill; - - - [Description("Rest user can drop meteors or change bloodmoon.")] - public static readonly string restcauseevents; - - [Description("Rest user can butcher npcs.")] - public static readonly string restbutcher; - - - [Description("Rest user can run raw TShock commands (the raw command permissions are also checked though).")] - public static readonly string restrawcommand; - #endregion - static Permissions() { foreach (var field in typeof (Permissions).GetFields()) diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index 316d0cbb..bb0e136d 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -55,51 +55,51 @@ namespace TShockAPI } Rest.Register(new SecureRestCommand("/v2/server/broadcast", ServerBroadcast)); - Rest.Register(new SecureRestCommand("/v2/server/reload", ServerReload, Permissions.restcfg)); - Rest.Register(new SecureRestCommand("/v2/server/off", ServerOff, Permissions.restmaintenance)); - Rest.Register(new SecureRestCommand("/v2/server/restart", ServerRestart, Permissions.restmaintenance)); - Rest.Register(new SecureRestCommand("/v2/server/rawcmd", ServerCommand, Permissions.restrawcommand)); - Rest.Register(new SecureRestCommand("/v3/server/rawcmd", ServerCommandV3, Permissions.restrawcommand)); + Rest.Register(new SecureRestCommand("/v2/server/reload", ServerReload, RestPermissions.restcfg)); + Rest.Register(new SecureRestCommand("/v2/server/off", ServerOff, RestPermissions.restmaintenance)); + Rest.Register(new SecureRestCommand("/v2/server/restart", ServerRestart, RestPermissions.restmaintenance)); + Rest.Register(new SecureRestCommand("/v2/server/rawcmd", ServerCommand, RestPermissions.restrawcommand)); + Rest.Register(new SecureRestCommand("/v3/server/rawcmd", ServerCommandV3, RestPermissions.restrawcommand)); Rest.Register(new SecureRestCommand("/tokentest", ServerTokenTest)); // User Commands - Rest.Register(new SecureRestCommand("/v2/users/activelist", UserActiveListV2, Permissions.restviewusers)); - Rest.Register(new SecureRestCommand("/v2/users/create", UserCreateV2, Permissions.restmanageusers) { DoLog = false }); - Rest.Register(new SecureRestCommand("/v2/users/list", UserListV2, Permissions.restviewusers)); - Rest.Register(new SecureRestCommand("/v2/users/read", UserInfoV2, Permissions.restviewusers)); - Rest.Register(new SecureRestCommand("/v2/users/destroy", UserDestroyV2, Permissions.restmanageusers)); - Rest.Register(new SecureRestCommand("/v2/users/update", UserUpdateV2, Permissions.restmanageusers) { DoLog = false }); + Rest.Register(new SecureRestCommand("/v2/users/activelist", UserActiveListV2, RestPermissions.restviewusers)); + Rest.Register(new SecureRestCommand("/v2/users/create", UserCreateV2, RestPermissions.restmanageusers) { DoLog = false }); + Rest.Register(new SecureRestCommand("/v2/users/list", UserListV2, RestPermissions.restviewusers)); + Rest.Register(new SecureRestCommand("/v2/users/read", UserInfoV2, RestPermissions.restviewusers)); + Rest.Register(new SecureRestCommand("/v2/users/destroy", UserDestroyV2, RestPermissions.restmanageusers)); + Rest.Register(new SecureRestCommand("/v2/users/update", UserUpdateV2, RestPermissions.restmanageusers) { DoLog = false }); // Ban Commands - Rest.Register(new SecureRestCommand("/bans/create", BanCreate, Permissions.restmanagebans)); - Rest.Register(new SecureRestCommand("/v2/bans/list", BanListV2, Permissions.restviewbans)); - Rest.Register(new SecureRestCommand("/v2/bans/read", BanInfoV2, Permissions.restviewbans)); - Rest.Register(new SecureRestCommand("/v2/bans/destroy", BanDestroyV2, Permissions.restmanagebans)); + Rest.Register(new SecureRestCommand("/bans/create", BanCreate, RestPermissions.restmanagebans)); + Rest.Register(new SecureRestCommand("/v2/bans/list", BanListV2, RestPermissions.restviewbans)); + Rest.Register(new SecureRestCommand("/v2/bans/read", BanInfoV2, RestPermissions.restviewbans)); + Rest.Register(new SecureRestCommand("/v2/bans/destroy", BanDestroyV2, RestPermissions.restmanagebans)); // World Commands Rest.Register(new SecureRestCommand("/world/read", WorldRead)); - Rest.Register(new SecureRestCommand("/world/meteor", WorldMeteor, Permissions.restcauseevents)); - Rest.Register(new SecureRestCommand("/world/bloodmoon/{bool}", WorldBloodmoon, Permissions.restcauseevents)); - Rest.Register(new SecureRestCommand("/v2/world/save", WorldSave, Permissions.restcfg)); - Rest.Register(new SecureRestCommand("/v2/world/autosave/state/{bool}", WorldChangeSaveSettings, Permissions.restcfg)); - Rest.Register(new SecureRestCommand("/v2/world/butcher", WorldButcher, Permissions.restbutcher)); + Rest.Register(new SecureRestCommand("/world/meteor", WorldMeteor, RestPermissions.restcauseevents)); + Rest.Register(new SecureRestCommand("/world/bloodmoon/{bool}", WorldBloodmoon, RestPermissions.restcauseevents)); + Rest.Register(new SecureRestCommand("/v2/world/save", WorldSave, RestPermissions.restcfg)); + Rest.Register(new SecureRestCommand("/v2/world/autosave/state/{bool}", WorldChangeSaveSettings, RestPermissions.restcfg)); + Rest.Register(new SecureRestCommand("/v2/world/butcher", WorldButcher, RestPermissions.restbutcher)); // Player Commands Rest.Register(new SecureRestCommand("/lists/players", PlayerList)); Rest.Register(new SecureRestCommand("/v2/players/list", PlayerListV2)); - Rest.Register(new SecureRestCommand("/v2/players/read", PlayerReadV2, Permissions.restuserinfo)); - Rest.Register(new SecureRestCommand("/v2/players/kick", PlayerKickV2, Permissions.restkick)); - Rest.Register(new SecureRestCommand("/v2/players/ban", PlayerBanV2, Permissions.restban, Permissions.restmanagebans)); - Rest.Register(new SecureRestCommand("/v2/players/kill", PlayerKill, Permissions.restkill)); - Rest.Register(new SecureRestCommand("/v2/players/mute", PlayerMute, Permissions.restmute)); - Rest.Register(new SecureRestCommand("/v2/players/unmute", PlayerUnMute, Permissions.restmute)); + Rest.Register(new SecureRestCommand("/v2/players/read", PlayerReadV2, RestPermissions.restuserinfo)); + Rest.Register(new SecureRestCommand("/v2/players/kick", PlayerKickV2, RestPermissions.restkick)); + Rest.Register(new SecureRestCommand("/v2/players/ban", PlayerBanV2, RestPermissions.restban, RestPermissions.restmanagebans)); + Rest.Register(new SecureRestCommand("/v2/players/kill", PlayerKill, RestPermissions.restkill)); + Rest.Register(new SecureRestCommand("/v2/players/mute", PlayerMute, RestPermissions.restmute)); + Rest.Register(new SecureRestCommand("/v2/players/unmute", PlayerUnMute, RestPermissions.restmute)); // Group Commands - Rest.Register(new SecureRestCommand("/v2/groups/list", GroupList, Permissions.restviewgroups)); - Rest.Register(new SecureRestCommand("/v2/groups/read", GroupInfo, Permissions.restviewgroups)); - Rest.Register(new SecureRestCommand("/v2/groups/destroy", GroupDestroy, Permissions.restmanagegroups)); - Rest.Register(new SecureRestCommand("/v2/groups/create", GroupCreate, Permissions.restmanagegroups)); - Rest.Register(new SecureRestCommand("/v2/groups/update", GroupUpdate, Permissions.restmanagegroups)); + Rest.Register(new SecureRestCommand("/v2/groups/list", GroupList, RestPermissions.restviewgroups)); + Rest.Register(new SecureRestCommand("/v2/groups/read", GroupInfo, RestPermissions.restviewgroups)); + Rest.Register(new SecureRestCommand("/v2/groups/destroy", GroupDestroy, RestPermissions.restmanagegroups)); + Rest.Register(new SecureRestCommand("/v2/groups/create", GroupCreate, RestPermissions.restmanagegroups)); + Rest.Register(new SecureRestCommand("/v2/groups/update", GroupUpdate, RestPermissions.restmanagegroups)); } #region RestServerMethods diff --git a/TShockAPI/Rest/RestPermissions.cs b/TShockAPI/Rest/RestPermissions.cs new file mode 100644 index 00000000..e1c446cf --- /dev/null +++ b/TShockAPI/Rest/RestPermissions.cs @@ -0,0 +1,90 @@ +/* +TShock, a server mod for Terraria +Copyright (C) 2011-2012 The TShock Team + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +using System; +using System.ComponentModel; +using System.Linq; + +namespace Rests +{ + public static class RestPermissions + { + [Description("User can create REST tokens.")] + public static readonly string restapi; + + + [Description("REST user can turn off / restart the server.")] + public static readonly string restmaintenance; + + [Description("REST user can reload configurations, save the world and set auto save settings.")] + public static readonly string restcfg; + + + [Description("REST user can list and get detailed information about users.")] + public static readonly string restviewusers; + + [Description("REST user can alter users.")] + public static readonly string restmanageusers; + + [Description("REST user can list and get detailed information about bans.")] + public static readonly string restviewbans; + + [Description("REST user can alter bans.")] + public static readonly string restmanagebans; + + [Description("REST user can list and get detailed information about groups.")] + public static readonly string restviewgroups; + + [Description("REST user can alter groups.")] + public static readonly string restmanagegroups; + + + [Description("REST user can get user information.")] + public static readonly string restuserinfo; + + [Description("REST user can kick players.")] + public static readonly string restkick; + + [Description("REST user can ban players.")] + public static readonly string restban; + + [Description("REST user can mute and unmute players.")] + public static readonly string restmute; + + [Description("REST user can kill players.")] + public static readonly string restkill; + + + [Description("REST user can drop meteors or change bloodmoon.")] + public static readonly string restcauseevents; + + [Description("REST user can butcher npcs.")] + public static readonly string restbutcher; + + + [Description("REST user can run raw TShock commands (the raw command permissions are also checked though).")] + public static readonly string restrawcommand; + + static RestPermissions() + { + foreach (var field in typeof (RestPermissions).GetFields()) + { + field.SetValue(null, field.Name); + } + } + } +} diff --git a/TShockAPI/TShockAPI.csproj b/TShockAPI/TShockAPI.csproj index b98c1645..e21ddc8a 100644 --- a/TShockAPI/TShockAPI.csproj +++ b/TShockAPI/TShockAPI.csproj @@ -89,6 +89,7 @@ + @@ -191,7 +192,7 @@ - +