enjoy_cms_goto 0.3.7 → 0.4.0.beta3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/config/initializers/enjoy_goto.rb +22 -0
- data/config/locales/enjoy.goto.ru.yml +6 -1
- data/enjoy_cms_goto.gemspec +1 -1
- data/lib/enjoy/goto/admin/transfer.rb +5 -0
- data/lib/enjoy/goto/configuration.rb +19 -0
- data/lib/enjoy/goto/controllers/transfers.rb +6 -2
- data/lib/enjoy/goto/middleware.rb +65 -5
- data/lib/enjoy/goto/version.rb +1 -1
- data/lib/enjoy_cms_goto.rb +2 -2
- data/lib/generators/{config → enjoy/goto/config}/install_generator.rb +3 -3
- data/lib/generators/enjoy/goto/config/templates/enjoy_goto.erb +12 -0
- metadata +12 -10
- data/config/initializers/rails_admin.rb +0 -8
- data/lib/generators/config/templates/enjoy_goto.erb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e44d5d1040026ba29bc6070702d9f7ca05fffe8b
|
4
|
+
data.tar.gz: bc002af3019a8c6f5490d587877e06830516e22f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4b36e4fda1839ccc6f8d9e541cb40f1da45d46baf1a903114703fa00a74e439716380f6df371bd1755c434afdc19b5db8e63c0bff47a55fdd8fcdfc07f64306
|
7
|
+
data.tar.gz: 2bc15d2253430224d927468da1025dc079847b3d34933c68b9b8d3afbd76817077d963ba7c2931789e5c6cbbfbe162b29dd96563d98f500df564133ea1d9eca7
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
enjoy_cms_goto
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.1
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Enjoy.configure do |config|
|
2
|
+
config.ability_manager_config ||= []
|
3
|
+
config.ability_manager_config << {
|
4
|
+
method: :can,
|
5
|
+
model: Enjoy::Goto::Transfer,
|
6
|
+
actions: [:read]
|
7
|
+
}
|
8
|
+
|
9
|
+
config.ability_admin_config ||= []
|
10
|
+
config.ability_admin_config << {
|
11
|
+
method: :can,
|
12
|
+
model: Enjoy::Goto::Transfer,
|
13
|
+
actions: :manage
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
Enjoy.rails_admin_configure do |config|
|
18
|
+
if defined?(RailsAdminComments)
|
19
|
+
config.action_visible_for :comments, 'Enjoy::Goto::Transfer'
|
20
|
+
config.action_visible_for :model_comments, 'Enjoy::Goto::Transfer'
|
21
|
+
end
|
22
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
ru:
|
2
|
-
|
2
|
+
enjoy:
|
3
|
+
goto: 'Переходы с сайта'
|
4
|
+
mongoid: &mongoid
|
3
5
|
models:
|
4
6
|
enjoy/goto/transfer: "Переходы с сайта"
|
5
7
|
attributes:
|
@@ -10,3 +12,6 @@ ru:
|
|
10
12
|
referer: Страница, с которой перешли
|
11
13
|
source_ip: IP пользователя
|
12
14
|
creator: Пользователь
|
15
|
+
|
16
|
+
activerecord:
|
17
|
+
<<: *mongoid
|
data/enjoy_cms_goto.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency "bundler", "~> 1.10"
|
31
31
|
spec.add_development_dependency "rake", "~> 10.0"
|
32
32
|
|
33
|
-
spec.add_dependency 'enjoy_cms', "~> 0.
|
33
|
+
spec.add_dependency 'enjoy_cms', "~> 0.4.0.beta3"
|
34
34
|
spec.add_dependency 'nokogiri'
|
35
35
|
spec.add_dependency 'addressable'
|
36
36
|
end
|
@@ -13,7 +13,26 @@ module Enjoy
|
|
13
13
|
|
14
14
|
class Configuration
|
15
15
|
|
16
|
+
attr_accessor :css_selector
|
17
|
+
attr_accessor :href_regex
|
18
|
+
attr_accessor :excluded_hosts
|
19
|
+
|
20
|
+
attr_accessor :add_nofollow
|
21
|
+
attr_accessor :add_noindex
|
22
|
+
attr_accessor :add_noreferrer
|
23
|
+
attr_accessor :add_noopener
|
24
|
+
attr_accessor :del_attrs
|
25
|
+
|
16
26
|
def initialize
|
27
|
+
@css_selector = "a[href]"
|
28
|
+
@href_regex = /^(https?:)?\/\//i
|
29
|
+
@excluded_hosts = []
|
30
|
+
|
31
|
+
@add_nofollow = true
|
32
|
+
@add_noindex = true
|
33
|
+
@add_noreferrer = true
|
34
|
+
@add_noopener = true
|
35
|
+
@del_attrs = true
|
17
36
|
end
|
18
37
|
end
|
19
38
|
end
|
@@ -4,10 +4,10 @@ module Enjoy::Goto
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
def index
|
7
|
-
url = Addressable::URI.
|
7
|
+
url = Addressable::URI.heuristic_parse(params[:url]) rescue nil
|
8
8
|
referer = (request.referer ? Addressable::URI.parse(request.referer) : nil) rescue nil
|
9
9
|
|
10
|
-
@transfer =
|
10
|
+
@transfer = transfer_class.new
|
11
11
|
@transfer.recieved_url = params[:url]
|
12
12
|
@transfer.url = url.to_s
|
13
13
|
@transfer.host = url.host.to_s if url
|
@@ -18,6 +18,10 @@ module Enjoy::Goto
|
|
18
18
|
redirect_to @transfer.url, code: 303
|
19
19
|
end
|
20
20
|
|
21
|
+
def transfer_class
|
22
|
+
Enjoy::Goto::Transfer
|
23
|
+
end
|
24
|
+
|
21
25
|
end
|
22
26
|
end
|
23
27
|
end
|
@@ -5,9 +5,20 @@ require 'rack'
|
|
5
5
|
module Enjoy::Goto
|
6
6
|
class Middleware
|
7
7
|
|
8
|
+
ATTRS = {
|
9
|
+
disabled: 'data-enjoy-goto-disabled',
|
10
|
+
add_nofollow: 'data-enjoy-goto-add-nofollow',
|
11
|
+
add_noindex: 'data-enjoy-goto-add-noindex',
|
12
|
+
add_noreferrer: 'data-enjoy-goto-add-noreferrer',
|
13
|
+
add_noopener: 'data-enjoy-goto-add-noopener',
|
14
|
+
del_attrs: 'data-enjoy-goto-del-attrs'
|
15
|
+
}
|
16
|
+
|
17
|
+
REL_ATTRS = ATTRS
|
18
|
+
REL_ATTRS.delete(:disabled)
|
19
|
+
|
8
20
|
def initialize(app, options = {})
|
9
21
|
@app = app
|
10
|
-
@excluded_hosts = options.delete(:excluded_hosts) || []
|
11
22
|
self
|
12
23
|
end
|
13
24
|
|
@@ -16,15 +27,22 @@ module Enjoy::Goto
|
|
16
27
|
|
17
28
|
if headers['Content-Type'].to_s.include?('text/html')
|
18
29
|
begin
|
19
|
-
doc = Nokogiri::HTML.
|
20
|
-
doc.css(
|
30
|
+
doc = Nokogiri::HTML.fragment(body.body)
|
31
|
+
doc.css(Enjoy::Goto.config[:css_selector]).each do |a|
|
32
|
+
if (!a[ATTRS[:disabled]].blank? and !["0", "false", "no"].include?(a[ATTRS[:disabled]]))
|
33
|
+
del_attrs(a)
|
34
|
+
next
|
35
|
+
end
|
36
|
+
|
21
37
|
_href = a['href']
|
22
|
-
if _href =~
|
38
|
+
if _href =~ Enjoy::Goto.config[:href_regex]
|
23
39
|
begin
|
24
40
|
_host = Addressable::URI.parse(_href).host
|
25
|
-
unless
|
41
|
+
unless Enjoy::Goto.config[:excluded_hosts].include?(_host)
|
26
42
|
a['href'] = Rails.application.routes.url_helpers.enjoy_goto_path(url: _href)
|
27
43
|
a['target'] = '_blank' if a['target'].blank?
|
44
|
+
set_rel_attribute(a)
|
45
|
+
del_attrs(a)
|
28
46
|
end
|
29
47
|
rescue
|
30
48
|
end
|
@@ -37,5 +55,47 @@ module Enjoy::Goto
|
|
37
55
|
|
38
56
|
[status, headers, body]
|
39
57
|
end
|
58
|
+
|
59
|
+
private
|
60
|
+
def check_attr(a, attr_name)
|
61
|
+
Enjoy::Goto.config[attr_name] or (!a[ATTRS[attr_name]].blank? and !["0", "false", "no"].include?(a[ATTRS[attr_name]]))
|
62
|
+
end
|
63
|
+
|
64
|
+
def add_attr(a, attr_name)
|
65
|
+
rel = a['rel'].blank? ? [] : a.rel.split(" ")
|
66
|
+
rel << attr_name unless rel.include?(attr_name)
|
67
|
+
a
|
68
|
+
end
|
69
|
+
|
70
|
+
def add_nofollow(a)
|
71
|
+
add_attr('nofollow') if check_attr(a, :add_nofollow)
|
72
|
+
end
|
73
|
+
|
74
|
+
def add_noindex(a)
|
75
|
+
add_attr('noindex') if check_attr(a, :add_noindex)
|
76
|
+
end
|
77
|
+
|
78
|
+
def add_noreferrer(a)
|
79
|
+
add_attr('noreferrer') if check_attr(a, :add_noreferrer)
|
80
|
+
end
|
81
|
+
|
82
|
+
def add_noopener(a)
|
83
|
+
add_attr('noopener') if check_attr(a, :add_noopener)
|
84
|
+
end
|
85
|
+
|
86
|
+
def del_attrs(a)
|
87
|
+
if check_attr(ATTRS[del_attrs])
|
88
|
+
ATTRS.values.each do |attr|
|
89
|
+
a.remove_attribute(attr)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def set_rel_attribute(a)
|
95
|
+
REL_ATTRS.keys.each do |meth|
|
96
|
+
self.send(meth, a)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
40
100
|
end
|
41
101
|
end
|
data/lib/enjoy/goto/version.rb
CHANGED
data/lib/enjoy_cms_goto.rb
CHANGED
@@ -2,7 +2,7 @@ require "enjoy/goto/version"
|
|
2
2
|
|
3
3
|
require "enjoy/goto/routes"
|
4
4
|
|
5
|
-
require 'enjoy_cms'
|
5
|
+
# require 'enjoy_cms'
|
6
6
|
|
7
7
|
require 'mongoid'
|
8
8
|
require 'mongoid_userstamp'
|
@@ -15,7 +15,7 @@ module Enjoy
|
|
15
15
|
module Goto
|
16
16
|
class << self
|
17
17
|
def orm
|
18
|
-
:mongoid
|
18
|
+
:mongoid #Enjoy.orm
|
19
19
|
end
|
20
20
|
def mongoid?
|
21
21
|
Enjoy::Goto.orm == :mongoid
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'rails/generators'
|
2
2
|
|
3
|
-
module Enjoy::Goto
|
4
|
-
class
|
3
|
+
module Enjoy::Goto
|
4
|
+
class ConfigGenerator < Rails::Generators::Base
|
5
5
|
source_root File.expand_path('../templates', __FILE__)
|
6
6
|
|
7
7
|
desc 'Enjoy::Goto Config generator'
|
8
|
-
def
|
8
|
+
def config
|
9
9
|
template 'enjoy_goto.erb', "config/initializers/enjoy_goto.rb"
|
10
10
|
end
|
11
11
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Enjoy::Goto.configure do |config|
|
2
|
+
##### defaults #####
|
3
|
+
# config.css_selector = "a[href]"
|
4
|
+
# config.href_regex = /^(https?:)?\/\//i
|
5
|
+
# config.excluded_hosts = []
|
6
|
+
|
7
|
+
# config.add_nofollow = true
|
8
|
+
# config.add_noindex = true
|
9
|
+
# config.add_noreferrer = true
|
10
|
+
# config.add_noopener = true
|
11
|
+
# config.del_attrs = true
|
12
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enjoy_cms_goto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Kiseliev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.4.0.beta3
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.4.0.beta3
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: nokogiri
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,6 +88,8 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
|
+
- ".ruby-gemset"
|
92
|
+
- ".ruby-version"
|
91
93
|
- ".travis.yml"
|
92
94
|
- Gemfile
|
93
95
|
- LICENSE.txt
|
@@ -99,7 +101,7 @@ files:
|
|
99
101
|
- app/models/enjoy/goto/transfer.rb
|
100
102
|
- bin/console
|
101
103
|
- bin/setup
|
102
|
-
- config/initializers/
|
104
|
+
- config/initializers/enjoy_goto.rb
|
103
105
|
- config/locales/enjoy.goto.ru.yml
|
104
106
|
- enjoy_cms_goto.gemspec
|
105
107
|
- lib/enjoy/goto/admin.rb
|
@@ -113,8 +115,8 @@ files:
|
|
113
115
|
- lib/enjoy/goto/routes.rb
|
114
116
|
- lib/enjoy/goto/version.rb
|
115
117
|
- lib/enjoy_cms_goto.rb
|
116
|
-
- lib/generators/config/install_generator.rb
|
117
|
-
- lib/generators/config/templates/enjoy_goto.erb
|
118
|
+
- lib/generators/enjoy/goto/config/install_generator.rb
|
119
|
+
- lib/generators/enjoy/goto/config/templates/enjoy_goto.erb
|
118
120
|
- release.sh
|
119
121
|
homepage: https://github.com/enjoycreative/enjoy_cms_goto
|
120
122
|
licenses:
|
@@ -131,12 +133,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
133
|
version: '0'
|
132
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
135
|
requirements:
|
134
|
-
- - "
|
136
|
+
- - ">"
|
135
137
|
- !ruby/object:Gem::Version
|
136
|
-
version:
|
138
|
+
version: 1.3.1
|
137
139
|
requirements: []
|
138
140
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.
|
141
|
+
rubygems_version: 2.5.1
|
140
142
|
signing_key:
|
141
143
|
specification_version: 4
|
142
144
|
summary: URL redirect dispatcher with EnjoyCMS support.
|