publish_to_web 2.3.0 → 2.4.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/publish_to_web.rb +10 -3
 - data/lib/publish_to_web/config.rb +23 -1
 - data/lib/publish_to_web/directory.rb +40 -3
 - data/lib/publish_to_web/version.rb +1 -1
 - data/publish_to_web.gemspec +1 -1
 - metadata +4 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1f4db33296b70fcd1d9d12c67673c57b2d65fcff
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: edb2dad4f8c146eb9a7fd6c788926e912de1ad52
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: c02c078adae039427353534023a9ffab730c37b84913961d26c4fde3b08fdec95bc919b907e53cd483108f5de36c28fb690a6b018f4a4fb93cbec7519a59e4e7
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 42bb86b062e59ecf95f7079242fed975e297e86cfd0e9481319760a62da1684b80073e359b745d8cb374898acf98e5ab5b4d297b75483ff05bd33747967b7712
         
     | 
    
        data/lib/publish_to_web.rb
    CHANGED
    
    | 
         @@ -59,6 +59,7 @@ class PublishToWeb 
     | 
|
| 
       59 
59 
     | 
    
         
             
              def check_local_endpoint
         
     | 
| 
       60 
60 
     | 
    
         
             
                logger.info "Checking if local backend is available at #{bind_host}:#{forward_port}"
         
     | 
| 
       61 
61 
     | 
    
         
             
                TCPSocket.new(bind_host, forward_port).close
         
     | 
| 
      
 62 
     | 
    
         
            +
                logger.info "  ✔ Local backend is available!"
         
     | 
| 
       62 
63 
     | 
    
         | 
| 
       63 
64 
     | 
    
         
             
              rescue Errno::ECONNREFUSED
         
     | 
| 
       64 
65 
     | 
    
         
             
                logger.warn "Local backend is not available (yet?) - waiting for it to become available"
         
     | 
| 
         @@ -78,6 +79,7 @@ class PublishToWeb 
     | 
|
| 
       78 
79 
     | 
    
         
             
                directory.set_version
         
     | 
| 
       79 
80 
     | 
    
         
             
                directory.public_key
         
     | 
| 
       80 
81 
     | 
    
         | 
| 
      
 82 
     | 
    
         
            +
                logger.info "Updating SMTP configuration"
         
     | 
| 
       81 
83 
     | 
    
         
             
                directory.smtp_config.tap do |smtp|
         
     | 
| 
       82 
84 
     | 
    
         
             
                  config.smtp_host   = smtp["host"]
         
     | 
| 
       83 
85 
     | 
    
         
             
                  config.smtp_sender = smtp["sender"]
         
     | 
| 
         @@ -85,7 +87,15 @@ class PublishToWeb 
     | 
|
| 
       85 
87 
     | 
    
         
             
                  config.smtp_pass   = smtp["password"]
         
     | 
| 
       86 
88 
     | 
    
         
             
                end
         
     | 
| 
       87 
89 
     | 
    
         | 
| 
      
 90 
     | 
    
         
            +
                logger.info "Updating limits configuration"
         
     | 
| 
      
 91 
     | 
    
         
            +
                if limits = directory.limits
         
     | 
| 
      
 92 
     | 
    
         
            +
                  config.account_limit = limits["accounts"]
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                directory.report_usage
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
       88 
97 
     | 
    
         
             
                config.success = 'directory_configured'
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
       89 
99 
     | 
    
         
             
              rescue PublishToWeb::Directory::HttpResponseError => err
         
     | 
| 
       90 
100 
     | 
    
         
             
                logger.warn "#{err.class}: #{err}"
         
     | 
| 
       91 
101 
     | 
    
         
             
                logger.warn "Failed to interact with directory, will try again in a bit"
         
     | 
| 
         @@ -129,7 +139,6 @@ class PublishToWeb 
     | 
|
| 
       129 
139 
     | 
    
         
             
                retry
         
     | 
