Compare commits

..

162 Commits

Author SHA1 Message Date
erwanlr
549ab4aa15 Bumps version 2020-06-08 20:53:15 +02:00
erwanlr
b189c71682 Typo 2020-06-08 20:14:02 +02:00
erwanlr
b909856933 Fixes #1504 2020-06-08 20:13:18 +02:00
erwanlr
5de9084901 Updates deps 2020-06-08 19:59:04 +02:00
erwanlr
384ef0b44c Adds DFs 2020-06-06 10:48:34 +02:00
Erwan
9307772dc3 Merge pull request #1502 from wpscanteam/dependabot/bundler/rubocop-tw-0.85.0
Update rubocop requirement from ~> 0.84.0 to ~> 0.85.0
2020-06-02 08:26:24 +02:00
dependabot-preview[bot]
730c71d103 Update rubocop requirement from ~> 0.84.0 to ~> 0.85.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.84.0...v0.85.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-02 05:43:24 +00:00
erwanlr
5c710b96f5 Adds Dfs 2020-05-30 11:36:59 +02:00
erwanlr
fe63d0eadf Adds DFs 2020-05-29 10:05:59 +02:00
erwanlr
a6ca95159a Adds DFs 2020-05-23 11:13:57 +02:00
erwanlr
677d32fef5 Updates rubocop-performance and config 2020-05-23 09:17:41 +02:00
Erwan
14abd05969 Merge pull request #1498 from wpscanteam/dependabot/bundler/rubocop-tw-0.84.0
Update rubocop requirement from ~> 0.83.0 to ~> 0.84.0
2020-05-22 08:39:17 +02:00
dependabot-preview[bot]
2e680be34f Update rubocop requirement from ~> 0.83.0 to ~> 0.84.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.83.0...v0.84.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-22 05:32:38 +00:00
erwanlr
fe29942bf4 Adds Dfs 2020-05-16 15:30:47 +02:00
Erwan
c8fb717ac1 Updates Readme's Install section 2020-05-13 21:30:09 +02:00
Erwan
1ff7fcc913 Merge pull request #1493 from wpscanteam/dependabot/bundler/rubocop-tw-0.83.0
Update rubocop requirement from ~> 0.82.0 to ~> 0.83.0
2020-05-12 10:21:34 +02:00
Erwan
419c32702a Fixes rubocop offenses 2020-05-12 09:32:02 +02:00
dependabot-preview[bot]
9b63714caa Update rubocop requirement from ~> 0.82.0 to ~> 0.83.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.82.0...v0.83.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-12 05:35:24 +00:00
erwanlr
f034233607 Adds DFs 2020-05-09 11:46:23 +02:00
erwanlr
be6fcb51b6 Adds Dfs 2020-05-02 12:44:05 +02:00
Ryan Dewhurst
e49a682f00 Add user documentation URL to readme 2020-05-01 11:35:39 +02:00
Erwan
23ad3141a1 Fixes rubocop offence 2020-04-27 09:31:47 +02:00
Erwan
5347e374e0 Fixes rubocop last offence! 2020-04-27 09:26:26 +02:00
Erwan
1a49a628de Fixes rubocop offences 2020-04-27 09:22:59 +02:00
Erwan
8def256d7e Fixes potential InvalidProgressBar error in Pwd Attack 2020-04-27 09:15:37 +02:00
erwanlr
1cd8e6bad7 Adds Dfs 2020-04-25 17:43:29 +02:00
erwanlr
7a03c0db25 Adds DFs 2020-04-18 10:49:21 +02:00
Erwan
e7e3657d1f Merge pull request #1485 from wpscanteam/dependabot/bundler/rubocop-tw-0.82.0
Update rubocop requirement from ~> 0.81.0 to ~> 0.82.0
2020-04-17 10:03:28 +02:00
dependabot-preview[bot]
734dfcc9bc Update rubocop requirement from ~> 0.81.0 to ~> 0.82.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.81.0...v0.82.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 05:28:29 +00:00
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
479 changed files with 220698 additions and 351 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,11 +1,23 @@
require: rubocop-performance
AllCops:
TargetRubyVersion: 2.4
TargetRubyVersion: 2.5
Exclude:
- '*.gemspec'
- 'vendor/**/*'
Layout/EmptyLinesAroundAttributeAccessor:
Enabled: true
Layout/LineLength:
Max: 120
Layout/SpaceAroundMethodCallOperator:
Enabled: true
Lint/DeprecatedOpenSSLConstant:
Enabled: true
Lint/UriEscapeUnescape:
Enabled: false
Lint/RaiseException:
Enabled: true
Lint/StructNewOverride:
Enabled: true
Metrics/AbcSize:
Max: 25
Metrics/BlockLength:
@@ -17,8 +29,6 @@ Metrics/ClassLength:
- 'app/controllers/enumeration/cli_options.rb'
Metrics/CyclomaticComplexity:
Max: 8
Metrics/LineLength:
Max: 120
Metrics/MethodLength:
Max: 20
Exclude:
@@ -27,8 +37,18 @@ Style/ClassVars:
Enabled: false
Style/Documentation:
Enabled: false
Style/ExponentialNotation:
Enabled: true
Style/FormatStringToken:
Enabled: false
Style/HashEachMethods:
Enabled: true
Style/HashTransformKeys:
Enabled: true
Style/HashTransformValues:
Enabled: true
Style/NumericPredicate:
Exclude:
- 'app/controllers/vuln_api.rb'
Style/SlicingWithRange:
Enabled: true

