summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addon/YaCy.icnsbin0 -> 306384 bytes
-rw-r--r--build.gradle30
-rwxr-xr-xfixMacBuild.sh3
-rw-r--r--gradle.properties1
-rw-r--r--htroot/Banner.java6
-rw-r--r--source/net/yacy/http/Jetty9HttpServerImpl.java63
-rw-r--r--source/net/yacy/yacy.java9
7 files changed, 76 insertions, 36 deletions
diff --git a/addon/YaCy.icns b/addon/YaCy.icns
new file mode 100644
index 000000000..fe77fd711
--- /dev/null
+++ b/addon/YaCy.icns
Binary files differ
diff --git a/build.gradle b/build.gradle
index 79dad5583..7b74b7cd1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,3 +1,9 @@
+buildscript {
+ dependencies {
+ classpath "org.mini2Dx:parcl:1.7.1"
+ }
+}
+
plugins {
id 'java'
id 'maven-publish'
@@ -7,6 +13,7 @@ plugins {
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'
+apply plugin: "org.mini2Dx.parcl"
repositories {
flatDir {
@@ -31,10 +38,31 @@ java.targetCompatibility = JavaVersion.VERSION_1_8
mainClassName = "net.yacy.yacy"
applicationDefaultJvmArgs = ["-Xmx1024m"]
+parcl {
+ exe {
+ exeName = "YaCy"
+ }
+
+ app {
+ vmArgs = ["-Xmx1g"]
+ appName = "YaCy"
+ icon = "addon/YaCy.icns"
+ applicationCategory = "Search-Engine"
+ displayName = 'YaCy Search Engine'
+ identifier = 'net.yacy'
+ copyright = 'Copyright 2021 Michael Peter Christen et al.'
+ zipName = 'YaCy.zip'
+ }
+
+ linux {
+ binName = "YaCy"
+ }
+}
+
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
dependencies {
implementation(fileTree("lib"))
-} \ No newline at end of file
+}
diff --git a/fixMacBuild.sh b/fixMacBuild.sh
new file mode 100755
index 000000000..78b0a649a
--- /dev/null
+++ b/fixMacBuild.sh
@@ -0,0 +1,3 @@
+cp -R htroot build/mac/YaCy.app/Contents/
+cp -R defaults build/mac/YaCy.app/Contents/
+cp -R langdetect build/mac/YaCy.app/Contents/
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 000000000..f97ebb7d3
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1 @@
+org.gradle.parallel=true
diff --git a/htroot/Banner.java b/htroot/Banner.java
index 119dc92fd..642ec3d80 100644
--- a/htroot/Banner.java
+++ b/htroot/Banner.java
@@ -48,7 +48,7 @@ public class Banner {
final serverObjects post,
final serverSwitch env) throws IOException {
final Switchboard sb = (Switchboard) env;
- final String pathToImage = "htroot/env/grafics/yacy.png";
+ final String pathToImage = sb.appPath + "/htroot/env/grafics/yacy.png";
int width = 468;
int height = 60;
String bgcolor = "e7effc";
@@ -73,7 +73,7 @@ public class Banner {
env.getConfig(
SwitchboardConstants.NETWORK_NAME,
"unspecified").toUpperCase();
-
+
// the '+ 1': the own peer is not included in sizeConnected()
final int peers = sb.peers.sizeConnected() + 1;
long nlinks = sb.peers.countActiveURL();
@@ -89,7 +89,7 @@ public class Banner {
words = seed.getWordCount();
myppm = Switchboard.currentPPM();
myqph = 60d * sb.averageQPM();
-
+
if (sb.peers.mySeed().isVirgin()) {
type = "VIRGIN";
nqph = Math.round(6000d * nqpm) / 100d;
diff --git a/source/net/yacy/http/Jetty9HttpServerImpl.java b/source/net/yacy/http/Jetty9HttpServerImpl.java
index 83b8ee15a..7e2e2c9c4 100644
--- a/source/net/yacy/http/Jetty9HttpServerImpl.java
+++ b/source/net/yacy/http/Jetty9HttpServerImpl.java
@@ -2,7 +2,7 @@
// Jetty9HttpServerImpl
// Copyright 2011 by Florian Richter
// First released 13.04.2011 at http://yacy.net
-//
+//
// $LastChangedDate$
// $LastChangedRevision$
// $LastChangedBy$
@@ -11,12 +11,12 @@
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
-//
+//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
-//
+//
// You should have received a copy of the GNU Lesser General Public License
// along with this program in the file lgpl21.txt
// If not, see <http://www.gnu.org/licenses/>.
@@ -75,19 +75,19 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
public Jetty9HttpServerImpl(int port) {
Switchboard sb = Switchboard.getSwitchboard();
- server = new Server();
+ this.server = new Server();
int cores = ProcessorUtils.availableProcessors();
int acceptors = Math.max(1, Math.min(4, cores/2)); // original: Math.max(1, Math.min(4,cores/8));
HttpConnectionFactory hcf = new HttpConnectionFactory();
- ServerConnector connector = new ServerConnector(server, null, null, null, acceptors, -1, hcf);
+ ServerConnector connector = new ServerConnector(this.server, null, null, null, acceptors, -1, hcf);
connector.setPort(port);
connector.setName("httpd:"+Integer.toString(port));
connector.setIdleTimeout(9000); // timout in ms when no bytes send / received
connector.setAcceptQueueSize(128);
-
- server.addConnector(connector);
-
+
+ this.server.addConnector(connector);
+
// add ssl/https connector
boolean useSSL = sb.getConfigBool("server.https", false);
@@ -105,14 +105,14 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
https_config.addCustomizer(new SecureRequestCustomizer());
// SSL Connector
- ServerConnector sslConnector = new ServerConnector(server,
+ ServerConnector sslConnector = new ServerConnector(this.server,
new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
new HttpConnectionFactory(https_config));
sslConnector.setPort(sslport);
sslConnector.setName("ssld:" + Integer.toString(sslport)); // name must start with ssl (for withSSL() to work correctly)
sslConnector.setIdleTimeout(9000); // timout in ms when no bytes send / received
- server.addConnector(sslConnector);
+ this.server.addConnector(sslConnector);
ConcurrentLog.info("SERVER", "SSL support initialized successfully on port " + sslport);
}
}
@@ -123,7 +123,8 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
// configure root context
WebAppContext htrootContext = new WebAppContext();
htrootContext.setContextPath("/");
- String htrootpath = sb.getConfig(SwitchboardConstants.HTROOT_PATH, SwitchboardConstants.HTROOT_PATH_DEFAULT);
+ String htrootpath = sb.appPath + "/" + sb.getConfig(SwitchboardConstants.HTROOT_PATH, SwitchboardConstants.HTROOT_PATH_DEFAULT);
+ ConcurrentLog.info("Jetty9HttpServerImpl", "htrootpath = " + htrootpath);
htrootContext.setErrorHandler(new YaCyErrorHandler()); // handler for custom error page
try {
htrootContext.setBaseResource(Resource.newResource(htrootpath));
@@ -136,7 +137,7 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
Resource webxml = Resource.newResource(sb.dataPath + "/DATA/SETTINGS/web.xml");
if (webxml.exists()) {
htrootContext.setDescriptor(webxml.getName());
- }
+ }
} catch (IOException ex) {
if (htrootContext.getBaseResource() == null) {
@@ -201,7 +202,7 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
}
// context handler for dispatcher and security (hint: dispatcher requires a context)
ContextHandler context = new ContextHandler();
- context.setServer(server);
+ context.setServer(this.server);
context.setContextPath("/");
context.setHandler(handlers);
context.setMaxFormContentSize(1024 * 1024 * 10); // allow 10MB, large forms may be required during crawl starts with long lists
@@ -209,10 +210,10 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
// make YaCy handlers (in context) and servlet context handlers available (both contain root context "/")
// logic: 1. YaCy handlers are called if request not handled (e.g. proxy) then servlets handle it
ContextHandlerCollection allrequesthandlers = new ContextHandlerCollection();
- allrequesthandlers.setServer(server);
+ allrequesthandlers.setServer(this.server);
allrequesthandlers.addHandler(context);
- allrequesthandlers.addHandler(htrootContext);
- allrequesthandlers.addHandler(new DefaultHandler()); // if not handled by other handler
+ allrequesthandlers.addHandler(htrootContext);
+ allrequesthandlers.addHandler(new DefaultHandler()); // if not handled by other handler
YaCyLoginService loginService = new YaCyLoginService();
// this is very important (as it is part of the user password hash)
@@ -225,7 +226,7 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
htrootContext.setSecurityHandler(securityHandler);
// wrap all handlers
- Handler crashHandler = new CrashProtectionHandler(server, allrequesthandlers);
+ Handler crashHandler = new CrashProtectionHandler(this.server, allrequesthandlers);
// check server access restriction and add InetAccessHandler if restrictions are needed
// otherwise don't (to save performance)
final String white = sb.getConfig("serverClient", "*");
@@ -260,10 +261,10 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
ConcurrentLog.info("SERVER","activated IP access restriction to: [" + loopbackAddress + "," + white +"]");
} else {
- server.setHandler(crashHandler); // InetAccessHandler not needed
+ this.server.setHandler(crashHandler); // InetAccessHandler not needed
}
} else {
- server.setHandler(crashHandler); // InetAccessHandler not needed
+ this.server.setHandler(crashHandler); // InetAccessHandler not needed
}
}
@@ -274,8 +275,8 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
public void startupServer() throws Exception {
// option to finish running requests on shutdown
// server.setGracefulShutdown(3000);
- server.setStopAtShutdown(true);
- server.start();
+ this.server.setStopAtShutdown(true);
+ this.server.start();
}
/**
@@ -283,16 +284,16 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
*/
@Override
public void stop() throws Exception {
- server.stop();
- server.join();
+ this.server.stop();
+ this.server.join();
}
/**
* @return true if ssl/https connector is available
*/
@Override
- public boolean withSSL() {
- Connector[] clist = server.getConnectors();
+ public boolean withSSL() {
+ Connector[] clist = this.server.getConnectors();
for (Connector c:clist) {
if (c.getName().startsWith("ssl")) return true;
}
@@ -305,7 +306,7 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
*/
@Override
public int getSslPort() {
- Connector[] clist = server.getConnectors();
+ Connector[] clist = this.server.getConnectors();
for (Connector c:clist) {
if (c.getName().startsWith("ssl")) {
int port =((ServerConnector)c).getLocalPort();
@@ -336,12 +337,12 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
ConcurrentLog.logException(e);
}
try {
- if (!server.isRunning() || server.isStopped()) {
- server.start();
+ if (!Jetty9HttpServerImpl.this.server.isRunning() || Jetty9HttpServerImpl.this.server.isStopped()) {
+ Jetty9HttpServerImpl.this.server.start();
}
// reconnect with new settings (instead to stop/start server, just manipulate connectors
- final Connector[] cons = server.getConnectors();
+ final Connector[] cons = Jetty9HttpServerImpl.this.server.getConnectors();
final int port = Switchboard.getSwitchboard().getLocalPort();
final int sslport = Switchboard.getSwitchboard().getConfigInt(SwitchboardConstants.SERVER_SSLPORT, 8443);
for (Connector con : cons) {
@@ -455,7 +456,7 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
final KeyStore ks = KeyStore.getInstance("JKS");
ks.load(null,keyStorePwd.toCharArray());
try (
- /* Automatically closed by this try-with-resources statement */
+ /* Automatically closed by this try-with-resources statement */
final FileOutputStream ksOut = new FileOutputStream(keyStoreFileName);
) {
ks.store(ksOut, keyStorePwd.toCharArray());
@@ -521,7 +522,7 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
@Override
public int getServerThreads() {
- return server == null ? 0 : server.getThreadPool().getThreads() - server.getThreadPool().getIdleThreads();
+ return this.server == null ? 0 : this.server.getThreadPool().getThreads() - this.server.getThreadPool().getIdleThreads();
}
@Override
diff --git a/source/net/yacy/yacy.java b/source/net/yacy/yacy.java
index 0066063a9..7dcec8e14 100644
--- a/source/net/yacy/yacy.java
+++ b/source/net/yacy/yacy.java
@@ -729,10 +729,17 @@ public final class yacy {
// try to find the application root path within a Mac application
// call com.apple.eio.FileManager.getPathToApplicationBundle();
try {
+ // these methods will cause a warning: remove them with --illegal-access=permit
final Class<?> comAppleEioFileManagerClass = Class.forName("com.apple.eio.FileManager");
final Method getPathToApplicationBundleMethod = ClassProvider.getStaticMethod(comAppleEioFileManagerClass, "getPathToApplicationBundle", null);
final String apppath = (String) getPathToApplicationBundleMethod.invoke(null);
- System.out.println("PathToApplicationBundle = " + apppath);
+ System.out.println("PathToApplicationBundle = " + apppath); // PathToApplicationBundle = /Users/admin/git/rc1/build/YaCy.app
+ if (apppath != null && apppath.endsWith(".app")) {
+ // modify the applicationRoot path to within the app file
+ applicationRoot = new File(apppath + "/Contents");
+ System.setProperty("user.dir", applicationRoot.getAbsolutePath()); // required since nasty code elswhere is using it
+ System.setProperty("user.home", applicationRoot.getAbsolutePath()); // well
+ }
} catch (ClassNotFoundException | InvocationTargetException | IllegalAccessException | IllegalArgumentException e) {
e.printStackTrace();
}