Cleaned Config

This commit is contained in:
Cooldude2606
2020-03-29 23:39:24 +01:00
parent 5dbc7a5e5c
commit 95af6cfc34
45 changed files with 49 additions and 79 deletions

View File

@@ -0,0 +1,18 @@
--- This is a very simple config file which adds a admin only auth functio;
-- not much to change here its more so it can be enabled and disabled from ./config/file_loader.lua;
-- either way you can change the requirements to be "admin" if you wanted to
-- @config Commands-Auth-Admin
local Commands = require 'expcore.commands' --- @dep expcore.commands
Commands.add_authenticator(function(player,command,tags,reject)
if tags.admin_only then
if player.admin then
return true
else
return reject{'command-auth.admin-only'}
end
else
return true
end
end)

View File

@@ -0,0 +1,13 @@
--- This will make commands only work if the role has been allowed it in the role config
-- @config Commands-Auth-Roles
local Commands = require 'expcore.commands' --- @dep expcore.commands
local Roles = require 'expcore.roles' --- @dep expcore.roles
Commands.add_authenticator(function(player,command,tags,reject)
if Roles.player_allowed(player,'command/'..command) then
return true
else
return reject()
end
end)

View File

@@ -0,0 +1,149 @@
--[[-- This file contains some common command param parse functions;
this file is less of a config and more of a requirement but you may wish to change how some behave;
as such you need to be confident with lua but you edit this config file;
use Commands.add_parse('name',function(input,player,reject) end) to add a parse;
see ./expcore/commands.lua for more details
@config Commands-Parse
@usage Adds Parses:
boolean
string-options - options: array
string-max-length - max_length: number
number
integer
number-range - range_min: number, range_max: number
integer-range - range_min: number, range_max: number
player
player-online
player-alive
force
surface
]]
local Commands = require 'expcore.commands' --- @dep expcore.commands
local Game = require 'utils.game' --- @dep utils.game
Commands.add_parse('boolean',function(input,player,reject)
if not input then return end -- nil check
input = input:lower()
if input == 'yes'
or input == 'y'
or input == 'true'
or input == '1' then
return true
else
return false
end
end)
Commands.add_parse('string-options',function(input,player,reject,options)
if not input then return end -- nil check
input = input:lower()
for option in options do
if input == option:lower() then
return true
end
end
return reject{'reject-string-options',options:concat(', ')}
end)
Commands.add_parse('string-max-length',function(input,player,reject,max_length)
if not input then return end -- nil check
local length = input:len()
if length > max_length then
return reject{'expcore-commands.reject-string-max-length',max_length}
else
return input
end
end)
Commands.add_parse('number',function(input,player,reject)
if not input then return end -- nil check
local number = tonumber(input)
if not number then
return reject{'expcore-commands.reject-number'}
else
return number
end
end)
Commands.add_parse('integer',function(input,player,reject)
if not input then return end -- nil check
local number = tonumber(input)
if not number then
return reject{'expcore-commands.reject-number'}
else
return math.floor(number)
end
end)
Commands.add_parse('number-range',function(input,player,reject,range_min,range_max)
local number = Commands.parse('number',input,player,reject)
if not number then return end -- nil check
if number < range_min or number > range_max then
return reject{'expcore-commands.reject-number-range',range_min,range_max}
else
return number
end
end)
Commands.add_parse('integer-range',function(input,player,reject,range_min,range_max)
local number = Commands.parse('integer',input,player,reject)
if not number then return end -- nil check
if number < range_min or number > range_max then
return reject{'expcore-commands.reject-number-range',range_min,range_max}
else
return number
end
end)
Commands.add_parse('player',function(input,player,reject)
if not input then return end -- nil check
local input_player = Game.get_player_from_any(input)
if not input_player then
return reject{'expcore-commands.reject-player',input}
else
return input_player
end
end)
Commands.add_parse('player-online',function(input,player,reject)
local input_player = Commands.parse('player',input,player,reject)
if not input_player then return end -- nil check
if not input_player.connected then
return reject{'expcore-commands.reject-player-online'}
else
return input_player
end
end)
Commands.add_parse('player-alive',function(input,player,reject)
local input_player = Commands.parse('player-online',input,player,reject)
if not input_player then return end -- nil check
if not input_player.character or not input_player.character.health or input_player.character.health <= 0 then
return reject{'expcore-commands.reject-player-alive'}
else
return input_player
end
end)
Commands.add_parse('force',function(input,player,reject)
if not input then return end -- nil check
local force = game.forces[input]
if not force then
return reject{'expcore-commands.reject-force'}
else
return force
end
end)
Commands.add_parse('surface',function(input,player,reject)
if not input then return end
local surface = game.surfaces[input]
if not surface then
return reject{'expcore-commands.reject-surface'}
else
return surface
end
end)

View File

@@ -0,0 +1,53 @@
--[[-- Adds some parse functions that can be used with the role system
@config Commands-Parse-Roles
@usage Adds Parses:
role
player-role
player-role-online
player-role-alive
]]
local Commands = require 'expcore.commands' --- @dep expcore.commands
local Roles = require 'expcore.roles' --- @dep expcore.roles
local auto_complete = _C.auto_complete --- @dep expcore.common
require 'config.expcore.command_general_parse'
Commands.add_parse('role',function(input,player,reject)
if not input then return end
local roles = Roles.config.order
local rev_roles = {}
for i=#roles,1,-1 do
table.insert(rev_roles,roles[i])
end
local role = auto_complete(rev_roles,input)
role = Roles.get_role_by_name(role)
if not role then
return reject{'expcore-role.reject-role'}
else
return role
end
end)
Commands.add_parse('player-role',function(input,player,reject)
local input_player = Commands.parse('player',input,player,reject)
if not input_player then return end -- nil check
local player_highest = Roles.get_player_highest_role(player)
local input_player_highest = Roles.get_player_highest_role(input_player)
if player_highest.index < input_player_highest.index then
return input_player
else
return reject{'expcore-roles.reject-player-role'}
end
end)
Commands.add_parse('player-role-online',function(input,player,reject)
local input_player = Commands.parse('player-role',input,player,reject)
if not input_player then return end -- nil check
return Commands.parse('player-online',input_player,player,reject)
end)
Commands.add_parse('player-role-alive',function(input,player,reject)
local input_player = Commands.parse('player-role',input,player,reject)
if not input_player then return end -- nil check
return Commands.parse('player-alive',input_player,player,reject)
end)

View File

@@ -0,0 +1,31 @@
--- This config for command auth allows commands to be globally enabled and disabled during runtime;
-- this config adds Commands.disable and Commands.enable to enable and disable commands for all users
-- @config Commands-Auth-Runtime-Disable
local Commands = require 'expcore.commands' --- @dep expcore.commands
local Global = require 'utils.global' --- @dep utils.global
local disabled_commands = {}
Global.register(disabled_commands,function(tbl)
disabled_commands = tbl
end)
--- Stops a command from be used by any one
-- @tparam string command_name the name of the command to disable
function Commands.disable(command_name)
disabled_commands[command_name] = true
end
--- Allows a command to be used again after disable was used
-- @tparam string command_name the name of the command to enable
function Commands.enable(command_name)
disabled_commands[command_name] = nil
end
Commands.add_authenticator(function(player,command,tags,reject)
if disabled_commands[command] then
return reject{'command-auth.command-disabled'}
else
return true
end
end)

View File

