Skip to content

Instantly share code, notes, and snippets.

@stevommmm
Created October 24, 2012 01:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stevommmm/3943069 to your computer and use it in GitHub Desktop.
Save stevommmm/3943069 to your computer and use it in GitHub Desktop.
Permissions patching
import sys
import re
import subprocess
server_names = ('creative', 'survival', 'pve')
groups = ['HeadAdmins', 'TechAdmins', 'Moderators', 'sadmins', 'padmins', 'cadmins']
path = '/ssd/%s/plugins/bPermissions/world/users.yml'
def get_staff():
staff = []
seen = []
for group in groups:
f = open('users/%s.txt' % group, 'r')
for l in f:
m = re.match('^([A-Za-z0-9_]+)$', l.rstrip())
if m:
user = m.group(1)
if user in seen:
print "Duplicate user: %s" % user
else:
staff.append((l.strip(), group))
seen.append(l.strip())
return sorted(staff, key=lambda a: a[0].lower())
def format_permission(player, group):
return """
%s:
permissions: []
groups:
- %s""" % (player, group)
def patch(serverl):
servern = serverl
staff = get_staff()
out = ''
out += 'users:'
for player, group in staff:
out += format_permission(player, group)
# print out
fnew = open(path % (servern), 'w')
fnew.write(out.encode('utf8'))
fnew.close()
subprocess.call('tmux send-keys %s:1 "p reload" Enter' % severn, shell=True)
if __name__ == '__main__':
if len(sys.argv) != 2 or not sys.argv[1] in server_names + ['all']:
print "Usage: python patch.py all|%s" % '|'.join(server_names)
sys.exit(1)
serverl = sys.argv[1]
if serverl == 'all':
for l in server_names:
patch(l)
else:
patch(serverl)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment