darjeelink 0.14.4 → 0.14.6
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4303964ff9a26e9645a23dc23ddf42b0e4c0149d96bf0be0ff190cdabe45a3e9
|
4
|
+
data.tar.gz: 923d1bc1d321f08b66cf519bad76ce50c07418558ab15d2b97185071ffc9aee7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 701f1be73fdefefed0ae84171fc7ac341bda12b182eaefb48bc1d3654781163b79a9c022dbcbe0097cd6542a8831ede814a251fdf9adf65b3bec6a39c6887053
|
7
|
+
data.tar.gz: cd5a66b7216dce4a247a5a3ce586caf75ec259653228e76e31daad7745a708fdacd2de6fb7f35fbfe757027077d90ac8573677663116a07da18cffd3017e45eb
|
data/README.md
CHANGED
@@ -120,9 +120,32 @@ Change the database url to be different to the development one i.e. `postgres://
|
|
120
120
|
## Releasing
|
121
121
|
Darjeelink follows [Semantic Versioning](https://semver.org)
|
122
122
|
|
123
|
+
### Pre-releasing - Staging tests
|
124
|
+
There are several ways to test the gem before releasing it.
|
125
|
+
|
126
|
+
One way, is to check the new development branch into Github, and then use `portkey-app` to test it in a staging environment.
|
127
|
+
|
128
|
+
- Create a new branch in the `darjeelink` repo with a sensible name related to your intended release: e.g. `darjeelink-v0.14.6-upgrade`.
|
129
|
+
- Perform the required upgrades, security patching, etc for the new release.
|
130
|
+
- Bump the version number as required (see below).
|
131
|
+
- Create a new branch in the `portkey-app` repo with a sensible name related to your intdended release: e.g. `darjeelink-v0.14.6-upgrade`.
|
132
|
+
- In the `Gemfile` of the portkey-app repo, change the `darjeelink` gem to point to the branch you just created in the darjeelink repo.
|
133
|
+
```gemfile
|
134
|
+
# Actual URL Shortener
|
135
|
+
# gem 'darjeelink' <-- Temporarilly change this. Remeber to change it back, and run bundle install to update the Gemfile.lock when done!
|
136
|
+
gem 'darjeelink', git: 'https://github.com/38degrees/darjeelink.git',
|
137
|
+
branch: 'darjeelink-v0.14.6-upgrade'
|
138
|
+
```
|
139
|
+
- Update the `Gemfile.lock` in the `portkey-app` repo by running `bundle install` and commit then push the changes.
|
140
|
+
- Deploy your branch of the portkey-app to the staging environment and test the changes.
|
141
|
+
|
142
|
+
NB: When you have followed the production release steps below and created a GitHub release, you can then update the `Gemfile` in the `portkey-app` repo to point to the new release tag.
|
143
|
+
|
144
|
+
### Releasing - Production
|
145
|
+
|
123
146
|
Once all necessary changes have made it in to master and you are ready to do a release you need to do these steps.
|
124
147
|
|
125
|
-
Note that if you are running in a vagrant VM, most of these steps can be done from
|
148
|
+
Note that if you are running in a vagrant VM or `docker-shell.sh` constainer, most of these steps can be done from the terminal session.
|
126
149
|
|
127
150
|
- Update `lib/darjeelink/version.rb` to the new version
|
128
151
|
- Run `bundle install` to pick up the change in Gemfile.lock
|
@@ -131,6 +154,10 @@ Note that if you are running in a vagrant VM, most of these steps can be done fr
|
|
131
154
|
- Run `gem build darjeelink.gemspec` this will output a file `darjeelink-X.X.X.gem` the version should match what version.rb and github.
|
132
155
|
- Run `gem push darjeelink-X.X.X.gem`
|
133
156
|
|
157
|
+
## TODOs
|
158
|
+
|
159
|
+
We have a few TODOs in the project. Please grep for TODO in the codebase to see them, and consider picking one up during maintainance.
|
160
|
+
|
134
161
|
## GDPR
|
135
162
|
No personally identifiable data is stored about the public by this gem.
|
136
163
|
It does not store information on individual clicks, only a counter of how many times a link has been clicked.
|
@@ -53,7 +53,7 @@ module Darjeelink
|
|
53
53
|
def valid_authorization_token?(username_token)
|
54
54
|
username, token = username_token.split ':'
|
55
55
|
|
56
|
-
stored_token = ApiToken.find_by(username
|
56
|
+
stored_token = ApiToken.find_by(username:, active: true)&.token
|
57
57
|
return false if stored_token.nil?
|
58
58
|
|
59
59
|
ActiveSupport::SecurityUtils.secure_compare(
|
@@ -9,20 +9,27 @@ module Darjeelink
|
|
9
9
|
|
10
10
|
private
|
11
11
|
|
12
|
+
# Disabling these rubocop rules. This is a simple function and tested in production sinve version 0.14.4.
|
13
|
+
#
|
14
|
+
# rubocop:disable Metrics/AbcSize
|
15
|
+
# rubocop:disable Layout/LineLength
|
12
16
|
# Check user IP address against whitelist from ENV
|
13
17
|
def check_ip_whitelist
|
14
18
|
return unless Rails.env.production?
|
15
19
|
return unless Rails.application.config.permitted_ips
|
20
|
+
|
16
21
|
ip_to_verify = if Rails.application.config.respond_to?(:client_ip_header) && Rails.application.config.client_ip_header.present?
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
22
|
+
request.headers[Rails.application.config.client_ip_header]
|
23
|
+
else
|
24
|
+
request.ip
|
25
|
+
end
|
21
26
|
|
22
27
|
return if Rails.application.config.permitted_ips.split(',').include? ip_to_verify
|
23
28
|
|
24
29
|
render plain: 'Access Denied', status: :forbidden
|
25
30
|
end
|
31
|
+
# rubocop:enable Metrics/AbcSize
|
32
|
+
# rubocop:enable Layout/LineLength
|
26
33
|
|
27
34
|
# Authenticate against Google OAuth
|
28
35
|
def authenticate
|
@@ -24,7 +24,7 @@ module Darjeelink
|
|
24
24
|
|
25
25
|
def create_short_link(url, auto_generated_key, custom_key)
|
26
26
|
shortened_path = custom_key.present? ? custom_key : auto_generated_key
|
27
|
-
::Darjeelink::ShortLink.create!(url
|
27
|
+
::Darjeelink::ShortLink.create!(url:, shortened_path:)
|
28
28
|
rescue ActiveRecord::RecordNotUnique
|
29
29
|
duplicates << "#{url}/#{custom_key || auto_generated_key}"
|
30
30
|
end
|
data/lib/darjeelink/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: darjeelink
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Hulme
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.9'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,6 +27,9 @@ dependencies:
|
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '1.9'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: omniauth-google-oauth2
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +64,14 @@ dependencies:
|
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
67
|
+
version: 6.1.7
|
62
68
|
type: :runtime
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
74
|
+
version: 6.1.7
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: rebrandly
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,7 +198,7 @@ dependencies:
|
|
192
198
|
- - ">="
|
193
199
|
- !ruby/object:Gem::Version
|
194
200
|
version: '0'
|
195
|
-
description:
|
201
|
+
description:
|
196
202
|
email:
|
197
203
|
- james@38degrees.org.uk
|
198
204
|
executables: []
|
@@ -244,8 +250,9 @@ files:
|
|
244
250
|
homepage: https://github.com/38degrees/darjeelink
|
245
251
|
licenses:
|
246
252
|
- MIT
|
247
|
-
metadata:
|
248
|
-
|
253
|
+
metadata:
|
254
|
+
rubygems_mfa_required: 'true'
|
255
|
+
post_install_message:
|
249
256
|
rdoc_options: []
|
250
257
|
require_paths:
|
251
258
|
- lib
|
@@ -260,8 +267,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
260
267
|
- !ruby/object:Gem::Version
|
261
268
|
version: '0'
|
262
269
|
requirements: []
|
263
|
-
rubygems_version: 3.3.
|
264
|
-
signing_key:
|
270
|
+
rubygems_version: 3.3.26
|
271
|
+
signing_key:
|
265
272
|
specification_version: 4
|
266
273
|
summary: URL Shortener
|
267
274
|
test_files: []
|