@@ -0,0 +1,140 @@
--- Use this file to add new permission groups to the game;
-- start with Permission_Groups.new_group('name');
-- then use either :allow_all() or :disallow_all() to set the default for non specified actions;
-- then use :allow{} and :disallow{} to specify certain actions to allow/disallow
-- @config Permission-Groups
--local Event = require 'utils.event' -- @dep utils.event
--local Game = require 'utils.game' -- @dep utils.game
local Permission_Groups = require 'expcore.permission_groups' --- @dep expcore.permission_groups
Permission_Groups.new_group('Admin')
:allow_all()
:disallow{
'add_permission_group', -- admin
'delete_permission_group',
--'edit_permission_group', -- removed for admin till role script added
'import_permissions_string',
'map_editor_action',
'toggle_map_editor',
'change_multiplayer_config',
'set_heat_interface_mode',
'set_heat_interface_temperature',
'set_infinity_container_filter_item',
'set_infinity_container_remove_unfiltered_items',
'set_infinity_pipe_filter'
}
Permission_Groups.new_group('Trusted')
:allow_all()
:disallow{
'add_permission_group', -- admin
'delete_permission_group',
'edit_permission_group',
'import_permissions_string',
'map_editor_action',
'toggle_map_editor',
'change_multiplayer_config',
'set_heat_interface_mode',
'set_heat_interface_temperature',
'set_infinity_container_filter_item',
'set_infinity_container_remove_unfiltered_items',
'set_infinity_pipe_filter',
'admin_action' -- trusted
}
Permission_Groups.new_group('Standard')
:allow_all()
:disallow{
'add_permission_group', -- admin
'delete_permission_group',
'edit_permission_group',
'import_permissions_string',
'map_editor_action',
'toggle_map_editor',
'change_multiplayer_config',
'set_heat_interface_mode',
'set_heat_interface_temperature',
'set_infinity_container_filter_item',
'set_infinity_container_remove_unfiltered_items',
'set_infinity_pipe_filter',
'admin_action', -- trusted
'change_programmable_speaker_alert_parameters', -- standard
'drop_item',
'set_auto_launch_rocket'
}
Permission_Groups.new_group('Guest')
:allow_all()
:disallow{
'add_permission_group', -- admin
'delete_permission_group',
'edit_permission_group',
'import_permissions_string',
'map_editor_action',
'toggle_map_editor',
'change_multiplayer_config',
'set_heat_interface_mode',
'set_heat_interface_temperature',
'set_infinity_container_filter_item',
'set_infinity_container_remove_unfiltered_items',
'set_infinity_pipe_filter',
'admin_action', -- trusted
'change_programmable_speaker_alert_parameters', -- standard
'drop_item',
'set_auto_launch_rocket',
'change_programmable_speaker_parameters', -- guest
'change_train_stop_station',
'deconstruct',
'remove_cables',
'remove_train_station',
'reset_assembling_machine',
'rotate_entity',
'use_artillery_remote',
'launch_rocket',
'cancel_research',
'activate_cut'
}
Permission_Groups.new_group('Restricted')
:disallow_all()
:allow('write_to_console')
--[[ These events are used until a role system is added to make it easier for our admins
local trusted_time = 60*60*60*10 -- 10 hour
local standard_time = 60*60*60*3 -- 3 hour
local function assign_group(player)
local current_group_name = player.permission_group and player.permission_group.name or 'None'
if player.admin then
Permission_Groups.set_player_group(player,'Admin')
elseif player.online_time > trusted_time or current_group_name == 'Trusted' then
Permission_Groups.set_player_group(player,'Trusted')
elseif player.online_time > standard_time or current_group_name == 'Standard' then
Permission_Groups.set_player_group(player,'Standard')
else
Permission_Groups.set_player_group(player,'Guest')
end
end
Event.add(defines.events.on_player_joined_game,function(event)
local player = Game.get_player_by_index(event.player_index)
assign_group(player)
end)
Event.add(defines.events.on_player_promoted,function(event)
local player = Game.get_player_by_index(event.player_index)
assign_group(player)
end)
Event.add(defines.events.on_player_demoted,function(event)
local player = Game.get_player_by_index(event.player_index)
assign_group(player)
end)
local check_interval = 60*60*15 -- 15 minutes
Event.on_nth_tick(check_interval,function(event)
for _,player in pairs(game.connected_players) do
assign_group(player)
end
end)]]

298
config/expcore/roles.lua Normal file
View File

