module Redlist

Public Class Methods

add(whitelistPath, _username, rconPassword, rconIP = '127.0.0.1', rconPort = '25575') click to toggle source
# File lib/redlist.rb, line 6
def self.add(whitelistPath, _username, rconPassword, rconIP = '127.0.0.1', rconPort = '25575')
    whitelist = JSON.parse(File.read(whitelistPath))
    shouldUpdateList = true
    whitelist.each do |line|
        shouldUpdateList = false if line['name'] == _username
    end

    if shouldUpdateList == true

        res = RestClient.post 'https://api.mojang.com/profiles/minecraft',
                              _username.to_json,
                              content_type: :json,
                              accept: :json

        result = JSON.parse res
        if res.code == 200 && !result[0].nil? && !result.nil?
            whitelist << { 'uuid' => result[0]['id'], 'name' => result[0]['name'] }
            File.open(whitelistPath, 'w') do |f|
                f.write(whitelist.to_json)
            end
            updateList(rconPassword, rconIP, rconPort)
            return 'Username added to list.'
        else
            return 'Unable to add user to list. Check username, or internet connection. '
        end

    else
        updateList(rconPassword, rconIP, rconPort)
        return 'Username already on list'
   end
end
updateList(_rconPassword, _rconIP, _rconPort) click to toggle source
# File lib/redlist.rb, line 38
    def self.updateList(_rconPassword, _rconIP, _rconPort)
        rcon = RCON::Minecraft.new(_rconIP, _rconPort)
        rcon.auth(_rconPassword)
        output = rcon.command('whitelist reload')
        output
end