tesshucom / jpsonic Goto Github PK
View Code? Open in Web Editor NEWThis is a repository for development. See https://github.com/jpsonic/jpsonic
License: GNU General Public License v3.0
This is a repository for development. See https://github.com/jpsonic/jpsonic
License: GNU General Public License v3.0
In the case of Japanese, it is difficult to find artist / album / song by just searching for an academic phrase.
Originally (Airsonic) Alphabetical order is distinguished between capital letters and small letters.
Correct as it is currently being compared with lower.
Affect getAlbumList.
Change not to refer to ALBUM_ARTIST_SORT when using file structure function.
The data does not follow in the case where the registered Sort tag is deleted.
Update after clearing.
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.
Add suppression.
-> (This project does not use downloader.)
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 )
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.
Actually, id3 tags is also used for the "/getAlbumList"(File structure).
As you do in # 36, tag value (albumArtistSort) must be reflected in the result.
#36
Directory rename.
Source code other than license notation, character string such as context.
To avoid confusion with airsonic.
Transfer test to travis.
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.
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.
Change attached document and screen shot.
Random search can not be done with REST.
Mediatype index does not work because of capital / lower case mismatch at registration.
Correct to make search available in Japanese.
accompanied by lucene's version upgrade.
Changing the icon name because changing the device name makes it impossible to distinguish it.
Narrow down considering the order of phrases.
Even people abroad have such a functional requirement in the forum.
Affect speed.
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.
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.
Avoidable by the following procedure.
albumArtistSort is not reflected in HSQLDB.
There seems to be queries with different interpretations.
#36
Merge the airsonic master.
An integration test using Docker was added.
Jpsonic also modifies it to pass this test.
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
missing limit specification.
Merge the airsonic master.
Update of dependency-check, spring-boot-dependencies etc.
Jpsonic specific problem.
In org.airsonic.player.util.Util, external arguments are handled incorrectly.
Parse and register ARTISTSORT, ALBUMSORT, TITLESORT.
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.
Change condition of AlbumDao # getAlphabeticalAlbums.
Affect getAlbumList2.
#16
parent : #5
The service of id 3 also corresponds to Japanese.
Add theme for jpsonic to avoid confusion with airsonic.
Since there is an unimplemented part, part of id3 can not be retrieved correctly.
(response is returned, so it will not be an error)
A large amount of favicon image was added, so update it.
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)
#54
(Originally Airsonic is supposed to be a boot process using Spring Boot, but problems with operation when war is deployed directly)
Currently, data defragmentation of DB is not done.
(All Subsonic system servers are common)
Verify that automatic execution is possible after scanning.
ttps://github.com/airsonic/airsonic/issues/778
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
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.
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)
Deploy to Jetty instead of standalone launch.
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)
Some error handling is not proper.
A case where a message that should be returned as a REST message is returned as an HTTP error.
Most do not become a big problem. There is a difference in implementation of Airsonic and Subsonic.
https://tesshu.com/wp/wp-content/uploads/2018/07/Implementation-discrepancy-1.pdf
Probably the authentication filter is not suitable.
Some data duplication occurs in getAlbumList.
The ALBUM_SORT is reflected in the search result.
It is necessary to modify getAlbumList and getAlbumList2.
Confirm whether there is something else.
Degrate at the time of function modification.
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.
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).
In the current index search, two scans are required to reflect changes in the reading value of ID 3.
Please correct it so that it reflects at once.
It is deeply related to #70.
Increase accuracy when inputting multiple phrases
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.