@@ -0,0 +1,298 @@
--- This is the main config file for the role system; file includes defines for roles and role flags and default values
-- @config Roles
local Roles = require 'expcore.roles' --- @dep expcore.roles
--- Role flags that will run when a player changes roles
Roles.define_flag_trigger('is_admin',function(player,state)
player.admin = state
end)
Roles.define_flag_trigger('is_spectator',function(player,state)
player.spectator = state
end)
Roles.define_flag_trigger('is_jail',function(player,state)
if player.character then
player.character.active = not state
end
end)
--- Admin Roles
Roles.new_role('System','SYS')
:set_permission_group('Admin')
:set_flag('is_admin')
:set_flag('is_spectator')
:set_flag('report-immune')
:set_flag('instance-respawn')
:set_allow_all()
Roles.new_role('Senior Administrator','SAdmin')
:set_permission_group('Admin')
:set_flag('is_admin')
:set_flag('is_spectator')
:set_flag('report-immune')
:set_flag('instance-respawn')
:set_parent('Administrator')
:allow{
'command/interface',
'command/debug',
'command/toggle-cheat-mode'
}
Roles.new_role('Administrator','Admin')
:set_permission_group('Admin')
:set_custom_color{r=233,g=63,b=233}
:set_flag('is_admin')
:set_flag('is_spectator')
:set_flag('report-immune')
:set_flag('instance-respawn')
:set_parent('Moderator')
:allow{
'gui/warp-list/bypass-cooldown',
'gui/warp-list/bypass-proximity',
}
Roles.new_role('Moderator','Mod')
:set_permission_group('Admin')
:set_custom_color{r=0,g=170,b=0}
:set_flag('is_admin')
:set_flag('is_spectator')
:set_flag('report-immune')
:set_flag('instance-respawn')
:set_parent('Trainee')
:allow{
'command/assign-role',
'command/unassign-role',
'command/repair',
'command/kill/always',
'command/clear-tag/always',
'command/go-to-spawn/always',
'command/clear-reports',
'command/clear-warnings',
'command/clear-temp-ban',
'command/clear-inventory',
'command/bonus',
'command/home',
'command/home-set',
'command/home-get',
'command/return',
'gui/rocket-info/toggle-active',
'gui/rocket-info/remote_launch',
'fast-tree-decon',
}
Roles.new_role('Trainee','TrMod')
:set_permission_group('Admin')
:set_custom_color{r=0,g=170,b=0}
:set_flag('is_admin')
:set_flag('is_spectator')
:set_flag('report-immune')
:set_parent('Veteran')
:allow{
'command/admin-chat',
'command/teleport',
'command/bring',
'command/goto',
'command/temp-ban',
'command/give-warning',
'command/get-warnings',
'command/get-reports',
'command/jail',
'command/unjail',
'command/kick',
'command/ban',
}
--- Trusted Roles
Roles.new_role('Board Member','Board')
:set_permission_group('Trusted')
:set_custom_color{r=247,g=246,b=54}
:set_flag('is_spectator')
:set_flag('report-immune')
:set_flag('instance-respawn')
:set_parent('Sponsor')
:allow{
'command/goto',
'command/repair',
}
Roles.new_role('Senior Backer','Backer')
:set_permission_group('Trusted')
:set_custom_color{r=238,g=172,b=44}
:set_flag('is_spectator')
:set_flag('report-immune')
:set_flag('instance-respawn')
:set_parent('Sponsor')
:allow{
}
Roles.new_role('Sponsor','Spon')
:set_permission_group('Trusted')
:set_custom_color{r=238,g=172,b=44}
:set_flag('is_spectator')
:set_flag('report-immune')
:set_flag('instance-respawn')
:set_parent('Supporter')
:allow{
'gui/rocket-info/toggle-active',
'gui/rocket-info/remote_launch',
'command/bonus',
'command/home',
'command/home-set',
'command/home-get',
'command/return',
'fast-tree-decon',
}
Roles.new_role('Supporter','Sup')
:set_permission_group('Trusted')
:set_custom_color{r=230,g=99,b=34}
:set_flag('is_spectator')
:set_parent('Veteran')
:allow{
'command/jail',
'command/unjail'
}
Roles.new_role('Partner','Part')
:set_permission_group('Trusted')
:set_custom_color{r=140,g=120,b=200}
:set_flag('is_spectator')
:set_parent('Veteran')
:allow{
'command/jail',
'command/unjail'
}
Roles.new_role('Veteran','Vet')
:set_permission_group('Trusted')
:set_custom_color{r=140,g=120,b=200}
:set_parent('Member')
:allow{
'command/chat-bot',
}
:set_auto_promote_condition(function(player)
if player.online_time > 10*216000 then
return true
end
end)
--- Standard User Roles
Roles.new_role('Member','Mem')
:set_permission_group('Standard')
:set_custom_color{r=24,g=172,b=188}
:set_parent('Regular')
:allow{
'gui/task-list/add',
'gui/task-list/edit',
'gui/warp-list/add',
'gui/warp-list/edit'
}
Roles.new_role('Regular','Reg')
:set_permission_group('Standard')
:set_custom_color{r=79,g=155,b=163}
:set_parent('Guest')
:allow{
'command/kill',
'command/rainbow',
'command/go-to-spawn',
'command/me',
}
:set_auto_promote_condition(function(player)
if player.online_time > 3*216000 then
return true
end
end)
--- Guest/Default role
local default = Roles.new_role('Guest','')
:set_permission_group('Guest')
:set_custom_color{r=185,g=187,b=160}
:allow{
'command/tag',
'command/tag-clear',
'command/search-help',
'command/list-roles',
'command/find-on-map',
'command/report',
'command/ratio',
'command/server-ups',
'gui/player-list',
'gui/rocket-info',
'gui/science-info',
'gui/task-list',
'gui/warp-list',
'gui/readme'
}
--- Jail role
Roles.new_role('Jail')
:set_permission_group('Restricted')
:set_custom_color{r=50,g=50,b=50}
:set_block_auto_promote(true)
:disallow(default.allowed)
--- System defaults which are required to be set
Roles.set_root('System')
Roles.set_default('Guest')
Roles.define_role_order{
'System', -- Best to keep root at top
'Senior Administrator',
'Administrator',
'Moderator',
'Trainee',
'Board Member',
'Senior Backer',
'Sponsor',
'Supporter',
'Partner',
'Veteran',
'Member',
'Regular',
'Jail',
'Guest' -- Default must be last if you want to apply restrictions to other roles
}
Roles.override_player_roles{
["Cooldude2606"]={"Senior Administrator","Moderator","Senior Backer","Supporter"},
["arty714"]={"Senior Administrator","Senior Backer","Supporter"},
["Drahc_pro"]={"Administrator","Moderator","Veteran","Member"},
["mark9064"]={"Administrator","Moderator","Member"},
["aldldl"]={"Administrator","Moderator","Senior Backer","Sponsor","Supporter","Member"},
["ookl"]={"Moderator","Senior Backer","Sponsor","Supporter","Partner","Member"},
["hamsterbryan"]={"Moderator","Senior Backer","Supporter","Member"},
["M74132"]={"Moderator","Senior Backer","Sponsor","Supporter","Member"},
["LoicB"]={"Moderator","Senior Backer","Supporter","Veteran","Member"},
["UUBlueFire"]={"Moderator","Senior Backer","Supporter","Member"},
["thadius856"]={"Moderator","Supporter","Member"},
["XenoCyber"]={"Moderator","Supporter","Partner","Member"},
["cydes"]={"Moderator","Supporter","Member"},
["darklich14"]={"Moderator","Supporter","Member"},
["SilentLog"]={"Moderator","Supporter","Member"},
["freek18"]={"Moderator","Supporter","Member"},
["porelos"]={"Moderator","Supporter","Member"},
["7h3w1z4rd"]={"Moderator","Member"},
["Windbomb"]={"Moderator","Member"},
["Phoenix27833"]={"Moderator","Member"},
["banakeg"]={"Moderator","Member"},
["maplesyrup01"]={"Moderator","Member"},
["FlipHalfling90"]={"Moderator","Member"},
["Ruuyji"]={"Moderator","Member"},
["Gizan"]={"Moderator"},
["samy115"]={"Moderator","Member"},
["Hobbitkicker"]={"Moderator","Member"},
["facere"]={"Moderator","Member"},
["whoami32"]={"Moderator","Member"},
["NextIdea"]={"Moderator","Member"},
["mafisch3"]={"Moderator","Member"},
["Tcheko"]={"Moderator","Member"},
["AssemblyStorm"]={"Moderator","Veteran","Member"},
["connormkii"]={"Moderator","Veteran","Member"},
["Koroto"]={"Moderator","Veteran","Member"},
["scarbvis"]={"Moderator","Member"},
["CmonMate497"]={"Moderator","Member"}
}