Compare commits

...

137 Commits

Author SHA1 Message Date
erwanlr
b0db15099d Bumps version 2020-04-16 11:02:15 +02:00
erwanlr
6fbd2369ba Merge branch 'master' of github.com:wpscanteam/wpscan 2020-04-16 10:20:09 +02:00
erwanlr
f4a6674eed Better code related to CVSS 2020-04-16 10:06:28 +02:00
Ryan Dewhurst
c0567ad4f5 Change wording to security scanner 2020-04-16 09:37:15 +02:00
erwanlr
f146ee7e9f Adds YT references and CVSS to output 2020-04-15 17:02:44 +02:00
erwanlr
e606f4ce18 Adds YT references in output 2020-04-15 14:46:06 +02:00
Ryan Dewhurst
945b589a58 Update README.md
SEO tweak
2020-04-14 09:44:36 +02:00
Erwan
b18042c4a8 Reverts previous commit. spec folder already excluded via .dockerignore 2020-04-13 16:44:27 +02:00
Erwan
a9ff39104b Removes specs folder from Docker build 2020-04-13 16:21:17 +02:00
erwanlr
f6af6e5880 Bumps version 2020-04-12 19:02:57 +02:00
erwanlr
57c6c2d471 Removes support for Ruby 2.4 as EOL 2020-04-12 18:21:23 +02:00
erwanlr
c362527903 Adds DFs 2020-04-11 13:46:37 +02:00
erwanlr
a7acbd0738 Adds DFs 2020-04-04 12:23:40 +02:00
Erwan
f67192ebce Updates help messages regarding plugins-*-detection - Ref #1472 2020-04-02 12:37:09 +02:00
Erwan
c44fde83e4 Merge pull request #1473 from wpscanteam/dependabot/bundler/rubocop-tw-0.81.0
Update rubocop requirement from ~> 0.80.0 to ~> 0.81.0
2020-04-02 09:33:07 +02:00
dependabot-preview[bot]
50119285ef Update rubocop requirement from ~> 0.80.0 to ~> 0.81.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.80.0...v0.81.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-02 05:29:02 +00:00
Erwan
6216916fed Updates ruby version 2020-04-01 09:55:54 +02:00
Erwan
2952380200 Fixes typo 2020-03-30 20:47:12 +02:00
erwanlr
fb42b82e0d Adds DFs 2020-03-28 13:07:39 +01:00
Erwan
6d381ab88d Display valid credentials identified with the [!] icon - Ref #1470 2020-03-23 09:59:24 +01:00
erwanlr
c5c1de32bc Adds DFs 2020-03-21 16:56:16 +01:00
erwanlr
8077ad9bcd Adds DF - Ref #1469 2020-03-19 20:48:41 +01:00
erwanlr
6f22ba350f Adds DFs 2020-03-14 11:33:08 +01:00
erwanlr
f23d0c0157 Bumps version 2020-03-13 16:58:35 +01:00
erwanlr
a9a38edf24 Remove cache action from build 2020-03-13 16:06:33 +01:00
erwanlr
a5534f1e49 Merge branch 'master' of github.com:wpscanteam/wpscan 2020-03-13 16:04:11 +01:00
erwanlr
1c6469f384 Updates deps 2020-03-13 16:03:59 +01:00
erwanlr
8cfdbc1196 Adds DF 2020-03-13 16:03:21 +01:00
Erwan
88737ca6ea Fixes error with reference when debug log identified 2020-03-13 08:12:35 +01:00
Erwan
45bebc60bd Fixes typo in Readme 2020-03-12 22:25:23 +01:00
Erwan
4f7dec4635 Fixes detection of Users via WP JSON when blog uses basic auth 2020-03-12 13:12:40 +01:00
erwanlr
98739cce5a Adds DF 2020-03-10 20:45:08 +01:00
erwanlr
0bfbfacc27 Fixes #1465 2020-03-10 20:31:42 +01:00
erwanlr
73cd862e83 Bumps version 2020-03-09 20:02:44 +01:00
erwanlr
3305e9b74f Adds DFs 2020-03-09 19:24:43 +01:00
erwanlr
c37ec0e8d0 Updates deps 2020-03-09 18:11:47 +01:00
erwanlr
0b005477c1 Adds additional message when checksums mismatch during an update 2020-03-08 20:48:01 +01:00
erwanlr
a1467f8dac Merge branch 'dfs' 2020-03-07 14:56:23 +01:00
erwanlr
40d2c34347 Adds DFs 2020-03-07 14:56:10 +01:00
Erwan
528270e767 Updates Target#wordpress_from_meta_comments_or_scripts Xpath check 2020-03-06 16:17:40 +01:00
erwanlr
f4a04b2387 Adds DFs 2020-03-03 18:54:41 +01:00
erwanlr
14ed6ae109 Fixes #1461 2020-03-02 15:34:51 +01:00
erwanlr
4fd43694ae Typo 2020-03-02 11:57:37 +01:00
erwanlr
552d731e6a Updates Readme to reflect #1460 2020-03-02 11:56:42 +01:00
erwanlr
49ac3ef528 Supports loading api token from ENV, Fixes #1460 2020-03-02 11:45:50 +01:00
erwanlr
4379313f12 Bumps version 2020-02-29 14:24:53 +01:00
erwanlr
3901949f36 Updates deps 2020-02-29 13:27:52 +01:00
erwanlr
a3d8593fed Adds DFs 2020-02-29 12:28:55 +01:00
erwanlr
7c5baeb9c7 Adds DF 2020-02-26 10:55:06 +01:00
erwanlr
c692db5f85 Adds DFs 2020-02-24 13:29:13 +01:00
erwanlr
9130196ffc Runs rubocop before rspec 2020-02-19 14:38:31 +01:00
erwanlr
dad4a65118 Adds Coveralls GH Action 2020-02-19 14:16:31 +01:00
Erwan
4c34c2feb7 Merge pull request #1457 from wpscanteam/dependabot/bundler/rubocop-tw-0.80.0
Update rubocop requirement from ~> 0.79.0 to ~> 0.80.0
2020-02-19 12:32:39 +01:00
dependabot-preview[bot]
23522f7775 Update rubocop requirement from ~> 0.79.0 to ~> 0.80.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.79.0...v0.80.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-19 05:23:43 +00:00
Christian Mehlmauer
82c61398ba change name 2020-02-17 07:32:20 +01:00
Christian Mehlmauer
02871050a6 change step names 2020-02-17 06:34:39 +01:00
Christian Mehlmauer
7d3b1fea6b ruby-head not supported 2020-02-17 06:32:18 +01:00
Christian Mehlmauer
24917fa2a6 wrong key 2020-02-17 06:29:14 +01:00
Christian Mehlmauer
de3d8e4a23 Use a build matrix 2020-02-17 06:28:09 +01:00
erwanlr
1502845d65 Adds DFs 2020-02-15 13:20:54 +01:00
erwanlr
af3f10f74e Reduces time to detect the sub_dir when a lot of urls 2020-02-13 20:07:25 +00:00
erwanlr
c100372b31 Reduces time to detect non WP sites 2020-02-13 19:15:30 +00:00
erwanlr
72d699b39a Adds more improvements re passive scanning when there are a lot of urls 2020-02-13 15:36:42 +00:00
erwanlr
7d2b8a2a8b Reduces time to detect non WP sites when there are a lof of links in pages 2020-02-12 19:50:00 +00:00
erwanlr
8729c68e22 Removes useless params set 2020-02-11 16:39:01 +00:00
erwanlr
e2d48bedd9 Better fix for #1451, adds target IP address to output, ref #1088 2020-02-11 16:28:59 +00:00
erwanlr
6b241ce9b3 Avoids merging CLI params when calling VulnAPI - Ref #1451 2020-02-11 09:14:14 +00:00
erwanlr
1b68bdb36c Bumps version 2020-02-09 13:31:40 +00:00
erwanlr
fb82538441 Fixes #1451 2020-02-09 12:40:48 +00:00
erwanlr
2709d0869a Adds DFs 2020-02-08 10:28:19 +00:00
erwanlr
343f87bbe7 Adds DFs 2020-02-01 10:02:38 +00:00
erwanlr
ecbfc6004c Adds DFs 2020-01-25 12:28:16 +00:00
erwanlr
c57eecc81b Adds DF 2020-01-23 12:30:27 +00:00
erwanlr
7ea14dc03f Adds DF 2020-01-23 11:15:28 +00:00
erwanlr
4340d27258 Bumps version 2020-01-21 16:14:26 +00:00
erwanlr
e911be8f14 Removes ruby 2.7.0 from failure matrix 2020-01-21 16:12:38 +00:00
erwanlr
a4c650cdff Fixes incorrect RDF URLs detection 2020-01-21 15:06:29 +00:00
erwanlr
31a58f8a8f Fixes rare crash 2020-01-21 14:47:17 +00:00
erwanlr
ba4f15f111 Adds DFs 2020-01-18 11:20:43 +00:00
Erwan
206a913eb9 Merge pull request #1447 from wpscanteam/dependabot/bundler/webmock-tw-3.8.0
Update webmock requirement from ~> 3.7.0 to ~> 3.8.0
2020-01-16 10:17:09 +01:00
dependabot-preview[bot]
21ba490073 Update webmock requirement from ~> 3.7.0 to ~> 3.8.0
Updates the requirements on [webmock](https://github.com/bblimke/webmock) to permit the latest version.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.7.0...v3.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-16 05:23:09 +00:00
erwanlr
2a29e2ed95 Adds DFs 2020-01-11 19:54:12 +00:00
Erwan
9517d14fd3 Fixes rubocop offence 2020-01-10 20:06:33 +01:00
Erwan
3deaa896df Fix rubocop typo 2020-01-10 19:28:01 +01:00
Erwan
c117007dc0 Merge pull request #1445 from wpscanteam/dependabot/bundler/rubocop-tw-0.79.0
Update rubocop requirement from ~> 0.78.0 to ~> 0.79.0
2020-01-07 08:53:56 +01:00
dependabot-preview[bot]
50baa238b9 Update rubocop requirement from ~> 0.78.0 to ~> 0.79.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.78.0...v0.79.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-07 05:21:29 +00:00
erwanlr
0e2d771660 Adds DFs 2020-01-04 12:17:51 +00:00
erwanlr
32b4670755 Bumps version 2020-01-02 15:28:33 +00:00
erwanlr
4a032d5e12 Merge branch 'ruby-2.7' 2020-01-02 14:53:46 +00:00
erwanlr
5887fede15 Updates deps 2020-01-02 13:53:28 +00:00
erwanlr
ad4eeb9f81 Fixes specs 2020-01-02 13:29:30 +00:00
erwanlr
a62c16d7cc Fixes Rubocop warning 2020-01-02 13:04:01 +00:00
erwanlr
e766e7392a Updates CMScanner dep 2020-01-02 12:52:03 +00:00
erwanlr
025c9c24ca Fixes GH Action 2020-01-02 12:51:23 +00:00
erwanlr
ab052add27 Allows Travis to fail on ruby-2.7 2019-12-28 13:14:19 +00:00
erwanlr
15cb99977b Fixes #1444 2019-12-28 13:10:57 +00:00
erwanlr
82d5af926f Adds Ruby 2.7.0 to Travis 2019-12-28 12:27:20 +00:00
erwanlr
76f73f3dc8 Adds DFs 2019-12-28 11:38:10 +00:00
erwanlr
575b22320e Merge branch 'df' 2019-12-21 10:49:32 +00:00
erwanlr
d20c07dc85 Adds DFs 2019-12-21 10:49:11 +00:00
erwanlr
f89071b87a Adds DFs, Updates rspec behaviour regarding --fail-fast 2019-12-20 15:47:56 +00:00
erwanlr
8b4e90f285 Updates deps + fixes travis 2019-12-19 13:56:06 +00:00
erwanlr
9c4f57c786 Adds DFs 2019-12-19 13:55:21 +00:00
erwanlr
902ec24b77 Adds DFs 2019-12-19 07:55:39 +00:00
erwanlr
7eba77fa63 Displays status code for KnownLocation finders 2019-12-15 09:00:30 +00:00
erwanlr
0753bbf7b3 Adds DF 2019-12-15 08:47:47 +00:00
erwanlr
6b2333614a Adds DFs 2019-12-14 12:14:37 +00:00
erwanlr
80b7f458f5 Fixes #1435 2019-12-08 10:34:18 +00:00
erwanlr
dbd8e59cf4 Typo 2019-12-07 15:46:31 +00:00
erwanlr
9948230ea0 Adds Dfs 2019-12-07 15:40:40 +00:00
Erwan
e2c858ac69 Merge pull request #1434 from crweiner/api-link
Fix links to API signup page
2019-12-03 13:37:55 +01:00
chandler
bac8b613e6 Fix links to API signup page 2019-12-02 17:03:36 -05:00
erwanlr
abbae15c6f Adds DFs 2019-11-30 12:47:32 +00:00
erwanlr
1548e8bfc1 Updates DFs 2019-11-28 20:19:25 +00:00
erwanlr
dc8cf3fc34 Disables a DF causing FP when checking the WP version 2019-11-28 17:15:05 +00:00
Erwan
c3cd815567 Merge pull request #1433 from wpscanteam/dependabot/bundler/rubocop-tw-0.77.0
Update rubocop requirement from ~> 0.76.0 to ~> 0.77.0
2019-11-28 08:50:50 +01:00
dependabot-preview[bot]
ce543b9384 Update rubocop requirement from ~> 0.76.0 to ~> 0.77.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.76.0...v0.77.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-28 05:21:09 +00:00
Christian Mehlmauer
9755c8cf42 Delete rubocop.yml 2019-11-26 23:33:52 +01:00
Christian Mehlmauer
434a210fb5 Update and rename rspec.yml to ruby.yml 2019-11-26 23:33:37 +01:00
Christian Mehlmauer
587602665a Update rubocop.yml 2019-11-26 23:29:30 +01:00
Christian Mehlmauer
bfec63df41 Update rspec.yml 2019-11-26 23:26:35 +01:00
Christian Mehlmauer
3b150df1af Update rspec.yml 2019-11-26 23:25:36 +01:00
Christian Mehlmauer
f24ecf0537 Update rubocop.yml 2019-11-26 23:23:13 +01:00
Christian Mehlmauer
9ddecbcc0a Update and rename ruby.yml to rspec.yml 2019-11-26 23:22:46 +01:00
Christian Mehlmauer
947bb8d3d5 Update ruby.yml 2019-11-26 23:18:33 +01:00
Christian Mehlmauer
30cbf87b35 Update gempush.yml 2019-11-26 23:14:53 +01:00
Christian Mehlmauer
69c3aab35a Update .dockerignore 2019-11-26 23:06:05 +01:00
Christian Mehlmauer
bdeb3547f1 Create rubocop.yml 2019-11-26 23:05:45 +01:00
Christian Mehlmauer
99e04b9669 Create ruby.yml 2019-11-26 23:04:03 +01:00
Christian Mehlmauer
680d2fb7eb add gem push 2019-11-26 23:03:23 +01:00
erwanlr
8814eda018 Adds DFs 2019-11-23 11:45:15 +00:00
erwanlr
7e72ba2885 Adds DFs 2019-11-16 11:18:23 +00:00
Christian Mehlmauer
b4d7a8490b change twitter handle 2019-11-13 08:23:18 +01:00
erwanlr
e9a5bc66df Bumps version 2019-11-11 12:41:29 +00:00
erwanlr
edebc77726 Fixes 1426 2019-11-09 17:55:31 +00:00
erwanlr
271dee824d Adds DFs 2019-11-09 10:59:46 +00:00
erwanlr
1e868d10ca Ignores slow specs when executing rake tasks 2019-11-05 20:11:03 +00:00
400 changed files with 145062 additions and 325 deletions

View File

@@ -14,3 +14,4 @@ Dockerfile
*.orig
bin/wpscan-*
.wpscan/
.github/

41
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: Build
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
ruby: [2.5, 2.6, 2.7]
steps:
- name: Checkout code
uses: actions/checkout@v1
- name: Set up Ruby ${{ matrix.ruby }}
uses: actions/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Install GEMs
run: |
gem install bundler
bundle config force_ruby_platform true
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: rubocop
run: |
bundle exec rubocop
- name: rspec
run: |
bundle exec rspec
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

40
.github/workflows/gempush.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: Ruby Gem
on:
release:
types: [published]
jobs:
build:
name: Build + Publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Set up Ruby 2.6
uses: actions/setup-ruby@v1
with:
ruby-version: 2.6.x
#- name: Publish to GPR
# run: |
# mkdir -p $HOME/.gem
# touch $HOME/.gem/credentials
# chmod 0600 $HOME/.gem/credentials
# printf -- "---\n:github: Bearer ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
# gem build *.gemspec
# gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
# env:
# GEM_HOST_API_KEY: ${{secrets.GITHUB_TOKEN}}
# OWNER: wpscanteam
- name: Publish to RubyGems
run: |
mkdir -p $HOME/.gem
touch $HOME/.gem/credentials
chmod 0600 $HOME/.gem/credentials
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
gem build *.gemspec
gem push *.gem
env:
GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}

5
.rspec
View File

@@ -1,3 +1,2 @@
--color
--fail-fast
--require spec_helper
--require spec_helper
--color

View File

@@ -1,9 +1,11 @@
require: rubocop-performance
AllCops:
TargetRubyVersion: 2.4
TargetRubyVersion: 2.5
Exclude:
- '*.gemspec'
- 'vendor/**/*'
Layout/LineLength:
Max: 120
Lint/UriEscapeUnescape:
Enabled: false
Metrics/AbcSize:
@@ -17,8 +19,6 @@ Metrics/ClassLength:
- 'app/controllers/enumeration/cli_options.rb'
Metrics/CyclomaticComplexity:
Max: 8
Metrics/LineLength:
Max: 120
Metrics/MethodLength:
Max: 20
Exclude:

View File

@@ -1 +1 @@
2.6.2
2.7.1

View File

