Updating this

This commit is contained in:
Ilya 2021-02-19 20:58:03 +03:00
parent 24304e4bbc
commit b785901d3b
22 changed files with 1374 additions and 211 deletions

View File

@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4"> <module external.linked.project.id="WebInfoSponge" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="ru.redguy" external.system.module.version="1.S3" type="JAVA_MODULE" version="4">
<component name="ExternalSystem" externalSystem="GRADLE" externalSystemModuleGroup="ru.redguy" externalSystemModuleVersion="1.S2" linkedProjectId="WebInfoSponge" linkedProjectPath="$MODULE_DIR$" rootProjectPath="$MODULE_DIR$" /> <component name="ExternalSystem" externalSystem="GRADLE" externalSystemModuleGroup="ru.redguy" externalSystemModuleVersion="1.0.4" linkedProjectId="WebInfoSponge" linkedProjectPath="$MODULE_DIR$" rootProjectPath="$MODULE_DIR$" />
<component name="NewModuleRootManager" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" /> <excludeFolder url="file://$MODULE_DIR$/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/build" /> <excludeFolder url="file://$MODULE_DIR$/build" />
</content> </content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
</module> </module>

File diff suppressed because it is too large Load Diff

View File

@ -1,52 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="AnalysisUIOptions">
<option name="GROUP_BY_SEVERITY" value="true" />
</component>
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="BranchesTreeState">
<expand>
<path>
<item name="ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="LOCAL_ROOT" type="e8cecc67:BranchNodeDescriptor" />
</path>
<path>
<item name="ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="REMOTE_ROOT" type="e8cecc67:BranchNodeDescriptor" />
</path>
<path>
<item name="ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="REMOTE_ROOT" type="e8cecc67:BranchNodeDescriptor" />
<item name="GROUP_NODE:origin" type="e8cecc67:BranchNodeDescriptor" />
</path>
</expand>
<select />
</component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="4c49626a-dc81-4683-a8c7-378558b6cdc3" name="Default Changelist" comment=""> <list default="true" id="4c49626a-dc81-4683-a8c7-378558b6cdc3" name="Default Changelist" comment="Add cp page">
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/Config.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebStatic.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/IWebPage.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/utils/Jsonable.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/Logger.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/utils/SessionUtils.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/LoggerType.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/main/resources/resources/web/web.iml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/User.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/WebInfoSponge.iml" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.iml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/UsersConfig.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebPage.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebServer.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/Category.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/LangFile.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/Links.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/RootCategory.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/Titles.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/Words.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/enums/Links.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/enums/RootCategories.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/enums/Titles.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/enums/Words.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/langs/langcaterories/Difficulty.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/Index.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/auth/Index.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/auth/Worker.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/json/MainData.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/logout/Index.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/utils/DataUtils.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/utils/DoerUtils.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/utils/WebUtils.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/resources/langs/ru.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/resources/web/css/index.css" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/resources/web/js/index.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/resources/web/pages/Index.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/resources/resources/web/pages/auth/Index.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.6.1/executionHistory/executionHistory.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.6.1/executionHistory/executionHistory.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.6.1/executionHistory/executionHistory.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.6.1/executionHistory/executionHistory.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.6.1/fileHashes/fileHashes.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.6.1/fileHashes/fileHashes.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.6.1/fileHashes/fileHashes.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.6.1/fileHashes/fileHashes.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/outputFiles.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/outputFiles.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WebInfoSponge.ipr" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.ipr" afterDir="false" /> <change beforePath="$PROJECT_DIR$/WebInfoSponge.ipr" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.ipr" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WebInfoSponge.iws" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.iws" afterDir="false" /> <change beforePath="$PROJECT_DIR$/WebInfoSponge.iws" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.iws" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WebInfoSponge.main.iml" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.main.iml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/WebInfoSponge.main.iml" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.main.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/WebInfoSponge.test.iml" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.test.iml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/WebInfoSponge.test.iml" beforeDir="false" afterPath="$PROJECT_DIR$/WebInfoSponge.test.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" /> <change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
<change beforePath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle/wrapper/gradle-wrapper.properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/gradle.properties" beforeDir="false" afterPath="$PROJECT_DIR$/gradle.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/Config.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/Config.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/User.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/User.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/UsersConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/UsersConfig.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebInfoSponge.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebInfoSponge.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebInfoSponge.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebInfoSponge.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/auth/Index.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/auth/Index.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/auth/Worker.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/auth/Worker.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/cp/Index.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/cp/Index.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/logout/Index.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/pages/logout/Index.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/utils/BasePlaceholders.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/utils/BasePlaceholders.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/resources/web/js/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/resources/web/js/index.js" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -54,13 +55,34 @@
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="ExternalProjectsData"> <component name="ExternalProjectsData">
<projectState path="$PROJECT_DIR$/../../Servers/SpongeVanilla">
<ProjectState />
</projectState>
<projectState path="$PROJECT_DIR$"> <projectState path="$PROJECT_DIR$">
<ProjectState /> <ProjectState />
</projectState> </projectState>
<projectState path="P:/Разработка/Servers/SpongeVanilla">
<ProjectState />
</projectState>
</component> </component>
<component name="ExternalProjectsManager"> <component name="ExternalProjectsManager">
<system id="GRADLE"> <system id="GRADLE">
<state> <state>
<task path="$PROJECT_DIR$">
<activation />
</task>
<task path="$PROJECT_DIR$/../../Servers/SpongeVanilla">
<activation />
</task>
<task path="$PROJECT_DIR$/../../Servers/SpongeVanilla/SpongeCommon/SpongeAPI">
<activation />
</task>
<task path="$PROJECT_DIR$/../../Servers/SpongeVanilla/SpongeCommon">
<activation />
</task>
<task path="$PROJECT_DIR$/../../Servers/SpongeVanilla/client">
<activation />
</task>
<projects_view> <projects_view>
<tree_state> <tree_state>
<expand /> <expand />
@ -73,45 +95,81 @@
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES"> <option name="RECENT_TEMPLATES">
<list> <list>
<option value="JavaScript File" />
<option value="Class" /> <option value="Class" />
</list> </list>
</option> </option>
</component> </component>
<component name="Git.Settings"> <component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
<option name="ROOT_SYNC" value="DONT_SYNC" />
</component> </component>
<component name="ProjectId" id="1argTTn1XgFiBy75NdzurT2eMDw" /> <component name="ProjectId" id="1argTTn1XgFiBy75NdzurT2eMDw" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true" /> <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState"> <component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showExcludedFiles" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" /> <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="android.sdk.path" value="C:/Android/SDK" /> <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod" /> <property name="WebServerToolWindowFactoryState" value="false" />
<property name="android.sdk.path" value="$PROJECT_DIR$/../../../../../Android/SDK" />
<property name="aspect.path.notification.shown" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../Servers/SpongeVanilla/build.gradle" />
<property name="node.js.detected.package.eslint" value="true" />
<property name="node.js.path.for.package.eslint" value="project" />
<property name="node.js.selected.package.eslint" value="(autodetect)" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="project.structure.last.edited" value="Modules" /> <property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.0" /> <property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.0" /> <property name="project.structure.side.proportion" value="0.2" />
<property name="settings.editor.selected.configurable" value="preferences.JavaFX" /> <property name="run.code.analysis.last.selected.profile" value="pProject Default" />
<property name="settings.editor.selected.configurable" value="Errors" />
</component> </component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\Ilya\Source\Repos\java\WebInfoSponge\src\main\resources\resources\web\pages" />
<recent name="C:\Users\Ilya\Source\Repos\WebInfoSponge\src\main\java\ru\redguy\webinfomod" /> <recent name="C:\Users\Ilya\Source\Repos\WebInfoSponge\src\main\java\ru\redguy\webinfomod" />
<recent name="C:\Users\Ilya\Source\Repos\WebInfoSponge\src\main" /> <recent name="C:\Users\Ilya\Source\Repos\WebInfoSponge\src\main" />
</key> </key>
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="ru.redguy.webinfomod.pages.cp" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\Ilya\Source\Repos\java\WebInfoSponge\src\main\resources\resources\web" />
</key>
</component> </component>
<component name="RunManager"> <component name="RunManager" selected="Gradle.SpongeVanilla [runServer]">
<configuration default="true" type="Application" factoryName="Application"> <configuration default="true" type="Application" factoryName="Application">
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<method v="2"> <method v="2">
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="WebInfoSponge build" type="GradleRunConfiguration" factoryName="Gradle"> <configuration name="SpongeVanilla [runServer]" type="GradleRunConfiguration" factoryName="Gradle" nameIsGenerated="true">
<ExternalSystemSettings> <ExternalSystemSettings>
<option name="executionName" value="WebInfoSponge build" /> <option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$/../../Servers/SpongeVanilla" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="runServer" />
</list>
</option>
<option name="vmOptions" value="" />
</ExternalSystemSettings>
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" />
</configuration>
<configuration name="WebInfoSponge [test]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" /> <option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" /> <option name="scriptParameters" />
@ -120,7 +178,7 @@
</option> </option>
<option name="taskNames"> <option name="taskNames">
<list> <list>
<option value="build" /> <option value="test" />
</list> </list>
</option> </option>
<option name="vmOptions" /> <option name="vmOptions" />
@ -128,6 +186,25 @@
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled> <GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" /> <method v="2" />
</configuration> </configuration>
<configuration name="WebInfoSponge build" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" value="WebInfoSponge build" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="build" />
</list>
</option>
<option name="vmOptions" value="" />
</ExternalSystemSettings>
<GradleScriptDebugEnabled>true</GradleScriptDebugEnabled>
<method v="2" />
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit"> <configuration default="true" type="JUnit" factoryName="JUnit">
<option name="TEST_OBJECT" value="class" /> <option name="TEST_OBJECT" value="class" />
<option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" /> <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
@ -144,7 +221,18 @@
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<list>
<item itemvalue="Gradle.WebInfoSponge build" />
<item itemvalue="Gradle.SpongeVanilla [runServer]" />
<item itemvalue="Gradle.WebInfoSponge [test]" />
</list>
<recent_temporary>
<list>
<item itemvalue="Gradle.WebInfoSponge [test]" />
</list>
</recent_temporary>
</component> </component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="SvnConfiguration"> <component name="SvnConfiguration">
<configuration /> <configuration />
</component> </component>
@ -155,37 +243,160 @@
<option name="number" value="Default" /> <option name="number" value="Default" />
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1587499134817</updated> <updated>1587499134817</updated>
<workItem from="1608371483706" duration="893000" />
<workItem from="1608372467382" duration="31255000" />
<workItem from="1608464165865" duration="296000" />
<workItem from="1608470257315" duration="7217000" />
<workItem from="1608482612300" duration="325000" />
<workItem from="1609005952903" duration="673000" />
<workItem from="1613740219146" duration="16048000" />
</task> </task>
<task id="LOCAL-00001" summary="1.S3 release">
<created>1603741229448</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1603741229448</updated>
</task>
<task id="LOCAL-00002" summary="Add cp page">
<created>1606331158101</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1606331158101</updated>
</task>
<task id="LOCAL-00003" summary="New Placeholder system and Localization system">
<created>1608478261570</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1608478261570</updated>
</task>
<option name="localTasksCounter" value="4" />
<servers /> <servers />
</component> </component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="1.S3 release" />
<MESSAGE value="Fixes" />
<MESSAGE value="Add cp page" />
<MESSAGE value="New Placeholder system and Localization system" />
<option name="LAST_COMMIT_MESSAGE" value="New Placeholder system and Localization system" />
</component>
<component name="WindowStateProjectService"> <component name="WindowStateProjectService">
<state x="275" y="23" key="#Project_Structure" timestamp="1587909798375"> <state x="137" y="19" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1613754217734">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state x="275" y="23" key="#Project_Structure/0.0.1366.728@0.0.1366.728" timestamp="1587909798375" /> <state x="137" y="19" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.0.1366.728@0.0.1366.728" timestamp="1613754217734" />
<state x="336" y="0" key="CommitChangelistDialog2" timestamp="1587499510823"> <state x="488" y="70" key="#com.intellij.ide.util.MemberChooser" timestamp="1613743967625">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state x="336" y="0" key="CommitChangelistDialog2/0.0.1366.728@0.0.1366.728" timestamp="1587499510823" /> <state x="488" y="70" key="#com.intellij.ide.util.MemberChooser/0.0.1366.728@0.0.1366.728" timestamp="1613743967625" />
<state width="1323" height="178" key="GridCell.Tab.0.bottom" timestamp="1587911372460"> <state x="148" y="0" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog" timestamp="1608375391499">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state width="1323" height="178" key="GridCell.Tab.0.bottom/0.0.1366.728@0.0.1366.728" timestamp="1587911372460" /> <state x="148" y="0" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/0.0.1366.728@0.0.1366.728" timestamp="1608375391499" />
<state width="1323" height="178" key="GridCell.Tab.0.center" timestamp="1587911372460"> <state x="413" y="111" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1608374820045">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state width="1323" height="178" key="GridCell.Tab.0.center/0.0.1366.728@0.0.1366.728" timestamp="1587911372460" /> <state x="413" y="111" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1366.728@0.0.1366.728" timestamp="1608374820045" />
<state width="1323" height="178" key="GridCell.Tab.0.left" timestamp="1587911372460"> <state x="430" y="198" key="ANALYSIS_DLG_com.intellij.analysis.BaseAnalysisAction$1" timestamp="1613740929278">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state width="1323" height="178" key="GridCell.Tab.0.left/0.0.1366.728@0.0.1366.728" timestamp="1587911372460" /> <state x="430" y="198" key="ANALYSIS_DLG_com.intellij.analysis.BaseAnalysisAction$1/0.0.1366.728@0.0.1366.728" timestamp="1613740929278" />
<state width="1323" height="178" key="GridCell.Tab.0.right" timestamp="1587911372460"> <state x="271" y="0" key="CommitChangelistDialog2" timestamp="1608372777633">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state width="1323" height="178" key="GridCell.Tab.0.right/0.0.1366.728@0.0.1366.728" timestamp="1587911372460" /> <state x="271" y="0" key="CommitChangelistDialog2/0.0.1366.728@0.0.1366.728" timestamp="1608372777633" />
<state x="65" y="35" key="new project wizard" timestamp="1587499840883"> <state x="463" y="119" key="FileChooserDialogImpl" timestamp="1613752891542">
<screen x="0" y="0" width="1366" height="728" /> <screen x="0" y="0" width="1366" height="728" />
</state> </state>
<state x="65" y="35" key="new project wizard/0.0.1366.728@0.0.1366.728" timestamp="1587499840883" /> <state x="463" y="119" key="FileChooserDialogImpl/0.0.1366.728@0.0.1366.728" timestamp="1613752891542" />
<state width="1323" height="223" key="GridCell.Tab.0.bottom" timestamp="1613755963388">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1323" height="223" key="GridCell.Tab.0.bottom/0.0.1366.728@0.0.1366.728" timestamp="1613755963388" />
<state width="1323" height="223" key="GridCell.Tab.0.center" timestamp="1613755963388">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1323" height="223" key="GridCell.Tab.0.center/0.0.1366.728@0.0.1366.728" timestamp="1613755963388" />
<state width="1323" height="223" key="GridCell.Tab.0.left" timestamp="1613755963388">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1323" height="223" key="GridCell.Tab.0.left/0.0.1366.728@0.0.1366.728" timestamp="1613755963388" />
<state width="1323" height="223" key="GridCell.Tab.0.right" timestamp="1613755963388">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1323" height="223" key="GridCell.Tab.0.right/0.0.1366.728@0.0.1366.728" timestamp="1613755963388" />
<state width="1323" height="223" key="GridCell.Tab.1.bottom" timestamp="1613755963389">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1323" height="223" key="GridCell.Tab.1.bottom/0.0.1366.728@0.0.1366.728" timestamp="1613755963389" />
<state width="1323" height="223" key="GridCell.Tab.1.center" timestamp="1613755963389">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1323" height="223" key="GridCell.Tab.1.center/0.0.1366.728@0.0.1366.728" timestamp="1613755963389" />
<state width="1323" height="223" key="GridCell.Tab.1.left" timestamp="1613755963388">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1323" height="223" key="GridCell.Tab.1.left/0.0.1366.728@0.0.1366.728" timestamp="1613755963388" />
<state width="1323" height="223" key="GridCell.Tab.1.right" timestamp="1613755963389">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state width="1323" height="223" key="GridCell.Tab.1.right/0.0.1366.728@0.0.1366.728" timestamp="1613755963389" />
<state x="263" y="99" key="IDE.errors.dialog" timestamp="1608383059685">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="263" y="99" key="IDE.errors.dialog/0.0.1366.728@0.0.1366.728" timestamp="1608383059685" />
<state x="-3" y="0" width="916" height="728" key="SettingsEditor" timestamp="1613755950044">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="-3" y="0" width="916" height="728" key="SettingsEditor/0.0.1366.728@0.0.1366.728" timestamp="1613755950044" />
<state x="181" y="72" key="Vcs.Push.Dialog.v2" timestamp="1608478366712">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="181" y="72" key="Vcs.Push.Dialog.v2/0.0.1366.728@0.0.1366.728" timestamp="1608478366712" />
<state x="65" y="0" key="new project wizard" timestamp="1608373390458">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="65" y="0" key="new project wizard/0.0.1366.728@0.0.1366.728" timestamp="1608373390458" />
<state x="346" y="49" width="672" height="678" key="search.everywhere.popup" timestamp="1613741232328">
<screen x="0" y="0" width="1366" height="728" />
</state>
<state x="346" y="49" width="672" height="678" key="search.everywhere.popup/0.0.1366.728@0.0.1366.728" timestamp="1613741232328" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebServer.java</url>
<line>46</line>
<option name="timeStamp" value="1" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/ru/redguy/webinfomod/WebServer.java</url>
<line>44</line>
<option name="timeStamp" value="2" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
<select />
</component> </component>
</project> </project>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="WebInfoSponge:main" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="ru.redguy" external.system.module.type="sourceSet" external.system.module.version="1.S2" type="JAVA_MODULE" version="4"> <module external.linked.project.id="WebInfoSponge:main" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="ru.redguy" external.system.module.type="sourceSet" external.system.module.version="1.0.4" type="JAVA_MODULE" version="4">
<component name="FacetManager"> <component name="FacetManager">
<facet type="minecraft" name="Minecraft"> <facet type="minecraft" name="Minecraft">
<configuration> <configuration>
@ -9,7 +9,7 @@
</configuration> </configuration>
</facet> </facet>
</component> </component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$/build/generated/sources/annotationProcessor/java/main"> <content url="file://$MODULE_DIR$/build/generated/sources/annotationProcessor/java/main">
<sourceFolder url="file://$MODULE_DIR$/build/generated/sources/annotationProcessor/java/main" isTestSource="false" generated="true" /> <sourceFolder url="file://$MODULE_DIR$/build/generated/sources/annotationProcessor/java/main" isTestSource="false" generated="true" />
@ -22,29 +22,32 @@
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Gradle: org.nanohttpd:nanohttpd:2.3.1" level="project" /> <orderEntry type="library" name="Gradle: org.nanohttpd:nanohttpd:2.3.1" level="project" />
<orderEntry type="library" name="Gradle: org.reflections:reflections:0.9.12" level="project" /> <orderEntry type="library" name="Gradle: org.reflections:reflections:0.9.12" level="project" />
<orderEntry type="library" name="Gradle: org.apache.directory.studio:org.apache.commons.io:2.4" level="project" />
<orderEntry type="library" name="Gradle: org.json:json:20201115" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:spongeapi:7.1.0" level="project" />
<orderEntry type="library" name="Gradle: org.javassist:javassist:3.26.0-GA" level="project" /> <orderEntry type="library" name="Gradle: org.javassist:javassist:3.26.0-GA" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.errorprone:error_prone_annotations:2.0.15" level="project" /> <orderEntry type="library" name="Gradle: commons-io:commons-io:2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.code.findbugs:jsr305:3.0.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.inject:guice:4.1.0" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.inject:guice:4.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.apache.commons:commons-lang3:3.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.github.ben-manes.caffeine:guava:2.5.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:plugin-meta:0.4.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:plugin-meta:0.4.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-hocon:3.6" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-hocon:3.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-gson:3.6" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-gson:3.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-yaml:3.6" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-yaml:3.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.guava:guava:21.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.errorprone:error_prone_annotations:2.0.15" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.code.gson:gson:2.8.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.apache.commons:commons-lang3:3.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.code.findbugs:jsr305:3.0.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.github.ben-manes.caffeine:guava:2.5.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.github.ben-manes.caffeine:caffeine:2.5.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.flowpowered:flow-math:1.0.3" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: com.flowpowered:flow-math:1.0.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.flowpowered:flow-noise:1.0.1-SNAPSHOT" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: com.flowpowered:flow-noise:1.0.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.ow2.asm:asm:5.2" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.ow2.asm:asm:5.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: aopalliance:aopalliance:1.0" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-core:3.6" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-core:3.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.typesafe:config:1.3.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: com.typesafe:config:1.3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:spongeapi:7.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.checkerframework:checker-qual:2.4.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.yaml:snakeyaml:1.18" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.yaml:snakeyaml:1.18" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.github.ben-manes.caffeine:caffeine:2.5.4" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Gradle: org.checkerframework:checker-qual:2.4.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.guava:guava:21.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.code.gson:gson:2.8.0" level="project" />
</component> </component>
</module> </module>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="WebInfoSponge:test" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="ru.redguy" external.system.module.type="sourceSet" external.system.module.version="1.S2" type="JAVA_MODULE" version="4"> <module external.linked.project.id="WebInfoSponge:test" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="ru.redguy" external.system.module.type="sourceSet" external.system.module.version="1.0.4" type="JAVA_MODULE" version="4">
<component name="FacetManager"> <component name="FacetManager">
<facet type="minecraft" name="Minecraft"> <facet type="minecraft" name="Minecraft">
<configuration> <configuration>
@ -9,7 +9,7 @@
</configuration> </configuration>
</facet> </facet>
</component> </component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$/src/test"> <content url="file://$MODULE_DIR$/src/test">
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
@ -18,32 +18,12 @@
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="WebInfoSponge.main" /> <orderEntry type="module" module-name="WebInfoSponge.main" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.checkerframework:checker-qual:2.4.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.typesafe:config:1.3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.ow2.asm:asm:5.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:spongeapi:7.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.guava:guava:21.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.errorprone:error_prone_annotations:2.0.15" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.code.gson:gson:2.8.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.apache.commons:commons-lang3:3.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.code.findbugs:jsr305:3.0.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.github.ben-manes.caffeine:caffeine:2.5.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.inject:guice:4.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.github.ben-manes.caffeine:guava:2.5.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:plugin-meta:0.4.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-hocon:3.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-gson:3.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-yaml:3.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.flowpowered:flow-math:1.0.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.flowpowered:flow-noise:1.0.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.spongepowered:configurate-core:3.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.yaml:snakeyaml:1.18" level="project" />
<orderEntry type="library" name="Gradle: org.nanohttpd:nanohttpd:2.3.1" level="project" /> <orderEntry type="library" name="Gradle: org.nanohttpd:nanohttpd:2.3.1" level="project" />
<orderEntry type="library" name="Gradle: org.reflections:reflections:0.9.12" level="project" /> <orderEntry type="library" name="Gradle: org.reflections:reflections:0.9.12" level="project" />
<orderEntry type="library" name="Gradle: org.apache.directory.studio:org.apache.commons.io:2.4" level="project" />
<orderEntry type="library" name="Gradle: org.json:json:20201115" level="project" />
<orderEntry type="library" name="Gradle: org.javassist:javassist:3.26.0-GA" level="project" /> <orderEntry type="library" name="Gradle: org.javassist:javassist:3.26.0-GA" level="project" />
<orderEntry type="library" name="Gradle: commons-io:commons-io:2.4" level="project" />
</component> </component>
<component name="TestModuleProperties" production-module="WebInfoSponge.main" /> <component name="TestModuleProperties" production-module="WebInfoSponge.main" />
</module> </module>

