ljacqu
ac164c73b9
#347 Add missing properties (incomplete)
2016-01-09 23:42:56 +01:00
ljacqu
4321d0b938
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 347-config-rewrite
2016-01-09 23:07:20 +01:00
ljacqu
4d2f39f06e
#306 Add tests for CommandHandler and CommandMapper
2016-01-09 22:51:22 +01:00
Xephi
e5bd73d899
Remove Checks for #308
2016-01-09 22:12:55 +01:00
Xephi
6ac51d97f5
Remove checks - #308
2016-01-09 22:04:05 +01:00
ljacqu
fc0b7c46ac
#306 Add permission manager to command service
...
- Inject permission manager into command service explicitly via constructor
- Change command mapper to only care about generating FoundCommandResult objects, and command handler to worry about dealing with it later on
2016-01-09 21:57:20 +01:00
Xephi
5cc5ee8cae
Little fail
2016-01-09 21:39:27 +01:00
Xephi
9c4331e3e6
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded.git
2016-01-09 21:30:24 +01:00
Xephi
607380e59c
Use PreparedStatement in all case needed it - #308
2016-01-09 21:30:13 +01:00
games647
663e3063d7
Use Low priority for join events in order to allow plugins
...
to change the delayed join message.
2016-01-09 21:15:56 +01:00
Xephi
2f1338b08b
little forgot
2016-01-09 17:16:14 +01:00
Xephi
fd7bdcd3c2
Change node to authme.player.seeownaccounts #423
2016-01-09 16:21:44 +01:00
Xephi
bebea0dd36
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded.git
2016-01-09 14:46:13 +01:00
Xephi
18ed62b096
Fix #423
2016-01-09 14:45:59 +01:00
ljacqu
3845c1e0eb
#347 Add NewSetting to command service
...
- Adjust NewSetting constructor to match needs in AuthMe
- Add NewSetting to the command service
- See CaptchaCommand for a sample replacement from Settings to NewSetting
2016-01-09 12:45:58 +01:00
ljacqu
88629702f5
#347 Test that all read properties exist as Property field
...
- Create consistency test to verify that all properties in config.yml are defined as a Property field in a SettingsClass implementation (currently fails)
- Add some missing properties
- Minor: convert tabs to spaces
2016-01-09 09:30:49 +01:00
DNx5
7eeabd68e7
Fix saveAuth method didn't save email.
2016-01-09 06:26:36 +07:00
DNx5
5187ce152a
Enabled cachePrepStmts properties.
2016-01-09 06:19:09 +07:00
DNx5
b380893847
Serialize Xenforo hash before put it into table.
...
- Fix #417
2016-01-09 06:13:47 +07:00
ljacqu
0603243c86
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 347-config-rewrite
2016-01-08 23:44:16 +01:00
ljacqu
752ebe5022
Fix cast exception in integration test
...
- Although the class only has fields of Property type it would appear that CircleCI et al. may use libraries that add fields to classes later on, so we need to check for the field type
2016-01-08 23:40:54 +01:00
DNx5
642a40724b
Used Bukkit API to format color codes.
2016-01-09 05:40:03 +07:00
ljacqu
d0b7d0ff06
#347 Create consistency and integration tests for NewSetting
...
- Ensure that the project's config.yml contains all settings that NewSetting is aware of
- Add extensive, more generic integration tests
2016-01-08 23:20:42 +01:00
ljacqu
69c225c850
#347 Create tests and add check for missing settings in NewSetting
2016-01-08 21:22:26 +01:00
Xephi
c8fa9a146e
reduce check
2016-01-08 19:26:26 +01:00
Xephi
b8ae8d995b
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded.git
2016-01-08 19:16:06 +01:00
DNx
05ccd77d09
Merge pull request #86 from AuthMe-Team/137-xenforo-support
...
Xenforo support
2016-01-08 06:51:47 +07:00
ljacqu
30db03837a
#347 Add 'contains' method to PropertyType
2016-01-07 21:58:28 +01:00
ljacqu
7d749801f9
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 347-config-rewrite
2016-01-07 21:51:20 +01:00
ljacqu
acda03bb40
#347 Create enum property + consistency tests
2016-01-07 21:38:03 +01:00
ljacqu
120e69ac67
Fix null pointer in tests
2016-01-07 20:49:41 +01:00
Xephi
7ec46e2940
Add strict mode
2016-01-07 09:31:32 +01:00
DNx5
fa31fd92b8
Fix #417
2016-01-07 14:14:08 +07:00
DNx5
fab13c586f
Remove skip test for Xenforo hash.
2016-01-07 07:41:09 +07:00
DNx5
d6ab7d5da8
Ask player to change email if email already added.
2016-01-07 07:24:26 +07:00
DNx5
2c13783c6c
Created test for XFBCRYPT.
2016-01-07 07:12:30 +07:00
DNx5
6855fb93fc
Fix #416
2016-01-07 06:47:45 +07:00
DNx5
da5de58afb
Rename XF class into XFBCRYPT.
2016-01-07 06:15:39 +07:00
DNx5
781a005c25
Merge remote-tracking branch 'origin/137-xenforo-support' into 137-xenforo-support
...
Conflicts:
src/main/java/fr/xephi/authme/security/crypts/BCRYPT.java
2016-01-07 05:43:49 +07:00
DNx5
e0c3affa33
Merge branch 'master' into 137-xenforo-support
...
Conflicts:
src/main/java/fr/xephi/authme/datasource/CacheDataSource.java
src/main/java/fr/xephi/authme/datasource/DataSource.java
src/main/java/fr/xephi/authme/datasource/SQLite.java
src/main/java/fr/xephi/authme/security/crypts/BCRYPT.java
2016-01-06 12:15:27 +07:00
DNx5
2081fd7e34
Removed AuthMeServerStop shutdown hook.
...
- Players now will be kicked if AuthMe was disabled.
- Fix #413
2016-01-06 10:24:46 +07:00
DNx5
44d35154aa
Register permissions properly in "plugin.yml".
...
so permissions manager plugin can read what available permissions for AuthMe
2016-01-06 10:02:32 +07:00
ljacqu
204a564a9a
Move new configuration packages and add test for PropertyMap
2016-01-05 21:59:08 +01:00
DNx5
fd73ce1562
Attempt to Fix permissions wildcard problem.
2016-01-05 07:21:24 +07:00
DNx5
627db6b9cf
Attempt to Fix #407
2016-01-05 06:33:43 +07:00
ljacqu
5ec1b67e03
Fix #408 Player quit location is not updated
...
- Ensure that the cache data source updates the quit location on the actual source
2016-01-04 21:52:39 +01:00
ljacqu
cb07b3df3d
Create enum property type, trivial code simplification
2016-01-04 20:33:31 +01:00
DNx5
6d7d856ebe
Wait executor to complete the submitted task before shutting down
...
* Fix #403
2016-01-04 05:04:52 +07:00
ljacqu
7d41ccbc9c
Settings: use class constants for properties, create custom writer
...
- Create Property class for defining config properties
- Create logic for typed retrival of properties from YAML file
- Add custom save method
- Retain comments from Comment annotations in the classes
- Write in a sorted order: first discovered properties are first written to config.yml
- Adjust properties to reflect the current config.yml
- Add sample tests for the retrieval and writing of properties with the new setup
2016-01-03 15:22:32 +01:00
Xephi
c2deb9d0b5
Start rework of Settings
...
Please move to another branch :3
(cherry picked from commit 0c5d835
)
2016-01-03 15:15:52 +01:00
DNx5
fe31b5cabb
I forgot to remove the old check.
2016-01-03 09:38:30 +07:00
DNx5
774b7513c9
Attempt to update player's IP on login if they have default IP in database.
2016-01-03 09:34:46 +07:00
DNx5
4161dcaa94
Fix SingleSession check order.
2016-01-03 09:34:44 +07:00
DNx5
052e414ff3
Moved VeryGames IP check into AsyncJoin process.
...
- Updated VeryGames IP check method.
- Remove player's IP from realIp map on quit.
2016-01-03 09:34:41 +07:00
DNx5
4ea6cc9d69
Fix player name case check.
2016-01-03 09:34:38 +07:00
ljacqu
9533965095
Minor - update JavaDoc for HashAlgorithm
...
- Replace incorrect description
2016-01-02 01:09:42 +01:00
ljacqu
561e21f5e2
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 137-xenforo-support
...
Conflicts:
src/main/java/fr/xephi/authme/datasource/DataSource.java
src/main/java/fr/xephi/authme/datasource/SQLite.java
src/main/java/fr/xephi/authme/security/crypts/BCRYPT.java
2016-01-02 00:52:08 +01:00
DNx5
6cae520604
Use Guava's Files.toString API to read the email file.
2016-01-02 06:24:44 +07:00
DNx5
266c979319
Use Bukkit API to extract "email.html" from plugin file.
2016-01-02 06:24:42 +07:00
ljacqu
071800481a
Minor - fix failing build
2016-01-01 10:34:38 +01:00
ljacqu
94c836376e
Revert "Start rework of Settings" from master
...
- Revert 1f55e85
because it's simpler to have ljacqu revert a commit on master, create a new branch and cherry-pick the reverted commit than to enter one command to change branch
2015-12-31 17:02:15 +01:00
Xephi
0c5d835f47
Start rework of Settings
...
Please move to another branch :3
2015-12-31 16:35:38 +01:00
Xephi
1f55e85172
Start rework of Settings
2015-12-31 16:35:08 +01:00
ljacqu
d46a2f0755
Fix test in PasswordSecurity for new savePassword()
2015-12-31 13:52:16 +01:00
ljacqu
209cc23c4b
Fix markdown table in hash algorithms overview
...
- GitHub requires at least 3 dashes between two column separators |. Most markdown previewers don't have this restriction.
2015-12-31 13:42:41 +01:00
ljacqu
6475cecd79
Add tools task to generate an encryption algorithm overview
2015-12-31 13:33:00 +01:00
ljacqu
a0da423a7b
Minor - Javadoc changes
...
- Add/replace/improve javadoc in the commands and encryption section
- Note: A simple <p> is the javadoc way to make a new paragraph
http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html#format
- Note: Do not escape '<' and '>' inside of {@code }
- Note: '>' does not need to be escaped
2015-12-31 13:32:41 +01:00
DNx5
0c305a6287
Added new updatePassword method in DataSource class
2015-12-31 12:55:34 +07:00
DNx5
9eeb510b08
Messing up the test.
2015-12-31 12:20:48 +07:00
DNx5
bd5d341e67
Xenforo support.
...
- Added getPassword method in DataSource and all implementations.
2015-12-31 11:05:18 +07:00
Xephi59
e1a84448a2
Fix the whole Javadoc syntax
2015-12-31 01:06:09 +01:00
ljacqu
aed23cb1ef
Revert removal of XENFORO enum, hash class and custom SQL
...
- Undo commits 121d323
and 1c12278
- Add TODO's with issue number
- Add slight, necessary adjustments for code changes since the reverted commits
2015-12-31 00:36:08 +01:00
ljacqu
52222d98e0
Fix #321 Message verifier should understand line breaks
...
- Make messages verifier understand that indented lines belong to the same message
- Revert newline to &n replacements done in f5583f4
2015-12-30 23:56:09 +01:00
ljacqu
eea3697fa4
#364 Add test for bogus hashes
...
- Verify that a "hash" in the wrong format doesn't throw exception (this is relevant when the supportOldPasswordHash setting is enabled)
2015-12-30 23:24:36 +01:00
ljacqu
c0a393b8b3
Minor - rename EncryptedPassword to HashedPassword
...
- We hash passwords; we don't encrypt them
2015-12-30 22:51:59 +01:00
ljacqu
e85dbe81e5
#358 Ensure lowercase player name, issue cleanup
...
- Ensure within PasswordSecurity that the player name is lowercase
- Remove check for MD5VB separate salt (we only generate hashes with the salt embedded, so either we need to change that or we don't need this check)
- Remove obsolete TODO
2015-12-30 22:45:18 +01:00
Gabriele C
300a621e1c
cleanup
2015-12-30 22:28:45 +01:00
ljacqu
71f8a01179
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 358-encryptn-mthd-refactor
2015-12-30 21:37:52 +01:00
ljacqu
3328656134
#358 Create test for PasswordSecurity, create salt column if not exists
...
- Add test class for PasswordSecurity
- Check and create the salt column in MySQL and SQLite when necessary
- Add javadoc to some classes
2015-12-30 21:36:07 +01:00
ljacqu
8b60c66cc8
Minor - adjust PlayerAuth builder methods
...
- Rename hash() to password()
- Add location(Location) builder method
- Replace usages of password(new EncryptedPassword(hash, salt)) to the more terse password(String, String) builder method
2015-12-30 18:28:06 +01:00
ljacqu
a3402d573f
#358 Handle hash + salt as one "unit"
...
- Rename HashResult to EncryptedPassword to reflect its broader use
- Use EncryptedPassword in methods that require the hash and the salt, instead of passing them as strings separately
- Store EncryptedPassword as field in PlayerAuth; updatePassword() thus processes the entire data in the EncryptedPassword object
2015-12-30 17:56:22 +01:00
ljacqu
9c4a578bec
#358 Remove old methods on PasswordSecurity, unify hash + salt
...
- For encryption methods with a separate salt, the hash is useless without the salt, so hash and salt should always be persisted and retrieved together
2015-12-30 15:43:25 +01:00
Xephi
81a9811c9b
Revert "Add a way to handle a player logout in playerquit into bungeecord"
...
This reverts commit a3a3907586
.
2015-12-30 15:11:17 +01:00
Xephi
a3a3907586
Add a way to handle a player logout in playerquit into bungeecord
2015-12-30 14:40:19 +01:00
Xephi
bf6ef0f4a0
don't take care about message :D
2015-12-30 13:54:54 +01:00
ljacqu
ce6951bcfe
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 358-encryptn-mthd-refactor
2015-12-30 13:53:53 +01:00
Xephi
edffae3a36
Add TabComplete support through ProtocolLib
2015-12-30 13:20:24 +01:00
Xephi
ac0225c621
Revert "Start a rework of some SQL Queries, add a Query builder"
...
This reverts commit da1adb632e
.
2015-12-30 13:14:53 +01:00
Xephi
bfbddd466a
Revert "Change to QueryType"
...
This reverts commit f7010f1d3b
.
2015-12-30 13:14:48 +01:00
Xephi
668535d93f
Revert "Pass args through PreparedStatement"
...
This reverts commit 14e130eaee
.
2015-12-30 13:14:41 +01:00
Xephi
0a2941ed4e
Revert "Remove source from constructor"
...
This reverts commit dbacf7754d
.
2015-12-30 13:14:32 +01:00
Xephi
dbacf7754d
Remove source from constructor
2015-12-30 12:05:24 +01:00
Xephi
14e130eaee
Pass args through PreparedStatement
2015-12-30 12:03:48 +01:00
Xephi
f7010f1d3b
Change to QueryType
2015-12-30 09:59:28 +01:00
Xephi
da1adb632e
Start a rework of some SQL Queries, add a Query builder
2015-12-29 17:07:33 +01:00
ljacqu
922082f312
#364 Add HashAlgorithm integration test, fix failing tests
...
- Create integration test for the HashAlgorithm enum
- Create AsciiRestricted annotation and make test aware of it
- Add option to skip "same hash for same salt" test (for wordpress)
- Change some EncryptionMethods to extend from a common superclass
2015-12-29 13:29:26 +01:00
ljacqu
531327dd9b
Minor - make AuthMe.database private
...
- In favor of AuthMe.getDataSource()
2015-12-29 11:55:57 +01:00
ljacqu
571cb6d36b
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 358-encryptn-mthd-refactor
2015-12-29 10:54:09 +01:00
ljacqu
b3b751920a
#358 Replace usage of static PasswordSecurity methods
...
- Replace static methods to instance methods
- Use PlayerAuth builder instead of constructor
2015-12-29 00:13:20 +01:00
ljacqu
1c12278c4b
#369 Remove XENFORO enum entry
2015-12-28 22:39:15 +01:00
ljacqu
121d323221
#369 Delete Xenforo (XF) encryption algorithm
...
Rationale:
- Seems not to have been working since it was added to the codebase
- Seems not to correspond to the actual Xenforo password hashing (class does some sort of JSON extraction?)
- It would be easier to rewrite it from scratch if someone requests it later
2015-12-28 22:32:24 +01:00
ljacqu
47f4275225
#358 Update EncryptionMethod to new interface
...
- Add new methods to the EncryptionMethod interface
- Delete temporary interface (NewEncrMethod)
- Remove temporary checks and casts to NewEncrMethod
2015-12-28 22:00:43 +01:00
ljacqu
9b73475b9a
Minor - clean up bcrypt 2y implementation
...
- Update Recommendation annotation
- Add proper length check to hash
- Remove check that is always true
2015-12-28 21:27:47 +01:00
ljacqu
73bc6e286a
#369 Fix bcrypt 2y implementation
...
- Change salt length to 22: it was once changed on accident during some other commit
2015-12-28 21:03:33 +01:00
ljacqu
48d0a65724
#358 Create encryption method supertypes, add new methods
2015-12-28 20:10:45 +01:00
ljacqu
31730699ac
#358 Start refactoring PasswordSecurity
...
- Add new methods temporarily to NewEncrMethod interface
- No data source access within EncryptionMethod implementations
- Generate the salt within the EncryptionMethod implementation
- Deprecate static methods on PasswordSecurity
- Adjust AbstractEncryptionMethodTest to test the classes with the new interface
- Add getter for data source instead of accessing field directly
2015-12-28 16:23:08 +01:00
Xephi
2de077e71b
Fix for #386
2015-12-28 14:35:37 +01:00
Xephi
8fec53eda3
Remove todo for #368
2015-12-28 14:26:37 +01:00
ljacqu
37604e6a51
Always check for "testable" methods in listener consistency test
...
- Add check to overlooked test
2015-12-28 14:05:20 +01:00
ljacqu
48dce83892
Exclude all methods containing '$' in ListenerConsistencyTest
2015-12-28 13:56:54 +01:00
ljacqu
6ac1967364
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 358-encryptn-mthd-refactor
2015-12-28 13:33:18 +01:00
Xephi
c4fa2a756a
Remove an old todo
2015-12-28 12:48:20 +01:00
Xephi
0688a8645a
Deprecated PLAINTEXT support
2015-12-28 12:29:00 +01:00
Xephi
806201e1cc
Add Hostname to restricted ip method
2015-12-28 11:59:30 +01:00
Xephi
c94b6223a1
Add wildcard to perform reset position for each players
2015-12-28 11:50:16 +01:00
Xephi
0103c5e2e5
Cannot do this async
2015-12-28 11:37:13 +01:00
ljacqu
1cabc47ff9
Minor - remove debug println from test
2015-12-27 23:40:32 +01:00
ljacqu
804a670e08
Create test for HashUtils and RandomString
2015-12-27 23:37:07 +01:00
ljacqu
513ff9a928
#358 Make RandomString static & generate all rand. strings with it
...
- Remove dubious random String generator on HashUtils
- Make further hash classes use HashUtils
2015-12-27 22:16:16 +01:00
ljacqu
68e5f636ae
Minor: Converters - reduce visibility
...
- Change fields from public to private
- Make classes package-private where appropriate
- Remove redundant javadoc
2015-12-27 21:21:09 +01:00
ljacqu
25a9b6cb00
Fix #382 Add missing placeholder to message key
2015-12-27 00:08:59 +01:00
ljacqu
90a0325194
#358 Add future interface methods, remove exception throwing
...
- Create Utils class for a common implementation of md5/sha1
- Create "foolproof" way of getting the MessageDigest for md5 etc. (MessageDigestAlgorithm enum)
- Create description annotations to annotate algorithms with usage recommendation and salt type
2015-12-26 23:59:32 +01:00
ljacqu
2bb386c488
Merge master into 306-commands-service - Conflicts
2015-12-26 21:33:53 +01:00
ljacqu
103ebb44f0
Merge master into 306-commands-service
...
Conflicts:
- AuthMe
- CommandInitializer
- ConverterCommand
2015-12-26 21:33:25 +01:00
ljacqu
f37fc32717
Simplify listener classes
...
- Remove unused fields
- Use Service methods where possible
2015-12-26 21:26:19 +01:00
ljacqu
47e97244a7
#306 Create tests for CommandService and PlayerCommand
2015-12-26 20:58:05 +01:00
ljacqu
27fee3ca64
#306 Create PlayerCommand abstract type
...
- Create PlayerCommand to handle player-only command checks centrally and consistently
- Adjust tests
2015-12-26 19:47:47 +01:00
ljacqu
5ab3a1f9ef
Minor - remove StringUtils#getStackTrace
...
- Remove StringUtils#getStackTrace in favor of Guava's Throwables#getStackTraceAsString
2015-12-26 18:01:09 +01:00
ljacqu
74ceb66430
#306 Remove singleton getters in admin commands
...
- Note: this commit does not remove all singleton getters
2015-12-26 17:57:53 +01:00
Xephi59
41e400e9dd
Deprecate flatile datasource, force flat to sqlite conversion #344
2015-12-26 15:38:16 +01:00
ljacqu
72365bc6e4
#336 Remove new lines before base commands
...
- GitHub doesn't seem able to add a space before a new base command without adding random new lines in the entire list
2015-12-26 14:07:28 +01:00
Xephi59
0abfd5705c
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded.git
2015-12-26 14:05:18 +01:00
Xephi59
625369db5a
Add BungeeCord playerSendTo config
2015-12-26 14:05:10 +01:00
ljacqu
e5e7e04c2b
Fix #336 Create task to generate a commands page
...
- Fix logic for optional tags
- Fix file output format
- Add generated file to repository
2015-12-26 14:00:15 +01:00
ljacqu
37918e845c
Minor - remove checks for no longer supported legacy Permissions
2015-12-26 13:06:30 +01:00
ljacqu
283bb7c113
Minor - add change lost during merge
2015-12-26 13:05:43 +01:00
ljacqu
c73969256c
Merge master into '306-command-service'
...
Conflict:
- HelpCommand.java
2015-12-26 13:01:00 +01:00
ljacqu
71a9f4140b
#375 Issue warning instead of failing test for non-ASCII password
...
- Add javadoc to fields
2015-12-26 12:52:05 +01:00
games647
9314612050
Also load the configuration option of forceSurvivalMode
2015-12-25 16:40:24 +01:00
ljacqu
418fbabcc8
Fix #376 Check not to show alternatives for base command
...
- Fix wrong assumption in HelpCommand that the incoming arguments size always corresponds to the label count of the mapped command
2015-12-24 15:47:05 +01:00
ljacqu
9e8f51c616
#306 Fully test HelpProvider and CommandSyntaxHelper
2015-12-24 15:26:25 +01:00
ljacqu
050275a0a6
#306 Fully test AccountsCommand
2015-12-24 12:19:14 +01:00
Xephi
3b33781b0b
Send Email as UTF-8
2015-12-24 12:07:05 +01:00
ljacqu
cb2ffca6d3
#306 Change help provider to non-static / add calls to help functionality
2015-12-23 23:51:39 +01:00
ljacqu
9ae20df670
Minor - update setting name in config.yml
2015-12-23 22:51:11 +01:00
ljacqu
a9fc658db0
Merge branch 'master' of https://github.com/AuthMe-Team/AuthMeReloaded into 306-command-service
2015-12-23 18:09:21 +01:00
ljacqu
be942c2b36
#306 Fix tests for command mapper and command handler
...
- Export initializing and retrieval of test commands to a separate class
2015-12-23 18:04:46 +01:00
games647
0beb937b8f
Re add force survival gamemode option on join
2015-12-23 16:04:49 +01:00
Gabriele C
da84efe090
Merge pull request #84 from games647/gamemode
...
Remove gamemode and flying switching
2015-12-23 15:42:24 +01:00
ljacqu
c50741e1ca
#375 Remove Ignore annotation on password hash check test
2015-12-23 15:28:52 +01:00