@@ -1,4 +1,18 @@
if ENV['GITHUB_ACTION']
require 'simplecov-lcov'
SimpleCov::Formatter::LcovFormatter.config do |c|
c.single_report_path = 'coverage/lcov.info'
c.report_with_single_file = true
end
SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
end
SimpleCov.start do
enable_coverage :branch # Only supported for Ruby >= 2.5
add_filter '/spec/'
add_filter 'helper'
end

View File

@@ -1,16 +0,0 @@
language: ruby
sudo: false
cache: bundler
rvm:
- 2.4.9
- 2.5.7
- 2.6.5
before_install:
- "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
- gem update --system
script:
- bundle exec rubocop
- bundle exec rspec
notifications:
email:
- team@wpscan.org

View File

@@ -7,15 +7,15 @@
<h3 align="center">WPScan</h3>
<p align="center">
WordPress Vulnerability Scanner
WordPress Security Scanner
<br>
<br>
<a href="https://wpscan.org/" title="homepage" target="_blank">Homepage</a> - <a href="https://wpscan.io/" title="wpscan.io" target="_blank">WPScan.io</a> - <a href="https://wpvulndb.com/" title="vulnerability database" target="_blank">Vulnerability Database</a> - <a href="https://wordpress.org/plugins/wpscan/" title="wordpress plugin" target="_blank">WordPress Plugin</a>
<a href="https://wpscan.org/" title="homepage" target="_blank">Homepage</a> - <a href="https://wpscan.io/" title="wpscan.io" target="_blank">WPScan.io</a> - <a href="https://wpvulndb.com/" title="vulnerability database" target="_blank">Vulnerability Database</a> - <a href="https://wordpress.org/plugins/wpscan/" title="wordpress security plugin" target="_blank">WordPress Security Plugin</a>
</p>
<p align="center">
<a href="https://badge.fury.io/rb/wpscan" target="_blank"><img src="https://badge.fury.io/rb/wpscan.svg"></a>
<a href="https://travis-ci.org/wpscanteam/wpscan" target="_blank"><img src="https://travis-ci.org/wpscanteam/wpscan.svg?branch=master"></a>
<a href="https://github.com/wpscanteam/wpscan/actions?query=workflow%3ABuild" target="_blank"><img src="https://github.com/wpscanteam/wpscan/workflows/Build/badge.svg"></a>
<a href="https://codeclimate.com/github/wpscanteam/wpscan" target="_blank"><img src="https://codeclimate.com/github/wpscanteam/wpscan/badges/gpa.svg"></a>
</p>
@@ -130,6 +130,11 @@ cli_options:
api_token: YOUR_API_TOKEN
```
## Load API Token From ENV (since v3.7.10)
The API Token will be automatically loaded from the ENV variable `WPSCAN_API_TOKEN` if present. If the `--api-token` CLI option is also provided, the value from the CLI will be used.
## Enumerating usernames
```shell

View File

@@ -6,14 +6,18 @@ exec = []
begin
require 'rubocop/rake_task'
RuboCop::RakeTask.new
exec << :rubocop
rescue LoadError
end
begin
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)
RSpec::Core::RakeTask.new(:spec) { |t| t.rspec_opts = %w{--tag ~slow} }
exec << :spec
rescue LoadError
end

View File

@@ -18,9 +18,7 @@ module WPScan
target.content_dir = ParsedCli.wp_content_dir if ParsedCli.wp_content_dir
target.plugins_dir = ParsedCli.wp_plugins_dir if ParsedCli.wp_plugins_dir
return if target.content_dir
raise Error::WpContentDirNotDetected
raise Error::WpContentDirNotDetected unless target.content_dir
end
end
end

View File

@@ -51,7 +51,7 @@ module WPScan
OptSmartList.new(['--plugins-list LIST', 'List of plugins to enumerate'], advanced: true),
OptChoice.new(
['--plugins-detection MODE',
'Use the supplied mode to enumerate Plugins, instead of the global (--detection-mode) mode.'],
'Use the supplied mode to enumerate Plugins.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, default: :passive
),
OptBoolean.new(
@@ -62,8 +62,7 @@ module WPScan
),
OptChoice.new(
['--plugins-version-detection MODE',
'Use the supplied mode to check plugins versions instead of the --detection-mode ' \
'or --plugins-detection modes.'],
'Use the supplied mode to check plugins\' versions.'],
choices: %w[mixed passive aggressive], normalize: :to_sym, default: :mixed
),
OptInteger.new(

View File

@@ -4,6 +4,8 @@ module WPScan
module Controller
# Controller to handle the API token
class VulnApi < CMSScanner::Controller::Base
ENV_KEY = 'WPSCAN_API_TOKEN'
def cli_options
[
OptString.new(['--api-token TOKEN', 'The WPVulnDB API Token to display vulnerability data'])
@@ -11,9 +13,9 @@ module WPScan
end
def before_scan
return unless ParsedCli.api_token
return unless ParsedCli.api_token || ENV.key?(ENV_KEY)
DB::VulnApi.token = ParsedCli.api_token
DB::VulnApi.token = ParsedCli.api_token || ENV[ENV_KEY]
api_status = DB::VulnApi.status

View File

@@ -4,7 +4,6 @@ module WPScan
module Finders
module DbExports
# DB Exports finder
# See https://github.com/wpscanteam/wpscan-v3/issues/62
class KnownLocations < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
@@ -41,7 +40,7 @@ module WPScan
# @return [ Hash ]
def potential_urls(opts = {})
urls = {}
domain_name = target.uri.host[/(^[\w|-]+)/, 1]
domain_name = PublicSuffix.domain(target.uri.host)[/(^[\w|-]+)/, 1]
File.open(opts[:list]).each_with_index do |path, index|
path.gsub!('{domain_name}', domain_name)

View File

@@ -16,8 +16,7 @@ module WPScan
target.url(path),
confidence: 70,
found_by: DIRECT_ACCESS,
interesting_entries: target.directory_listing_entries(path),
references: { url: 'https://github.com/wpscanteam/wpscan/issues/422' }
interesting_entries: target.directory_listing_entries(path)
)
end
end

View File

@@ -11,11 +11,7 @@ module WPScan
return unless target.debug_log?(path)
Model::DebugLog.new(
target.url(path),
confidence: 100, found_by: DIRECT_ACCESS,
references: { url: 'https://codex.wordpress.org/Debugging_in_WordPress' }
)
Model::DebugLog.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
end
end
end

View File

@@ -11,12 +11,7 @@ module WPScan
return unless /DUPLICATOR INSTALL-LOG/.match?(target.head_and_get(path).body)
Model::DuplicatorInstallerLog.new(
target.url(path),
confidence: 100,
found_by: DIRECT_ACCESS,
references: { url: 'https://www.exploit-db.com/ghdb/3981/' }
)
Model::DuplicatorInstallerLog.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
end
end
end

View File

@@ -15,10 +15,7 @@ module WPScan
Model::EmergencyPwdResetScript.new(
target.url(path),
confidence: /password/i.match?(res.body) ? 100 : 40,
found_by: DIRECT_ACCESS,
references: {
url: 'https://codex.wordpress.org/Resetting_Your_Password#Using_the_Emergency_Password_Reset_Script'
}
found_by: DIRECT_ACCESS
)
end
end

View File

@@ -16,8 +16,7 @@ module WPScan
target.url(path),
confidence: 100,
found_by: DIRECT_ACCESS,
interesting_entries: fpd_entries,
references: { url: 'https://www.owasp.org/index.php/Full_Path_Disclosure' }
interesting_entries: fpd_entries
)
end
end

View File

@@ -9,20 +9,14 @@ module WPScan
def passive(_opts = {})
pattern = %r{#{target.content_dir}/mu\-plugins/}i
target.in_scope_uris(target.homepage_res) do |uri|
target.in_scope_uris(target.homepage_res, '(//@href|//@src)[contains(., "mu-plugins")]') do |uri|
next unless uri.path&.match?(pattern)
url = target.url('wp-content/mu-plugins/')
target.mu_plugins = true
return Model::MuPlugins.new(
url,
confidence: 70,
found_by: 'URLs In Homepage (Passive Detection)',
to_s: "This site has 'Must Use Plugins': #{url}",
references: { url: 'http://codex.wordpress.org/Must_Use_Plugins' }
)
return Model::MuPlugins.new(url, confidence: 70, found_by: 'URLs In Homepage (Passive Detection)')
end
nil
end
@@ -37,13 +31,7 @@ module WPScan
target.mu_plugins = true
Model::MuPlugins.new(
url,
confidence: 80,
found_by: DIRECT_ACCESS,
to_s: "This site has 'Must Use Plugins': #{url}",
references: { url: 'http://codex.wordpress.org/Must_Use_Plugins' }
)
Model::MuPlugins.new(url, confidence: 80, found_by: DIRECT_ACCESS)
end
end
end

View File

@@ -17,13 +17,7 @@ module WPScan
target.multisite = true
Model::Multisite.new(
url,
confidence: 100,
found_by: DIRECT_ACCESS,
to_s: 'This site seems to be a multisite',
references: { url: 'http://codex.wordpress.org/Glossary#Multisite' }
)
Model::Multisite.new(url, confidence: 100, found_by: DIRECT_ACCESS)
end
end
end

View File

@@ -20,12 +20,7 @@ module WPScan
target.registration_enabled = true
Model::Registration.new(
res.effective_url,
confidence: 100,
found_by: DIRECT_ACCESS,
to_s: "Registration is enabled: #{res.effective_url}"
)
Model::Registration.new(res.effective_url, confidence: 100, found_by: DIRECT_ACCESS)
end
end
end

View File

@@ -13,12 +13,7 @@ module WPScan
return unless res.code == 200 && res.headers['Content-Type'] =~ %r{\Aapplication/zip}i
Model::TmmDbMigrate.new(
url,
confidence: 100,
found_by: DIRECT_ACCESS,
references: { packetstorm: 131_957 }
)
Model::TmmDbMigrate.new(url, confidence: 100, found_by: DIRECT_ACCESS)
end
end
end

View File

@@ -13,12 +13,7 @@ module WPScan
url = target.url(path)
Model::UploadDirectoryListing.new(
url,
confidence: 100,
found_by: DIRECT_ACCESS,
to_s: "Upload directory has listing enabled: #{url}"
)
Model::UploadDirectoryListing.new(url, confidence: 100, found_by: DIRECT_ACCESS)
end
end
end

View File

@@ -14,11 +14,7 @@ module WPScan
return unless SQL_PATTERN.match?(res.body)
Model::UploadSQLDump.new(
target.url(path),
confidence: 100,
found_by: DIRECT_ACCESS
)
Model::UploadSQLDump.new(target.url(path), confidence: 100, found_by: DIRECT_ACCESS)
end
end
end

View File

@@ -11,17 +11,7 @@ module WPScan
return unless res.code == 200
Model::WPCron.new(
wp_cron_url,
confidence: 60,
found_by: DIRECT_ACCESS,
references: {
url: [
'https://www.iplocation.net/defend-wordpress-from-ddos',
'https://github.com/wpscanteam/wpscan/issues/1299'
]
}
)
Model::WPCron.new(wp_cron_url, confidence: 60, found_by: DIRECT_ACCESS)
end
def wp_cron_url

View File

@@ -20,7 +20,7 @@ module WPScan
end
def passive_from_css_href(res, opts)
target.in_scope_uris(res, '//style/@src|//link/@href') do |uri|
target.in_scope_uris(res, '//link/@href[contains(., "style.css")]') do |uri|
next unless uri.path =~ %r{/themes/([^\/]+)/style.css\z}i
return create_theme(Regexp.last_match[1], uri.to_s, opts)

View File

@@ -16,7 +16,7 @@ module WPScan
end
def errored_response?(response)
response.code != 200 && response.body !~ /login_error/i
response.code != 200 && response.body !~ /Incorrect username or password/i
end
end
end

View File

@@ -68,11 +68,9 @@ module WPScan
extracted_versions = extracted_versions.select { |x| x =~ /[0-9]+/ }
sorted = extracted_versions.sort do |x, y|
begin
Gem::Version.new(x) <=> Gem::Version.new(y)
rescue StandardError
0
end
Gem::Version.new(x) <=> Gem::Version.new(y)
rescue StandardError
0
end
sorted.last

View File

@@ -19,8 +19,12 @@ module WPScan
def aggressive(opts = {})
found = []
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |_res, slug|
found << Model::Plugin.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, slug|
finding_opts = opts.merge(found_by: found_by,
confidence: 80,
interesting_entries: ["#{res.effective_url}, status: #{res.code}"])
found << Model::Plugin.new(slug, target, finding_opts)
raise Error::PluginsThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
end

View File

@@ -19,8 +19,12 @@ module WPScan
def aggressive(opts = {})
found = []
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |_res, slug|
found << Model::Theme.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, slug|
finding_opts = opts.merge(found_by: found_by,
confidence: 80,
interesting_entries: ["#{res.effective_url}, status: #{res.code}"])
found << Model::Theme.new(slug, target, finding_opts)
raise Error::ThemesThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
end

View File

@@ -71,11 +71,13 @@ module WPScan
return username, 'Display Name', 50 if username
end
# @param [ String ] url
# @param [ String, Addressable::URI ] uri
#
# @return [ String, nil ]
def username_from_author_url(url)
url[%r{/author/([^/\b]+)/?}i, 1]
def username_from_author_url(uri)
uri = Addressable::URI.parse(uri) unless uri.is_a?(Addressable::URI)
uri.path[%r{/author/([^/\b]+)/?}i, 1]
end
# @param [ Typhoeus::Response ] res
@@ -83,12 +85,12 @@ module WPScan
# @return [ String, nil ] The username found
def username_from_response(res)
# Permalink enabled
target.in_scope_uris(res, '//link/@href|//a/@href') do |uri|
username = username_from_author_url(uri.to_s)
target.in_scope_uris(res, '//@href[contains(., "author/")]') do |uri|
username = username_from_author_url(uri)
return username if username
end
# No permalink
# No permalink, TODO Maybe use xpath to extract the classes ?
res.body[/<body class="archive author author-([^\s]+)[ "]/i, 1]
end

View File

@@ -45,7 +45,7 @@ module WPScan
def potential_usernames(res)
usernames = []
target.in_scope_uris(res, '//a/@href') do |uri, node|
target.in_scope_uris(res, '//a/@href[contains(., "author")]') do |uri, node|
if uri.path =~ %r{/author/([^/\b]+)/?\z}i
usernames << [Regexp.last_match[1], 'Author Pattern', 100]
elsif /author=[0-9]+/.match?(uri.query)

View File

@@ -21,7 +21,7 @@ module WPScan
loop do
current_page += 1
res = Typhoeus.get(api_url, params: { per_page: MAX_PER_PAGE, page: current_page })
res = Browser.get(api_url, params: { per_page: MAX_PER_PAGE, page: current_page })
total_pages ||= res.headers['X-WP-TotalPages'].to_i

View File

@@ -8,11 +8,15 @@ module WPScan
# @param [ String ] type plugins / themes
# @param [ Boolean ] uniq Wether or not to apply the #uniq on the results
#
# @return [Array<String> ] The plugins/themes detected in the href, src attributes of the homepage
# @return [ Array<String> ] The plugins/themes detected in the href, src attributes of the page
def items_from_links(type, uniq = true)
found = []
xpath = format(
'(//@href|//@src|//@data-src)[contains(., "%s")]',
type == 'plugins' ? target.plugins_dir : target.content_dir
)
target.in_scope_uris(page_res) do |uri|
target.in_scope_uris(page_res, xpath) do |uri|
next unless uri.to_s =~ item_attribute_pattern(type)
slug = Regexp.last_match[1]&.strip

View File

@@ -28,7 +28,7 @@ module WPScan
end
def passive_urls_xpath
'//a[contains(@href, "rdf")]/@href'
'//a[contains(@href, "/rdf")]/@href'
end
def aggressive_urls(_opts = {})

View File

@@ -8,45 +8,110 @@ module WPScan
end
#
# Empty classes for the #type to be correctly displayed (as taken from the self.class from the parent)
# Some classes are empty for the #type to be correctly displayed (as taken from the self.class from the parent)
#
class BackupDB < InterestingFinding
# @return [ Hash ]
def references
@references ||= { url: ['https://github.com/wpscanteam/wpscan/issues/422'] }
end
end
class DebugLog < InterestingFinding
# @ return [ Hash ]
def references
@references ||= { url: ['https://codex.wordpress.org/Debugging_in_WordPress'] }
end
end
class DuplicatorInstallerLog < InterestingFinding
# @return [ Hash ]
def references
@references ||= { url: ['https://www.exploit-db.com/ghdb/3981/'] }
end
end
class EmergencyPwdResetScript < InterestingFinding
def references
@references ||= {
url: ['https://codex.wordpress.org/Resetting_Your_Password#Using_the_Emergency_Password_Reset_Script']
}
end
end
class FullPathDisclosure < InterestingFinding
# @return [ Hash ]
def references
@references ||= { url: ['https://www.owasp.org/index.php/Full_Path_Disclosure'] }
end
end
class MuPlugins < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= "This site has 'Must Use Plugins': #{url}"
end
# @return [ Hash ]
def references
@references ||= { url: ['http://codex.wordpress.org/Must_Use_Plugins'] }
end
end
class Multisite < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= 'This site seems to be a multisite'
end
# @return [ Hash ]
def references
@references ||= { url: ['http://codex.wordpress.org/Glossary#Multisite'] }
end
end
class Readme < InterestingFinding
end
class Registration < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= "Registration is enabled: #{url}"
end
end
class TmmDbMigrate < InterestingFinding
# @return [ Hash ]
def references
@references ||= { packetstorm: [131_957] }
end
end
class UploadDirectoryListing < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= "Upload directory has listing enabled: #{url}"
end
end
class UploadSQLDump < InterestingFinding
end
class WPCron < InterestingFinding
# @return [ String ]
def to_s
@to_s ||= "The external WP-Cron seems to be enabled: #{url}"
end
# @return [ Hash ]
def references
@references ||= {
url: [
'https://www.iplocation.net/defend-wordpress-from-ddos',
'https://github.com/wpscanteam/wpscan/issues/1299'
]
}
end
end
end
end

