Giter Site home page Giter Site logo

tesshucom / jpsonic Goto Github PK

View Code? Open in Web Editor NEW
13.0 13.0 13.0 130.15 MB

This is a repository for development. See https://github.com/jpsonic/jpsonic

License: GNU General Public License v3.0

Java 95.26% HTML 0.01% JavaScript 1.09% CSS 0.04% PLSQL 0.01% Shell 0.09% Dockerfile 0.07% Go 0.02% ANTLR 0.05% Ruby 0.02% SCSS 3.35%

jpsonic's People

Contributors

akpdw avatar bajansen avatar brand-change avatar cve-hotfix avatar data-struct avatar davis-a avatar dependabot-preview[bot] avatar dependabot[bot] avatar eharris avatar eugenekay avatar eusmilis avatar file-struct avatar fxthomas avatar g-regl avatar harawata avatar ibmibmibm avatar jooola avatar jp-searching avatar jp-sorting avatar jvoisin avatar muff1nman avatar plastikman avatar prschopf avatar randomnicode avatar snyk-bot avatar tari avatar tesshucom avatar view-ext avatar weblate avatar zifnab06 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

jpsonic's Issues

Enhancement of forward search

In the case of Japanese, it is difficult to find artist / album / song by just searching for an academic phrase.

  • Supports forward search of phonemes without tokenizing.
  • Support reading of artists of type MUSIC (Song).

#58

Uppercase and lowercase letters

Originally (Airsonic) Alphabetical order is distinguished between capital letters and small letters.
Correct as it is currently being compared with lower.
Affect getAlbumList.

Refactoring : Clear tag

The data does not follow in the case where the registered Sort tag is deleted.
Update after clearing.

Change sort criteria below Various

Directory#child sorting rules are basically uniform.
However, under Various, the number of Childs is unpredictable, and when there are many numbers, intuitively it is difficult to understand.
Consider sorting alphabetically.
However, the influence on the accuracy and speed of scanning is very large.

CVE-2016-7048

Add suppression.

  • The interactive installer in PostgreSQL before 9.3.15, 9.4.x before 9.4.10, and 9.5.x before 9.5.5 might allow remote attackers to execute arbitrary code by leveraging use of HTTP to download software.

-> (This project does not use downloader.)

CVE-2018-10237

Unbounded memory allocation in Google Guava 11.0 through 24.x before 24.1.1 allows remote attackers to conduct denial of service attacks against servers that depend on this library and deserialize attacker-provided data, because the AtomicDoubleArray class (when serialized with Java serialization) and the CompoundOrdering class (when serialized with GWT serialization) perform eager allocation without appropriate checks on what a client has sent and whether the data size is reasonable.

(Base Score: 5.9 MEDIUM )

Modify Versioning About

Versioning has an update check mechanism.
Basically make no changes to make it clear the Airsonic version of the mainframe.
For About, add the version of Jpsonic processing together.

Rename

Directory rename.
Source code other than license notation, character string such as context.

To avoid confusion with airsonic.

Apostrophe at index creation

The interpretation of apostrophe of Japanese Tokenizer is different.
Unlike Airsonic and Subsonic, apostrophe is the split position.
Search can be done for the whole current sentence, so there will be no omission of searches, but fix it so that it will not be split by apostrophe.

Measure the effect of lucine

Comparison between Lucine 3.x and 7.4.
In the case of airsonic processing,
consider whether it is possible to create a basis for 7.4 to be a better process.

Can not perform RandomSearch

Random search can not be done with REST.
Mediatype index does not work because of capital / lower case mismatch at registration.

Search Japanese

Correct to make search available in Japanese.
accompanied by lucene's version upgrade.

UPnP icon

Changing the icon name because changing the device name makes it impossible to distinguish it.

Add search logic formula

Narrow down considering the order of phrases.
Even people abroad have such a functional requirement in the forum.
Affect speed.

CVE-2017-17485

FasterXML jackson-databind through 2.8.10 and 2.9.x through 2.9.3 allows unauthenticated remote code execution because of an incomplete fix for the CVE-2017-7525 deserialization flaw.

Check the version of Check's checker plugin and update it if necessary.

Log length is too long

After introducing the integration test, in the case of no-cache, the log amount exceeds.
It becomes a barrier when doing a clean build with travis.

Even at the same commit point, the result of build changes depending on the presence or absence of cache.

https://travis-ci.org/tesshucom/airsonic/builds

If there is no cache, this error occurs because there are too many download logs.

  • The job exceeded the maximum log length, and has been terminated.(ffd8446)