View File

@ -20,6 +20,7 @@ dependencies {
compile 'org.nanohttpd:nanohttpd:2.3.1' compile 'org.nanohttpd:nanohttpd:2.3.1'
compile 'org.reflections:reflections:0.9.12' compile 'org.reflections:reflections:0.9.12'
compile 'org.apache.directory.studio:org.apache.commons.io:2.4' compile 'org.apache.directory.studio:org.apache.commons.io:2.4'
compile group: 'org.json', name: 'json', version: '20201115'
} }
sponge.plugin.id = pluginId sponge.plugin.id = pluginId

View File

@ -1,3 +1,3 @@
pluginGroup=ru.redguy pluginGroup=ru.redguy
pluginId=webinfomod pluginId=webinfomod
pluginVersion=1.S3 pluginVersion=1.0.4

View File

@ -11,7 +11,6 @@ import java.util.Map;
public class Config { public class Config {
private JsonObject jsonObject; private JsonObject jsonObject;
public Map<String, String> sessions;
private Logger logger; private Logger logger;
public Config(Logger logger) throws IOException { public Config(Logger logger) throws IOException {
@ -35,7 +34,6 @@ public class Config {
} }
jsonObject = (JsonObject) obj; jsonObject = (JsonObject) obj;
jsonObject.addProperty("MineV",Sponge.getPlatform().getMinecraftVersion().getName()); jsonObject.addProperty("MineV",Sponge.getPlatform().getMinecraftVersion().getName());
sessions = new HashMap<String,String>();
} }
public String getString(String name) { public String getString(String name) {

View File

@ -1,12 +1,39 @@
package ru.redguy.webinfomod; package ru.redguy.webinfomod;
public class User { import org.json.JSONObject;
import ru.redguy.webinfomod.utils.Jsonable;
public class User implements Jsonable {
public String user; public String user;
public String password; public String password;
public boolean isAdmin;
public User(String user, String password) { public User(JSONObject json) {
user = json.optString("user","admin");
password = json.optString("password","admin");
isAdmin = json.optBoolean("isAdmin",false);
}
public User(String user, String password, boolean isAdmin) {
this.user = user; this.user = user;
this.password = password; this.password = password;
this.isAdmin = isAdmin;
} }
@Override
public String toJSON() {
return toJSONObject().toString();
}
@Override
public JSONObject toJSONObject() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("user",user);
jsonObject.put("password",password);
jsonObject.put("isAdmin",isAdmin);
return jsonObject;
}
} }

View File

@ -1,48 +1,41 @@
package ru.redguy.webinfomod; package ru.redguy.webinfomod;
import com.google.gson.JsonArray; import org.apache.commons.io.FileUtils;
import com.google.gson.JsonElement; import org.json.JSONArray;
import com.google.gson.JsonObject; import org.json.JSONObject;
import com.google.gson.JsonParser;
import java.io.*; import java.io.*;
public class UsersConfig { public class UsersConfig {
private JsonArray rawUsers; private static JSONArray users;
public UsersConfig() throws IOException { public static void loadUsers() {
JsonParser parser = new JsonParser();
Object rawData;
try { try {
rawData = parser.parse(new FileReader("config/WebInfoUsers.json")); users = new JSONArray(FileUtils.readFileToString(new File("config/WebInfoUsers.json")));
} catch (FileNotFoundException e) { } catch (IOException e) {
File f = new File("config/WebInfoUsers.json"); try {
f.createNewFile(); if(new File("config/WebInfoUsers.json").createNewFile()) {
FileWriter fw = new FileWriter(f); JSONArray array = new JSONArray();
fw.write( array.put(new User("admin","password",false).toJSONObject());
"[{"+System.lineSeparator()+ users = array;
"\"user\":\"admin\","+System.lineSeparator()+ FileUtils.writeStringToFile(new File("config/WebInfoUsers.json"),array.toString());
"\"password\":\"admin\""+System.lineSeparator()+ } else {
"}]" //TODO: I cant load
); }
fw.close(); } catch (IOException ioException) {
rawData = parser.parse(new FileReader("config/WebInfoMod.json")); //TODO: I cant load
}
rawUsers = (JsonArray) rawData;
}
public User getUser(String name) {
User result = null;
for (JsonElement rawUser : rawUsers) {
JsonObject userJson = rawUser.getAsJsonObject();
if(userJson.get("user").getAsString().equals(name)) {
result = new User(
userJson.get("user").getAsString(),
userJson.get("password").getAsString()
);
} }
} }
return result; }
public static User getUser(String name) {
for (Object user : users) {
JSONObject object = (JSONObject)user;
if(name.equals(object.getString("user"))) {
return new User(object);
}
}
return null;
} }
} }

View File

@ -35,6 +35,7 @@ public class WebInfoSponge {
config = new Config(myLogger); config = new Config(myLogger);
Localization.loadLangFile(config); Localization.loadLangFile(config);
BasePlaceholders.registerBase(); BasePlaceholders.registerBase();
UsersConfig.loadUsers();
webServer = new WebServer(config.getInt("WebPort"), config); webServer = new WebServer(config.getInt("WebPort"), config);
} }
} }