View File

@@ -40,9 +40,9 @@ module WPScan
def rce_132_vuln
Vulnerability.new(
'Timthumb <= 1.32 Remote Code Execution',
{ exploitdb: ['17602'] },
'RCE',
'1.33'
references: { exploitdb: ['17602'] },
type: 'RCE',
fixed_in: '1.33'
)
end
@@ -50,12 +50,12 @@ module WPScan
def rce_webshot_vuln
Vulnerability.new(
'Timthumb <= 2.8.13 WebShot Remote Code Execution',
{
references: {
url: ['http://seclists.org/fulldisclosure/2014/Jun/117', 'https://github.com/wpscanteam/wpscan/issues/519'],
cve: '2014-4663'
},
'RCE',
'2.8.14'
type: 'RCE',
fixed_in: '2.8.14'
)
end

View File

@@ -23,7 +23,7 @@ module WPScan
# @option opts [ Hash ] :version_detection The options to use when looking for the version
# @option opts [ String ] :url The URL of the item
def initialize(slug, blog, opts = {})
@slug = URI.decode(slug)
@slug = Addressable::URI.unencode(slug)
@blog = blog
@uri = Addressable::URI.parse(opts[:url]) if opts[:url]
@@ -83,11 +83,6 @@ module WPScan
end
end
# URI.encode is preferered over Addressable::URI.encode as it will encode
# leading # character:
# URI.encode('#t#') => %23t%23
# Addressable::URI.encode('#t#') => #t%23
#
# @param [ String ] path Optional path to merge with the uri
#
# @return [ String ]
@@ -95,7 +90,7 @@ module WPScan
return unless @uri
return @uri.to_s unless path
@uri.join(URI.encode(path)).to_s
@uri.join(Addressable::URI.encode(path)).to_s
end
# @return [ Boolean ]
@@ -166,7 +161,7 @@ module WPScan
# @return [ Typhoeus::Response ]
def head_and_get(path, codes = [200], params = {})
final_path = +@path_from_blog
final_path << URI.encode(path) unless path.nil?
final_path << path unless path.nil?
blog.head_and_get(final_path, codes, params)
end

View File

@@ -8,7 +8,7 @@ module WPScan
# @return [ Hash ]
def references
{
@references ||= {
url: ['http://codex.wordpress.org/XML-RPC_Pingback_API'],
metasploit: [
'auxiliary/scanner/http/wordpress_ghost_scanner',

View File

@@ -9,6 +9,6 @@ _______________________________________________________________
WordPress Security Scanner by the WPScan Team
Version <%= WPScan::VERSION %>
<%= ' ' * ((63 - WPScan::DB::Sponsor.text.length)/2) + WPScan::DB::Sponsor.text %>
@_WPScan_, @ethicalhack3r, @erwan_lr, @_FireFart_
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

View File

@@ -2,7 +2,7 @@
<% if @users.empty? -%>
<%= notice_icon %> No Valid Passwords Found.
<% else -%>
<%= notice_icon %> Valid Combinations Found:
<%= critical_icon %> Valid Combinations Found:
<% @users.each do |user| -%>
| Username: <%= user.username %>, Password: <%= user.password %>
<% end -%>

View File

@@ -9,5 +9,5 @@
<% end -%>
<% else -%>
<%= warning_icon %> No WPVulnDB API Token given, as a result vulnerability data has not been output.
<%= warning_icon %> You can get a free API token with 50 daily requests by registering at https://wpvulndb.com/users/sign_up.
<%= warning_icon %> You can get a free API token with 50 daily requests by registering at https://wpvulndb.com/users/sign_up
<% end -%>

View File

@@ -1,4 +1,7 @@
| <%= critical_icon %> Title: <%= @v.title %>
<% if @v.cvss -%>
| CVSS: <%= @v.cvss[:score] %> (<%= @v.cvss[:vector] %>)
<% end -%>
<% if @v.fixed_in -%>
| Fixed in: <%= @v.fixed_in %>
<% end -%>

View File

@@ -5,7 +5,7 @@
"@_WPScan_",
"@ethicalhack3r",
"@erwan_lr",
"@_FireFart_"
"@firefart"
],
"sponsor": <%= WPScan::DB::Sponsor.text.to_json %>
},

View File

@@ -19,6 +19,9 @@
<% vulns.each_with_index do |v, index| -%>
{
"title": <%= v.title.to_json %>,
<% if v.cvss -%>
"cvss": <%= v.cvss.to_json %>,
<% end -%>
"fixed_in": <%= v.fixed_in.to_json %>,
"references": <%= v.references.to_json %>
}<% unless index == last_index -%>,<% end -%>

View File

@@ -8,6 +8,6 @@
"requests_remaining": <%= @status['requests_remaining'].to_json %>
<% end -%>
<% else -%>
"error": "No WPVulnDB API Token given, as a result vulnerability data has not been output.\nYou can get a free API token with 50 daily requests by registering at https://wpvulndb.com/users/sign_up."
"error": "No WPVulnDB API Token given, as a result vulnerability data has not been output.\nYou can get a free API token with 50 daily requests by registering at https://wpvulndb.com/users/sign_up"
<% end -%>
},

View File

@@ -67,13 +67,13 @@ module WPScan
# @return [ Hash ] The params for Typhoeus::Request
# @note Those params can't be overriden by CLI options
def request_params
@request_params ||= {
@request_params ||= Browser.instance.default_connect_request_params.merge(
timeout: 600,
connecttimeout: 300,
accept_encoding: 'gzip, deflate',
cache_ttl: 0,
headers: { 'User-Agent' => Browser.instance.default_user_agent, 'Referer' => nil }
}
headers: { 'User-Agent' => Browser.instance.default_user_agent }
)
end
# @return [ String ] The raw file URL associated with the given filename
@@ -85,7 +85,7 @@ module WPScan
def remote_file_checksum(filename)
url = "#{remote_file_url(filename)}.sha512"
res = Browser.get(url, request_params)
res = Typhoeus.get(url, request_params)
raise Error::Download, res if res.timed_out? || res.code != 200
res.body.chomp
@@ -126,7 +126,7 @@ module WPScan
file_path = local_file_path(filename)
file_url = remote_file_url(filename)
res = Browser.get(file_url, request_params)
res = Typhoeus.get(file_url, request_params)
raise Error::Download, res if res.timed_out? || res.code != 200
File.open(file_path, 'wb') { |f| f.write(res.body) }
@@ -139,24 +139,22 @@ module WPScan
updated = []
FILES.each do |filename|
begin
db_checksum = remote_file_checksum(filename)
db_checksum = remote_file_checksum(filename)
# Checking if the file needs to be updated
next if File.exist?(local_file_path(filename)) && db_checksum == local_file_checksum(filename)
# Checking if the file needs to be updated
next if File.exist?(local_file_path(filename)) && db_checksum == local_file_checksum(filename)
create_backup(filename)
dl_checksum = download(filename)
create_backup(filename)
dl_checksum = download(filename)
raise "#{filename}: checksums do not match" unless dl_checksum == db_checksum
raise Error::ChecksumsMismatch, filename unless dl_checksum == db_checksum
updated << filename
rescue StandardError => e
restore_backup(filename)
raise e
ensure
delete_backup(filename) if File.exist?(backup_file_path(filename))
end
updated << filename
rescue StandardError => e
restore_backup(filename)
raise e
ensure
delete_backup(filename) if File.exist?(backup_file_path(filename))
end
File.write(last_update_file, Time.now)

View File

@@ -21,8 +21,10 @@ module WPScan
# @return [ Hash ]
def self.get(path, params = {})
return {} unless token
return {} if path.end_with?('/latest') # Remove this when api/v4 is up
res = Browser.get(uri.join(path), params.merge(request_params))
# Typhoeus.get is used rather than Browser.get to avoid merging irrelevant params from the CLI
res = Typhoeus.get(uri.join(path), default_request_params.merge(params))
return {} if res.code == 404 # This is for API inconsistencies when dots in path
return JSON.parse(res.body) if NON_ERROR_CODES.include?(res.code)
@@ -64,15 +66,14 @@ module WPScan
end
# @return [ Hash ]
def self.request_params
{
# @note Those params can not be overriden by CLI options
def self.default_request_params
Browser.instance.default_connect_request_params.merge(
headers: {
'Host' => uri.host, # Reset in case user provided a --vhost for the target
'Referer' => nil, # Removes referer set by the cmsscanner to the target url
'User-Agent' => Browser.instance.default_user_agent,
'Authorization' => "Token token=#{token}"
}
}
)
end
end
end

View File

@@ -8,5 +8,17 @@ module WPScan
'Update required, you can not run a scan if a database file is missing.'
end
end
class ChecksumsMismatch < Standard
attr_reader :db_file
def initialize(db_file)
@db_file = db_file
end
def to_s
"#{db_file}: checksums do not match. Please try again in a few minutes."
end
end
end
end

View File

@@ -17,7 +17,7 @@ module WPScan
end
# Needed to have inheritance of the @child_class_constants
# If inheritance is not needed, then the #child_class_constant can be used in the classe definition, ie
# If inheritance is not needed, then the #child_class_constant can be used in the class definition, ie
# child_class_constant :FILES, PATTERN: /aaa/i
# @return [ Hash ]
def self.child_class_constants

View File

@@ -21,13 +21,11 @@ module WPScan
parsers = ALLOWED_PARSERS.include?(self.class::PARSER) ? [self.class::PARSER] : ALLOWED_PARSERS
parsers.each do |parser|
begin
parsed = parser.respond_to?(:safe_load) ? parser.safe_load(body) : parser.load(body)
parsed = parser.respond_to?(:safe_load) ? parser.safe_load(body) : parser.load(body)
return parsed if parsed.is_a?(Hash) || parsed.is_a?(Array)
rescue StandardError
next
end
return parsed if parsed.is_a?(Hash) || parsed.is_a?(Array)
rescue StandardError
next
end
nil # Make sure nil is returned in case none of the parsers managed to parse the body correctly

View File

@@ -37,6 +37,8 @@ module WPScan
end
end
# This one has been disabled from the DF.yml as it was causing FPs when a plugin had numerous
# files matching a known WP version.
class WpItemQueryParameter < QueryParameter
def xpath
@xpath ||=

View File

@@ -2,7 +2,7 @@
module WPScan
# References module (which should be included along with the CMSScanner::References)
# to allow the use of the wpvulndb reference
# to allow the use of the wpvulndb reference.
module References
extend ActiveSupport::Concern

View File

@@ -32,8 +32,12 @@ module WPScan
if %i[mixed aggressive].include?(detection_mode)
%w[wp-admin/install.php wp-login.php].each do |path|
return true if in_scope_uris(Browser.get_and_follow_location(url(path))).any? do |uri|
WORDPRESS_PATTERN.match?(uri.path)
res = Browser.get_and_follow_location(url(path))
next unless res.code == 200
in_scope_uris(res, '//link/@href|//script/@src') do |uri|
return true if WORDPRESS_PATTERN.match?(uri.path)
end
end
end
@@ -44,7 +48,7 @@ module WPScan
# @param [ Typhoeus::Response ] response
# @return [ Boolean ]
def wordpress_from_meta_comments_or_scripts?(response)
in_scope_uris(response) do |uri|
in_scope_uris(response, '//link/@href|//script/@src') do |uri|
return true if WORDPRESS_PATTERN.match?(uri.path) || WP_JSON_OEMBED_PATTERN.match?(uri.path)
end
@@ -100,8 +104,9 @@ module WPScan
unless content_dir
pattern = %r{https?://s\d\.wp\.com#{WORDPRESS_PATTERN}}i.freeze
xpath = '(//@href|//@src)[contains(., "wp.com")]'
uris_from_page(homepage_res) do |uri|
uris_from_page(homepage_res, xpath) do |uri|
return true if uri.to_s.match?(pattern)
end
end

View File

@@ -71,7 +71,7 @@ module WPScan
#
# @return [ String ]
def plugin_url(slug)
plugins_uri.join("#{URI.encode(slug)}/").to_s
plugins_uri.join("#{Addressable::URI.encode(slug)}/").to_s
end
# @return [ String ]
@@ -93,7 +93,7 @@ module WPScan
#
# @return [ String ]
def theme_url(slug)
themes_uri.join("#{URI.encode(slug)}/").to_s
themes_uri.join("#{Addressable::URI.encode(slug)}/").to_s
end
# @return [ String, False ] String of the sub_dir found, false otherwise
@@ -105,9 +105,10 @@ module WPScan
# url_pattern is from CMSScanner::Target
pattern = %r{#{url_pattern}(.+?)/(?:xmlrpc\.php|wp\-includes/)}i
xpath = '(//@src|//@href|//@data-src)[contains(., "xmlrpc.php") or contains(., "wp-includes/")]'
[homepage_res, error_404_res].each do |page_res|
in_scope_uris(page_res) do |uri|
in_scope_uris(page_res, xpath) do |uri|
return @sub_dir = Regexp.last_match[1] if uri.to_s.match(pattern)
end
end

View File

@@ -2,5 +2,5 @@
# Version
module WPScan
VERSION = '3.7.4'
VERSION = '3.8.1'
end

View File

@@ -18,9 +18,10 @@ module WPScan
new(
json_data['title'],
references,
json_data['vuln_type'],
json_data['fixed_in']
references: references,
type: json_data['vuln_type'],
fixed_in: json_data['fixed_in'],
cvss: json_data['cvss']&.symbolize_keys
)
end
end

View File

@@ -74,20 +74,40 @@ describe WPScan::Controller::VulnApi do
context 'when limited requests' do
let(:requests) { 100 }
it 'does not raise an error' do
it 'sets the token and does not raise an error' do
expect { controller.before_scan }.to_not raise_error
expect(WPScan::DB::VulnApi.token).to eql 'token'
end
context 'when unlimited requests' do
let(:requests) { 'Unlimited' }
it 'does not raise an error' do
it 'sets the token and does not raise an error' do
expect { controller.before_scan }.to_not raise_error
expect(WPScan::DB::VulnApi.token).to eql 'token'
end
end
end
end
end
end
context 'when token in ENV' do
before do
ENV[described_class::ENV_KEY] = 'token-from-env'
expect(WPScan::DB::VulnApi)
.to receive(:status)
.and_return('success' => true, 'plan' => 'free', 'requests_remaining' => 'Unlimited')
end
it 'sets the token and does not raise an error' do
expect { controller.before_scan }.to_not raise_error
expect(WPScan::DB::VulnApi.token).to eql 'token-from-env'
end
end
end
end

View File

@@ -9,7 +9,7 @@ describe WPScan::Finders::DbExports::KnownLocations do
describe '#potential_urls' do
before do
expect(target).to receive(:sub_dir).at_least(1).and_return(false)
allow(target).to receive(:sub_dir).and_return(false)
end
it 'replace {domain_name} by its value' do
@@ -22,11 +22,45 @@ describe WPScan::Finders::DbExports::KnownLocations do
http://ex.lo/aa/backups/db_backup.sql
]
end
%w[dev poc www].each do |sub_domain|
context "when #{sub_domain} sub-domain" do
let(:url) { "https://#{sub_domain}.domain.tld" }
it 'replace {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include "#{url}/domain.sql"
end
end
end
context 'when multi-level tlds' do
let(:url) { 'https://something.com.tr' }
it 'replace {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include 'https://something.com.tr/something.sql'
end
end
context 'when multi-level tlds and sub-domain' do
let(:url) { 'https://dev.something.com.tr' }
it 'replace {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include 'https://dev.something.com.tr/something.sql'
end
end
context 'when some weird stuff' do
let(:url) { 'https://098f6bcd4621d373cade4e832627b4f6.aa-bb-ccc-dd.domain-test.com' }
it 'replace {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include "#{url}/domain-test.sql"
end
end
end
describe '#aggressive' do
before do
expect(target).to receive(:sub_dir).at_least(1).and_return(false)
allow(target).to receive(:sub_dir).and_return(false)
expect(target).to receive(:head_or_get_params).and_return(method: :head)
finder.potential_urls(opts).each_key do |url|

View File

@@ -6,8 +6,55 @@ describe WPScan::Finders::InterestingFindings::MuPlugins do
let(:url) { 'http://ex.lo/' }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'mu_plugins') }
before do
expect(target).to receive(:content_dir).at_least(1).and_return('wp-content')
end
describe '#passive' do
xit
before { stub_request(:get, url).to_return(body: body) }
context 'when no uris' do
let(:body) { '' }
its(:passive) { should be nil }
end
context 'when a large amount of unrelated uris' do
let(:body) do
Array.new(250) { |i| "<a href='#{url}#{i}.html'>Some Link</a><img src='#{url}img-#{i}.png'/>" }.join("\n")
end
it 'should not take a while to process the page' do
time_start = Time.now
result = finder.passive
time_end = Time.now
expect(result).to be nil
expect(time_end - time_start).to be < 1
end
end
context 'when uris' do
let(:body) { File.read(fixtures.join(fixture)) }
context 'when none matching' do
let(:fixture) { 'no_match.html' }
its(:passive) { should be nil }
end
context 'when matching via href' do
let(:fixture) { 'match_href.html' }
its(:passive) { should be_a WPScan::Model::MuPlugins }
end
context 'when matching from src' do
let(:fixture) { 'match_src.html' }
its(:passive) { should be_a WPScan::Model::MuPlugins }
end
end
end
describe '#aggressive' do

View File

@@ -0,0 +1,49 @@
# frozen_string_literal: true
describe WPScan::Finders::Passwords::XMLRPC do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Model::XMLRPC.new(url) }
let(:url) { 'http://ex.lo/xmlrpc.php' }
RESPONSE_403_BODY = '<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>403</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Incorrect username or password.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>'
describe '#attack' do
context 'when no valid credentials' do
before do
stub_request(:post, url).to_return(status: status, body: RESPONSE_403_BODY)
finder.attack(users, %w[pwd])
end
let(:users) { %w[admin].map { |username| WPScan::Model::User.new(username) } }
context 'when status = 200' do
let(:status) { 200 }
its('progress_bar.log') { should be_empty }
end
context 'when status = 403' do
let(:status) { 403 }
its('progress_bar.log') { should be_empty }
end
end
end
end

