minestat 2.2.4 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/minestat.rb +25 -6
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0edcad23af3b5a770f9711cf137a82e060e74cbd50d53a50bad64f86a94e2dcb
         | 
| 4 | 
            +
              data.tar.gz: cce9bd821aea062f9cc84fa68750b4a6ea1f9028bd68bd11c075ae721e6a0dee
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 06a145da313fe0700857906b36c51a7a2a5b2d12f95b40090a04bedc7c261aad39319805ebf2c4c7b13840162cbffe556c1e23753c055ea49321c7ff87b1cbc1
         | 
| 7 | 
            +
              data.tar.gz: 8d86892695c1cd890d08b4934a4dc769482a7ee815d8cbf98c5dd63c770064d535a7f8a29ef958c07a92bc2eb8d9a275f0a9b3a39b0b0c726e2440dbde0c122a
         | 
    
        data/lib/minestat.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            # minestat.rb - A Minecraft server status checker
         | 
| 2 | 
            -
            # Copyright (C) 2014- | 
| 2 | 
            +
            # Copyright (C) 2014-2023 Lloyd Dilley
         | 
| 3 3 | 
             
            # http://www.dilley.me/
         | 
| 4 4 | 
             
            #
         | 
| 5 5 | 
             
            # This program is free software; you can redistribute it and/or modify
         | 
| @@ -18,6 +18,7 @@ | |
| 18 18 |  | 
| 19 19 | 
             
            require 'base64'
         | 
| 20 20 | 
             
            require 'json'
         | 
| 21 | 
            +
            require 'resolv'
         | 
| 21 22 | 
             
            require 'socket'
         | 
| 22 23 | 
             
            require 'timeout'
         | 
| 23 24 |  | 
| @@ -25,7 +26,7 @@ require 'timeout' | |
| 25 26 | 
             
            # Provides a ruby interface for polling Minecraft server status.
         | 
| 26 27 | 
             
            class MineStat
         | 
| 27 28 | 
             
              # MineStat version
         | 
| 28 | 
            -
              VERSION = "2. | 
| 29 | 
            +
              VERSION = "2.3.0"
         | 
| 29 30 | 
             
              # Number of values expected from server
         | 
| 30 31 | 
             
              NUM_FIELDS = 6
         | 
| 31 32 | 
             
              # Number of values expected from a 1.8b/1.3 server
         | 
| @@ -85,7 +86,7 @@ class MineStat | |
| 85 86 | 
             
                @port = port          # TCP/UDP port of server
         | 
| 86 87 | 
             
                @online               # online or offline?
         | 
| 87 88 | 
             
                @version              # server version
         | 
| 88 | 
            -
                @mode | 
| 89 | 
            +
                @mode                 # game mode (Bedrock/Pocket Edition only)
         | 
| 89 90 | 
             
                @motd                 # message of the day
         | 
| 90 91 | 
             
                @stripped_motd        # message of the day without formatting
         | 
| 91 92 | 
             
                @current_players      # current number of players online
         | 
| @@ -102,7 +103,25 @@ class MineStat | |
| 102 103 | 
             
                @try_all = false      # try all protocols?
         | 
| 103 104 |  | 
| 104 105 | 
             
                @try_all = true if request_type == Request::NONE
         | 
| 106 | 
            +
                resolve_srv(address, port)
         | 
| 107 | 
            +
                set_connection_status(attempt_protocols())
         | 
| 108 | 
            +
              end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
              # Attempts to resolve SRV records
         | 
| 111 | 
            +
              def resolve_srv(address, port)
         | 
| 112 | 
            +
                begin
         | 
| 113 | 
            +
                  resolver = Resolv::DNS.new
         | 
| 114 | 
            +
                  res = resolver.getresource("_minecraft._tcp.#{@address}", Resolv::DNS::Resource::IN::SRV)
         | 
| 115 | 
            +
                  @address = res.target.to_s # SRV target
         | 
| 116 | 
            +
                  @port = res.port.to_i      # SRV port
         | 
| 117 | 
            +
                rescue => exception          # primarily catch Resolv::ResolvError and revert if unable to resolve SRV record(s)
         | 
| 118 | 
            +
                  @address = address
         | 
| 119 | 
            +
                  @port = port
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
              end
         | 
| 105 122 |  | 
| 123 | 
            +
              # Attempts the use of various protocols
         | 
| 124 | 
            +
              def attempt_protocols()
         | 
| 106 125 | 
             
                case request_type
         | 
| 107 126 | 
             
                  when Request::BETA
         | 
| 108 127 | 
             
                    retval = beta_request()
         | 
| @@ -139,12 +158,12 @@ class MineStat | |
| 139 158 | 
             
                      retval = bedrock_request()
         | 
| 140 159 | 
             
                    end
         | 
| 141 160 | 
             
                end
         | 
| 142 | 
            -
                 | 
| 161 | 
            +
                return retval
         | 
| 143 162 | 
             
              end
         | 
| 144 163 |  | 
| 145 164 | 
             
              # Sets connection status
         | 
| 146 165 | 
             
              def set_connection_status(retval)
         | 
| 147 | 
            -
                @connection_status = "Success" if retval == Retval::SUCCESS
         | 
| 166 | 
            +
                @connection_status = "Success" if @online || retval == Retval::SUCCESS
         | 
| 148 167 | 
             
                @connection_status = "Fail" if retval == Retval::CONNFAIL
         | 
| 149 168 | 
             
                @connection_status = "Timeout" if retval == Retval::TIMEOUT
         | 
| 150 169 | 
             
                @connection_status = "Unknown" if retval == Retval::UNKNOWN
         | 
| @@ -186,7 +205,7 @@ class MineStat | |
| 186 205 | 
             
                rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
         | 
| 187 206 | 
             
                  return Retval::CONNFAIL
         | 
| 188 207 | 
             
                rescue => exception
         | 
| 189 | 
            -
                   | 
| 208 | 
            +
                  #$stderr.puts exception
         | 
| 190 209 | 
             
                  return Retval::UNKNOWN
         | 
| 191 210 | 
             
                end
         | 
| 192 211 | 
             
                return Retval::SUCCESS
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: minestat
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Lloyd Dilley
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2023-01-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: MineStat polls Minecraft server data such as version, motd, current players,
         | 
| 14 14 | 
             
              and max players.
         |