View File

@ -44,14 +44,14 @@ public class WebServer extends NanoHTTPD {
if(session.getUri().startsWith("/css/")||session.getUri().startsWith("/js/")) { if(session.getUri().startsWith("/css/")||session.getUri().startsWith("/js/")) {
String path = "/resources/web"+session.getUri(); String path = "/resources/web"+session.getUri();
try { try {
return newFixedLengthResponse( //TODO: 400 код при авторизоавном доступе
IOUtils.toString(WebServer.class.getResourceAsStream(path), StandardCharsets.UTF_8)); return newFixedLengthResponse(Response.Status.OK,session.getUri().startsWith("/css/") ? "text/css" : "application/javascript", IOUtils.toString(WebServer.class.getResourceAsStream(path), StandardCharsets.UTF_8));
} catch (IOException ignored) { } catch (IOException ignored) {
} }
} else { } else {
for (Class<?> mClass : reflections.getTypesAnnotatedWith(WebPage.class, true)) { for (Class<?> mClass : reflections.getTypesAnnotatedWith(WebPage.class, true)) {
if (mClass.getAnnotation(WebPage.class).url().equals(session.getUri())) { if (session.getUri().equals(mClass.getAnnotation(WebPage.class).url()) || session.getUri().equals(mClass.getAnnotation(WebPage.class).url()+"/")) {
try { try {
return (Response) mClass.getMethod("getPage", Config.class, IHTTPSession.class).invoke(mClass.newInstance(), config, session); return (Response) mClass.getMethod("getPage", Config.class, IHTTPSession.class).invoke(mClass.newInstance(), config, session);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {

View File

@ -0,0 +1,8 @@
package ru.redguy.webinfomod;
import java.util.HashMap;
import java.util.Map;
public class WebStatic {
public static Map<String, String> sessions = new HashMap<>();
}

View File

@ -8,11 +8,12 @@ import ru.redguy.webinfomod.langs.enums.RootCategories;
import ru.redguy.webinfomod.langs.enums.Titles; import ru.redguy.webinfomod.langs.enums.Titles;
import ru.redguy.webinfomod.langs.enums.Words; import ru.redguy.webinfomod.langs.enums.Words;
import ru.redguy.webinfomod.utils.PlaceholdersUtils; import ru.redguy.webinfomod.utils.PlaceholdersUtils;
import ru.redguy.webinfomod.utils.SessionUtils;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
@WebPage(url = "/auth/") @WebPage(url = "/auth")
public class Index implements IWebPage { public class Index implements IWebPage {
public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException {

View File

@ -11,7 +11,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@WebPage(url = "/auth/worker/") @WebPage(url = "/auth/worker")
public class Worker implements IWebPage { public class Worker implements IWebPage {
public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException {
try { try {
@ -46,8 +46,8 @@ public class Worker implements IWebPage {
String token = WebUtils.MD5(date.getTime()+"MagickSalt"); String token = WebUtils.MD5(date.getTime()+"MagickSalt");
WebUtils.CookieHandler ch = new WebUtils.CookieHandler(session.getHeaders()); WebUtils.CookieHandler ch = new WebUtils.CookieHandler(session.getHeaders());
ch.set("session",token,1); ch.set("session",token,1);
config.sessions.put(token,user.user); WebStatic.sessions.put(token,user.user);
NanoHTTPD.Response response = NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.REDIRECT,NanoHTTPD.MIME_PLAINTEXT,""); NanoHTTPD.Response response = NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.TEMPORARY_REDIRECT,NanoHTTPD.MIME_PLAINTEXT,"");
response.addHeader("Location", "/"); response.addHeader("Location", "/");
ch.unloadQueue(response); ch.unloadQueue(response);
config.getLogger().info(LoggerType.Web,user.user + " login!"); config.getLogger().info(LoggerType.Web,user.user + " login!");

View File

@ -2,22 +2,21 @@ package ru.redguy.webinfomod.pages.cp;
import fi.iki.elonen.NanoHTTPD; import fi.iki.elonen.NanoHTTPD;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import ru.redguy.webinfomod.Config; import ru.redguy.webinfomod.*;
import ru.redguy.webinfomod.IWebPage;
import ru.redguy.webinfomod.WebPage;
import ru.redguy.webinfomod.WebServer;
import ru.redguy.webinfomod.langs.Localization;
import ru.redguy.webinfomod.langs.enums.Links;
import ru.redguy.webinfomod.langs.enums.RootCategories;
import ru.redguy.webinfomod.utils.PlaceholdersUtils; import ru.redguy.webinfomod.utils.PlaceholdersUtils;
import ru.redguy.webinfomod.utils.WebUtils; import ru.redguy.webinfomod.utils.SessionUtils;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@WebPage(url = "/cp/") @WebPage(url = "/cp")
public class Index implements IWebPage { public class Index implements IWebPage {
public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException {
if(!SessionUtils.checkAdmin(session)) {
NanoHTTPD.Response response = NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.TEMPORARY_REDIRECT, NanoHTTPD.MIME_PLAINTEXT, "");
response.addHeader("Location", "/");
return response;
}
String path = "/resources/web/cp/index.html"; String path = "/resources/web/cp/index.html";
String page = IOUtils.toString(WebServer.class.getResourceAsStream(path), StandardCharsets.UTF_8); String page = IOUtils.toString(WebServer.class.getResourceAsStream(path), StandardCharsets.UTF_8);
return NanoHTTPD.newFixedLengthResponse(new PlaceholdersUtils(session).work(page)); return NanoHTTPD.newFixedLengthResponse(new PlaceholdersUtils(session).work(page));

View File

@ -7,11 +7,12 @@ import ru.redguy.webinfomod.utils.WebUtils;
import java.io.IOException; import java.io.IOException;
@WebPage(url = "/logout/") @WebPage(url = "/logout")
public class Index implements IWebPage { public class Index implements IWebPage {
public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException {
WebUtils.CookieHandler ch = new WebUtils.CookieHandler(session.getHeaders()); WebUtils.CookieHandler ch = new WebUtils.CookieHandler(session.getHeaders());
config.getLogger().info(LoggerType.Web,config.sessions.get(ch.read("session"))+ " has been logout!"); config.getLogger().info(LoggerType.Web,WebStatic.sessions.get(ch.read("session"))+ " has been logout!");
WebStatic.sessions.remove(ch.read("session"));
ch.delete("session"); ch.delete("session");
NanoHTTPD.Response response = NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.REDIRECT,NanoHTTPD.MIME_PLAINTEXT,""); NanoHTTPD.Response response = NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.REDIRECT,NanoHTTPD.MIME_PLAINTEXT,"");
response.addHeader("Location", "/"); response.addHeader("Location", "/");

View File

@ -1,6 +1,7 @@
package ru.redguy.webinfomod.utils; package ru.redguy.webinfomod.utils;
import ru.redguy.webinfomod.Logger; import ru.redguy.webinfomod.Logger;
import ru.redguy.webinfomod.WebStatic;
import ru.redguy.webinfomod.langs.Localization; import ru.redguy.webinfomod.langs.Localization;
import ru.redguy.webinfomod.langs.enums.Links; import ru.redguy.webinfomod.langs.enums.Links;
import ru.redguy.webinfomod.langs.enums.RootCategories; import ru.redguy.webinfomod.langs.enums.RootCategories;
@ -14,7 +15,7 @@ public class BasePlaceholders {
@Override @Override
public String getContent(String[] args, PlaceholdersUtils placeholdersUtils) { public String getContent(String[] args, PlaceholdersUtils placeholdersUtils) {
WebUtils.CookieHandler ch = new WebUtils.CookieHandler(placeholdersUtils.getSession().getHeaders()); WebUtils.CookieHandler ch = new WebUtils.CookieHandler(placeholdersUtils.getSession().getHeaders());
if(ch.read("session") == null) { if(!WebStatic.sessions.containsKey(ch.read("session"))) {
return "<a href=\"auth/\" class=\"authLink\">"+ Localization.getCategory(RootCategories.Links).getString(Links.login)+"</a>"; return "<a href=\"auth/\" class=\"authLink\">"+ Localization.getCategory(RootCategories.Links).getString(Links.login)+"</a>";
} else { } else {
return "<a href=\"logout/\" class=\"authLink\">"+Localization.getCategory(RootCategories.Links).getString(Links.logout)+"</a><br>" + return "<a href=\"logout/\" class=\"authLink\">"+Localization.getCategory(RootCategories.Links).getString(Links.logout)+"</a><br>" +

View File

@ -0,0 +1,9 @@
package ru.redguy.webinfomod.utils;
import org.json.JSONObject;
public interface Jsonable {
String toJSON();
JSONObject toJSONObject();
}

View File

@ -0,0 +1,17 @@
package ru.redguy.webinfomod.utils;
import fi.iki.elonen.NanoHTTPD;
import ru.redguy.webinfomod.UsersConfig;
import ru.redguy.webinfomod.WebStatic;
import java.util.Objects;
public class SessionUtils {
public static boolean checkAdmin(NanoHTTPD.IHTTPSession session) {
WebUtils.CookieHandler ch = new WebUtils.CookieHandler(session.getHeaders());
if(WebStatic.sessions.containsKey(ch.read("session"))) {
return Objects.requireNonNull(UsersConfig.getUser(WebStatic.sessions.get(ch.read("session")))).isAdmin;
}
return false;
}
}

View File

@ -15,8 +15,8 @@ function updatePageInfo() {
if (xhr.readyState !== 4) return; if (xhr.readyState !== 4) return;
let data = JSON.parse(xhr.responseText); let data = JSON.parse(xhr.responseText);
header.innerText = "Мод запущен на сервере"; header.innerText = "Мод запущен на сервере";
appendLine(stat, ["Версия игры", data.MineV]); Tables.appendLine(stat, ["Версия игры", data.MineV]);
appendLine(stat, ["Игроки", data.Players]); Tables.appendLine(stat, ["Игроки", data.Players]);
} }
} }

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>