2017-06-24 3 views
1

接続エラーを中継すると、サーバのIPが明らかになり、セキュリティ上の問題が発生する可能性があります。エラーが発生したときにIPの出力を排除するために、誰もがアイデアを持っていますか?ホストのIPがエラーに出力される Ruby:エラー出力でIPを表示しないようにしてください

Connection refused(2)= Connect to "Host IP" port 45443.

私のコード:任意の助けをいただければ幸いです

module Bitcoin 
    class Client 
    def self.local 
     return Bitcoin::Client.new(ENV['RPC_USER'], ENV['RPC_PASSWORD'], 
     { host: 'Host IP', port: 45443, ssl: false}) 
    end 
    end 
end 

+0

こんにちは、あなたの質問は、あなたが貼り付けたコードでは、単に新しいクラスを作成しています。ネットワーク接続を行っているコードが表示されない場合は、そのコードを追加するか、ビットコインライブラリを使用している場合はリンクを貼り付ける必要があります。 – Rubycut

+0

@rubycut https://github.com/samgos/Reddbot/blob/master/tipper.rbそれは基本的に入力される唯一の場所ですが、エラーの種類によって異なります。それはルビーの起源です。私はかなり確信しています。 –

答えて

1

そのエラーからわずか救助し、代わりにカスタムメッセージを使用して独自のエラーを発生させる:

module Bitcoin 
    class Client 
    def self.local 
     Bitcoin::Client.new(
     ENV['RPC_USER'], ENV['RPC_PASSWORD'], 
     { host: 'Host IP', port: 45443, ssl: false} 
    ) 
    rescue StandardError 
     raise "Unable to connect to Bitcoin" 
    end 
    end 
end 
+0

結果:(エラー:接続が拒否されました - 「ホストIP」ポート45443の接続(2) /home/user/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/http .rb:879:in initialize ' –

+0

[このGist](https://gist.github.com/tenderlove/245188)によると、代わりに 'StandardError'から救助するための最良の解決策と思われます。 – spickermann

1

を使用すると、渡されたリンクに基づいて、あなたが特定の例外の種類を特定することができ、それらが提起されたときに何が起こるか:

begin 
    command = Command.new(params) 
    command.perform 
    json command.result 

rescue NetworkError 
    json text: "Custom message without ip", icon_emoji: ":large_blue_circle:" 

rescue Exception => ex 
    json text: "Error: #{ex.message}", icon_emoji: ":large_blue_circle:" 
end 
+0

問題これは様々なエラーのためですか?@spickermannsはこのステートメントに統合しても役に立たなかったのですか? –

+0

接続エラーが発生したときに例外を調べることができます。 – Rubycut

関連する問題