View File

@@ -1 +1 @@
2.6.2
2.7.1

View File

@@ -1,4 +1,19 @@
# frozen_string_literal: true
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
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>
@@ -31,7 +31,11 @@
- RubyGems - Recommended: latest
- Nokogiri might require packages to be installed via your package manager depending on your OS, see https://nokogiri.org/tutorials/installing_nokogiri.html
### From RubyGems (Recommended)
### In a Pentesting distribution
When using a pentesting distubution (such as Kali Linux), it is recommended to install/update wpscan via the package manager if available.
### From RubyGems
```shell
gem install wpscan
@@ -39,18 +43,6 @@ gem install wpscan
On MacOSX, if a ```Gem::FilePermissionError``` is raised due to the Apple's System Integrity Protection (SIP), either install RVM and install wpscan again, or run ```sudo gem install -n /usr/local/bin wpscan``` (see [#1286](https://github.com/wpscanteam/wpscan/issues/1286))
### From sources (NOT Recommended)
Prerequisites: Git
```shell
git clone https://github.com/wpscanteam/wpscan
cd wpscan/
bundle install && rake install
```
# Updating
You can update the local database by using ```wpscan --update```
@@ -77,6 +69,8 @@ docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --enumerate u1-1
# Usage
Full user documentation can be found here; https://github.com/wpscanteam/wpscan/wiki/WPScan-User-Documentation
```wpscan --url blog.tld``` This will scan the blog using default options with a good compromise between speed and accuracy. For example, the plugins will be checked passively but their version with a mixed detection mode (passively + aggressively). Potential config backup files will also be checked, along with other interesting findings.
If a more stealthy approach is required, then ```wpscan --stealthy --url blog.tld``` can be used.
@@ -130,6 +124,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

@@ -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

@@ -40,7 +40,7 @@ module WPScan
# @return [ Hash ]
def potential_urls(opts = {})
urls = {}
domain_name = PublicSuffix.domain(target.uri.host)[/(^[\w|-]+)/, 1]
domain_name = (PublicSuffix.domain(target.uri.host) || 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

@@ -75,17 +75,20 @@ module WPScan
progress_bar.stop
break
end
progress_bar.total = progress_bar.progress + ((passwords.size - wordlist_index) / current_passwords_size.round(1)).ceil
begin
progress_bar.total = progress_bar.progress + ((passwords.size - wordlist_index) / current_passwords_size.round(1)).ceil
rescue ProgressBar::InvalidProgressError
end
end
end
# Maybe a progress_bar.stop ?
end
# rubocop:disable all
# rubocop:enable all
def passwords_size(max_passwords, users_size)
return 1 if max_passwords < users_size
return 0 if users_size == 0
return 0 if users_size.zero?
max_passwords / users_size
end
@@ -94,9 +97,13 @@ module WPScan
def check_and_output_errors(res)
progress_bar.log("Incorrect response: #{res.code} / #{res.return_message}") unless res.code == 200
progress_bar.log('Parsing error, might be caused by a too high --max-passwords value (such as >= 2k)') if res.body =~ /parse error. not well formed/i
if /parse error. not well formed/i.match?(res.body)
progress_bar.log('Parsing error, might be caused by a too high --max-passwords value (such as >= 2k)')
end
progress_bar.log('The requested method is not supported') if res.body =~ /requested method [^ ]+ does not exist/i
return unless /requested method [^ ]+ does not exist/i.match?(res.body)
progress_bar.log('The requested method is not supported')
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.5'
VERSION = '3.8.2'
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

@@ -70,7 +70,7 @@ describe WPScan::Controller::Core do
let(:cli_args) { "#{super()} --no-update" }
it 'raises an error' do
expect { core.update_db_required? }. to raise_error(WPScan::Error::MissingDatabaseFile)
expect { core.update_db_required? }.to raise_error(WPScan::Error::MissingDatabaseFile)
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

@@ -12,7 +12,7 @@ describe WPScan::Finders::DbExports::KnownLocations do
allow(target).to receive(:sub_dir).and_return(false)
end
it 'replace {domain_name} by its value' do
it 'replaces {domain_name} by its value' do
expect(finder.potential_urls(opts).keys).to eql %w[
http://ex.lo/aa/ex.sql
http://ex.lo/aa/wordpress.sql
@@ -27,7 +27,7 @@ describe WPScan::Finders::DbExports::KnownLocations do
context "when #{sub_domain} sub-domain" do
let(:url) { "https://#{sub_domain}.domain.tld" }
it 'replace {domain_name} by its correct value' do
it 'replaces {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include "#{url}/domain.sql"
end
end
@@ -36,7 +36,7 @@ describe WPScan::Finders::DbExports::KnownLocations do
context 'when multi-level tlds' do
let(:url) { 'https://something.com.tr' }
it 'replace {domain_name} by its correct value' do
it 'replaces {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include 'https://something.com.tr/something.sql'
end
end
@@ -44,7 +44,7 @@ describe WPScan::Finders::DbExports::KnownLocations do
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
it 'replaces {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include 'https://dev.something.com.tr/something.sql'
end
end
@@ -52,10 +52,18 @@ describe WPScan::Finders::DbExports::KnownLocations do
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
it 'replaces {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include "#{url}/domain-test.sql"
end
end
context 'when a non standard URL' do
let(:url) { 'http://dc-2' }
it 'replaces {domain_name} by its correct value' do
expect(finder.potential_urls(opts).keys).to include "#{url}/dc-2.sql"
end
end
end
describe '#aggressive' do

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

@@ -109,7 +109,7 @@ describe WPScan::Finders::PluginVersion::Readme do
'a-lead-capture-contact-form-and-tab-button-by-awebvoicecom' => '3.1',
'backup-scheduler' => '1.5.9',
'release_date_slash' => '1.0.4'
}. each do |file, version_number|
}.each do |file, version_number|
context "whith #{file}.txt" do
it 'returns the expected version' do
@file = "#{file}.txt"

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,13 @@
{
"name": "liveblog24-live-blogging-tool-cgb-guten-block",
"version": "2.0",
"private": true,
"scripts": {
"start": "cgb-scripts start",
"build": "cgb-scripts build",
"eject": "cgb-scripts eject"
},
"dependencies": {
"cgb-scripts": "1.23.0"
}
}

File diff suppressed because it is too large Load Diff

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,111 @@
# Copyright (C) 2020 PRESSMAN
# This file is distributed under the same license as the Admin User Control plugin.
msgid ""
msgstr ""
"Project-Id-Version: Admin User Control 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/admin-user-"
"control\n"
"POT-Creation-Date: 2020-05-18T02:23:41+00:00\n"
"PO-Revision-Date: 2020-05-18 11:26+0900\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
"X-Domain: admin-user-control\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. Plugin Name of the plugin
msgid "Admin User Control"
msgstr "Admin User Control"
#. Description of the plugin
msgid "Control admin user in administration screens in real time."
msgstr "管理画面にログインしているユーザーをリアルタイムで制御します。"
#. Author of the plugin
msgid "PRESSMAN"
msgstr "PRESSMAN"
#. Author URI of the plugin
msgid "https://www.pressman.ne.jp"
msgstr "https://www.pressman.ne.jp"
#: auc-login-monitor.php:22
msgid "Logged in"
msgstr "ログイン"
#: auc-maintenance.php:38 auc-maintenance.php:174
msgid "Maintenance"
msgstr "メンテナンス"
#: auc-maintenance.php:42 auc-maintenance.php:220
msgid "maintenance_start_date"
msgstr "メンテナンス開始日時"
#: auc-maintenance.php:59 auc-maintenance.php:221
msgid "maintenance_end_date"
msgstr "メンテナンス終了日時"
#: auc-maintenance.php:114
msgid "Forced logout after 10 seconds because the maintenance start time"
msgstr "メンテナンスの開始時刻になったため10秒後に強制ログアウトします"
#: auc-maintenance.php:115
msgid "Scheduled maintenance end time"
msgstr "メンテナンス終了予定時間"
#: auc-maintenance.php:175
msgid "Add New Maintenance"
msgstr "メンテナンスを追加"
#: auc-maintenance.php:176
msgid "Edit Maintenance"
msgstr "メンテナンスの編集"
#: auc-maintenance.php:246
msgid "Latest maintenance information"
msgstr "直近のメンテナンス情報"
#: auc-maintenance.php:269
msgid "Click a title to display a detail."
msgstr "タイトルをクリックすると詳細が表示されます。"
#: auc-maintenance.php:287
msgid "No maintenance information"
msgstr "メンテナンス情報がありません"
#: auc-notification.php:26
msgid "New notification"
msgstr "新しいお知らせがあります"
#: auc-notification.php:50
msgid "Notification"
msgstr "お知らせ"
#: auc-notification.php:51
msgid "Add New Notification"
msgstr "お知らせを追加"
#: auc-notification.php:52
msgid "Edit Notification"
msgstr "お知らせの編集"
#: auc-notification.php:70
msgid "Latest notifications"
msgstr "直近のお知らせ"
#: auc-notification.php:86
msgid "Click a title to display a detail. If you read it, mark it as read."
msgstr ""
"タイトルをクリックすると詳細が表示されます。読んだら既読にしてください。"
#: auc-notification.php:91
msgid "Mark as read"
msgstr "既読にする"
#: auc-notification.php:113
msgid "There is no notifications"
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,73 @@
# Copyright (C) 2020 Condless
# This file is distributed under the same license as the Advanced Options for WooCommerce plugin.
msgid ""
msgstr ""
"Project-Id-Version: Advanced Options for WooCommerce 1.0.1\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/advanced-options-"
"for-woocommerce\n"
"Language-Team: Condless <info@condless.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2020-04-24 08:53+0300\n"
"PO-Revision-Date: 2020-04-24 08:55+0300\n"
"X-Generator: Poedit 2.3\n"
"X-Domain: advanced-options-for-woocommerce\n"
"Last-Translator: Condless <info@condless.com>\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? "
"2 : 3);\n"
"Language: he_IL\n"
#. Plugin Name of the plugin
msgid "Advanced Options for WooCommerce"
msgstr "אפשרויות מתקדמות לווקומרס"
#. Plugin URI of the plugin
msgid "https://en.condless.com/advanced-options-for-woocommerce/"
msgstr "https://www.condless.com/advanced-options-for-woocommerce/"
#. Description of the plugin
msgid ""
"WooCommerce plugin for more options and customizations. Simple and Easy to "
"use."
msgstr "תוסף לווקומרס לאפשרויות נוספות והתאמה אישית. פשוט וקל לשימוש."
#. Author of the plugin
msgid "Condless"
msgstr "Condless"
#. Author URI of the plugin
msgid "https://www.condless.com/"
msgstr "https://www.condless.com/"
#: advanced-options-for-woocommerce.php:163
msgid "contains letters not from the permitted languages"
msgstr "מכיל אותיות שלא שייכות לשפות המותרות"
#: advanced-options-for-woocommerce.php:200
msgid "Advanced Options"
msgstr "אפשרויות מתקדמות"
#: advanced-options-for-woocommerce.php:235
msgid ""
"Allow only ASCII chars (which prevent non-English letters) in the checkout "
"fields"
msgstr "אפשר רק תווי ASCII (מה שמונע אותיות שלא באנגלית) בשדות התשלום"
#: advanced-options-for-woocommerce.php:241
msgid ""
"Display the VAT amount and the product price include & exlude it in single "
"product page"
msgstr "הצג את סכום המע\"מ ואת מחיר המוצר איתו ובלעדיו בעמוד מוצר"
#: advanced-options-for-woocommerce.php:247
msgid "Display for variable products the attribute name instead of"
msgstr "הצג במוצרים עם וריאיציות את שם התכונה במקום"
#: advanced-options-for-woocommerce.php:253
msgid "Display only products in"
msgstr "הצג מוצרים בלבד ב"
#: advanced-options-for-woocommerce.php:259
msgid "Auto triggered by"
msgstr "פועל אוטומטית כאשר"

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,61 @@
# Copyright (C) 2020 aiaibot
# This file is distributed under the same license as the aiaibot plugin.
msgid ""
msgstr ""
"Project-Id-Version: aiaibot 1.0.3\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/aiaibot\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-05-20T09:25:54+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.4.0\n"
"X-Domain: aiaibot\n"
#. Plugin Name of the plugin
#. Author of the plugin
msgid "aiaibot"
msgstr ""
#. Plugin URI of the plugin
msgid "https://wordpress.org/plugins/aiaibot/"
msgstr ""
#. Description of the plugin
msgid "Integrate your aiaibot chatbot."
msgstr ""
#. Author URI of the plugin
msgid "https://app.aiaibot.com"
msgstr ""
#: admin/class-aiaibot-admin.php:84
msgid "Integration Code"
msgstr ""
#: admin/class-aiaibot-admin.php:92
msgid "Enabled"
msgstr ""
#: admin/class-aiaibot-admin.php:112
msgid "Implement your chatbot on your Wordpress page"
msgstr ""
#: admin/class-aiaibot-admin.php:123
msgid "Config id is not valid."
msgstr ""
#: admin/class-aiaibot-admin.php:147
msgid "Chatbot Integration Settings"
msgstr ""
#. translators: %s: url to the app.aiaibot
#: admin/class-aiaibot-admin.php:155
msgid "Get the integration code on %s."
msgstr ""
#: admin/class-aiaibot-admin.php:157
msgid "Publish Chatbot"
msgstr ""

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,7 @@
== Changelog ==
= 0.5.1 - 2020-04-14 =
* fixed performance problem on sites with large amount of posts
= 0.5.0 - 2020-04-14 =
* Initial public release

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,41 @@
{
"name": "agu-apijoin",
"version": "1.0.0",
"description": "test",
"main": "index.js",
"scripts": {
"build": "wp-scripts build",
"check-engines": "wp-scripts check-engines",
"check-licenses": "wp-scripts check-licenses",
"format:js": "wp-scripts format-js",
"lint:css": "wp-scripts lint-style",
"lint:js": "wp-scripts lint-js",
"lint:md:docs": "wp-scripts lint-md-docs",
"lint:md:js": "wp-scripts lint-md-js",
"lint:pkg-json": "wp-scripts lint-pkg-json",
"packages-update": "wp-scripts packages-update",
"start": "wp-scripts start",
"test:e2e": "wp-scripts test-e2e",
"test:unit": "wp-scripts test-unit-js"
},
"author": "Miguras",
"license": "ISC",
"dependencies": {
"@wordpress/scripts": "^7.1.0",
"css-loader": "^3.4.2",
"html-react-parser": "^0.10.3",
"image-webpack-loader": "^6.0.0",
"react-responsive-carousel": "^3.1.51",
"react-slick": "^0.25.2",
"react-smart-slider": "^0.1.2",
"slick-carousel": "^1.8.1",
"style-loader": "^1.1.3",
"styled-jsx-plugin-stylelint": "^0.1.0",
"webpack": "^4.41.6"
},
"devDependencies": {
"file-loader": "^5.1.0",
"svgo": "^1.3.2",
"svgo-loader": "^2.2.1"
}
}

View File

@@ -0,0 +1,292 @@
# Changelog
All notable changes to this project will be documented in this file.
##[1.8.4] - 2020-05-21
### Added
- Button icon size option
- Button appearing animation option
- Menu sidebar style
- Menu popup animation
- Menu sidebar animation
- Menu items animation
- Plugin core updated
##[1.8.3] - 2020-05-19
### Added
- Deactivation plugin for current domain
- PhpLive integration
- Paldesk integration
##[1.8.2] - 2020-05-15
### Fixed
- Small issues
##[1.8.1] - 2020-05-11
### Added
- Output filtration
- Server config values validation
##[1.8.0] - 2020-05-06
### Added
- Option to choose who can access callback list
### Fixed
- Security improvements
##[1.7.9] - 2020-04-09
### Fixed
- Skype integration
- FreshChat integration
##[1.7.8] - 2020-02-07
### Fixed
- Tawk.to appearance issue
##[1.7.7] - 2020-01-29
### Added
- FreshChat integration
##[1.7.6] - 2020-01-20
### Fixed
- Zoho SalesIQ chat integration fix
##[1.7.5] - 2020-01-14
### Added
- Zoho SalesIQ chat integration
##[1.7.4] - 2019-12-18
### Fixed
- Name validation unicode languages
##[1.7.3] - 2019-12-15
### Fixed
- Name validation unicode languages
##[1.7.2] - 2019-12-13
### Added
- Name field validation options
- Email field to callback form
- Email field to callback requests table
- Updated translations
### Fixed
- Email subject translation
##[1.7.1] - 2019-12-04
### Fixed
- Activation issue
##[1.7.0] - 2019-11-30
### Fixed
- Fixed JivoSite issue
##[1.6.9] - 2019-11-22
### Fixed
- Fixed Tawk.to issue
##[1.6.8] - 2019-09-30
### Fixed
- Fixed JivoSite issue
##[1.6.7] - 2019-09-25
### Fixed
- HTML code in GDRP Title
##[1.6.6] - 2019-09-03
### Added
- Tidio Integration
- Jivosite integration
- Added comments functionality to callback requests
- Updated translation template
- Updated Russian translation
- Added Google Analytics integration
### Fixed
- Callback requests admin table mobile view
##[1.6.4] - 2019-08-05
### Fixed
- LiveZilla integration
##[1.6.3] - 2019-07-31
### Added
- Name and referer fileds to email notification
- Name and referer fileds to webpush notification
- Name and referer fileds to sms notification
- Name and referer fileds to telegram notification
- Export callback requests to CSV file
- Delay initialization
- Disable initialization
- Open menu after timeout automatically
##[1.6.2] - 2019-06-01
### Fixed
- Crisp integration issue
- Callback customer name field
##[1.6.1] - 2019-05-27
### Added
- Custom popup item type - allows to open popup with text/html content by clicking menu item
- Name field to callback form
- Activation functionality
##[1.5.9] - 2019-05-01
### Added
- Background and color option for shortcode
### Fixed
- Exporting data issue on some PHP versions
- Button and menu z-index
- Modal conflict with SimpleModal
- Safari item editing/adding
##[1.5.8] - 2019-04-29
### Added
- GDPR checkbox
##[1.5.7] - 2019-04-25
### Added
- WooCommerce StoreFront theme integration to mobile footer
- New Menu style - icons without background
- 1-click auto update
- LiveZilla integration
- StoreFront theme compliant - now you can add "contact-us" button to storefront mobile footer
### Fixed
- LiveChat Pro integration issue
- Update issue
- Generate css after import
##[1.5.5] - 2019-04-08
### Added
- LiveChat Pro integration
- Close callback popup timeout
- Menu items subtitles
- Option to display menu item for all users or registred users or unregistred users only
- FontAwesome icons support
### Fixed
- Performance improved
##[1.5.3] - 2019-04-02
### Added
- New icons
### Fixed
- Skype WebControl integration
- UI bootstrap conflicts
##[1.5.2] - 2019-03-14
### Added
- Predefinded Brand Colors selector
### Fixed
- Landscape responsive
- Layout fixes
##[1.5.1] - 2019-02-26
### Added
- Menu width option
- Callback request form width option
##[1.5.0] - 2019-02-24
### Added
- LiveChat integration (livechatinc.com)
- SmartSupp integratin
- All button settings now can be set separately for descktop and mobile versions
- All menu settings now can be set separately for descktop and mobile versions
- All prompts settings now can be set separately for descktop and mobile versions
- Pause between main button animation loops
- Icon type option to menu settings
- Lines options to menu settings
- Header options to menu settings
- Header close button options to menu settings
- Shadow size/opacity to menu settings
- Export option (for exporting all module data)
- Import option (for impoting all module data)
- Prompt position option
- Russian translation
- Light design updates
### Fixed
- TextDomain loading
- Html email bug
- RTL bug
- Improved responsivness
- Email adress validation
##[1.3.9] - 2019-02-01
### Added
- Live helper chat integration
### Fixed
- Callback mobile form layout
- Zalo chat validation error
- Callback is not running custom JS code
##[1.3.8] - 2019-01-30
### Added
- OneSignal integration to receive webpush on callback request
- Link target option
- Option to control when display prompt messages again after visitor closed them
- Shortcodes for menu items
##[1.3.7] - 2019-01-26
### Fixed
- create_function deprecated in php 7.2
- load plugin text domain
##[1.3.5] - 2019-01-18
### Added
- LinkedIn icon
- Instagram icon
- Zendesk icon
- Zendesk chat support
- Sandbox mode
- Html mail support
- Main button mode option (callback only or menu)
- Zalo integration
### Fixed
- Problem with ajaxUrl on some WP versions
- CSS fixes
- Tawk.to hidding issue
##[1.3.3] - 2019-01-03
### Added
- Zalo icon
### Fixed
- Fixed bootstrap conflicts
##[1.3.2] - 2018-10-09
### Fixed
- Fixed innoDB tables creation
##[1.3.1] - 2018-09-25
### Added
- More icons
- Telegram bot
- Change main button feature
- Phone mask feature
- Crisp integration
- Tawk.to integration
- Hashtags commands
##[1.3.0] - 2018-08-02
### Added
- Skype Web Control integration
- Zendesk chat integration
- VK community messages integration
- Facebook customer chat integration
- Prompt messages feature
##[1.2.0] - 2018-07-21
### Added
- Menu size
- Main button size
- Twilio integration
##[1.0.0] - 2018-06-19
- First released version

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,3 @@
Version 1.0
- First Release
- A new version of Automatically add product to cart plug-in.

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 ""

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