View File

@@ -19,7 +19,7 @@ describe WPScan::Finders::Users::AuthorIdBruteForcing do
end
end
describe '#potential_username' do
describe '#username_from_response' do
[
'4.1.1', '4.1.1-permalink',
'3.0', '3.0-permalink',
@@ -32,6 +32,19 @@ describe WPScan::Finders::Users::AuthorIdBruteForcing do
expect(finder.username_from_response(res)).to eql 'admin'
end
end
context 'when a lot of unrelated links' do
it 'should not take a while to process the page' do
body = Array.new(300) { |i| "<a href='#{url}#{i}.html'>Some Link</a>" }.join("\n")
body << '<a href="https://wp.lab/author/test/">Link</a>'
time_start = Time.now
expect(finder.username_from_response(Typhoeus::Response.new(body: body))).to eql 'test'
time_end = Time.now
expect(time_end - time_start).to be < 1
end
end
end
describe '#display_name_from_body' do

View File

@@ -16,12 +16,31 @@ describe WPScan::Finders::Users::AuthorPosts do
results = finder.potential_usernames(res)
expect(results).to eql([
['admin', 'Author Pattern', 100],
['admin display_name', 'Display Name', 30],
['editor', 'Author Pattern', 100],
['editor', 'Display Name', 30]
])
expect(results).to eql [
['admin', 'Author Pattern', 100],
['admin display_name', 'Display Name', 30],
['editor', 'Author Pattern', 100],
['editor', 'Display Name', 30]
]
end
context 'when a lot of unrelated uris' do
it 'should not take a while to process the page' do
body = Array.new(300) { |i| "<a href='#{url}#{i}.html'>Some Link</a>" }.join("\n")
body << "<a href='#{url}author/admin/'>Other Link</a>"
body << "<a href='#{url}?author=2'>user display name</a>"
time_start = Time.now
results = finder.potential_usernames(Typhoeus::Response.new(body: body))
time_end = Time.now
expect(results).to eql [
['admin', 'Author Pattern', 100],
['user display name', 'Display Name', 30]
]
expect(time_end - time_start).to be < 1
end
end
end
end

View File

@@ -202,11 +202,11 @@ describe WPScan::Model::Plugin do
[
WPScan::Vulnerability.new(
'First Vuln <= 6.3.10 - LFI',
{ wpvulndb: '1' },
'LFI',
'6.3.10'
references: { wpvulndb: '1' },
type: 'LFI',
fixed_in: '6.3.10'
),
WPScan::Vulnerability.new('No Fixed In', wpvulndb: '2')
WPScan::Vulnerability.new('No Fixed In', references: { wpvulndb: '2' })
]
end

View File

@@ -224,11 +224,11 @@ describe WPScan::Model::Theme do
[
WPScan::Vulnerability.new(
'First Vuln',
{ wpvulndb: '1' },
'LFI',
'6.3.10'
references: { wpvulndb: '1' },
type: 'LFI',
fixed_in: '6.3.10'
),
WPScan::Vulnerability.new('No Fixed In', wpvulndb: '2')
WPScan::Vulnerability.new('No Fixed In', references: { wpvulndb: '2' })
]
end

View File

@@ -46,7 +46,7 @@ describe WPScan::Model::WpItem do
end
it 'encodes the path' do
expect(wp_item.url('#t#')).to eql "#{item_url}%23t%23"
expect(wp_item.url('#t#')).to eql "#{item_url}#t%23"
expect(wp_item.url('t .txt')).to eql "#{item_url}t%20.txt"
end
end

View File

@@ -55,31 +55,15 @@ describe WPScan::Model::WpVersion do
expect(version).to be_vulnerable
end
let(:all_vulns) do
[
WPScan::Vulnerability.new(
'WP 3.8.1 - Vuln 1',
{ wpvulndb: '1' },
'SQLI'
),
WPScan::Vulnerability.new(
'WP 3.8.1 - Vuln 2',
{ url: %w[url-2 url-3], osvdb: %w[10], cve: %w[2014-0166], wpvulndb: '2' },
nil,
'3.8.2'
)
]
end
context 'when a signle vuln' do
let(:number) { '3.8.1' }
let(:number) { '3.8' }
let(:db_data) { vuln_api_data_for('wordpresses/38') }
it 'returns the expected result' do
@expected = [WPScan::Vulnerability.new(
'WP 3.8 - Vuln 1',
{ url: %w[url-4], wpvulndb: '3' },
'AUTHBYPASS'
references: { url: %w[url-4], wpvulndb: '3' },
type: 'AUTHBYPASS'
)]
end
end
@@ -92,14 +76,14 @@ describe WPScan::Model::WpVersion do
@expected = [
WPScan::Vulnerability.new(
'WP 3.8.1 - Vuln 1',
{ wpvulndb: '1' },
'SQLI'
references: { wpvulndb: '1' },
type: 'SQLI',
cvss: { score: '5.4', vector: 'VECTOR' }
),
WPScan::Vulnerability.new(
'WP 3.8.1 - Vuln 2',
{ url: %w[url-2 url-3], cve: %w[2014-0166], wpvulndb: '2' },
nil,
'3.8.2'
references: { url: %w[url-2 url-3], cve: %w[2014-0166], wpvulndb: '2' },
fixed_in: '3.8.2'
)
]
end

View File

@@ -1,4 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
!.gitignore

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,11 @@
"id" : 1,
"vuln_type" : "SQLI",
"published_date" : null,
"fixed_in" : null
"fixed_in" : null,
"cvss": {
"score": "5.4",
"vector": "VECTOR"
}
},
{
"references" : {

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,94 @@
msgid ""
msgstr ""
"Project-Id-Version: Woo Pelecard v1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-07-07 07:09+0200\n"
"PO-Revision-Date: 2014-07-07 07:09+0200\n"
"Last-Translator: Tzvi Rabinovitch <tzvi.ra@gmail.com>\n"
"Language-Team: \n"
"Language: he_IL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 1.5.4\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
"X-Poedit-Basepath: .\n"
"X-Textdomain-Support: yes\n"
"X-Poedit-SearchPath-0: ..\n"
#: ../10bit-easycard-paybuttons-options.php:18
msgid "Settings saved."
msgstr "שמרתי את ההגדרות."
#: ../10bit-easycard-paybuttons-options.php:23
msgid "10Bit EasyCard PayButtons Settings"
msgstr "כפתורי תשלום איזיקארד"
#: ../10bit-easycard-paybuttons-options.php:37
msgid "Client ID"
msgstr "מזהה לקוח"
# @ TenBit_woo_pelecard
#: ../10bit-easycard-paybuttons-options.php:45
msgid "Password"
msgstr "סיסמה"
#: ../10bit-easycard-paybuttons-options.php:53
msgid "Maximum Payments"
msgstr "מספר תשלמים מקסימלי"
#: ../10bit-easycard-paybuttons-options.php:64
msgid "Save Changes"
msgstr "שמור שינויים"
#: ../10bit-easycard-paybuttons-options.php:70
msgid "Usage :"
msgstr "שימוש"
#: ../10bit-easycard-paybuttons-options.php:72
msgid "Add the folloing short code inside a post or a page :"
msgstr "הוסיפו את השורטקוד הבא לדף או לעמוד באתר"
#: ../10bit-easycard-paybuttons-options.php:76
msgid "value : The amount to pay"
msgstr "value : הסכום לתשלום"
#: ../10bit-easycard-paybuttons-options.php:78
msgid "item_name : the name of the sold item"
msgstr "item_name : שם המוצר למכירה"
#: ../10bit-easycard-paybuttons-options.php:80
msgid "button_class : CSS class for styling"
msgstr "button_class : קלאס CSS לעיצוב"
#: ../10bit-easycard-paybuttons-options.php:82
msgid "button_text : Text to show on the button"
msgstr "button_text : הטקסט שיופיע על הכפתור"
#: ../10bit-paybuttons-easycard.php:29
msgid "EasyCard Pay Buttons"
msgstr "כפתורי תשלום איזיקארד"
# @ TenBit_woo_pelecard
#~ msgid "License Key"
#~ msgstr "מפתח"
#~ msgid "Valid"
#~ msgstr "תקין"
#~ msgid "Invalid"
#~ msgstr "לא תקין"
#, fuzzy
#~ msgid "Leave blank for not sending a copy"
#~ msgstr "השאר ריק במידה ואינך מעוניים בהעתק"
#, fuzzy
#~ msgid "10Bit iCount Settings"
#~ msgstr "הגדרות icount"
#~ msgid "Easycard"
#~ msgstr "איזיקארד"

View File

@@ -0,0 +1,132 @@
msgid ""
msgstr ""
"Project-Id-Version: Woo Pelecard v1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-07-09 01:31+0200\n"
"PO-Revision-Date: 2014-07-09 01:32+0200\n"
"Last-Translator: Tzvi Rabinovitch <tzvi.ra@gmail.com>\n"
"Language-Team: \n"
"Language: he_IL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 1.5.4\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
"X-Poedit-Basepath: .\n"
"X-Textdomain-Support: yes\n"
"X-Poedit-SearchPath-0: ..\n"
# @ TenBit_woo_pelecard
#: ../10bit-paybuttons-pelecard.php:28
msgid "pelecard Pay Buttons"
msgstr "כפתורי תשלום פלאכארד"
#: ../10bit-pelecard-paybuttons-options.php:68
msgid "Settings saved."
msgstr "שמרתי את ההגדרות."
#: ../10bit-pelecard-paybuttons-options.php:73
msgid "10Bit pelecard PayButtons Settings"
msgstr "כפתורי תשלום פלאכארד"
# @ TenBit_woo_pelecard
#: ../10bit-pelecard-paybuttons-options.php:87
msgid "Terminal Number"
msgstr "מספר מסוף סליקה"
# @ TenBit_woo_pelecard
#: ../10bit-pelecard-paybuttons-options.php:95
msgid "Username"
msgstr "שם משתמש"
# @ TenBit_woo_pelecard
#: ../10bit-pelecard-paybuttons-options.php:103
msgid "Password"
msgstr "סיסמה"
#: ../10bit-pelecard-paybuttons-options.php:111
msgid "Maximum Payments"
msgstr "מספר תשלמים מקסימלי"
#: ../10bit-pelecard-paybuttons-options.php:119
msgid "Currency"
msgstr "מטבע"
#: ../10bit-pelecard-paybuttons-options.php:123
msgid "ILS"
msgstr "ש\"ח"
#: ../10bit-pelecard-paybuttons-options.php:124
msgid "USD"
msgstr "דולר"
#: ../10bit-pelecard-paybuttons-options.php:130
msgid "Success ( thank you ) page URL"
msgstr "כתובת הצלחה ( דף תודה )"
#: ../10bit-pelecard-paybuttons-options.php:138
msgid "Error page URL"
msgstr "כתובת כשלון"
#: ../10bit-pelecard-paybuttons-options.php:146
msgid "Path to custom logo"
msgstr "קישור ללוגו "
#: ../10bit-pelecard-paybuttons-options.php:154
msgid "Path to small custom logo"
msgstr "קישור ללוגו קטן "
#: ../10bit-pelecard-paybuttons-options.php:162
msgid "Hide PCI DSS logo"
msgstr "הסתר את הלוגו של PCI DSS"
#: ../10bit-pelecard-paybuttons-options.php:170
msgid "Hide Pelecard logo"
msgstr "הסתר את לוגו פלאכארד"
#: ../10bit-pelecard-paybuttons-options.php:178
msgid "Path To custom Style sheet(CSS)"
msgstr "כתובת כשלון"
#: ../10bit-pelecard-paybuttons-options.php:183
msgid "must be a secured URL ( HTTPS )"
msgstr "חייב להיות מכתובת מאובטחת (HTTPS )"
#: ../10bit-pelecard-paybuttons-options.php:189
msgid "Background color"
msgstr "צבע רקע"
#: ../10bit-pelecard-paybuttons-options.php:195
msgid "Use hexadecimal color without the #"
msgstr "ערך הקסדצימלי ללא #"
#: ../10bit-pelecard-paybuttons-options.php:217
msgid "Save Changes"
msgstr "שמור שינויים"
#: ../10bit-pelecard-paybuttons-options.php:223
msgid "Usage :"
msgstr "שימוש"
#: ../10bit-pelecard-paybuttons-options.php:225
msgid "Add the following short code inside a post or a page :"
msgstr "הוסיפו את השורטקוד הבא לדף או לעמוד באתר"
#: ../10bit-pelecard-paybuttons-options.php:229
msgid "value : The amount to pay"
msgstr "value : הסכום לתשלום"
#: ../10bit-pelecard-paybuttons-options.php:231
msgid "item_name : the name of the sold item"
msgstr "item_name : שם המוצר למכירה"
#: ../10bit-pelecard-paybuttons-options.php:233
msgid "button_class : CSS class for styling"
msgstr "button_class : קלאס CSS לעיצוב"
#: ../10bit-pelecard-paybuttons-options.php:235
msgid "button_text : Text to show on the button"
msgstr "button_text : הטקסט שיופיע על הכפתור"

View File

@@ -0,0 +1,24 @@
# Italian translation for ab-human-time
# Copyright (C) 2014 AB Human Time
# This file is distributed under the same license as the AB Human Time package.
msgid ""
msgstr ""
"Project-Id-Version: AB Human Time 0.1\n"
"POT-Creation-Date: 2014-02-26 20:13+0100\n"
"PO-Revision-Date: 2014-02-26 21:25+0100\n"
"Last-Translator: endrix.develop <endrix.develop@gmail.com>\n"
"Language-Team: <endrix.develop@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: it_IT\n"
#: ../ab-human-time.php:21
msgid "Published "
msgstr "Pubblicato "
#: ../ab-human-time.php:23
msgid " ago"
msgstr " fa"

View File

@@ -0,0 +1,49 @@
msgid ""
msgstr ""
"Project-Id-Version: xq-xe-xt-xy 1.0\n"
"POT-Creation-Date: 2018-07-11 09:44+0300\n"
"PO-Revision-Date: 2018-07-11 09:44+0300\n"
"Last-Translator: \n"
"Language-Team: Marko Maksym\n"
"Language: uk_UA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n"
"X-Poedit-Basepath: ../includes\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-SearchPath-0: .\n"
#: admin/class-admin-main.php:66
msgid "Title of the page"
msgstr ""
#: admin/class-admin-main.php:66
msgid "Link Name"
msgstr ""
#: admin/class-admin-main.php:69
msgid "Submenu title"
msgstr ""
#: admin/class-admin-main.php:69
msgid "Submenu item"
msgstr ""
#: admin/templates/index.php:8
msgid "Settings Page"
msgstr ""
#: admin/templates/main_module_menu.php:10
msgid "Main page"
msgstr ""
#: admin/templates/main_module_menu.php:13 admin/templates/page1.php:8
msgid "Page 1"
msgstr ""
#: admin/templates/main_module_menu.php:16 admin/templates/page2.php:8
msgid "Page 2"
msgstr ""

View File

@@ -0,0 +1,112 @@
# Copyright (C) 2016 Kailey Lampert
# This file is distributed under the same license as the PACKAGE package.
# Kailey Lampert <trepmal@gmail.com>, 2016.
msgid ""
msgstr ""
"Project-Id-Version: 1.7\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-08 17:48-0700\n"
"PO-Revision-Date: 2016-09-08 17:48-0700\n"
"Last-Translator: Kailey Lampert <trepmal@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: active-plugins.php:62
msgid "Acitve Plugins is for multisite use only."
msgstr ""
#: active-plugins.php:72 active-plugins.php:83
msgid "Active Plugins Across Network"
msgstr ""
#: active-plugins.php:72
msgid "Active Plugins"
msgstr ""
#: active-plugins.php:86
#, php-format
msgid "<a href=\"%s\">Network-Activated Plugins</a>"
msgstr ""
#: active-plugins.php:87
#, php-format
msgid "<a href=\"%s\">MU Plugins</a>"
msgstr ""
#: active-plugins.php:90
#, php-format
msgid "List does not include: %s"
msgstr ""
#: active-plugins.php:146
msgid ""
"Totals <span class=\"description\">each active plugin and how many users</"
"span>"
msgstr ""
#: active-plugins.php:176 active-plugins.php:213
#, php-format
msgid "v%s"
msgstr ""
#: active-plugins.php:180 active-plugins.php:214
#, php-format
msgid "%1$s %2$s"
msgstr ""
#: active-plugins.php:182
#, php-format
msgid "%s (Uninstalled)"
msgstr ""
#: active-plugins.php:187
#, php-format
msgid " (tagged: %s)"
msgstr ""
#: active-plugins.php:197
msgid "Select all"
msgstr ""
#: active-plugins.php:198
msgid "Deselect all"
msgstr ""
#: active-plugins.php:199
msgid "Toggle"
msgstr ""
#: active-plugins.php:209
msgid "Plugins with zero (0) users:"
msgstr ""
#: active-plugins.php:217
msgid "none"
msgstr ""
#: active-plugins.php:224
msgid "Show sites with no active plugins"
msgstr ""
#: active-plugins.php:235
msgid "Edit"
msgstr ""
#: active-plugins.php:236
msgid "View"
msgstr ""
#: active-plugins.php:237
msgid "Dashboard"
msgstr ""
#: active-plugins.php:238
msgid "Plugins"
msgstr ""
#: active-plugins.php:249
msgid "(network-activated)"
msgstr ""

View File

@@ -0,0 +1,619 @@
# Copyright (C) 2019 RedNao
# This file is distributed under the same license as the Extra Product Options Builder for WooCommerce plugin.
msgid ""
msgstr ""
"Project-Id-Version: Extra Product Options Builder for WooCommerce 1.2.11\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woo-extra-products\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-11-02T18:08:21+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.3.0\n"
"X-Domain: rednaowooextraproduct\n"
#. Plugin Name of the plugin
msgid "Extra Product Options Builder for WooCommerce"
msgstr ""
#. Plugin URI of the plugin
msgid "http://smartforms.rednao.com/getit"
msgstr ""
#. Description of the plugin
msgid "Additional product fields for woocommerce"
msgstr ""
#. Author of the plugin
msgid "RedNao"
msgstr ""
#. Author URI of the plugin
msgid "http://rednao.com"
msgstr ""
#: jstranslations/InternalShared.php:2
msgid "Jan"
msgstr ""
#: jstranslations/InternalShared.php:3
msgid "Feb"
msgstr ""
#: jstranslations/InternalShared.php:4
msgid "Mar"
msgstr ""
#: jstranslations/InternalShared.php:5
msgid "Apr"
msgstr ""
#: jstranslations/InternalShared.php:6
msgid "May"
msgstr ""
#: jstranslations/InternalShared.php:7
msgid "Jun"
msgstr ""
#: jstranslations/InternalShared.php:8
msgid "Jul"
msgstr ""
#: jstranslations/InternalShared.php:9
msgid "Aug"
msgstr ""
#: jstranslations/InternalShared.php:10
msgid "Sep"
msgstr ""
#: jstranslations/InternalShared.php:11
msgid "Oct"
msgstr ""
#: jstranslations/InternalShared.php:12
msgid "Nov"
msgstr ""
#: jstranslations/InternalShared.php:13
msgid "Dec"
msgstr ""
#: jstranslations/InternalShared.php:14
msgid "January"
msgstr ""
#: jstranslations/InternalShared.php:15
msgid "February"
msgstr ""
#: jstranslations/InternalShared.php:16
msgid "March"
msgstr ""
#: jstranslations/InternalShared.php:17
msgid "April"
msgstr ""
#: jstranslations/InternalShared.php:18
msgid "June"
msgstr ""
#: jstranslations/InternalShared.php:19
msgid "July"
msgstr ""
#: jstranslations/InternalShared.php:20
msgid "August"
msgstr ""
#: jstranslations/InternalShared.php:21
msgid "September"
msgstr ""
#: jstranslations/InternalShared.php:22
msgid "October"
msgstr ""
#: jstranslations/InternalShared.php:23
msgid "November"
msgstr ""
#: jstranslations/InternalShared.php:24
msgid "December"
msgstr ""
#: jstranslations/InternalShared.php:25
msgid "Su"
msgstr ""
#: jstranslations/InternalShared.php:26
msgid "Mo"
msgstr ""
#: jstranslations/InternalShared.php:27
msgid "Tu"
msgstr ""
#: jstranslations/InternalShared.php:28
msgid "We"
msgstr ""
#: jstranslations/InternalShared.php:29
msgid "Th"
msgstr ""
#: jstranslations/InternalShared.php:30
msgid "Fr"
msgstr ""
#: jstranslations/InternalShared.php:31
msgid "Sa"
msgstr ""
#: jstranslations/InternalShared.php:32
msgid "Sun"
msgstr ""
#: jstranslations/InternalShared.php:33
msgid "Mon"
msgstr ""
#: jstranslations/InternalShared.php:34
msgid "Tue"
msgstr ""
#: jstranslations/InternalShared.php:35
msgid "Wed"
msgstr ""
#: jstranslations/InternalShared.php:36
msgid "Thu"
msgstr ""
#: jstranslations/InternalShared.php:37
msgid "Fri"
msgstr ""
#: jstranslations/InternalShared.php:38
msgid "Sat"
msgstr ""
#: jstranslations/InternalShared.php:39
#: jstranslations/ProductFieldBuilder.php:97
msgid "Sunday"
msgstr ""
#: jstranslations/InternalShared.php:40
#: jstranslations/ProductFieldBuilder.php:98
msgid "Monday"
msgstr ""
#: jstranslations/InternalShared.php:41
#: jstranslations/ProductFieldBuilder.php:99
msgid "Tuesday"
msgstr ""
#: jstranslations/InternalShared.php:42
#: jstranslations/ProductFieldBuilder.php:100
msgid "Wednesday"
msgstr ""
#: jstranslations/InternalShared.php:43
#: jstranslations/ProductFieldBuilder.php:101
msgid "Thursday"
msgstr ""
#: jstranslations/InternalShared.php:44
#: jstranslations/ProductFieldBuilder.php:102
msgid "Friday"
msgstr ""
#: jstranslations/InternalShared.php:45
#: jstranslations/ProductFieldBuilder.php:103
msgid "Saturday"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:2
msgid "Please select a field"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:3
msgid "Cancel"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:4
msgid "Import"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:5
msgid "Export"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:6
#: ProductFieldBuilder.php:1
msgid "Label"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:7
msgid "Image URL"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:8
msgid "Price"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:9
msgid "Sale"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:10
msgid "Price Type"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:11
msgid "Fixed amount"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:12
msgid "% of original price"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:13
msgid "% of original price + options"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:14
msgid "Settings"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:15
msgid "Conditions"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:16
msgid "Enable Show/Hide Conditions"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:17
msgid "Show"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:18
msgid "Hide"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:19
msgid "this field if"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:20
msgid "Select a field"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:21
msgid "Fields"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:22
msgid "AND"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:23
msgid "or"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:24
msgid "Add new group"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:25
msgid "Select one"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:26
msgid "Equal to"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:27
msgid "Not Equal to"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:28
msgid "Is Empty"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:29
msgid "Is Not Empty"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:30
msgid "Contains"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:31
msgid "Not Contains"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:32
msgid "Default text"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:33
#: ProductFieldBuilder.php:1
msgid "Placeholder"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:34
#: ProductFieldBuilder.php:1
msgid "Required"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:35
#: ProductFieldBuilder.php:1
msgid "Show quantity selector"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:36
#: ProductFieldBuilder.php:1
msgid "Quantity Position"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:37
msgid "Left"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:38
msgid "Right"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:39
msgid "Top"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:40
msgid "Bottom"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:41
#: ProductFieldBuilder.php:1
msgid "Default value"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:42
#: ProductFieldBuilder.php:1
msgid "Quantity Label"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:43
#: ProductFieldBuilder.php:1
msgid "0 = No Maximum"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:44
#: ProductFieldBuilder.php:1
msgid "Maximum Value"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:45
#: ProductFieldBuilder.php:1
msgid "0 = No Minimum"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:46
#: ProductFieldBuilder.php:1
msgid "Minimum Value"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:47
msgid "Price type"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:48
msgid "None (don't use this field to calculate price)"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:49
msgid "Fixed Amount"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:50
#: ProductFieldBuilder.php:1
msgid "Quantity"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:51
msgid "Current value"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:52
msgid "Percent of the original price"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:53
msgid "Percent of the original price + options"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:54
msgid "Price per word"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:55
msgid "Price per char"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:56
msgid "Sale Price (Empty = No Sale)"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:57
msgid "Percentage"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:58
msgid "Sale Percentage"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:59
msgid "Free chars"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:60
msgid "Ignore Spaces"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:61
msgid "Free words"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:62
#: ProductFieldBuilder.php:1
msgid "Hide price"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:63
#: ProductFieldBuilder.php:1
msgid "General"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:64
#: ProductFieldBuilder.php:1
msgid "Pricing"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:65
msgid "Text"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:66
#: ProductFieldBuilder.php:1
msgid "Options"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:67
msgid "Phone: (999)99-999-999"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:68
msgid "Credit Card: 9999 9999 9999 9999"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:69
msgid "Custom"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:70
msgid "9=Numbers, a=letters, *=Numbers or letters"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:71
msgid "Custom Mask"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:72
msgid "Mask Char"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:73
msgid "Image Width"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:74
msgid "Image Height"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:75
msgid "Allow Multiple"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:76
msgid "Horizontal"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:77
msgid "Vertical"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:78
#: ProductFieldBuilder.php:1
msgid "Date Format"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:79
msgid "Price Per Day"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:80
msgid "Label (Start Date)"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:81
msgid "Placeholder (Start Date)"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:82
msgid "Default Date (Start Date)"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:83
msgid "This property support two type of fields"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:84
msgid "A number, representing the number of dates from now e.g. 0 for today 1 for tomorrow"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:85
msgid "2 for the day after tomorrow and so on. It supports negative numbers as well"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:86
msgid "An specific date in the format of YYYY/MM/DD e.g. 2000/02/01 for February first of 2000"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:87
msgid "Start Date"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:88
msgid "Label (End Date)"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:89
msgid "End Date"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:90
msgid "Title"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:91
msgid "Style"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:92
msgid "Dashed"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:93
msgid "Solid"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:94
msgid "Color"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:95
msgid "Default Date"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:96
msgid "Week Start On"
msgstr ""
#: jstranslations/ProductFieldBuilder.php:104
msgid "Default Color"
msgstr ""

View File

@@ -0,0 +1,428 @@
# Copyright (C) 2012
# This file is distributed under the same license as the package.
msgid ""
msgstr ""
"Project-Id-Version: Advanced Category Column\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/advanced-category-column\n"
"POT-Creation-Date: 2016-02-17 11:35+0200\n"
"PO-Revision-Date: 2016-02-17 11:36+0200\n"
"Last-Translator: Stefan Crämer <translate@atelier-fuenf.de>\n"
"Language-Team: Waldemar Stoffel <stoffel@atelier-fuenf.de>\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 1.8.1\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SearchPath-0: .\n"
#: advanced-cc.php:112
msgid "FAQ"
msgstr "FAQ"
#: advanced-cc.php:113
msgid "Donate"
msgstr "Donar"
#: advanced-cc.php:123 class-lib/A5_OptionPageClass.php:31
#: class-lib/ACC_AdminClass.php:35
msgid "Settings"
msgstr "Ajustes"
#: class-lib/A5_ImageClass.php:48
msgid "Permalink to"
msgstr "enlace permanente a"
#: class-lib/A5_OptionPageClass.php:145
msgid "Click to toggle"
msgstr ""
#: class-lib/A5_OptionPageClass.php:382
msgid "Not set"
msgstr ""
#: class-lib/A5_WidgetClass.php:37
msgid "Homepage"
msgstr "Página de Inicio"
#: class-lib/A5_WidgetClass.php:38
msgid "Frontpage (e.g. a static page as homepage)"
msgstr ""
"Página Inicial (por ejemplo, una página estática como página de inicio)"
#: class-lib/A5_WidgetClass.php:39
msgid "&#34;Page&#34; pages"
msgstr "&#34;Pagína&#34; páginas"
#: class-lib/A5_WidgetClass.php:40
msgid "Category pages"
msgstr "Categoría de páginas"
#: class-lib/A5_WidgetClass.php:41
msgid "Single post pages"
msgstr "Páginas de post simples"
#: class-lib/A5_WidgetClass.php:42
msgid "Archive pages"
msgstr "Páginas de Archivo"
#: class-lib/A5_WidgetClass.php:43
#, fuzzy
msgid "Post type archives"
msgstr "Páginas de post simples"
#: class-lib/A5_WidgetClass.php:44
msgid "Tag pages"
msgstr "Páginas de Etiquetas"
#: class-lib/A5_WidgetClass.php:45
msgid "Attachments"
msgstr "Adjuntos"
#: class-lib/A5_WidgetClass.php:46
msgid "Custom Taxonomy pages (only available, if having a plugin)"
msgstr ""
"Páginas de Taxonomía Personalizada (sólo está disponible si tiene un plugin)"
#: class-lib/A5_WidgetClass.php:47
msgid "Author pages"
msgstr "Páginas del autor"
#: class-lib/A5_WidgetClass.php:48
msgid "Search Results"
msgstr "Buscar Resultados"
#: class-lib/A5_WidgetClass.php:49
msgid "&#34;Not Found&#34;"
msgstr "&#34;No Encontrado&#34;"
#: class-lib/A5_WidgetClass.php:52
#, fuzzy
msgid "Login Page (only available, if having a plugin)"
msgstr ""
"Páginas de Taxonomía Personalizada (sólo está disponible si tiene un plugin)"
#: class-lib/A5_WidgetClass.php:54
msgid "Check all"
msgstr "Seleccionar todo"
#: class-lib/A5_WidgetClass.php:56
msgid ""
"Check, where you want to show the widget. By default, it is showing on the "
"homepage and the category pages:"
msgstr ""
"Seleccione, dónde desea mostrar el widget. Por defecto, se muestra en la "
"página principal y en las páginas de la categoría:"
#: class-lib/A5_WidgetClass.php:92
msgid "Under image"
msgstr ""
#: class-lib/A5_WidgetClass.php:92
msgid "Left of image"
msgstr ""
#: class-lib/A5_WidgetClass.php:92
msgid "Right of image"
msgstr ""
#: class-lib/A5_WidgetClass.php:92
msgid "Don&#39;t show excerpt"
msgstr ""
#: class-lib/A5_WidgetClass.php:94
msgid ""
"Choose, whether or not to display the excerpt and whether it comes under the "
"thumbnail or next to it."
msgstr ""
#: class-lib/A5_WidgetClass.php:104
msgid "Weight of the Post Title:"
msgstr "Peso del título del Post:"
#: class-lib/A5_WidgetClass.php:108
msgid "Left"
msgstr ""
#: class-lib/A5_WidgetClass.php:108
msgid "Right"
msgstr ""
#: class-lib/A5_WidgetClass.php:108
msgid "Center"
msgstr ""
#: class-lib/A5_WidgetClass.php:108
msgid "Justify"
msgstr ""
#: class-lib/A5_WidgetClass.php:110
msgid "How do you want to align the Post Title?"
msgstr ""
#: class-lib/A5_WidgetClass.php:121
msgid ""
"Check to have an additional &#39;read more&#39; link at the end of the "
"excerpt."
msgstr ""
#: class-lib/A5_WidgetClass.php:122
#, php-format
msgid ""
"Write here some text for the &#39;read more&#39; link. By default, it is %s:"
msgstr ""
#: class-lib/A5_WidgetClass.php:123
msgid ""
"If you want to style the &#39;read more&#39; link, you can enter a class "
"here."
msgstr ""
#: class-lib/ACC_AdminClass.php:63
msgid ""
"http://wasistlos.waldemarstoffel.com/plugins-fur-wordpress/advanced-category-"
"column-plugin"
msgstr ""
"http://wasistlos.waldemarstoffel.com/plugins-fur-wordpress/advanced-category-"
"column-plugin"
#: class-lib/ACC_AdminClass.php:63
msgid "Plugin Support"
msgstr ""
#: class-lib/ACC_AdminClass.php:65
msgid ""
"Style the links of the widget. If you leave this empty, your theme will "
"style the hyperlinks."
msgstr ""
"El estilo de los enlaces del widget. Si deja el campo vacío, el tema será el "
"mismo estilo de los hipervínculos."
#: class-lib/ACC_AdminClass.php:67
msgid "Just input something like,"
msgstr "Sólo algo de entrada como,"
#: class-lib/ACC_AdminClass.php:71
msgid "to get fat, blue, underlined links."
msgstr "Los enlaces serán, azul subrayado."
#: class-lib/ACC_AdminClass.php:73
msgid ""
"You most probably have to use &#34;!important&#34; at the end of each line, "
"to make it work."
msgstr ""
"Lo más probable es usar &#34;!important&#34; al final de cada línea, para "
"hacer que funcione."
#: class-lib/ACC_AdminClass.php:86
msgid "Debug Info"
msgstr ""
#: class-lib/ACC_AdminClass.php:105
msgid "Styling of the links"
msgstr "Estilo de los enlaces"
#: class-lib/ACC_AdminClass.php:107
msgid "Link style:"
msgstr "Estílo enlace:"
#: class-lib/ACC_AdminClass.php:109
msgid "Hover style:"
msgstr "Estilo hover:"
#: class-lib/ACC_AdminClass.php:111
msgid "Widget container:"
msgstr ""
#: class-lib/ACC_AdminClass.php:111
msgid ""
"You can enter your own style for the widgets here. This will overwrite the "
"styles of your theme."
msgstr ""
#: class-lib/ACC_AdminClass.php:111
msgid ""
"If you leave this empty, you can still style every instance of the widget "
"individually."
msgstr ""
#: class-lib/ACC_AdminClass.php:113
#, fuzzy
msgid "Compress Style Sheet:"
msgstr "Estílo enlace:"
#: class-lib/ACC_AdminClass.php:113
msgid "Click here to compress the style sheet."
msgstr ""
#: class-lib/ACC_AdminClass.php:115
msgid "Debug:"
msgstr ""
#: class-lib/ACC_AdminClass.php:115
msgid ""
"If you can&#39;t reach the dynamical style sheet, you&#39;ll have to display "
"the styles inline. By clicking here you can do so."
msgstr ""
#: class-lib/ACC_AdminClass.php:119
msgid "entries"
msgstr ""
#: class-lib/ACC_AdminClass.php:119
msgid "entry"
msgstr ""
#: class-lib/ACC_AdminClass.php:121
#, php-format
msgid "Empty cache (%d %s):"
msgstr ""
#: class-lib/ACC_AdminClass.php:121
msgid "You can empty the plugin&#39;s cache here, if necessary."
msgstr ""
#: class-lib/ACC_AdminClass.php:129
msgid "Just put some css code here."
msgstr "Sólo hay que poner algo de código CSS aquí."
#: class-lib/ACC_AdminClass.php:189
msgid "Cache emptied."
msgstr ""
#: class-lib/ACC_WidgetClass.php:18
msgid ""
"Configure the output and looks of the widget. Then display thumbnails and "
"excerpts of posts in your sidebars and define, on what kind of pages they "
"will show."
msgstr ""
"Configure la salida y la apariencia del widget. Entonces se mostrarán las "
"miniaturas y extractos de los mensajes en las barras laterales y se definirá "
"en qué tipo de páginas se mostrarán."
#: class-lib/ACC_WidgetClass.php:108
msgid "Title:"
msgstr "Título:"
#: class-lib/ACC_WidgetClass.php:109
#, php-format
msgid ""
"To exclude certain categories or to show just a special category, simply "
"write their ID&#39;s separated by comma (e.g. %s-5, 2, 4%s will show "
"categories 2 and 4 and will exclude category 5):"
msgstr ""
"Para excluir ciertas categorías o para mostrar sólo una categoría especial, "
"basta con escribir su ID separado por coma (por ejemplo,%s-5, 2, 4%s "
"mostrará las categorías 2 y 4, y se excluye la categoría 5):"
#: class-lib/ACC_WidgetClass.php:110
msgid "Check to show the categories in which the post is filed."
msgstr "Seleccione para mostrar las categorías en que se presenta el mensaje."
#: class-lib/ACC_WidgetClass.php:111
msgid ""
"Give some text that you want in front of the post&#39;s categtories (i.e "
"&#39;filed under&#39;:"
msgstr ""
"De algún texto que usted quiere al frente de la categoría de mensajes (ej. "
"&#39;llenado debajo&#39;:"
#: class-lib/ACC_WidgetClass.php:112
msgid "How many posts will be displayed in the sidebar:"
msgstr "Cuántos post se mostrarán en la barra lateral:"
#: class-lib/ACC_WidgetClass.php:113
msgid "Offset (how many posts are spared out in the beginning):"
msgstr "Offset (cuántos post están a salvo en el inicio):"
#: class-lib/ACC_WidgetClass.php:114
msgid "Check to have the offset only on your homepage."
msgstr ""
"Verificación para que el desplazamiento sólo sea en la página principal."
#: class-lib/ACC_WidgetClass.php:115
msgid "Width of the thumbnail (in px):"
msgstr "Ancho de las miniaturas (en px)"
#: class-lib/ACC_WidgetClass.php:116
#, php-format
msgid ""
"If wanting a border around the image, write the style here. %s would make it "
"a black border, 1px wide."
msgstr ""
#: class-lib/ACC_WidgetClass.php:118
msgid "In case there is no excerpt defined, how many sentences are displayed:"
msgstr ""
"En caso de que no haya extracto definido, como cuantas frases se muestran:"
#: class-lib/ACC_WidgetClass.php:119
msgid "Check to display words instead of sentences."
msgstr "Seleccione para mostrar palabras en lugar de oraciones."
#: class-lib/ACC_WidgetClass.php:120
msgid "Check to have each sentense in a new line."
msgstr "Seleccione para tener cada sentencia en una línea nueva."
#: class-lib/ACC_WidgetClass.php:122
msgid ""
"Check to return the excerpt unfiltered (might avoid interferences with other "
"plugins)."
msgstr ""
"Seleccione para retornar el extracto sin filtrar (puede evitar "
"interferencias con otros plugins)."
#: class-lib/ACC_WidgetClass.php:123
msgid ""
"If you want a line between the posts, this is the height in px (if not "
"wanting a line, leave emtpy):"
msgstr ""
"Si usted quiere una línea entre los posts, esta es la altura en píxeles (si "
"no quisiera una línea, deje en blanco)"
#: class-lib/ACC_WidgetClass.php:124
msgid "The color of the line (e.g. #cccccc):"
msgstr "El color de la línea (e.g. #cccccc):"
#: class-lib/ACC_WidgetClass.php:126
#, fuzzy, php-format
msgid ""
"Here you can finally style the widget. Simply type something like%sto get "
"just a gray outline and a padding of 10 px. If you leave that section empty, "
"your theme will style the widget."
msgstr ""
"Aquí usted puede finalmente ver el estilo del widget. Simplemente escriba "
"algo como%1$s%2$sborder-left: 1px dashed;%2$sborder-color: #000000;%3$s"
"%2$spara obtener una línea de puntos negro de la izquierda. Si deja la "
"sección vacía, su tema le dará estilo al widget."
#~ msgid ""
#~ "The Advanced Category Column does, what the Category Column Plugin does; "
#~ "it creates a widget, which you can drag to your sidebar and it will show "
#~ "excerpts of the posts of other categories than showed in the center-"
#~ "column. It just has more options than the the Category Column Plugin. It "
#~ "is tested with WP up to version 3.5 and it might work with versions down "
#~ "to 2.9, but will never be explicitly supported for those. The 'Advanced' "
#~ "means, that you have a couple of more options than in the 'Category "
#~ "Column Plugin'."
#~ msgstr ""
#~ "La Columna Categoría Avanzada hace, lo que hace el Plugin de Columna de "
#~ "Categoría, se crea un widget, que se puede arrastrar a la barra lateral y "
#~ "se mostrarán extractos de los mensajes de otras categorías que se "
#~ "mostraron en la columna del centro. Simplemente tiene más opciones que el "
#~ "Plugin de Columna de Categoría. Se probó con WP hasta la versión 3.5 y "
#~ "que podría funcionar con las versiones hasta la 2.9, pero nunca se probó "
#~ "explícitamente en aquellos. Los menús 'Avanzados' significan, que tiene "
#~ "un par de opciones más que el 'Plugin de Columna de Categoría'."
#~ msgid "Waldemar Stoffel"
#~ msgstr "Waldemar Stoffel"
#~ msgid "http://www.waldemarstoffel.com"
#~ msgstr "http://www.waldemarstoffel.com"

View File

@@ -0,0 +1,54 @@
# Copyright (C) 2020 Mainul Hassan Main
# This file is distributed under the GPLv3.
msgid ""
msgstr ""
"Project-Id-Version: Advanced WP Table 1.0.1\n"
"Report-Msgid-Bugs-To: "
"https://wordpress.org/support/plugin/advanced-wp-table\n"
"POT-Creation-Date: 2020-03-15 09:43:34+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"X-Generator: grunt-wp-i18n 0.5.4\n"
"X-Poedit-KeywordsList: "
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Country: United States\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-Basepath: ../\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-Bookmarks: \n"
"X-Textdomain-Support: yes\n"
#. Plugin Name of the plugin/theme
msgid "Advanced WP Table"
msgstr ""
#: advanced-wp-table.php:254
msgid "Advanced WP Table plugin requires WordPress version 5.0 or greater."
msgstr ""
#: includes/settings.php:25 includes/settings.php:26
msgid "Tables"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "https://wordpress.org/plugins/advanced-wp-table"
msgstr ""
#. Description of the plugin/theme
msgid "Create responsive tables using Gutenberg."
msgstr ""
#. Author of the plugin/theme
msgid "Mainul Hassan Main"
msgstr ""
#. Author URI of the plugin/theme
msgid "https://mainulhassan.info"
msgstr ""

View File

@@ -0,0 +1,2 @@
February 20, 2020 Version 1.0
- Version 1.0 Initial Release

View File

@@ -0,0 +1,53 @@
# Copyright (C) 2013 Allow Javascript in Text Widgets
# This file is distributed under the same license as the Allow Javascript in Text Widgets package.
msgid ""
msgstr ""
"Project-Id-Version: Allow Javascript in Text Widgets 0.3\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/allow-javascript-in-text-"
"widgets\n"
"POT-Creation-Date: 2013-12-17 09:48:40+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: allow-javascript-in-text-widgets.php:20
msgid "Arbitrary text or HTML"
msgstr ""
#: allow-javascript-in-text-widgets.php:22
msgid "Text"
msgstr ""
#: allow-javascript-in-text-widgets.php:49
msgid "Title:"
msgstr ""
#: allow-javascript-in-text-widgets.php:54
msgid "Automatically add paragraphs"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "Allow Javascript in Text Widgets"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "http://philipjohn.co.uk/#pj-better-multisite-text-widget"
msgstr ""
#. Description of the plugin/theme
msgid ""
"Replaces the default text widget with one that allows Javascript so you can "
"do basic things like add Google Ads to your sidebar without using other "
"plugins."
msgstr ""
#. Author of the plugin/theme
msgid "Philip John"
msgstr ""
#. Author URI of the plugin/theme
msgid "http://philipjohn.co.uk"
msgstr ""

View File

@@ -0,0 +1,10 @@
# Changelog
## 0.2 - 30.03.2019
- Added option to control where generic report would be sent and to define interval of such email
- Added generic report with multiple summary information send directly to email
## 0.1 11.02.2019
First release.

View File

@@ -0,0 +1,7 @@
# Changelog
All notable changes to **APCu Manager** are documented in this *changelog*.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and **APCu Manager** adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.0] - 2020-01-09
### Initial release

View File

@@ -0,0 +1,81 @@
msgid ""
msgstr ""
"Project-Id-Version: Archive Disabler 1.0\n"
"Report-Msgid-Bugs-To: https://github.com/chrisguitarguy/Archive-Disabler/issues\n"
"POT-Creation-Date: 2012-03-11 15:35-0600\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>"
"Language: \n"
#: inc/options.php:67
msgid "Archive Disabler Options"
msgstr ""
#: inc/options.php:72
msgid "Date Archives"
msgstr ""
#: inc/options.php:73
msgid "Author Archives"
msgstr ""
#: inc/options.php:74
msgid "Taxonomy Archives"
msgstr ""
#: inc/options.php:77
msgid "Post Type Archives"
msgstr ""
#: inc/options.php:79
msgid "Disabled archives should..."
msgstr ""
#: inc/options.php:92
msgid "Choose which archives you would like to disable."
msgstr ""
#: inc/options.php:107
msgid "Disable Date Archives"
msgstr ""
#: inc/options.php:121
msgid "Disable Author Archives"
msgstr ""
#: inc/options.php:154
msgid "Redirect to the home page"
msgstr ""
#: inc/options.php:155
msgid "Throw a 404 Not Found Error"
msgstr ""
#: inc/options.php:210
msgid "Archive Disabler"
msgstr ""
#: inc/options.php:225
msgid "Archive Disabler allows you to \"disable\" the various WordPress archive pages. To do so, check the archives you wish to have disabled below."
msgstr ""
#: inc/options.php:231
msgid "Depending on your options, the disabled archives will redirect to the home page or simply 404. Redirecting archives, especially if they were previously enabled, is recommended."
msgstr ""
#: inc/options.php:237
#, php-format
msgid "Learn more about the author of Archive Disabler, %s. Problems? Report bugs here: %s"
msgstr ""
#: inc/options.php:256
msgid "Settings"
msgstr ""
#: inc/options.php:333
#, php-format
msgid "Disable %s Archives"
msgstr ""

View File

@@ -0,0 +1,57 @@
# Copyright (C) 2010 Assign Missing Categories
# This file is distributed under the same license as the Assign Missing Categories package.
msgid ""
msgstr ""
"Project-Id-Version: Assign Missing Categories 1.2\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/assign-missing-categories\n"
"POT-Creation-Date: 2011-07-29 20:58:37+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: assign-missing-categories.php:54
msgid "Categories assigned."
msgstr ""
#. #-#-#-#-# plugin.pot (Assign Missing Categories 1.2) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: assign-missing-categories.php:60 assign-missing-categories.php:84
msgid "Assign Missing Categories"
msgstr ""
#: assign-missing-categories.php:66
msgid "Assign the default category &raquo;"
msgstr ""
#: assign-missing-categories.php:92
msgid "Post %d has no categories assigned."
msgstr ""
#: assign-missing-categories.php:94
msgid " Assigned default category.<br />"
msgstr ""
#: assign-missing-categories.php:96
msgid "Post %d has a category assigned.<br />"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "http://sillybean.net/code/"
msgstr ""
#. Description of the plugin/theme
msgid ""
"Assigns categories to posts incorrectly stripped of all categories (showing "
"unlinked \"Uncategorized\" under Posts)."
msgstr ""
#. Author of the plugin/theme
msgid "Stephanie Leary"
msgstr ""
#. Author URI of the plugin/theme
msgid "http://sillybean.net/"
msgstr ""

View File

@@ -0,0 +1,479 @@
# Copyright (C) 2020 Mewz
# This file is distributed under the same license as the Attribute Stock for WooCommerce plugin.
msgid ""
msgstr ""
"Project-Id-Version: Attribute Stock for WooCommerce 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/attribute-stock-for-woocommerce\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2020-01-07T12:52:16+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.4.0\n"
"X-Domain: attribute-stock-for-woocommerce\n"
#. Plugin Name of the plugin
msgid "Attribute Stock for WooCommerce"
msgstr ""
#. Plugin URI of the plugin
msgid "https://wordpress.org/plugins/attribute-stock-for-woocommerce/"
msgstr ""
#. Description of the plugin
msgid "Take control of your product stock with flexible attribute-based stock. Easily track product addons, parts, ingredients, combos, and much more!"
msgstr ""
#. Author of the plugin
msgid "Mewz"
msgstr ""
#. Author URI of the plugin
msgid "https://mewz.dev/"
msgstr ""
#: src/Actions/Admin/AttributeList.php:45
#: src/Actions/Admin/AttributeTermList.php:62
msgid "Edit stock"
msgstr ""
#: src/Actions/Admin/AttributeList.php:51
#: src/Actions/Admin/AttributeTermList.php:76
msgid "List stock items"
msgstr ""
#: src/Actions/Admin/AttributeTermList.php:31
#: src/Actions/Admin/AttributeTermList.php:34
#: src/Actions/Admin/StockList.php:29
#: src/Components/StockReport.php:16
#: templates/admin/attributes/edit-associated.php:25
msgid "Stock"
msgstr ""
#: src/Actions/Admin/AttributeTermList.php:62
msgid "Edit attribute-level stock"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:17
#: src/Actions/Admin/PluginSupport.php:54
#: src/Actions/Admin/PluginSupport.php:56
msgid "Documentation"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:20
msgid "Unlock PRO"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:41
#: src/Actions/Admin/PluginSupport.php:43
msgid "Help & Support"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:44
msgid "Need assistance setting up your attribute stock? Found a bug and want to report it? Just feel like chatting? Get in touch!"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:46
msgid "Priority support"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:47
msgid "Community forum"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:57
msgid "Want to learn more about Attribute Stock for WooCommerce? Check out the official online documentation."
msgstr ""
#: src/Actions/Admin/PluginSupport.php:59
msgid "Online documentation"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:66
#: src/Actions/Admin/PluginSupport.php:68
msgid "Manage License"
msgstr ""
#: src/Actions/Admin/PluginSupport.php:69
msgid "View your PRO license, migrate a license, update payment information or cancel your subscription."
msgstr ""
#: src/Actions/Admin/PluginSupport.php:71
msgid "Member dashboard"
msgstr ""
#: src/Actions/Admin/ReportStock.php:22
msgid "Attribute Stock"
msgstr ""
#: src/Actions/Admin/ReportStockPro.php:19
#: src/Actions/Admin/StockList.php:28
#: templates/admin/attributes/edit-associated.php:24
#: templates/admin/stock/panel-inventory.php:7
msgid "SKU"
msgstr ""
#: src/Actions/Admin/ReportStockPro.php:21
#: src/Actions/Admin/StockList.php:27
msgid "Actions"
msgstr ""
#: src/Actions/Admin/ReportStockPro.php:34
msgid "Edit attribute stock"
msgstr ""
#: src/Actions/Admin/StockBulkActions.php:26
msgid "Enable"
msgstr ""
#: src/Actions/Admin/StockBulkActions.php:30
msgid "Disable"
msgstr ""
#: src/Actions/Admin/StockBulkActions.php:73
msgid "%d attribute stock enabled."
msgid_plural "%d attribute stocks enabled."
msgstr[0] ""
msgstr[1] ""
#: src/Actions/Admin/StockBulkActions.php:75
msgid "%d attribute stock disabled."
msgid_plural "%d attribute stocks disabled."
msgstr[0] ""
msgstr[1] ""
#: src/Actions/Admin/StockBulkActions.php:81
msgid "No disabled attribute stocks to enable."
msgstr ""
#: src/Actions/Admin/StockBulkActions.php:83
msgid "No enabled attribute stocks to disable."
msgstr ""
#: src/Actions/Admin/StockBulkActions.php:93
msgid "%d attribute stock updated."
msgid_plural "%d attribute stocks updated."
msgstr[0] ""
msgstr[1] ""
#: src/Actions/Admin/StockBulkActions.php:94
msgid "%d attribute stock not updated, somebody is editing it."
msgid_plural "%d attribute stocks not updated, somebody is editing them."
msgstr[0] ""
msgstr[1] ""
#: src/Actions/Admin/StockBulkActions.php:95
msgid "%d attribute stock permanently deleted."
msgid_plural "%d attribute stocks permanently deleted."
msgstr[0] ""
msgstr[1] ""
#: src/Actions/Admin/StockBulkActions.php:96
msgid "%d attribute stock moved to the Trash."
msgid_plural "%d attribute stocks moved to the Trash."
msgstr[0] ""
msgstr[1] ""
#: src/Actions/Admin/StockBulkActions.php:97
msgid "%d attribute stock restored from the Trash."
msgid_plural "%d attribute stocks restored from the Trash."
msgstr[0] ""
msgstr[1] ""
#: src/Actions/Admin/StockEdit.php:45
msgid "Status"
msgstr ""
#: src/Actions/Admin/StockEdit.php:46
msgid "Stock details"
msgstr ""
#: src/Actions/Admin/StockEdit.php:64
msgid "Inventory"
msgstr ""
#: src/Actions/Admin/StockEdit.php:65
msgid "Attributes"
msgstr ""
#: src/Actions/Admin/StockEdit.php:66
msgid "Settings"
msgstr ""
#: src/Actions/Admin/StockEdit.php:122
#: src/Actions/Admin/StockEdit.php:125
#: src/Actions/Admin/StockEdit.php:127
#: src/Actions/Admin/StockEdit.php:135
msgid "Attribute stock updated."
msgstr ""
#: src/Actions/Admin/StockEdit.php:123
msgid "Attribute stock field updated."
msgstr ""
#: src/Actions/Admin/StockEdit.php:124
msgid "Attribute stock field deleted."
msgstr ""
#: src/Actions/Admin/StockEdit.php:126
msgid "Revision restored."
msgstr ""
#: src/Actions/Admin/StockEdit.php:128
msgid "Attribute stock saved."
msgstr ""
#: src/Actions/Admin/StockEdit.php:129
msgid "Attribute stock submitted."
msgstr ""
#. translators: %s: date
#: src/Actions/Admin/StockEdit.php:132
msgid "Attribute stock scheduled for: %s."
msgstr ""
#: src/Actions/Admin/StockEdit.php:151
#: src/Actions/Admin/StockEdit.php:177
msgid "Back to attribute stock"
msgstr ""
#: src/Actions/Admin/StockEdit.php:155
msgid "Back to \"%s\" attribute term"
msgstr ""
#: src/Actions/Admin/StockEdit.php:157
msgid "Back to attribute term"
msgstr ""
#: src/Actions/Admin/StockEdit.php:162
msgid "Back to \"%s\" attribute terms"
msgstr ""
#: src/Actions/Admin/StockEdit.php:164
msgid "Back to attribute terms"
msgstr ""
#: src/Actions/Admin/StockEdit.php:169
msgid "Back to \"%s\" attribute"
msgstr ""
#: src/Actions/Admin/StockEdit.php:171
msgid "Back to attribute"
msgstr ""
#: src/Actions/Admin/StockList.php:30
#: templates/admin/stock/panel-inventory.php:29
msgid "Notes"
msgstr ""
#: src/Actions/Admin/StockList.php:31
#: templates/admin/stock/metabox-status.php:21
msgid "Created"
msgstr ""
#: src/Actions/Admin/StockList.php:105
#: src/Actions/Admin/StockListFilters.php:22
#: templates/admin/attributes/edit-associated.php:39
msgid "Disabled"
msgstr ""
#: src/Actions/Admin/StockListActions.php:40
msgid "Duplicate"
msgstr ""
#: src/Actions/Admin/StockListActions.php:91
msgid "Sorry, this attribute stock item does not exist. Perhaps it was deleted?"
msgstr ""
#: src/Actions/Admin/StockListActions.php:95
msgid "Sorry, you are not allowed to do that."
msgstr ""
#: src/Actions/Admin/StockListFilters.php:21
#: templates/admin/stock/metabox-status.php:10
msgid "Enabled"
msgstr ""
#: src/Actions/Admin/StockListFilters.php:112
msgid "\"Any\""
msgstr ""
#: src/Actions/StockNotifications.php:45
msgid "Attribute out of stock"
msgstr ""
#: src/Actions/StockNotifications.php:46
#: src/Actions/StockNotificationsPro.php:18
msgid "%s is out of stock."
msgstr ""
#: src/Actions/StockNotifications.php:62
msgid "Attribute low in stock"
msgstr ""
#: src/Actions/StockNotifications.php:63
#: src/Actions/StockNotificationsPro.php:27
msgid "%s is low in stock. There is %d left."
msgid_plural "%s is low in stock. There are %d left."
msgstr[0] ""
msgstr[1] ""
#: src/Components/StockReport.php:15
#: templates/admin/attributes/edit-associated.php:23
msgid "Title"
msgstr ""
#: src/Components/StockReport.php:90
msgid "No low in stock attributes found."
msgstr ""
#: src/Components/StockReport.php:94
msgid "No out of stock attributes found."
msgstr ""
#: src/Components/StockReport.php:98
msgid "No most stocked attributes found."
msgstr ""
#: src/Plugin/Loader.php:34
#: src/Plugin/LoaderPro.php:32
msgid "WooCommerce attribute stock items."
msgstr ""
#: src/Plugin/Loader.php:36
#: src/Plugin/LoaderPro.php:34
msgctxt "post type general name"
msgid "Attribute Stock"
msgstr ""
#: src/Plugin/Loader.php:37
#: src/Plugin/LoaderPro.php:35
msgctxt "post type singular name"
msgid "Attribute Stock"
msgstr ""
#: src/Plugin/Loader.php:38
#: src/Plugin/LoaderPro.php:36
msgctxt "mewz_attribute_stock"
msgid "Add New"
msgstr ""
#: templates/admin/attributes/add-fields.php:13
#: templates/admin/attributes/edit-associated.php:60
#: templates/admin/attributes/edit-fields.php:26
msgid "Unlock Pro"
msgstr ""
#: templates/admin/attributes/add-fields.php:18
#: templates/admin/attributes/edit-fields.php:32
msgid "Enable stock management at the attribute level."
msgstr ""
#: templates/admin/attributes/add-fields.php:20
#: templates/admin/attributes/edit-fields.php:34
msgid "Enable stock management at the attribute term level."
msgstr ""
#: templates/admin/attributes/add-fields.php:33
#: templates/admin/attributes/edit-fields.php:51
msgid "Current stock quantity of this attribute."
msgstr ""
#: templates/admin/attributes/add-fields.php:35
#: templates/admin/attributes/edit-fields.php:53
msgid "Current stock quantity of this attribute term."
msgstr ""
#: templates/admin/attributes/edit-associated.php:16
msgid "Associated stock"
msgstr ""
#: templates/admin/attributes/edit-fields.php:24
msgid "Configure"
msgstr ""
#: templates/admin/stock/metabox-status.php:34
msgid "Update Stock"
msgstr ""
#: templates/admin/stock/metabox-status.php:34
msgid "Create Stock"
msgstr ""
#: templates/admin/stock/panel-inventory.php:10
msgid "Unique identifier for stock keeping. Optional."
msgstr ""
#: templates/admin/stock/panel-inventory.php:16
msgid "Stock quantity"
msgstr ""
#: templates/admin/stock/panel-inventory.php:23
msgid "Current stock quantity of this attribute stock item."
msgstr ""
#: templates/admin/stock/panel-inventory.php:33
msgid "Internal notes about this attribute stock item."
msgstr ""
#: templates/admin/stock/panel-settings.php:14
msgid "All product types"
msgstr ""
#: templates/admin/stock/panel-settings.php:15
msgid "Product type(s) to match against. All other product types will be ignored by this attribute stock. Leave blank to match all valid product types."
msgstr ""
#: templates/admin/stock/panel-settings.php:29
msgid "When stock reaches this amount or less, you will be notified by email (if enabled)."
msgstr ""
#: templates/admin/stock/panel-settings.php:38
msgid "Limits available stock quantity of associated products."
msgstr ""
#: templates/admin/stock/panel-settings.php:38
msgid "Learn more"
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Add match"
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Drag to re-order"
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Remove match set"
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Attribute..."
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Any %s"
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Term..."
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Remove attribute"
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Add attribute"
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Quantity multiplier"
msgstr ""
#: assets/dist/admin/stock-edit.js:12
msgid "Set how much stock is reduced when a matching product is purchased. Decimal values are also allowed."
msgstr ""

View File

@@ -0,0 +1,302 @@
# Translation of the WordPress plugin Author Image(s) v3.6 by Scott Reilly.
# Copyright (C) 2011 Scott Reilly
# This file is distributed under the same license as the Author Image(s) plugin.
msgid ""
msgstr ""
"Project-Id-Version: Author Image(s) 3.6\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/author-images\n"
"POT-Creation-Date: 2012-01-04 05:55:04+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: author-images.php:125 author-images.php:126
msgid "Author Images"
msgstr ""
#: author-images.php:130
msgid "Show author name as well?"
msgstr ""
#: author-images.php:131
msgid ""
"Should the author's name be shown in addition to the author's image? By "
"default this is their configured display name."
msgstr ""
#: author-images.php:133
msgid "Force use of author's full name when displaying name?"
msgstr ""
#: author-images.php:134
msgid ""
"If showing the user's name, force display of their full name instead of "
"their configured display name (which may be a nickname or first name)? "
"<em>NOTE: \"Show author name as well?\" must be checked for this to take "
"effect.)</em>"
msgstr ""
#: author-images.php:136
msgid "Show author name if no image is found?"
msgstr ""
#: author-images.php:137
msgid "Should the author's name be shown if the author's image can't be found?"
msgstr ""
#: author-images.php:140
msgid "Image linking"
msgstr ""
#: author-images.php:141
msgid ""
"How should the author's image be linked?<br />posts : link to the archive of "
"the author's posts<br />site : link to the author's website (if defined for "
"the author)<br />none : don't link the author image"
msgstr ""
#: author-images.php:143
msgid "Image width"
msgstr ""
#: author-images.php:144
msgid ""
"Specify this to force the browser to scale the width of the image to this "
"size. If blank, then the image's original width will be left intact (or "
"scaled in proportion to a specified height)."
msgstr ""
#: author-images.php:146
msgid "Image height"
msgstr ""
#: author-images.php:147
msgid ""
"Specify this to force the browser to scale the height of the image to this "
"size. If blank, then the image's original height will be left intact (or "
"scaled in proportion to a specified width)."
msgstr ""
#: author-images.php:149
msgid "Supported image extensions"
msgstr ""
#: author-images.php:150
msgid ""
"Space-separated list of possible image extensions for image. More efficient "
"if you only include extensions you'll actually use."
msgstr ""
#: author-images.php:152
msgid "Image directory"
msgstr ""
#: author-images.php:153
msgid ""
"Directory, relative to the wp-content/ directory of your site, containing "
"the author images."
msgstr ""
#: author-images.php:155
msgid "Use Gravatar image if possible?"
msgstr ""
#: author-images.php:156
msgid ""
"If the plugin is unable to find an image for the author, should it try to "
"find a Gravatar for the author?"
msgstr ""
#: author-images.php:158
msgid "Blank image"
msgstr ""
#: author-images.php:159
msgid ""
"Image to use if absolutely no author-specific image could be found. This is "
"the final fallback."
msgstr ""
#: author-images.php:161
msgid "Custom field name for overriding author image"
msgstr ""
#: author-images.php:162
msgid ""
"If this custom field is specified for a post, its value will be given "
"preference as the potential author image, should the image file exist."
msgstr ""
#: author-images.php:275
msgid "Template Functions"
msgstr ""
#. #-#-#-#-# author-images.pot (Author Image(s) 3.6) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: author-images.widget.php:33
msgid "Author Image(s)"
msgstr ""
#: author-images.widget.php:34
msgid "Display image (if present) and/or name for all authors on the blog."
msgstr ""
#: author-images.widget.php:43
msgid "Authors"
msgstr ""
#: author-images.widget.php:44
msgid "Title"
msgstr ""
#: author-images.widget.php:46
msgid "Exclude admin?"
msgstr ""
#: author-images.widget.php:47
msgid "Prevent admin accounts from being listed?"
msgstr ""
#: author-images.widget.php:49
msgid "Ignore authors who have't published a post?"
msgstr ""
#: author-images.widget.php:50
msgid "Omits showing image for authors who have not published a post."
msgstr ""
#: author-images.widget.php:52
msgid "Show user's name?"
msgstr ""
#: author-images.widget.php:53
msgid ""
"Also show the user's name? By default this is their configured display name."
msgstr ""
#: author-images.widget.php:55
msgid "Show user's full name?"
msgstr ""
#: author-images.widget.php:56
msgid ""
"If showing the user's name, force display of their full name instead of "
"their configured display name (which may be a nickname or first name)? "
"<em>NOTE: \"Show user's name?\" must be checked for this to take effect.)</"
"em>"
msgstr ""
#: author-images.widget.php:58
msgid "Show user's name if no image is found?"
msgstr ""
#: author-images.widget.php:59
msgid ""
"Should the author's name be shown if the author doesn't have an image? If "
"not checked, then authors without an image are omitted from the listing."
msgstr ""
#: author-images.widget.php:61
msgid "Use Gravatar?"
msgstr ""
#: author-images.widget.php:62
msgid "Ask Gravatar for author image if no local image is found?"
msgstr ""
#: c2c-plugin.php:76
msgid "Invalid file specified for C2C_Plugin: %s"
msgstr ""
#: c2c-plugin.php:296
msgid "See the \"Help\" link to the top-right of the page for more help."
msgstr ""
#: c2c-plugin.php:329
msgid "Settings reset."
msgstr ""
#: c2c-plugin.php:340 c2c-plugin.php:348
msgid "A value is required for: \"%s\""
msgstr ""
#: c2c-plugin.php:357
msgid "Expected integer value for: %s"
msgstr ""
#: c2c-plugin.php:469
msgid "More information about %1$s %2$s"
msgstr ""
#: c2c-plugin.php:470
msgid "Click for more help on this plugin"
msgstr ""
#: c2c-plugin.php:471
msgid " (especially check out the \"Other Notes\" tab, if present)"
msgstr ""
#: c2c-plugin.php:585
msgid "More Help"
msgstr ""
#: c2c-plugin.php:597
msgid "Settings"
msgstr ""
#: c2c-plugin.php:609
msgid "Donation for coffee2code plugin: %s"
msgstr ""
#: c2c-plugin.php:610
msgid "Coffee fuels my coding."
msgstr ""
#: c2c-plugin.php:848
msgid "A plugin by coffee2code"
msgstr ""
#: c2c-plugin.php:857
msgid "Save Changes"
msgstr ""
#: c2c-plugin.php:858
msgid "Reset Settings"
msgstr ""
#: c2c-plugin.php:864
msgid "Scott Reilly, aka coffee2code"
msgstr ""
#: c2c-plugin.php:865
msgid "This plugin brought to you by %s."
msgstr ""
#: c2c-plugin.php:866
msgid "Please consider a donation"
msgstr ""
#: c2c-plugin.php:867
msgid "Did you find this plugin useful?"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "http://coffee2code.com/wp-plugins/author-images/"
msgstr ""
#. Description of the plugin/theme
msgid ""
"Display image (if present) and/or name for the author of a post, or for all "
"authors on the blog."
msgstr ""
#. Author of the plugin/theme
msgid "Scott Reilly"
msgstr ""
#. Author URI of the plugin/theme
msgid "http://coffee2code.com/"
msgstr ""

View File

@@ -0,0 +1,25 @@
# AutoTags POT file.
# Copyright (C) 2009 blog.jaric.tw
# This file is distributed under the GPL license.
"Project-Id-Version: AutoTags 1.0\n"
"Report-Msgid-Bugs-To: jarickuo@gmail.com\n"
"POT-Creation-Date: 2009-07-16 18:00+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Jaric <jarickuo@gmail.com>\n"
"Language-Team: Jaric <jarickuo@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: wp-content/plugins/autotags/autoTags.php:24
msgid "Fetch tags"
msgstr ""
#: wp-content/plugins/autotags/autoTags.php:25
msgid "Fetching tags..."
msgstr ""
#: wp-content/plugins/autotags/autoTags.php:26
msgid "powered by"
msgstr ""

View File

@@ -0,0 +1,113 @@
msgid ""
msgstr ""
"Project-Id-Version: AvatarPlus v0.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2013-02-24 09:53:02+0000\n"
"Last-Translator: verantwortlicher <neun12@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: CSL v1.x\n"
"X-Poedit-Language: German\n"
"X-Poedit-Country: GERMANY\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
"X-Poedit-Basepath: ../\n"
"X-Poedit-Bookmarks: \n"
"X-Poedit-SearchPath-0: .\n"
"X-Textdomain-Support: yes"
#. translators: plugin header field 'Name'
#: avatarplus.php:0
#@ avatarplus
msgid "AvatarPlus"
msgstr ""
#. translators: plugin header field 'PluginURI'
#. translators: plugin header field 'AuthorURI'
#: avatarplus.php:0
#@ avatarplus
msgid "http://yoda.neun12.de"
msgstr ""
#. translators: plugin header field 'Description'
#: avatarplus.php:0
#@ avatarplus
msgid "Replacing the standard avatar in comments with a Google+, Facebook or Twitter avatar if a user enter a profile url"
msgstr "Ersetzt den Standard-Avatar im Kommentarbereich mit einem Google+, Facebook oder Twitter Profilbild falls der Benutzer eine Profil-URL angibt"
#. translators: plugin header field 'Author'
#: avatarplus.php:0
#@ avatarplus
msgid "Ralf Albert"
msgstr ""
#: avatarplus/backend/backend.php:147
#@ avatarplus
msgid "AvatarPlus settings"
msgstr "AvatarPlus Einstellungen"
#: avatarplus/backend/backend.php:148
#@ avatarplus
msgid "Google+ settings"
msgstr "Google+ Einstellungen"
#: avatarplus/backend/backend.php:154
#@ avatarplus
msgid "Extra field"
msgstr "Zusatzfeld"
#: avatarplus/backend/backend.php:155
#@ avatarplus
msgid "Cache"
msgstr "Cache"
#: avatarplus/backend/backend.php:156
#@ avatarplus
msgid "Google+ API key"
msgstr "Google+ API Schlüssel"
#: avatarplus/backend/backend.php:294
#@ avatarplus
msgid "Save Changes"
msgstr "Änderungen übernehmen"
#: avatarplus/backend/backend.php:328
#@ avatarplus
msgid "Use extra field in comment form"
msgstr "Benutze ein zusätzliches Feld im Kommentarbereich"
#: avatarplus/backend/backend.php:355
#@ avatarplus
msgid "Day(s)"
msgstr "Tag(e)"
#: avatarplus/backend/backend.php:356
#@ avatarplus
msgid "Week(s)"
msgstr "Woche(n)"
#: avatarplus/backend/backend.php:357
#@ avatarplus
msgid "Month(s)"
msgstr "Monat(e)"
#: avatarplus/backend/backend.php:358
#@ avatarplus
msgid "Year(s)"
msgstr "Jahr(e)"
#: avatarplus/backend/backend.php:375
#@ avatarplus
msgid "Your WordPress Cronjobs are disabled. The cache won't be deleted!"
msgstr "Deine WordPress Cronjobs sind deaktiviert. Der Cache wird nicht automatisch gelöscht!"
#. translators: plugin header field 'Version'
#: avatarplus.php:0
#@ avatarplus
msgid "0.4"
msgstr ""

View File

@@ -0,0 +1,143 @@
msgid ""
msgstr ""
"Project-Id-Version: AyeCode Connect 1.0.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-22 09:23+0000\n"
"PO-Revision-Date: 2020-02-22 09:23+0000\n"
"Last-Translator: \n"
"Language-Team: AyeCode Ltd <contact@ayecode.io>\n"
"Language: en_US\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: __;__ngettext:1,2;__ngettext_noop:1,2;_c;_e;_ex:1,2c;"
"_n:1,2;_n_noop:1,2;_nc:4c,1,2;_nx:4c,1,2;_nx_noop:4c,1,2;_x:1,2c;esc_attr__;"
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;gettext;"
"gettext_noop\n"
"X-Poedit-Basepath: ..\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 1.8.7.1\n"
"X-Poedit-SearchPath-0: .\n"
#: ayecode-connect.php:75
msgid "Settings"
msgstr ""
#: includes/class-ayecode-connect-remote-actions.php:411
msgid "Download source not valid."
msgstr ""
#: includes/class-ayecode-connect-settings.php:201
msgid "Plugin and theme update notifications must be enabled first"
msgstr ""
#: includes/class-ayecode-connect-settings.php:261
msgid "Something went wrong, try refreshing the page and trying again."
msgstr ""
#: includes/class-ayecode-connect-settings.php:262
msgid "Are you sure you with to disconnect your site?"
msgstr ""
#: includes/class-ayecode-connect-settings.php:300
msgid ""
"One click addon installs, live documentation search, support right from your "
"WordPress Dashboard"
msgstr ""
#: includes/class-ayecode-connect-settings.php:308
#, php-format
msgid "You are connected to AyeCode Connect as user: %s"
msgstr ""
#: includes/class-ayecode-connect-settings.php:315
msgid "Plugin and theme update notifications"
msgstr ""
#: includes/class-ayecode-connect-settings.php:318
#: includes/class-ayecode-connect-settings.php:336
#: includes/class-ayecode-connect-settings.php:361
msgid "Loading..."
msgstr ""
#: includes/class-ayecode-connect-settings.php:333
msgid "One click addon installs, no more licence keys"
msgstr ""
#: includes/class-ayecode-connect-settings.php:366
msgid "Disconnect site"
msgstr ""
#: includes/class-ayecode-connect-settings.php:373
msgid ""
"By clicking the <b>Connect Site</b> button, you agree to our <a "
"href='https://ayecode.io/terms-and-conditions/' target='_blank' class='text-"
"muted' ><u>Terms of Service</u></a> and to share details with AyeCode Ltd"
msgstr ""
#: includes/class-ayecode-connect-settings.php:376
msgid "Connect Site"
msgstr ""
#: includes/class-ayecode-connect-settings.php:384
msgid ""
"It looks like you might be running on localhost, AyeCode Connect will only "
"work on a live website."
msgstr ""
#: includes/class-ayecode-connect-settings.php:395
msgid "AycCode Ltd are the creators of:"
msgstr ""
#: includes/class-ayecode-connect.php:298
msgid "Invalid Registration Data"
msgstr ""
#: includes/class-ayecode-connect.php:302
msgid "Invalid Secret"
msgstr ""
#: includes/class-ayecode-connect.php:559
#, php-format
msgid "Domain `%1$s` just failed is_usable_domain check as it is empty."
msgstr ""
#: includes/class-ayecode-connect.php:589
#, php-format
msgid ""
"Domain `%1$s` just failed is_usable_domain check as it is in the forbidden "
"array."
msgstr ""
#: includes/class-ayecode-connect.php:604
#, php-format
msgid ""
"Domain `%1$s` just failed is_usable_domain check as it uses an invalid top "
"level domain."
msgstr ""
#: includes/class-ayecode-connect.php:696
#: includes/class-ayecode-connect.php:712
#: includes/class-ayecode-connect.php:931
msgid "Missing Authorization Header."
msgstr ""
#: includes/class-ayecode-connect.php:718
#: includes/class-ayecode-connect.php:937
#: includes/class-ayecode-connect.php:943
msgid "Invalid Authorization Header."
msgstr ""
#: includes/class-ayecode-connect.php:725
msgid "Missing blog token."
msgstr ""
#: includes/class-ayecode-connect.php:730
#: includes/class-ayecode-connect.php:951
msgid "You are not authorized to do that."
msgstr ""
#: includes/class-ayecode-connect.php:1002
msgid "Specify an action"
msgstr ""

View File

@@ -0,0 +1,74 @@
msgid ""
msgstr ""
"Project-Id-Version: Backend Startpage Customizer v0.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-11-12 20:05+0100\n"
"PO-Revision-Date: 2014-10-06 20:54:51+0000\n"
"Last-Translator: Frank Staude <frank@staude.net>\n"
"Language-Team: frank@staude.net <frank@staude.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 1.5.4\n"
"X-Poedit-Language: \n"
"X-Poedit-Country: \n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
"X-Poedit-Basepath: /Users/staude/Projekte/Wordpress Plugins/wp-content/plugins/backend-startpage-customizer\n"
"X-Poedit-Bookmarks: \n"
"X-Poedit-SearchPath-0: .\n"
"X-Textdomain-Support: yes"
#: class-backend-startpage-customizer.php:84
#@ backend-startpage-customizer
msgid "Startpage"
msgstr "Startseite"
#: class-backend-startpage-customizer.php:106
#@ backend-startpage-customizer
msgid "Select your backend startpage."
msgstr "Wählen Sie die Startseite"
#: class-backend-startpage-customizer.php:137
#@ backend-startpage-customizer
msgctxt "Userlist Columntitle"
msgid "Startpage"
msgstr "Startseite"
#. translators: plugin header field 'Name'
#: backend-startpage-customizer.php:0
#@ backend-startpage-customizer
msgid "Backend Startpage Customizer"
msgstr ""
#. translators: plugin header field 'PluginURI'
#: backend-startpage-customizer.php:0
#@ backend-startpage-customizer
msgid "http://www.staude.net/wordpress/plugins/BackendStartpageCustomizer"
msgstr ""
#. translators: plugin header field 'Description'
#: backend-startpage-customizer.php:0
#@ backend-startpage-customizer
msgid "Redirect the user after login to a predetermined site in the backend."
msgstr "Erlaubt für jeden Benutzer festzulegen auf welcher Seite im WordPress Backend er nach der Anmeldung startet."
#. translators: plugin header field 'Author'
#: backend-startpage-customizer.php:0
#@ backend-startpage-customizer
msgid "Frank Staude"
msgstr ""
#. translators: plugin header field 'AuthorURI'
#: backend-startpage-customizer.php:0
#@ backend-startpage-customizer
msgid "http://www.staude.net/"
msgstr ""
#. translators: plugin header field 'Version'
#: backend-startpage-customizer.php:0
#@ backend-startpage-customizer
msgid "0.5"
msgstr ""

View File

@@ -0,0 +1,232 @@
# Copyright (C) 2013 bbPress Digest
# This file is distributed under the same license as the bbPress Digest package.
msgid ""
msgstr ""
"Project-Id-Version: bbPress Digest 2.1\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/bbpress-digest\n"
"POT-Creation-Date: 2013-12-15 16:55:45+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2013-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: bbpress-digest.php:153
msgctxt "plugin actions link"
msgid "Settings"
msgstr ""
#: bbpress-digest.php:154
msgid "Donate"
msgstr ""
#: inc/admin.php:49
msgctxt "settings section title"
msgid "bbPress Digest Settings"
msgstr ""
#: inc/admin.php:75
msgid "Show one-click subscription"
msgstr ""
#: inc/admin.php:82
msgid "Show weekly digest option"
msgstr ""
#: inc/admin.php:104
msgid "bbPress Digest settings for enabling features"
msgstr ""
#: inc/admin.php:122
msgid "Allow users to include forum in a digest from a single forum page"
msgstr ""
#: inc/admin.php:140
msgid ""
"Allow users to chose do they want to receive digest once weekly instead of "
"once daily"
msgstr ""
#: inc/bbp-profile.php:71 inc/wp-profile.php:43
msgid "bbPress Digest Emails"
msgstr ""
#: inc/bbp-profile.php:76 inc/wp-profile.php:51
msgctxt "checkbox label"
msgid "Yes"
msgstr ""
#: inc/bbp-profile.php:77 inc/wp-profile.php:52
msgid ""
"Check if you want to receive daily digest with active forum topics for that "
"day."
msgstr ""
#: inc/bbp-profile.php:85 inc/wp-profile.php:64
msgctxt "radio button label"
msgid "Daily"
msgstr ""
#: inc/bbp-profile.php:86 inc/wp-profile.php:65
msgctxt "radio button label"
msgid "Weekly"
msgstr ""
#: inc/bbp-profile.php:87 inc/wp-profile.php:66
msgid "Choose should you receive digest once daily or once weekly."
msgstr ""
#: inc/bbp-profile.php:105 inc/wp-profile.php:84
msgid "Choose on which day of a week you want to receive a digest."
msgstr ""
#: inc/bbp-profile.php:113 inc/wp-profile.php:96
msgid "Digests should be sent at this time:"
msgstr ""
#: inc/bbp-profile.php:120 inc/wp-profile.php:103
msgid ""
"Select the hour of the day when you want to receive digest emails. Current "
"time is <code>%1$s</code>."
msgstr ""
#: inc/bbp-profile.php:120 inc/wp-profile.php:103
msgctxt "current time date format"
msgid "Y-m-d G:i:s"
msgstr ""
#: inc/bbp-profile.php:125 inc/wp-profile.php:112
msgctxt "radio button label"
msgid "All"
msgstr ""
#: inc/bbp-profile.php:126 inc/wp-profile.php:113
msgid "Only forums I choose"
msgstr ""
#: inc/bbp-profile.php:127 inc/wp-profile.php:114
msgid ""
"Choose should digest include topics from all forums or only from selected "
"forums."
msgstr ""
#: inc/bbp-profile.php:137 inc/wp-profile.php:124
msgid "Choose forums which you want to be included in a digest."
msgstr ""
#: inc/event.php:161
msgid "Active topics for week ending %1$s"
msgstr ""
#: inc/event.php:161
msgctxt "week span email title date format"
msgid "d. F Y."
msgstr ""
#: inc/event.php:164
msgid ""
"This topics have been active in the last 7 days:\n"
"\n"
msgstr ""
#: inc/event.php:178
msgid "Active topics for %1$s"
msgstr ""
#: inc/event.php:178
msgctxt "one day span email title date format"
msgid "d. F Y."
msgstr ""
#: inc/event.php:180
msgctxt "1. Yesterday 2. Today"
msgid "Active topics for %1$s / %2$s"
msgstr ""
#: inc/event.php:180
msgctxt "two day span yesterday email title date format"
msgid "d. F Y."
msgstr ""
#: inc/event.php:180
msgctxt "one day span today email title date format"
msgid "d. F Y."
msgstr ""
#: inc/event.php:184
msgid ""
"This topics have been active in the last 24 hours:\n"
"\n"
msgstr ""
#: inc/event.php:188
msgctxt "1. Topic title 2. Topic URL"
msgid "%1$s: %2$s\r\n"
msgstr ""
#: inc/forums-list.php:229
msgid "No topics available"
msgstr ""
#: inc/forums-list.php:234
msgid "No forums available"
msgstr ""
#: inc/forums-list.php:239
msgid "None available"
msgstr ""
#: inc/one-click-handle.php:152 inc/one-click-template.php:54
msgid "The request was unsuccessful. Please try again."
msgstr ""
#: inc/one-click-template.php:147
msgid ""
"<a href=\"%1$s\" class=\"%2$s\">Include topics from this forum to the digest "
"emails</a> (<a href=\"%3$s\">edit settings</a>)"
msgstr ""
#: inc/one-click-template.php:148
msgid ""
"Topics from this forum are included in digest emails (<a href=\"%1$s\" class="
"\"%2$s\">remove </a> | <a href=\"%3$s\">edit settings</a>)"
msgstr ""
#: inc/wp-profile.php:48
msgctxt "settings field label"
msgid "Digest emails"
msgstr ""
#: inc/wp-profile.php:60
msgid "Daily or weekly"
msgstr ""
#: inc/wp-profile.php:93
msgid "Digest time"
msgstr ""
#: inc/wp-profile.php:108
msgctxt "settings field label"
msgid "Forums"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "bbPress Digest"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "http://blog.milandinic.com/wordpress/plugins/bbpress-digest/"
msgstr ""
#. Description of the plugin/theme
msgid "Send digests with forum's active topics."
msgstr ""
#. Author of the plugin/theme
msgid "Milan Dinić"
msgstr ""
#. Author URI of the plugin/theme
msgid "http://blog.milandinic.com/"
msgstr ""

View File

@@ -0,0 +1,62 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Bjorn Wijers <burobjorn at burobjorn dot nl>
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: bbRedirector 1.0\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/bbRedirector\n"
"POT-Creation-Date: 2009-11-24 17:34+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: bbRedirector.php:260
msgid "Settings"
msgstr ""
#: bbRedirector.php:301
msgid ""
"Whoops! There was a problem with the data you posted. Please go back and try "
"again."
msgstr ""
#: bbRedirector.php:320
msgid "Allow default redirection:"
msgstr ""
#: bbRedirector.php:325
msgid "Default redirect url:"
msgstr ""
#: bbRedirector.php:331
msgid "Default HTTP status code :"
msgstr ""
#: bbRedirector.php:337
msgid "Metakey name (used to retrieve per-page redirect url):"
msgstr ""
#. Plugin Name of an extension
msgid "bbRedirector"
msgstr ""
#. #-#-#-#-# en.pot (bbRedirector 1.0) #-#-#-#-#
#. Plugin URI of an extension
#. #-#-#-#-# en.pot (bbRedirector 1.0) #-#-#-#-#
#. Author URI of an extension
msgid "http://www.burobjorn.nl"
msgstr ""
#. Description of an extension
msgid "bbRedirector makes it easy to redirect a page to another location."
msgstr ""
#. Author of an extension
msgid "Bjorn Wijers <burobjorn at burobjorn dot nl>"
msgstr ""

View File

@@ -0,0 +1,33 @@
## 1.1.0 [16th November 2019]
### Added
- WooCommerce Base Slider added
- Brand new dashboard added
- Upgrade option added in dashboard
### Fixed
- Image responsive issue fixed
- Widget on/off issue fixed
- Button link empty error fixed
- Video thumb condition fixed for slice skin
- Video background responsive issue fixed for meteor skin
## 1.0.1 [4rd November 2019]
### Added
- Added Woocommerce Widget
### Fixed
- General widget meteor skin thumbnav video height issue
- Isolate widget locate skin scroll down & dotnav number issue
- Isolate widget slice skin video play button with thumbnav image show hide
- Isolate widget slice skin social icon below background remove
- Isolate widget slice skin excerpt height issue
## 1.0.0
- Initial Release

View File

@@ -0,0 +1,86 @@
# Translation of the WordPress plugin BeastiePress 1.0 by Nicole Reid.
# Copyright (C) 2010 Nicole Reid
# This file is distributed under the same license as the BeastiePress package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: BeastiePress 1.0\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/beastiepress\n"
"POT-Creation-Date: 2010-10-25 00:05-0400\n"
"PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: beastiepress.php:128
msgid "BeastiePress requires at least WordPress 2.8."
msgstr ""
#: beastiepress.php:191
msgid "You do not have sufficient permissions to access this page."
msgstr ""
#: beastiepress.php:198
msgid "BeastiePress Settings"
msgstr ""
#: beastiepress.php:205 beastiepress.php:208
msgid "Port Linking"
msgstr ""
#: beastiepress.php:212 beastiepress.php:255 beastiepress.php:280
#: beastiepress.php:305
msgid "Enable"
msgstr ""
#: beastiepress.php:230
#, php-format
msgid "Use the %s Ports index."
msgstr ""
#: beastiepress.php:240 beastiepress.php:265 beastiepress.php:290
#: beastiepress.php:315
#, php-format
msgid "Match the %s tag."
msgstr ""
#: beastiepress.php:248 beastiepress.php:251
msgid "Problem Report Linking"
msgstr ""
#: beastiepress.php:273 beastiepress.php:276
msgid "File Tagging"
msgstr ""
#: beastiepress.php:298 beastiepress.php:301
msgid "Manual Page Linking"
msgstr ""
#: beastiepress.php:328
msgid "Save Changes"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "BeastiePress"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "http://cooltrainer.org/software/beastiepress/"
msgstr ""
#. Description of the plugin/theme
msgid "Adds some FreeBSD-specific shortcodes to WordPress"
msgstr ""
#. Author of the plugin/theme
msgid "Nicole Reid"
msgstr ""
#. Author URI of the plugin/theme
msgid "http://cooltrainer.org"
msgstr ""

View File

@@ -0,0 +1,5 @@
# Changelog
All notable changes to the plugin will be documented in this file.
## 1.0.0 - 2019-10-10
### Initial release

View File

@@ -0,0 +1,46 @@
{
"title": "Best Restaurant Menu by PriceListo",
"name": "best-restaurant-menu",
"version": "1.0.0",
"description": "",
"main": "best-restaurant-menu.php",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+ssh://git@bitbucket.org/MahmoudBasiony/best-restaurant-menu.git"
},
"keywords": [
"wordpress",
"menu",
"restaurant",
"food",
"services"
],
"author": "PriceListo",
"license": "GPL-3.0-or-later",
"homepage": "https://bitbucket.org/MahmoudBasiony/best-restaurant-menu#readme.md",
"devDependencies": {
"babel-core": "^6.26.0",
"babel-preset-env": "^1.6.1",
"cleave.js": "^1.5.0",
"del": "^3.0.0",
"gulp": "^3.9.1",
"gulp-babel": "^7.0.1",
"gulp-concat": "^2.6.1",
"gulp-jshint": "^2.1.0",
"gulp-rename": "^1.2.2",
"gulp-sass": "^4.0.1",
"gulp-uglify": "^3.0.0",
"gulp-uglifycss": "^1.0.9",
"gulp-util": "^3.0.8",
"gulp-wp-pot": "^2.2.0",
"jshint": "^2.9.5"
},
"dependencies": {
"font-awesome": "^4.7.0",
"select2": "^4.0.10",
"sweetalert2": "^8.17.1"
}
}

View File

@@ -0,0 +1,9 @@
*** Changelog ***
= 1.0.1 - 27/12/2019 =
* Tracking code fix
= 1.0.0 - 14/11/2019 =
* Initial release

Some files were not shown because too many files have changed in this diff Show More