| 
       130 
140 
     | 
    
         | 
| 
       131 
141 
     | 
    
         
             
              rescue PublishToWeb::Directory::HttpResponseError
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
142 
     | 
    
         
             
                # already handled by #prepare_directory, we just need to wait and retry...
         
     | 
| 
       134 
143 
     | 
    
         | 
| 
       135 
144 
     | 
    
         
             
                sleep 30
         
     | 
| 
         @@ -140,8 +149,6 @@ class PublishToWeb 
     | 
|
| 
       140 
149 
     | 
    
         
             
                logger.error error.message
         
     | 
| 
       141 
150 
     | 
    
         
             
                logger.error error.backtrace.join("\n")
         
     | 
| 
       142 
151 
     | 
    
         | 
| 
       143 
     | 
    
         
            -
                abort error.message
         
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
152 
     | 
    
         
             
              end
         
     | 
| 
       146 
153 
     | 
    
         | 
| 
       147 
154 
     | 
    
         
             
              private
         
     | 
| 
         @@ -22,7 +22,7 @@ class PublishToWeb 
     | 
|
| 
       22 
22 
     | 
    
         
             
                end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                def enabled?
         
     | 
| 
       25 
     | 
    
         
            -
                  !!store.get('ptw/enabled')
         
     | 
| 
      
 25 
     | 
    
         
            +
                  !!store.get('ptw/control/enabled')
         
     | 
| 
       26 
26 
     | 
    
         
             
                end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                config_attribute :hardware_id, "ptw/hardware_id"
         
     | 
| 
         @@ -37,5 +37,27 @@ class PublishToWeb 
     | 
|
| 
       37 
37 
     | 
    
         
             
                config_attribute :smtp_sender, "smtp/sender"
         
     | 
| 
       38 
38 
     | 
    
         
             
                config_attribute :smtp_user,   "smtp/username"
         
     | 
| 
       39 
39 
     | 
    
         
             
                config_attribute :smtp_pass,   "smtp/password"
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                config_attribute :account_limit, "soul/account_limit"
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def active_accounts
         
     | 
| 
      
 44 
     | 
    
         
            +
                  store.get 'soul/active_accounts'
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def support_identifier
         
     | 
| 
      
 48 
     | 
    
         
            +
                  identifier = store.get('system/support_identifier')
         
     | 
| 
      
 49 
     | 
    
         
            +
                  if identifier.kind_of?(String) and identifier.strip.length > 0
         
     | 
| 
      
 50 
     | 
    
         
            +
                    identifier
         
     | 
| 
      
 51 
     | 
    
         
            +
                  end
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                def system_version
         
     | 
| 
      
 55 
     | 
    
         
            +
                  parts = [store.get('system/channel'), store.get('system/release_number')]
         
     | 
| 
      
 56 
     | 
    
         
            +
                  if parts.all? {|p| p.kind_of?(String) and p.strip.length > 0 }
         
     | 
| 
      
 57 
     | 
    
         
            +
                    parts.join("/")
         
     | 
| 
      
 58 
     | 
    
         
            +
                  else
         
     | 
| 
      
 59 
     | 
    
         
            +
                    "unknown"
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
       40 
62 
     | 
    
         
             
              end
         
     | 
| 
       41 
63 
     | 
    
         
             
            end
         
     | 
| 
         @@ -54,7 +54,7 @@ class PublishToWeb 
     | 
|
| 
       54 
54 
     | 
    
         
             
                end
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
       56 
56 
     | 
    
         
             
                def version
         
     | 
| 
       57 
     | 
    
         
            -
                   
     | 
| 
      
 57 
     | 
    
         
            +
                  config.system_version
         
     | 
| 
       58 
58 
     | 
    
         
             
                end
         
     | 
| 
       59 
59 
     | 
    
         | 
| 
       60 
60 
     | 
    
         
             
                def set_node_name(node_name)
         
     | 
| 
         @@ -71,7 +71,12 @@ class PublishToWeb 
     | 
|
| 
       71 
71 
     | 
    
         | 
| 
       72 
72 
     | 
    
         
             
                def set_version
         
     | 
| 
       73 
73 
     | 
    
         
             
                  logger.info "Setting version at directory to #{version}"
         
     | 
| 
       74 
     | 
    
         
            -
                   
     | 
| 
      
 74 
     | 
    
         
            +
                  payload = { 
         
     | 
| 
      
 75 
     | 
    
         
            +
                    license_key: license_key, 
         
     | 
| 
      
 76 
     | 
    
         
            +
                    version: Shellwords.shellescape(version), 
         
     | 
| 
      
 77 
     | 
    
         
            +
                    support_identifier: config.support_identifier 
         
     | 
| 
      
 78 
     | 
    
         
            +
                  }
         
     | 
| 
      
 79 
     | 
    
         
            +
                  response = HTTP.post url_for('set_version'), form: payload
         
     | 
| 
       75 
80 
     | 
    
         
             
                  if (200..299).include? response.status
         
     | 
| 
       76 
81 
     | 
    
         
             
                    true
         
     | 
| 
       77 
82 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -79,6 +84,24 @@ class PublishToWeb 
     | 
|
| 
       79 
84 
     | 
    
         
             
                  end
         
     | 
| 
       80 
85 
     | 
    
         
             
                end
         
     | 
| 
       81 
86 
     | 
    
         | 
| 
      
 87 
     | 
    
         
            +
                def report_usage
         
     | 
| 
      
 88 
     | 
    
         
            +
                  if active_accounts = config.active_accounts
         
     | 
| 
      
 89 
     | 
    
         
            +
                    logger.info "Reporting usage to directory"
         
     | 
| 
      
 90 
     | 
    
         
            +
                    payload = { 
         
     | 
| 
      
 91 
     | 
    
         
            +
                      license_key: license_key, 
         
     | 
| 
      
 92 
     | 
    
         
            +
                      active_accounts: active_accounts
         
     | 
| 
      
 93 
     | 
    
         
            +
                    }
         
     | 
| 
      
 94 
     | 
    
         
            +
                    response = HTTP.post url_for('usage'), form: payload
         
     | 
| 
      
 95 
     | 
    
         
            +
                    if (200..299).include? response.status
         
     | 
| 
      
 96 
     | 
    
         
            +
                      true
         
     | 
| 
      
 97 
     | 
    
         
            +
                    else
         
     | 
| 
      
 98 
     | 
    
         
            +
                      raise HttpResponseError.new("Failed to submit usage to directory", response)
         
     | 
| 
      
 99 
     | 
    
         
            +
                    end
         
     | 
| 
      
 100 
     | 
    
         
            +
                  else
         
     | 
| 
      
 101 
     | 
    
         
            +
                    logger.info "Not reporting usage as no data is available"
         
     | 
| 
      
 102 
     | 
    
         
            +
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
                end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
       82 
105 
     | 
    
         
             
                def smtp_config
         
     | 
| 
       83 
106 
     | 
    
         
             
                  logger.info "Retrieving SMTP configuration from directory"
         
     | 
| 
       84 
107 
     | 
    
         
             
                  response = HTTP.get url_for('smtp_config'), params: { license_key: license_key }
         
     | 
| 
         @@ -89,6 +112,16 @@ class PublishToWeb 
     | 
|
| 
       89 
112 
     | 
    
         
             
                  end
         
     | 
| 
       90 
113 
     | 
    
         
             
                end
         
     | 
| 
       91 
114 
     | 
    
         | 
| 
      
 115 
     | 
    
         
            +
                def limits
         
     | 
| 
      
 116 
     | 
    
         
            +
                  logger.info "Retrieving limits from directory"
         
     | 