Avoidable by the following procedure.

  • Continue the build at the entry point before the integration test. Cache will be created.(cd05af8 )
  • Merge subsequent changes(ffd8446)

Integration test

An integration test using Docker was added.
Jpsonic also modifies it to pass this test.

Japanese index creation(FileStructure)

Enable indexing of Japanese in FileStructure processing.
Modification of id 3 will be done in a later version.

· Acquisition of reading based on morpheme analysis
· Use reading for soriting and indexing
· Modify default index string

Merge upstream

Merge the airsonic master.
Update of dependency-check, spring-boot-dependencies etc.

#52

Cleansing index

Behavior when internal "reading" is corrected at index creation.
Currently, it is possible to search both before correction and after correction.
Change processing so that only correct index is persisted.

Use artistSort

Reflect the validation result of Sort tag in Japanese index creation.
It is reflected in the result of corresponding screen processing and service.

Correction :#5 #15

Theme and language setting

Add theme for jpsonic to avoid confusion with airsonic.

  • Set the theme of "jpsonic" to be the default theme of "general".
  • Set the default language of "General" to Japanese.
  • If the "personal" setting is the default, it inherits the contents of "general".
  • The bio of LastFM reflects the language setting.
  • Overwrite startup banner
  • Override favicon
  • Fix Welcome Message

Tweaked logging around servlet container

Confirmation of correction of startup process done by airsonic.
If Jetty no longer has errors at startup, modify Jpsonic's StreamController and Application to match Airsonic's implementation.
If the problem persists, the StreamController maintains the implementation of Jpsonic.

relation)

airsonic/airsonic@f8686d9

#54
(Originally Airsonic is supposed to be a boot process using Spring Boot, but problems with operation when war is deployed directly)

CVE-2018-8088

An XML deserialization vulnerability was discovered in slf4j's EventData, which accepts an XML serialized string and can lead to arbitrary code execution.
Find out more about CVE-2018-8088 from the MITRE CVE dictionary dictionary and NIST NVD.

Statement
Subscription Asset Manager is now in a reduced support phase receiving only Critical impact security fixes. This issue has been rated as having a security impact of Important, and is not currently planned to be addressed in future updates.

CVSS3 Base Score | 8.1

Version check

Current version checking has not been added, and all internal version controls use Airsonic's check.
To notify Jpsonic release timing by GUI, make correction.

Jetty : Service Unavailable(It does not start) on jetty

Problem description

Do not start with Jetty.

In an instance creation of StreamController, it tries to read an imported org.apache.catalina.connector.ClientAbortException.

ClientAbortException is a class that does not exist in Jetty's launch profile.
(tomcat-embed-core)

Steps to reproduce

Deploy to Jetty instead of standalone launch.

System information

  • Airsonic version: 10.2.0-SNAPSHOT
  • Operating system: Jetty 9.4.8 on CentOS 6,7

Additional notes

Caused by:
java.lang.ClassNotFoundException: org.apache.catalina.connector.ClientAbortException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:565)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:247)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1122)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:154)
at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:134)
at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:87)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:140)
at org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:63)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:329)
at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1515)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1477)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:785)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:545)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:502)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:150)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180)
at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:447)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:610)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:529)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:392)
at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:150)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:564)
at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:239)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:133)
at org.eclipse.jetty.server.Server.start(Server.java:418)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:115)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
at org.eclipse.jetty.server.Server.doStart(Server.java:385)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1584)
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1508)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1507)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jetty.start.Main.invokeMain(Main.java:221)
at org.eclipse.jetty.start.Main.start(Main.java:504)
at org.eclipse.jetty.start.Main.main(Main.java:78)

Reversal method for albumArtistSort(id3)

Add reading and sort's Reversal method.

Currently, left Join of FileStructure data.
(Provisional processing)

Most sorting is done correctly.
However, if Artist is "vairous" and ArtistAlbum is not "various", the sort is incorrect.
(Data pattern that is mostly in classical music).

#16 #15

Sorting albums

The ALBUM_SORT is reflected in the search result.
It is necessary to modify getAlbumList and getAlbumList2.
Confirm whether there is something else.

Merge Airsonic v10.1.2

Security update.
The content is almost the same as the master that has been captured now.
-> Only change is to fix the LDAP authentication without a password.

#64

Refactoring : Query normalization

Among searches currently being modified, there is a place where Join is done.
To solve this in the later version.
(Because table modification occurs frequently).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.