Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
MetaGer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
56
Issues
56
List
Boards
Labels
Service Desk
Milestones
Merge Requests
9
Merge Requests
9
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
open-source
MetaGer
Commits
9d8ffbb3
Commit
9d8ffbb3
authored
Nov 06, 2020
by
Dominik Hebeler
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'development' into 998-fix-donation-form-and-implement-integrationtest
parents
d64e35ec
28ca0eef
Changes
319
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
319 changed files
with
7135 additions
and
19535 deletions
+7135
-19535
.gitignore
.gitignore
+4
-1
.gitlab-ci.yml
.gitlab-ci.yml
+35
-13
.gitlab/development-values.yaml
.gitlab/development-values.yaml
+34
-2
.gitlab/production-values.yaml
.gitlab/production-values.yaml
+38
-10
.gitlab/review-apps-values.yaml
.gitlab/review-apps-values.yaml
+27
-1
Dockerfile
Dockerfile
+4
-3
app/Console/Commands/RequestFetcher.php
app/Console/Commands/RequestFetcher.php
+73
-70
app/Http/Controllers/AdminInterface.php
app/Http/Controllers/AdminInterface.php
+21
-6
app/Http/Controllers/AdminSpamController.php
app/Http/Controllers/AdminSpamController.php
+6
-1
app/Http/Controllers/HumanVerification.php
app/Http/Controllers/HumanVerification.php
+105
-15
app/Http/Controllers/KeyController.php
app/Http/Controllers/KeyController.php
+2
-3
app/Http/Controllers/MetaGerSearch.php
app/Http/Controllers/MetaGerSearch.php
+83
-15
app/Http/Controllers/SettingsController.php
app/Http/Controllers/SettingsController.php
+166
-17
app/Http/Controllers/StartpageController.php
app/Http/Controllers/StartpageController.php
+14
-6
app/Http/Kernel.php
app/Http/Kernel.php
+1
-0
app/Http/Middleware/BrowserVerification.php
app/Http/Middleware/BrowserVerification.php
+82
-0
app/Http/Middleware/HumanVerification.php
app/Http/Middleware/HumanVerification.php
+9
-19
app/Http/Middleware/LocalizationRedirect.php
app/Http/Middleware/LocalizationRedirect.php
+9
-5
app/Jobs/ConvertCountFile.php
app/Jobs/ConvertCountFile.php
+6
-8
app/MetaGer.php
app/MetaGer.php
+356
-107
app/Models/Quicktips/Quicktips.php
app/Models/Quicktips/Quicktips.php
+49
-30
app/Models/Result.php
app/Models/Result.php
+10
-8
app/Models/Searchengine.php
app/Models/Searchengine.php
+16
-14
app/PrometheusExporter.php
app/PrometheusExporter.php
+7
-0
chart/.gitignore
chart/.gitignore
+0
-1
chart/.gitlab-ci.yml
chart/.gitlab-ci.yml
+0
-17
chart/.helmignore
chart/.helmignore
+0
-21
chart/CONTRIBUTING.md
chart/CONTRIBUTING.md
+28
-1
chart/Chart.yaml
chart/Chart.yaml
+1
-1
chart/README.md
chart/README.md
+24
-1
chart/requirements.lock
chart/requirements.lock
+3
-3
chart/requirements.yaml
chart/requirements.yaml
+3
-1
chart/templates/NOTES.txt
chart/templates/NOTES.txt
+10
-3
chart/templates/_helpers.tpl
chart/templates/_helpers.tpl
+18
-1
chart/templates/db-initialize-job.yaml
chart/templates/db-initialize-job.yaml
+5
-1
chart/templates/db-migrate-hook.yaml
chart/templates/db-migrate-hook.yaml
+5
-1
chart/templates/deployment.yaml
chart/templates/deployment.yaml
+28
-25
chart/templates/ingress.yaml
chart/templates/ingress.yaml
+11
-10
chart/templates/network-policy.yaml
chart/templates/network-policy.yaml
+13
-0
chart/templates/service.yaml
chart/templates/service.yaml
+1
-1
chart/templates/worker-deployment.yaml
chart/templates/worker-deployment.yaml
+16
-5
chart/test/go.mod
chart/test/go.mod
+10
-0
chart/test/go.sum
chart/test/go.sum
+218
-0
chart/test/template_test.go
chart/test/template_test.go
+845
-0
chart/test/testdata/custom-policy.yaml
chart/test/testdata/custom-policy.yaml
+13
-0
chart/test/testdata/full-spec-policy.yaml
chart/test/testdata/full-spec-policy.yaml
+17
-0
chart/test/testdata/modsecurity-ingress.yaml
chart/test/testdata/modsecurity-ingress.yaml
+10
-0
chart/values.yaml
chart/values.yaml
+38
-14
composer.json
composer.json
+5
-7
config/database.php
config/database.php
+1
-0
config/metager/metager.php
config/metager/metager.php
+8
-0
config/session.php
config/session.php
+1
-1
config/trustedproxy.php
config/trustedproxy.php
+1
-0
index.html
index.html
+2
-2
package-lock.json
package-lock.json
+0
-11090
public/img/App.svg
public/img/App.svg
+89
-0
public/img/Key-verified.svg
public/img/Key-verified.svg
+53
-0
public/img/app-icon.svg
public/img/app-icon.svg
+89
-0
public/img/caret.svg
public/img/caret.svg
+35
-0
public/img/donate-icon.svg
public/img/donate-icon.svg
+48
-0
public/img/heart.svg
public/img/heart.svg
+45
-0
public/img/help-icon.svg
public/img/help-icon.svg
+45
-0
public/img/icon-contact.svg
public/img/icon-contact.svg
+57
-0
public/img/icon-filter.svg
public/img/icon-filter.svg
+36
-0
public/img/icon-language.svg
public/img/icon-language.svg
+53
-0
public/img/icon-lupe.svg
public/img/icon-lupe.svg
+66
-0
public/img/icon-map.svg
public/img/icon-map.svg
+47
-0
public/img/icon-outlink.svg
public/img/icon-outlink.svg
+51
-0
public/img/icon-services.svg
public/img/icon-services.svg
+76
-0
public/img/icon-settings.svg
public/img/icon-settings.svg
+70
-0
public/img/key-icon.svg
public/img/key-icon.svg
+66
-0
public/img/key-verified.svg
public/img/key-verified.svg
+53
-0
public/img/leaf.svg
public/img/leaf.svg
+31
-0
public/img/lock.svg
public/img/lock.svg
+23
-0
public/img/member-icon.svg
public/img/member-icon.svg
+58
-0
public/img/plug-in.svg
public/img/plug-in.svg
+65
-0
public/img/rainbow.svg
public/img/rainbow.svg
+24
-56
public/img/story-plugin.svg
public/img/story-plugin.svg
+200
-0
resources/js/scriptResultPage.js
resources/js/scriptResultPage.js
+27
-3
resources/lang/de/429.php
resources/lang/de/429.php
+6
-0
resources/lang/de/hilfe.php
resources/lang/de/hilfe.php
+26
-20
resources/lang/de/index.php
resources/lang/de/index.php
+3
-3
resources/lang/de/key.php
resources/lang/de/key.php
+3
-0
resources/lang/de/mg-story.php
resources/lang/de/mg-story.php
+34
-0
resources/lang/de/partnershops.php
resources/lang/de/partnershops.php
+1
-1
resources/lang/de/plugin-desktop/desktop-chrome.php
resources/lang/de/plugin-desktop/desktop-chrome.php
+23
-0
resources/lang/de/plugin-desktop/desktop-edge.php
resources/lang/de/plugin-desktop/desktop-edge.php
+28
-0
resources/lang/de/plugin-desktop/desktop-firefox.php
resources/lang/de/plugin-desktop/desktop-firefox.php
+31
-0
resources/lang/de/plugin-desktop/desktop-ie.php
resources/lang/de/plugin-desktop/desktop-ie.php
+18
-0
resources/lang/de/plugin-desktop/desktop-opera.php
resources/lang/de/plugin-desktop/desktop-opera.php
+14
-0
resources/lang/de/plugin-desktop/desktop-safari.php
resources/lang/de/plugin-desktop/desktop-safari.php
+8
-0
resources/lang/de/plugin-desktop/desktop-vivaldi.php
resources/lang/de/plugin-desktop/desktop-vivaldi.php
+11
-0
resources/lang/de/plugin-mobile/mobile-chrome.php
resources/lang/de/plugin-mobile/mobile-chrome.php
+15
-0
resources/lang/de/plugin-mobile/mobile-edge.php
resources/lang/de/plugin-mobile/mobile-edge.php
+14
-0
resources/lang/de/plugin-mobile/mobile-firefox-klar.php
resources/lang/de/plugin-mobile/mobile-firefox-klar.php
+10
-0
resources/lang/de/plugin-mobile/mobile-firefox.php
resources/lang/de/plugin-mobile/mobile-firefox.php
+17
-0
resources/lang/de/plugin-mobile/mobile-opera.php
resources/lang/de/plugin-mobile/mobile-opera.php
+9
-0
resources/lang/de/plugin-page.php
resources/lang/de/plugin-page.php
+24
-79
resources/lang/de/plugin.php
resources/lang/de/plugin.php
+1
-1
resources/lang/de/result.php
resources/lang/de/result.php
+1
-0
resources/lang/de/resultPage.php
resources/lang/de/resultPage.php
+1
-1
resources/lang/de/settings.php
resources/lang/de/settings.php
+38
-22
resources/lang/de/sidebar.php
resources/lang/de/sidebar.php
+2
-0
resources/lang/de/staticPages.php
resources/lang/de/staticPages.php
+1
-1
resources/lang/de/team.php
resources/lang/de/team.php
+1
-0
resources/lang/de/tor.php
resources/lang/de/tor.php
+3
-1
resources/lang/en/429.php
resources/lang/en/429.php
+6
-0
resources/lang/en/hilfe.php
resources/lang/en/hilfe.php
+24
-17
resources/lang/en/index.php
resources/lang/en/index.php
+2
-2
resources/lang/en/key.php
resources/lang/en/key.php
+7
-4
resources/lang/en/mg-story.php
resources/lang/en/mg-story.php
+33
-0
resources/lang/en/plugin-desktop/desktop-chrome.php
resources/lang/en/plugin-desktop/desktop-chrome.php
+22
-0
resources/lang/en/plugin-desktop/desktop-edge.php
resources/lang/en/plugin-desktop/desktop-edge.php
+28
-0
resources/lang/en/plugin-desktop/desktop-firefox.php
resources/lang/en/plugin-desktop/desktop-firefox.php
+31
-0
resources/lang/en/plugin-desktop/desktop-ie.php
resources/lang/en/plugin-desktop/desktop-ie.php
+18
-0
resources/lang/en/plugin-desktop/desktop-opera.php
resources/lang/en/plugin-desktop/desktop-opera.php
+15
-0
resources/lang/en/plugin-desktop/desktop-safari.php
resources/lang/en/plugin-desktop/desktop-safari.php
+8
-0
resources/lang/en/plugin-desktop/desktop-vivaldi.php
resources/lang/en/plugin-desktop/desktop-vivaldi.php
+11
-0
resources/lang/en/plugin-mobile/mobile-chrome.php
resources/lang/en/plugin-mobile/mobile-chrome.php
+15
-0
resources/lang/en/plugin-mobile/mobile-edge.php
resources/lang/en/plugin-mobile/mobile-edge.php
+14
-0
resources/lang/en/plugin-mobile/mobile-firefox-klar.php
resources/lang/en/plugin-mobile/mobile-firefox-klar.php
+11
-0
resources/lang/en/plugin-mobile/mobile-firefox.php
resources/lang/en/plugin-mobile/mobile-firefox.php
+17
-0
resources/lang/en/plugin-mobile/mobile-opera.php
resources/lang/en/plugin-mobile/mobile-opera.php
+9
-0
resources/lang/en/plugin-page.php
resources/lang/en/plugin-page.php
+13
-65
resources/lang/en/result.php
resources/lang/en/result.php
+1
-0
resources/lang/en/settings.php
resources/lang/en/settings.php
+16
-0
resources/lang/en/sidebar.php
resources/lang/en/sidebar.php
+2
-0
resources/lang/en/team.php
resources/lang/en/team.php
+2
-0
resources/lang/en/tor.php
resources/lang/en/tor.php
+3
-1
resources/lang/es/app.php
resources/lang/es/app.php
+24
-0
resources/lang/es/asso.php
resources/lang/es/asso.php
+8
-0
resources/lang/es/bitpay.php
resources/lang/es/bitpay.php
+2
-4
resources/lang/es/index.php
resources/lang/es/index.php
+36
-21
resources/lang/es/metaGerSearch.php
resources/lang/es/metaGerSearch.php
+6
-4
resources/lang/es/mg-story.php
resources/lang/es/mg-story.php
+34
-0
resources/lang/es/passwords.php
resources/lang/es/passwords.php
+9
-0
resources/lang/es/plugin-desktop/desktop-chrome.php
resources/lang/es/plugin-desktop/desktop-chrome.php
+17
-0
resources/lang/es/plugin-desktop/desktop-safari.php
resources/lang/es/plugin-desktop/desktop-safari.php
+7
-0
resources/lang/es/plugin-page.php
resources/lang/es/plugin-page.php
+4
-44
resources/lang/es/result.php
resources/lang/es/result.php
+14
-13
resources/lang/es/results.php
resources/lang/es/results.php
+9
-5
resources/lang/es/sidebar.php
resources/lang/es/sidebar.php
+6
-6
resources/lang/es/spende.php
resources/lang/es/spende.php
+37
-34
resources/lang/es/spendenaufruf.php
resources/lang/es/spendenaufruf.php
+8
-0
resources/lang/es/titles.php
resources/lang/es/titles.php
+5
-7
resources/lang/es/tor.php
resources/lang/es/tor.php
+4
-2
resources/lang/es/zitatsuche.php
resources/lang/es/zitatsuche.php
+8
-0
resources/lang/fr/index.php
resources/lang/fr/index.php
+1
-1
resources/lang/fr/plugin-page.php
resources/lang/fr/plugin-page.php
+4
-3
resources/less/bootstrap/alerts.less
resources/less/bootstrap/alerts.less
+0
-73
resources/less/bootstrap/badges.less
resources/less/bootstrap/badges.less
+0
-66
resources/less/bootstrap/bootstrap.less
resources/less/bootstrap/bootstrap.less
+0
-55
resources/less/bootstrap/breadcrumbs.less
resources/less/bootstrap/breadcrumbs.less
+0
-26
resources/less/bootstrap/button-groups.less
resources/less/bootstrap/button-groups.less
+0
-244
resources/less/bootstrap/buttons.less
resources/less/bootstrap/buttons.less
+0
-166
resources/less/bootstrap/carousel.less
resources/less/bootstrap/carousel.less
+0
-262
resources/less/bootstrap/close.less
resources/less/bootstrap/close.less
+0
-34
resources/less/bootstrap/code.less
resources/less/bootstrap/code.less
+0
-69
resources/less/bootstrap/component-animations.less
resources/less/bootstrap/component-animations.less
+0
-33
resources/less/bootstrap/dropdowns.less
resources/less/bootstrap/dropdowns.less
+0
-216
resources/less/bootstrap/forms.less
resources/less/bootstrap/forms.less
+0
-613
resources/less/bootstrap/grid.less
resources/less/bootstrap/grid.less
+0
-84
resources/less/bootstrap/input-groups.less
resources/less/bootstrap/input-groups.less
+0
-171
resources/less/bootstrap/jumbotron.less
resources/less/bootstrap/jumbotron.less
+0
-54
resources/less/bootstrap/labels.less
resources/less/bootstrap/labels.less
+0
-64
resources/less/bootstrap/list-group.less
resources/less/bootstrap/list-group.less
+0
-130
resources/less/bootstrap/media.less
resources/less/bootstrap/media.less
+0
-66
resources/less/bootstrap/mixins.less
resources/less/bootstrap/mixins.less
+0
-40
resources/less/bootstrap/mixins/alerts.less
resources/less/bootstrap/mixins/alerts.less
+0
-14
resources/less/bootstrap/mixins/background-variant.less
resources/less/bootstrap/mixins/background-variant.less
+0
-9
resources/less/bootstrap/mixins/border-radius.less
resources/less/bootstrap/mixins/border-radius.less
+0
-18
resources/less/bootstrap/mixins/buttons.less
resources/less/bootstrap/mixins/buttons.less
+0
-65
resources/less/bootstrap/mixins/center-block.less
resources/less/bootstrap/mixins/center-block.less
+0
-7
resources/less/bootstrap/mixins/clearfix.less
resources/less/bootstrap/mixins/clearfix.less
+0
-22
resources/less/bootstrap/mixins/gradients.less
resources/less/bootstrap/mixins/gradients.less
+0
-59
resources/less/bootstrap/mixins/grid-framework.less
resources/less/bootstrap/mixins/grid-framework.less
+0
-91
resources/less/bootstrap/mixins/grid.less
resources/less/bootstrap/mixins/grid.less
+0
-122
resources/less/bootstrap/mixins/hide-text.less
resources/less/bootstrap/mixins/hide-text.less
+0
-21
resources/less/bootstrap/mixins/image.less
resources/less/bootstrap/mixins/image.less
+0
-33
resources/less/bootstrap/mixins/labels.less
resources/less/bootstrap/mixins/labels.less
+0
-12
resources/less/bootstrap/mixins/list-group.less
resources/less/bootstrap/mixins/list-group.less
+0
-30
resources/less/bootstrap/mixins/nav-vertical-align.less
resources/less/bootstrap/mixins/nav-vertical-align.less
+0
-9
resources/less/bootstrap/mixins/opacity.less
resources/less/bootstrap/mixins/opacity.less
+0
-8
resources/less/bootstrap/mixins/pagination.less
resources/less/bootstrap/mixins/pagination.less
+0
-24
resources/less/bootstrap/mixins/panels.less
resources/less/bootstrap/mixins/panels.less
+0
-24
resources/less/bootstrap/mixins/progress-bar.less
resources/less/bootstrap/mixins/progress-bar.less
+0
-10
resources/less/bootstrap/mixins/reset-text.less
resources/less/bootstrap/mixins/reset-text.less
+0
-18
resources/less/bootstrap/mixins/resize.less
resources/less/bootstrap/mixins/resize.less
+0
-6
resources/less/bootstrap/mixins/responsive-visibility.less
resources/less/bootstrap/mixins/responsive-visibility.less
+0
-15
resources/less/bootstrap/mixins/size.less
resources/less/bootstrap/mixins/size.less
+0
-10
resources/less/bootstrap/mixins/tab-focus.less
resources/less/bootstrap/mixins/tab-focus.less
+0
-9
resources/less/bootstrap/mixins/table-row.less
resources/less/bootstrap/mixins/table-row.less
+0
-28
resources/less/bootstrap/mixins/text-emphasis.less
resources/less/bootstrap/mixins/text-emphasis.less
+0
-9
resources/less/bootstrap/mixins/text-overflow.less
resources/less/bootstrap/mixins/text-overflow.less
+0
-8
resources/less/bootstrap/mixins/vendor-prefixes.less
resources/less/bootstrap/mixins/vendor-prefixes.less
+0
-227
resources/less/bootstrap/modals.less
resources/less/bootstrap/modals.less
+0
-150
resources/less/bootstrap/navbar.less
resources/less/bootstrap/navbar.less
+0
-660
resources/less/bootstrap/navs.less
resources/less/bootstrap/navs.less
+0
-242
resources/less/bootstrap/normalize.less
resources/less/bootstrap/normalize.less
+0
-424
resources/less/bootstrap/pager.less
resources/less/bootstrap/pager.less
+0
-54
resources/less/bootstrap/pagination.less
resources/less/bootstrap/pagination.less
+0
-89
resources/less/bootstrap/panels.less
resources/less/bootstrap/panels.less
+0
-271
resources/less/bootstrap/popovers.less
resources/less/bootstrap/popovers.less
+0
-131
resources/less/bootstrap/print.less
resources/less/bootstrap/print.less
+0
-101
resources/less/bootstrap/progress-bars.less
resources/less/bootstrap/progress-bars.less
+0
-87
resources/less/bootstrap/responsive-embed.less
resources/less/bootstrap/responsive-embed.less
+0
-35
resources/less/bootstrap/responsive-utilities.less
resources/less/bootstrap/responsive-utilities.less
+0
-194
resources/less/bootstrap/scaffolding.less
resources/less/bootstrap/scaffolding.less
+0
-161
resources/less/bootstrap/tables.less
resources/less/bootstrap/tables.less
+0
-234
resources/less/bootstrap/theme.less
resources/less/bootstrap/theme.less
+0
-291
resources/less/bootstrap/thumbnails.less
resources/less/bootstrap/thumbnails.less
+0
-36
resources/less/bootstrap/tooltip.less
resources/less/bootstrap/tooltip.less
+0
-101
resources/less/bootstrap/type.less
resources/less/bootstrap/type.less
+0
-302
resources/less/bootstrap/utilities.less
resources/less/bootstrap/utilities.less
+0
-55
resources/less/bootstrap/wells.less
resources/less/bootstrap/wells.less
+0
-29
resources/less/metager/bs-variables.less
resources/less/metager/bs-variables.less
+3
-3
resources/less/metager/general/base.less
resources/less/metager/general/base.less
+7
-14
resources/less/metager/general/forms.less
resources/less/metager/general/forms.less
+23
-1
resources/less/metager/general/general.less
resources/less/metager/general/general.less
+1
-0
resources/less/metager/metager-dark.less
resources/less/metager/metager-dark.less
+9
-1
resources/less/metager/metager.less
resources/less/metager/metager.less
+8
-1
resources/less/metager/mixins/forms.less
resources/less/metager/mixins/forms.less
+11
-53
resources/less/metager/mixins/grid.less
resources/less/metager/mixins/grid.less
+6
-0
resources/less/metager/mixins/mixins.less
resources/less/metager/mixins/mixins.less
+7
-0
resources/less/metager/mixins/nav-divider.less
resources/less/metager/mixins/nav-divider.less
+10
-0
resources/less/metager/mixins/reset-filter.less
resources/less/metager/mixins/reset-filter.less
+0
-0
resources/less/metager/mixins/tab-focus.less
resources/less/metager/mixins/tab-focus.less
+8
-0
resources/less/metager/mixins/text-emphasis.less
resources/less/metager/mixins/text-emphasis.less
+8
-0
resources/less/metager/mixins/vendor-prefixes.less
resources/less/metager/mixins/vendor-prefixes.less
+56
-0
resources/less/metager/pages/count-dark.less
resources/less/metager/pages/count-dark.less
+7
-0
resources/less/metager/pages/count/style-dark.less
resources/less/metager/pages/count/style-dark.less
+7
-0
resources/less/metager/pages/count/style.less
resources/less/metager/pages/count/style.less
+7
-0
resources/less/metager/pages/key-dark.less
resources/less/metager/pages/key-dark.less
+27
-0
resources/less/metager/pages/key.less
resources/less/metager/pages/key.less
+2
-0
resources/less/metager/pages/plugin.less
resources/less/metager/pages/plugin.less
+4
-0
resources/less/metager/pages/resultpage.less
resources/less/metager/pages/resultpage.less
+1
-0
resources/less/metager/pages/resultpage/quicktips.less
resources/less/metager/pages/resultpage/quicktips.less
+6
-7
resources/less/metager/pages/resultpage/result-page.less
resources/less/metager/pages/resultpage/result-page.less
+7
-2
resources/less/metager/pages/resultpage/result.less
resources/less/metager/pages/resultpage/result.less
+14
-3
resources/less/metager/pages/settings.less
resources/less/metager/pages/settings.less
+50
-0
resources/less/metager/pages/start-page.less
resources/less/metager/pages/start-page.less
+0
-68
resources/less/metager/parts/alert.less
resources/less/metager/parts/alert.less
+27
-0
resources/less/metager/parts/bitpay.less
resources/less/metager/parts/bitpay.less
+2
-2
resources/less/metager/parts/button.less
resources/less/metager/parts/button.less
+56
-0
resources/less/metager/parts/dropdowns.less
resources/less/metager/parts/dropdowns.less
+217
-0
resources/less/metager/parts/scaffolding.less
resources/less/metager/parts/scaffolding.less
+39
-0
resources/less/metager/parts/searchbar.less
resources/less/metager/parts/searchbar.less
+43
-16
resources/less/metager/parts/sidebar.less
resources/less/metager/parts/sidebar.less
+63
-3
resources/less/metager/parts/type.less
resources/less/metager/parts/type.less
+92
-0
resources/less/metager/startpage-only-dark.less
resources/less/metager/startpage-only-dark.less
+2
-0
resources/less/metager/startpage-only-light.less
resources/less/metager/startpage-only-light.less
+2
-0
resources/less/metager/startpage-only.less
resources/less/metager/startpage-only.less
+483
-0
resources/less/metager/variables-dark.less
resources/less/metager/variables-dark.less
+23
-2
resources/less/metager/variables.less
resources/less/metager/variables.less
+20
-0
resources/views/admin/count.blade.php
resources/views/admin/count.blade.php
+14
-3
resources/views/assoziator/asso.blade.php
resources/views/assoziator/asso.blade.php
+2
-5
resources/views/errors/404.blade.php
resources/views/errors/404.blade.php
+6
-0
resources/views/errors/429.blade.php
resources/views/errors/429.blade.php
+14
-0
resources/views/hilfe.blade.php
resources/views/hilfe.blade.php
+23
-15
resources/views/index.blade.php
resources/views/index.blade.php
+89
-41
resources/views/key.blade.php
resources/views/key.blade.php
+27
-2
resources/views/layouts/ad.blade.php
resources/views/layouts/ad.blade.php
+1
-1
resources/views/layouts/atom10ad.blade.php
resources/views/layouts/atom10ad.blade.php
+1
-1
resources/views/layouts/image_result.blade.php
resources/views/layouts/image_result.blade.php
+1
-1
resources/views/layouts/researchandtabs.blade.php
resources/views/layouts/researchandtabs.blade.php
+5
-5
resources/views/layouts/result.blade.php
resources/views/layouts/result.blade.php
+15
-11
resources/views/layouts/resultPage.blade.php
resources/views/layouts/resultPage.blade.php
+21
-7
resources/views/layouts/resultpage/resources.blade.php
resources/views/layouts/resultpage/resources.blade.php
+29
-0
resources/views/layouts/resultpage/unverifiedResultPage.blade.php
...s/views/layouts/resultpage/unverifiedResultPage.blade.php
+6
-0
resources/views/layouts/resultpage/verificationCss.blade.php
resources/views/layouts/resultpage/verificationCss.blade.php
+16
-0
resources/views/layouts/resultpage/verificationHeader.blade.php
...ces/views/layouts/resultpage/verificationHeader.blade.php
+6
-0
resources/views/layouts/rich/ad.blade.php
resources/views/layouts/rich/ad.blade.php
+1
-1
resources/views/layouts/rich/result.blade.php
resources/views/layouts/rich/result.blade.php
+1
-1
resources/views/layouts/staticPages.blade.php
resources/views/layouts/staticPages.blade.php
+34
-11
resources/views/parts/filter.blade.php
resources/views/parts/filter.blade.php
+5
-5
resources/views/parts/foki.blade.php
resources/views/parts/foki.blade.php
+2
-2
resources/views/parts/footer.blade.php
resources/views/parts/footer.blade.php
+4
-4
resources/views/parts/pager.blade.php
resources/views/parts/pager.blade.php
+1
-1
resources/views/parts/searchbar.blade.php
resources/views/parts/searchbar.blade.php
+5
-5
resources/views/parts/sidebar.blade.php
resources/views/parts/sidebar.blade.php
+44
-16
resources/views/plugin-page.blade.php
resources/views/plugin-page.blade.php
+111
-152
resources/views/plugin.blade.php
resources/views/plugin.blade.php
+1
-1
resources/views/plugin/desktop/chrome/v49.blade.php
resources/views/plugin/desktop/chrome/v49.blade.php
+17
-0
resources/views/plugin/desktop/chrome/v53.blade.php
resources/views/plugin/desktop/chrome/v53.blade.php
+17
-0
resources/views/plugin/desktop/chrome/v59.blade.php
resources/views/plugin/desktop/chrome/v59.blade.php
+17
-0
resources/views/plugin/desktop/edge/v15.blade.php
resources/views/plugin/desktop/edge/v15.blade.php
+17
-0
resources/views/plugin/desktop/edge/v18.blade.php
resources/views/plugin/desktop/edge/v18.blade.php
+17
-0
resources/views/plugin/desktop/edge/v80.blade.php
resources/views/plugin/desktop/edge/v80.blade.php
+15
-0
resources/views/plugin/desktop/firefox/v52.blade.php
resources/views/plugin/desktop/firefox/v52.blade.php
+16
-0
resources/views/plugin/desktop/firefox/v57.blade.php
resources/views/plugin/desktop/firefox/v57.blade.php
+17
-0
resources/views/plugin/desktop/firefox/v61.blade.php
resources/views/plugin/desktop/firefox/v61.blade.php
+22
-0
resources/views/plugin/desktop/ie/v11.blade.php
resources/views/plugin/desktop/ie/v11.blade.php
+18
-0
resources/views/plugin/desktop/ie/v9.blade.php
resources/views/plugin/desktop/ie/v9.blade.php
+15
-0
resources/views/plugin/desktop/opera/v36.blade.php
resources/views/plugin/desktop/opera/v36.blade.php
+19
-0
resources/views/plugin/desktop/safari/v10.blade.php
resources/views/plugin/desktop/safari/v10.blade.php
+14
-0
resources/views/plugin/desktop/vivaldi/v3-3.blade.php
resources/views/plugin/desktop/vivaldi/v3-3.blade.php
+17
-0
resources/views/plugin/mobile/chrome/v83.blade.php
resources/views/plugin/mobile/chrome/v83.blade.php
+26
-0
resources/views/plugin/mobile/edge/v45.blade.php
resources/views/plugin/mobile/edge/v45.blade.php
+26
-0
resources/views/plugin/mobile/firefox-klar/v8-8.blade.php
resources/views/plugin/mobile/firefox-klar/v8-8.blade.php
+17
-0
resources/views/plugin/mobile/firefox/v80.blade.php
resources/views/plugin/mobile/firefox/v80.blade.php
+18
-0
resources/views/plugin/mobile/firefox/vlt80.blade.php
resources/views/plugin/mobile/firefox/vlt80.blade.php
+15
-0
resources/views/plugin/mobile/opera/v60.blade.php
resources/views/plugin/mobile/opera/v60.blade.php
+23
-0
resources/views/quicktips.blade.php
resources/views/quicktips.blade.php
+1
-15
resources/views/settings/allSettings.blade.php
resources/views/settings/allSettings.blade.php
+4
-0
resources/views/settings/index.blade.php
resources/views/settings/index.blade.php
+64
-16
resources/views/team/team.blade.php
resources/views/team/team.blade.php
+5
-1
resources/views/tor.blade.php
resources/views/tor.blade.php
+2
-1
resources/views/widget/sitesearch.blade.php
resources/views/widget/sitesearch.blade.php
+1
-0
resources/views/widget/websearch.blade.php
resources/views/widget/websearch.blade.php
+7
-5
resources/views/widget/widget.blade.php
resources/views/widget/widget.blade.php
+1
-1
resources/views/zitatsuche.blade.php
resources/views/zitatsuche.blade.php
+1
-7
routes/cookie.php
routes/cookie.php
+4
-1
routes/web.php
routes/web.php
+21
-2
storage/app/public/aufnahmeantrag-de.pdf
storage/app/public/aufnahmeantrag-de.pdf
+0
-0
storage/app/public/aufnahmeantrag-en.pdf
storage/app/public/aufnahmeantrag-en.pdf
+0
-0
tests/Browser/Pages/App.php
tests/Browser/Pages/App.php
+1
-1
tests/Browser/Pages/HomePage.php
tests/Browser/Pages/HomePage.php
+9
-6
tests/Browser/Pages/Plugin.php
tests/Browser/Pages/Plugin.php
+1
-1
webpack.mix.js
webpack.mix.js
+14
-8
No files found.
.gitignore
View file @
9d8ffbb3
...
...
@@ -21,4 +21,7 @@ npm-debug.log
/.project
composer.lock
local.log
\ No newline at end of file
package-lock.json
local.log
browserstack.err
.gitlab-ci.yml
View file @
9d8ffbb3
...
...
@@ -33,6 +33,8 @@ stages:
-
integrationtest
-
cleanup
.auto-deploy
:
image
:
"
registry.gitlab.com/gitlab-org/cluster-integration/auto-deploy-image:v1.0.6"
build
:
services
:
...
...
@@ -75,20 +77,40 @@ review:
variables
:
HELM_UPGRADE_VALUES_FILE
:
.gitlab/review-apps-values.yaml
ROLLOUT_RESOURCE_TYPE
:
deployment
except
:
refs
:
-
master
-
development
variables
:
-
$REVIEW_DISABLED
environment
:
name
:
review/$CI_COMMIT_REF_NAME
on_stop
:
stop_review
auto_stop_in
:
2 days
rules
:
-
if
:
'
$CI_KUBERNETES_ACTIVE
==
null
||
$CI_KUBERNETES_ACTIVE
==
""'
when
:
never
-
if
:
'
$CI_COMMIT_BRANCH
==
"master"'
when
:
never
-
if
:
'
$CI_COMMIT_BRANCH
==
"development"'
when
:
never
-
if
:
'
$REVIEW_DISABLED'
when
:
never
-
if
:
'
$CI_COMMIT_TAG
||
$CI_COMMIT_BRANCH'
stop_review
:
except
:
refs
:
-
master
-
development
variables
:
-
$REVIEW_DISABLED
variables
:
GIT_STRATEGY
:
none
environment
:
name
:
review/$CI_COMMIT_REF_NAME
action
:
stop
rules
:
-
if
:
'
$CI_KUBERNETES_ACTIVE
==
null
||
$CI_KUBERNETES_ACTIVE
==
""'
when
:
never
-
if
:
'
$CI_COMMIT_BRANCH
==
"master"'
when
:
never
-
if
:
'
$CI_COMMIT_BRANCH
==
"development"'
when
:
never
-
if
:
'
$REVIEW_DISABLED'
when
:
never
-
if
:
'
$CI_COMMIT_TAG
||
$CI_COMMIT_BRANCH'
when
:
manual
.development
:
&development_template
extends
:
.auto-deploy
...
...
@@ -152,4 +174,4 @@ integrationtest:
-
sed -i "s#^APP_URL=.*#APP_URL=$URL#g" .env
-
sed -i "s#^BRANCH_NAME=.*#BRANCH_NAME=$CI_COMMIT_REF_NAME#g" .env
-
sed -i "s#^COMMIT_NAME=.*#COMMIT_NAME=$CI_COMMIT_REF_SLUG#g" .env
-
php artisan dusk
\ No newline at end of file
-
php artisan dusk
.gitlab/development-values.yaml
View file @
9d8ffbb3
postgresql
:
enabled
:
false
service
:
externalPort
:
80
internalPort
:
80
hpa
:
enabled
:
true
minReplicas
:
1
maxReplicas
:
5
resourcesPhpfpm
:
requests
:
cpu
:
500m
memory
:
500M
limits
:
resourcesNginx
:
requests
:
cpu
:
100m
memory
:
100M
limits
:
resourcesRedis
:
requests
:
cpu
:
100m
memory
:
1Gi
limits
:
resourcesFetcher
:
requests
:
cpu
:
500m
memory
:
100M
limits
:
podDisruptionBudget
:
enabled
:
true
minAvailable
:
1
maxUnavailable
:
minAvailable
:
maxUnavailable
:
0
podAnnotations
:
prometheus.io/scrape
:
"
true"
prometheus.io/path
:
/metrics
prometheus.io/port
:
"
80"
deploymentApiVersion
:
apps/v1
ingress
:
annotations
:
cert-manager.io/cluster-issuer
:
letsencrypt-prod
nginx.ingress.kubernetes.io/configuration-snippet
:
|
more_set_headers "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; script-src-elem 'self' 'unsafe-inline'; script-src-attr 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; style-src-elem 'self' 'unsafe-inline'; style-src-attr 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; media-src; object-src; prefetch-src; child-src; frame-src 'self'; worker-src; frame-ancestors 'self' https://scripts.zdv.uni-mainz.de; form-action 'self' www.paypal.com; base-uri; manifest-src; plugin-types; report-uri; report-to";
more_set_headers "X-Frame-Options: sameorigin";
more_set_headers "X-Content-Type-Options: nosniff";
more_set_headers "ReferrerPolicy: origin";
more_set_headers "X-XSS-Protection: 1; mode=block";
if ($arg_out = "results-with-style") {
more_set_headers "X-Frame-Options: allow-from https://scripts.zdv.uni-mainz.de/";
}
if ($host = "www.metager3.de") {
return 301 https://metager3.de$request_uri;
}
.gitlab/production-values.yaml
View file @
9d8ffbb3
postgresql
:
enabled
:
false
service
:
externalPort
:
80
internalPort
:
80
hpa
:
minReplicas
:
5
enabled
:
true
minReplicas
:
3
maxReplicas
:
100
resources
:
limits
:
cpu
:
500m
memory
:
1Gi
requests
:
cpu
:
500m
memory
:
1Gi
podDisruptionBudget
:
enabled
:
true
minAvailable
:
4
maxUnavailable
:
minAvailable
:
maxUnavailable
:
0
podAnnotations
:
prometheus.io/scrape
:
"
true"
prometheus.io/path
:
/metrics
prometheus.io/port
:
"
80"
deploymentApiVersion
:
apps/v1
resources
:
requests
:
limits
:
resourcesPhpfpm
:
requests
:
cpu
:
500m
memory
:
500M
limits
:
resourcesNginx
:
requests
:
cpu
:
100m
memory
:
100M
limits
:
resourcesRedis
:
requests
:
cpu
:
100m
memory
:
1Gi
limits
:
resourcesFetcher
:
requests
:
cpu
:
500m
memory
:
100M
limits
:
ingress
:
annotations
:
cert-manager.io/cluster-issuer
:
letsencrypt-prod
nginx.ingress.kubernetes.io/configuration-snippet
:
|
more_set_headers "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; script-src-elem 'self' 'unsafe-inline'; script-src-attr 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; style-src-elem 'self' 'unsafe-inline'; style-src-attr 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; media-src; object-src; prefetch-src; child-src; frame-src 'self'; worker-src; frame-ancestors 'self' https://scripts.zdv.uni-mainz.de; form-action 'self' www.paypal.com; base-uri; manifest-src; plugin-types; report-uri; report-to";
more_set_headers "X-Frame-Options: sameorigin";
more_set_headers "X-Content-Type-Options: nosniff";
more_set_headers "ReferrerPolicy: origin";
more_set_headers "X-XSS-Protection: 1; mode=block";
if ($arg_out = "results-with-style") {
more_set_headers "X-Frame-Options: allow-from https://scripts.zdv.uni-mainz.de/";
}
if ($host = "www.metager.de") {
return 301 https://metager.de$request_uri;
}
...
...
.gitlab/review-apps-values.yaml
View file @
9d8ffbb3
---
postgresql
:
enabled
:
false
hpa
:
enabled
:
false
resources
:
requests
:
limits
:
ingress
:
annotations
:
kubernetes.io/tls-acme
:
"
false"
nginx.ingress.kubernetes.io/ssl-redirect
:
"
false"
nginx.ingress.kubernetes.io/configuration-snippet
:
|
more_set_headers "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; script-src-elem 'self' 'unsafe-inline'; script-src-attr 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; style-src-elem 'self' 'unsafe-inline'; style-src-attr 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; media-src; object-src; prefetch-src; child-src; frame-src 'self'; worker-src; frame-ancestors 'self' https://scripts.zdv.uni-mainz.de; form-action 'self'; base-uri; manifest-src; plugin-types; report-uri; report-to";
more_set_headers "X-Frame-Options: sameorigin";
more_set_headers "X-Content-Type-Options: nosniff";
more_set_headers "ReferrerPolicy: origin";
more_set_headers "X-XSS-Protection: 1; mode=block";
if ($arg_out = "results-with-style") {
more_set_headers "X-Frame-Options: allow-from https://scripts.zdv.uni-mainz.de/";
}
tls
:
enabled
:
false
service
:
commonName
:
"
"
externalPort
:
80
internalPort
:
80
deploymentApiVersion
:
apps/v1
resourcesPhpfpm
:
requests
:
limits
:
resourcesNginx
:
requests
:
limits
:
resourcesRedis
:
requests
:
limits
:
resourcesFetcher
:
requests
:
limits
:
\ No newline at end of file
Dockerfile
View file @
9d8ffbb3
...
...
@@ -7,6 +7,7 @@ RUN apk add --update \
dcron
\
zip
\
redis
\
libpng
\
php7
\
php7-fpm
\
php7-common
\
...
...
@@ -38,10 +39,10 @@ RUN sed -i 's/;error_log = log\/php7\/error.log/error_log = \/dev\/stderr/g' /et
sed
-i
's/;catch_workers_output = yes/catch_workers_output = yes/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/user = nobody/user = nginx/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/group = nobody/group = nginx/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/pm.max_children = 5/pm.max_children = 10
0
/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/pm.start_servers = 2/pm.start_servers = 5/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/pm.max_children = 5/pm.max_children = 10
24
/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/pm.start_servers = 2/pm.start_servers = 5
0
/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/pm.min_spare_servers = 1/pm.min_spare_servers = 5/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/pm.max_spare_servers = 3/pm.max_spare_servers =
25
/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/pm.max_spare_servers = 3/pm.max_spare_servers =
50
/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/user = www-data/user = nginx/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/group = www-data/group = nginx/g'
/etc/php7/php-fpm.d/www.conf
&&
\
sed
-i
's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g'
/etc/php7/php.ini
&&
\
...
...
app/Console/Commands/RequestFetcher.php
View file @
9d8ffbb3
...
...
@@ -2,6 +2,7 @@
namespace
App\Console\Commands
;
use
Cache
;
use
Illuminate\Console\Command
;
use
Illuminate\Support\Facades\Redis
;
use
Log
;
...
...
@@ -24,10 +25,9 @@ class RequestFetcher extends Command
protected
$shouldRun
=
true
;
protected
$multicurl
=
null
;
protected
$oldMultiCurl
=
null
;
protected
$maxFetchedDocuments
=
10000
;
protected
$fetchedDocuments
=
0
;
protected
$proxyhost
,
$proxyuser
,
$proxypassword
;
protected
$proxyhost
;
protected
$proxyuser
;
protected
$proxypassword
;
/**
* Create a new command instance.
...
...
@@ -42,7 +42,6 @@ class RequestFetcher extends Command
$this
->
proxyport
=
env
(
"PROXY_PORT"
,
""
);
$this
->
proxyuser
=
env
(
"PROXY_USER"
,
""
);
$this
->
proxypassword
=
env
(
"PROXY_PASSWORD"
,
""
);
}
/**
...
...
@@ -52,7 +51,6 @@ class RequestFetcher extends Command
*/
public
function
handle
()
{
$pidFile
=
"/tmp/fetcher"
;
pcntl_signal
(
SIGINT
,
[
$this
,
"sig_handler"
]);
pcntl_signal
(
SIGTERM
,
[
$this
,
"sig_handler"
]);
...
...
@@ -79,61 +77,16 @@ class RequestFetcher extends Command
}
try
{
$blocking
=
false
;
while
(
$this
->
shouldRun
)
{
$status
=
curl_multi_exec
(
$this
->
multicurl
,
$active
);
$currentJobs
=
[];
if
(
!
$blocking
)
{
$elements
=
Redis
::
pipeline
(
function
(
$redis
){
$redis
->
lrange
(
\
App\MetaGer
::
FETCHQUEUE_KEY
,
0
,
-
1
);
$redis
->
del
(
\
App\MetaGer
::
FETCHQUEUE_KEY
);
});
$currentJobs
=
$elements
[
0
];
}
else
{
$currentJob
=
Redis
::
blpop
(
\
App\MetaGer
::
FETCHQUEUE_KEY
,
1
);
if
(
!
empty
(
$currentJob
))
{
$currentJobs
[]
=
$currentJob
[
1
];
}
}
if
(
sizeof
(
$currentJobs
)
>
0
)
{
foreach
(
$currentJobs
as
$currentJob
){
$currentJob
=
json_decode
(
$currentJob
,
true
);
$ch
=
$this
->
getCurlHandle
(
$currentJob
);
if
(
curl_multi_add_handle
(
$this
->
multicurl
,
$ch
)
!==
0
)
{
$this
->
shouldRun
=
false
;
Log
::
error
(
"Couldn't add Handle to multicurl"
);
break
;
}
$this
->
fetchedDocuments
++
;
if
(
$this
->
fetchedDocuments
>
$this
->
maxFetchedDocuments
)
{
Log
::
info
(
"Reinitializing Multicurl after "
.
$this
->
fetchedDocuments
.
" requests."
);
$this
->
oldMultiCurl
=
$this
->
multicurl
;
$this
->
multicurl
=
curl_multi_init
();
$this
->
fetchedDocuments
=
0
;
}
$blocking
=
false
;
$active
=
true
;
}
}
$answerRead
=
$this
->
readMultiCurl
(
$this
->
multicurl
);
if
(
$this
->
oldMultiCurl
!=
null
)
{
$this
->
readMultiCurl
(
$this
->
oldMultiCurl
);
$messagesLeft
=
-
1
;
if
(
curl_multi_info_read
(
$this
->
oldMultiCurl
,
$messagesLeft
)
===
false
)
{
if
(
$messagesLeft
=
0
)
{
Log
::
debug
(
"Removing finished multicurl handle"
);
curl_multi_close
(
$this
->
oldMultiCurl
);
$this
->
oldMultiCurl
=
null
;
}
}
}
if
(
!
$active
&&
!
$answerRead
)
{
$blocking
=
true
;
}
else
{
usleep
(
50
*
1000
);
$operationsRunning
=
true
;
curl_multi_exec
(
$this
->
multicurl
,
$operationsRunning
);
$status
=
$this
->
readMultiCurl
(
$this
->
multicurl
);
$answersRead
=
$status
[
0
];
$messagesLeft
=
$status
[
1
];
$newJobs
=
$this
->
checkNewJobs
(
$operationsRunning
,
$messagesLeft
);
if
(
$newJobs
===
0
&&
$answersRead
===
0
)
{
usleep
(
10
*
1000
);
}
}
}
finally
{
...
...
@@ -142,18 +95,60 @@ class RequestFetcher extends Command
}
}
/**
* Checks the Redis queue if any new fetch jobs where submitted
* and adds them to multicurl if there are.
* Will be blocking call to redis if there are no running jobs in multicurl
*/
private
function
checkNewJobs
(
$operationsRunning
,
$messagesLeft
)
{
$newJobs
=
[];
if
(
$operationsRunning
===
0
&&
$messagesLeft
===
-
1
)
{
$newJob
=
Redis
::
blpop
(
\
App\MetaGer
::
FETCHQUEUE_KEY
,
1
);
if
(
!
empty
(
$newJob
))
{
$newJobs
[]
=
$newJob
[
1
];
}
}
else
{
$elements
=
Redis
::
pipeline
(
function
(
$redis
)
{
$redis
->
lrange
(
\
App\MetaGer
::
FETCHQUEUE_KEY
,
0
,
-
1
);
$redis
->
del
(
\
App\MetaGer
::
FETCHQUEUE_KEY
);
});
$newJobs
=
$elements
[
0
];
}
$addedJobs
=
0
;
foreach
(
$newJobs
as
$newJob
)
{
$newJob
=
json_decode
(
$newJob
,
true
);
$ch
=
$this
->
getCurlHandle
(
$newJob
);
if
(
curl_multi_add_handle
(
$this
->
multicurl
,
$ch
)
!==
0
)
{
$this
->
shouldRun
=
false
;
Log
::
error
(
"Couldn't add Handle to multicurl"
);
break
;
}
else
{
$addedJobs
++
;
}
}
return
$addedJobs
;
}
private
function
readMultiCurl
(
$mc
)
{
$answerRead
=
false
;
while
((
$info
=
curl_multi_info_read
(
$mc
))
!==
false
)
{
$messagesLeft
=
-
1
;
$answersRead
=
0
;
while
((
$info
=
curl_multi_info_read
(
$mc
,
$messagesLeft
))
!==
false
)
{
try
{
$answer
Read
=
true
;
$answer
sRead
++
;
$infos
=
curl_getinfo
(
$info
[
"handle"
],
CURLINFO_PRIVATE
);
$infos
=
explode
(
";"
,
$infos
);
$resulthash
=
$infos
[
0
];
$cacheDurationMinutes
=
intval
(
$infos
[
1
]);
$name
=
$infos
[
2
];
$responseCode
=
curl_getinfo
(
$info
[
"handle"
],
CURLINFO_HTTP_CODE
);
$body
=
""
;
$body
=
"no-result"
;
$totalTime
=
curl_getinfo
(
$info
[
"handle"
],
CURLINFO_TOTAL_TIME
);
\
App\PrometheusExporter
::
Duration
(
$totalTime
,
$name
);
$error
=
curl_error
(
$info
[
"handle"
]);
if
(
!
empty
(
$error
))
{
...
...
@@ -161,29 +156,38 @@ class RequestFetcher extends Command
}
if
(
$responseCode
!==
200
)
{
Log
::
debug
(
$resulthash
);
Log
::
debug
(
"Got responsecode "
.
$responseCode
.
" fetching
\"
"
.
curl_getinfo
(
$info
[
"handle"
],
CURLINFO_EFFECTIVE_URL
)
.
"
\n
"
);
}
else
{
$body
=
\
curl_multi_getcontent
(
$info
[
"handle"
]);
}
Redis
::
pipeline
(
function
(
$pipe
)
use
(
$resulthash
,
$body
,
$cacheDurationMinutes
)
{
$pipe
->
set
(
$resulthash
,
$body
);
$pipe
->
lpush
(
$resulthash
,
$body
);
$pipe
->
expire
(
$resulthash
,
60
);
});
if
(
$cacheDurationMinutes
>
0
)
{
try
{
Cache
::
put
(
$resulthash
,
$body
,
$cacheDurationMinutes
*
60
);
}
catch
(
\
Exception
$e
)
{
Log
::
error
(
$e
->
getMessage
());
}
}
}
finally
{
\
curl_multi_remove_handle
(
$mc
,
$info
[
"handle"
]);
}
}
return
$answerRead
;
return
[
$answersRead
,
$messagesLeft
]
;
}
private
function
getCurlHandle
(
$job
)
{
$ch
=
curl_init
();
curl_setopt_array
(
$ch
,
array
(
CURLOPT_URL
=>
$job
[
"url"
],
CURLOPT_PRIVATE
=>
$job
[
"resulthash"
]
.
";"
.
$job
[
"cacheDuration"
],
CURLOPT_PRIVATE
=>
$job
[
"resulthash"
]
.
";"
.
$job
[
"cacheDuration"
]
.
";"
.
$job
[
"name"
]
,
CURLOPT_RETURNTRANSFER
=>
1
,
CURLOPT_USERAGENT
=>
$job
[
"useragent"
],
CURLOPT_FOLLOWLOCATION
=>
true
,
...
...
@@ -221,7 +225,6 @@ class RequestFetcher extends Command
public
function
sig_handler
(
$sig
)
{
$this
->
shouldRun
=
false
;
echo
(
"Terminating Process
\n
"
);
echo
(
"Terminating Process
\n
"
);
}
}
app/Http/Controllers/AdminInterface.php
View file @
9d8ffbb3
...
...
@@ -31,7 +31,6 @@ class AdminInterface extends Controller
if
(
strstr
(
$key
,
"_time"
))
{
$stati
[
$name
][
"fetcher"
][
$pid
][
"connection"
][
$key
]
=
$val
;
}
}
$stati
[
$name
][
"fetcher"
][
$pid
][
"poptime"
]
=
$value
[
1
];
}
...
...
@@ -157,7 +156,7 @@ class AdminInterface extends Controller
$now
->
minute
=
0
;
$now
->
second
=
0
;
while
(
$now
->
lessThanOrEqualTo
(
Carbon
::
now
()))
{
while
(
$now
->
lessThanOrEqualTo
(
Carbon
::
now
()))
{
$sameTime
+=
empty
(
$stats
->
time
->
{
$now
->
format
(
'H:i'
)}
->
{
$interface
})
?
0
:
$stats
->
time
->
{
$now
->
format
(
'H:i'
)}
->
{
$interface
};
$now
->
addMinutes
(
5
);
}
...
...
@@ -178,19 +177,38 @@ class AdminInterface extends Controller
if
(
$size
>
0
<