| 
      
 117 
     | 
    
         
            +
                  response = HTTP.get url_for('limits'), params: { license_key: license_key }
         
     | 
| 
      
 118 
     | 
    
         
            +
                  if (200..299).include? response.status
         
     | 
| 
      
 119 
     | 
    
         
            +
                    JSON.parse(response.body)
         
     | 
| 
      
 120 
     | 
    
         
            +
                  else
         
     | 
| 
      
 121 
     | 
    
         
            +
                    raise HttpResponseError.new("Failed to retrieve limits from directory", response)
         
     | 
| 
      
 122 
     | 
    
         
            +
                  end
         
     | 
| 
      
 123 
     | 
    
         
            +
                end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
       92 
125 
     | 
    
         
             
                private
         
     | 
| 
       93 
126 
     | 
    
         | 
| 
       94 
127 
     | 
    
         
             
                  def public_key_ok?
         
     | 
| 
         @@ -123,7 +156,11 @@ class PublishToWeb 
     | 
|
| 
       123 
156 
     | 
    
         
             
                      logger.info "Retrieving connection info from directory #{host}"
         
     | 
| 
       124 
157 
     | 
    
         
             
                      response = HTTP.get(url_for('info'), params: { license_key: license_key })
         
     | 
| 
       125 
158 
     | 
    
         
             
                      if response.status == 200
         
     | 
| 
       126 
     | 
    
         
            -
                        JSON.load(response.body)
         
     | 
| 
      
 159 
     | 
    
         
            +
                        data = JSON.load(response.body)
         
     | 
| 
      
 160 
     | 
    
         
            +
                        data.each do |key, value|
         
     | 
| 
      
 161 
     | 
    
         
            +
                          logger.info "     #{key} = #{value}"
         
     | 
| 
      
 162 
     | 
    
         
            +
                        end
         
     | 
| 
      
 163 
     | 
    
         
            +
                        data
         
     | 
| 
       127 
164 
     | 
    
         
             
                      else
         
     | 
| 
       128 
165 
     | 
    
         
             
                        raise HttpResponseError.new("Failed to get connection info from directory", response)
         
     | 
| 
       129 
166 
     | 
    
         
             
                      end
         
     | 
    
        data/publish_to_web.gemspec
    CHANGED
    
    | 
         @@ -23,7 +23,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       23 
23 
     | 
    
         
             
              spec.add_runtime_dependency "net-ssh",        "~> 3.0"
         
     | 
| 
       24 
24 
     | 
    
         
             
              spec.add_runtime_dependency "http",           "~> 1.0"
         
     | 
| 
       25 
25 
     | 
    
         
             
              spec.add_runtime_dependency "sshkey",         "~> 1.8.0"
         
     | 
| 
       26 
     | 
    
         
            -
              spec.add_runtime_dependency "platform-skvs",  "~> 0. 
     | 
| 
      
 26 
     | 
    
         
            +
              spec.add_runtime_dependency "platform-skvs",  "~> 0.4.0"
         
     | 
| 
       27 
27 
     | 
    
         
             
              spec.add_runtime_dependency "rainbow",        "~> 2.0"
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
              spec.add_development_dependency "bundler", "~> 1.11"
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: publish_to_web
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.4.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Christoph Olszowka
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-11-09 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: net-ssh
         
     | 
| 
         @@ -58,14 +58,14 @@ dependencies: 
     | 
|
| 
       58 
58 
     | 
    
         
             
                requirements:
         
     | 
| 
       59 
59 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       60 
60 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       61 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 61 
     | 
    
         
            +
                    version: 0.4.0
         
     | 
| 
       62 
62 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       63 
63 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       64 
64 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       65 
65 
     | 
    
         
             
                requirements:
         
     | 
| 
       66 
66 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       67 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 68 
     | 
    
         
            +
                    version: 0.4.0
         
     | 
| 
       69 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
70 
     | 
    
         
             
              name: rainbow
         
     | 
| 
       71 
71 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     |