Merge branch 'master' of git@github.com:yacy/yacy_search_server.git

pull/38/head
Michael Peter Christen 9 years ago
commit fade8452c6

@ -1,103 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="source"/>
<classpathentry kind="src" path="test"/>
<classpathentry excluding="api/|env/|processing/domaingraph/applet/|yacy/|api/bookmarks/|api/ymarks/|api/bookmarks/posts/|api/bookmarks/tags/|api/bookmarks/xbel/|solr/|gsa/|solr/collection1/|api/blacklists/" kind="src" path="htroot"/>
<classpathentry excluding="bookmarks/|ymarks/|bookmarks/posts/|bookmarks/tags/|bookmarks/xbel/|blacklists/" kind="src" path="htroot/api"/>
<classpathentry kind="src" path="htroot/env"/>
<classpathentry kind="src" path="htroot/yacy"/>
<classpathentry excluding="posts/|tags/|xbel/" kind="src" path="htroot/api/bookmarks"/>
<classpathentry kind="src" path="htroot/api/ymarks"/>
<classpathentry kind="src" path="htroot/api/bookmarks/posts"/>
<classpathentry kind="src" path="htroot/api/bookmarks/tags"/>
<classpathentry kind="src" path="htroot/api/bookmarks/xbel"/>
<classpathentry kind="src" path="htroot/api/blacklists"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/commons-logging-1.2.jar"/>
<classpathentry kind="lib" path="lib/J7Zip-modified.jar"/>
<classpathentry kind="lib" path="lib/webcat-0.1-swf.jar"/>
<classpathentry kind="lib" path="lib/commons-jxpath-1.3.jar"/>
<classpathentry kind="lib" path="lib/jsch-0.1.53.jar"/>
<classpathentry kind="lib" path="lib/jakarta-oro-2.0.8.jar"/>
<classpathentry kind="lib" path="lib/apache-mime4j-0.6.jar"/>
<classpathentry kind="lib" path="lib/commons-fileupload-1.3.1.jar"/>
<classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/>
<classpathentry kind="lib" path="lib/xercesImpl.jar"/>
<classpathentry kind="lib" path="lib/xml-apis.jar"/>
<classpathentry kind="lib" path="lib/commons-compress-1.10.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.6.jar"/>
<classpathentry kind="lib" path="lib/jaudiotagger-2.0.4-20111207.115108-15.jar"/>
<classpathentry kind="lib" path="lib/commons-codec-1.10.jar"/>
<classpathentry kind="lib" path="lib/jcl-over-slf4j-1.7.12.jar"/>
<classpathentry kind="lib" path="lib/slf4j-jdk14-1.7.12.jar"/>
<classpathentry kind="lib" path="lib/log4j-over-slf4j-1.7.12.jar"/>
<classpathentry kind="lib" path="lib/httpcore-4.4.3.jar"/>
<classpathentry kind="lib" path="lib/metadata-extractor-2.8.1.jar"/>
<classpathentry kind="lib" path="lib/xmpcore-5.1.2.jar"/>
<classpathentry kind="lib" path="lib/jcifs-1.3.17.jar"/>
<classpathentry kind="lib" path="lib/guava-18.0.jar"/>
<classpathentry kind="lib" path="lib/spatial4j-0.4.1.jar"/>
<classpathentry kind="lib" path="lib/zookeeper-3.4.6.jar"/>
<classpathentry kind="lib" path="lib/org.restlet.jar"/>
<classpathentry kind="lib" path="lib/fontbox-1.8.10.jar"/>
<classpathentry kind="lib" path="lib/jempbox-1.8.10.jar"/>
<classpathentry kind="lib" path="lib/pdfbox-1.8.10.jar"/>
<classpathentry kind="lib" path="lib/bcmail-jdk15-1.46.jar"/>
<classpathentry kind="lib" path="lib/bcprov-jdk15-1.46.jar"/>
<classpathentry kind="lib" path="lib/poi-3.13-20150929.jar"/>
<classpathentry kind="lib" path="lib/poi-scratchpad-3.13-20150929.jar"/>
<classpathentry kind="lib" path="lib/commons-io-2.4.jar"/>
<classpathentry kind="lib" path="lib/slf4j-api-1.7.12.jar"/>
<classpathentry kind="lib" path="lib/chardet.jar"/>
<classpathentry kind="lib" path="lib/jetty-client-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-continuation-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-deploy-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-http-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-io-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-jmx-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-proxy-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-security-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-server-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-servlet-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-servlets-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-util-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-webapp-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/jetty-xml-9.2.13.v20150730.jar"/>
<classpathentry kind="lib" path="lib/httpclient-4.5.1.jar"/>
<classpathentry kind="lib" path="lib/httpmime-4.5.1.jar"/>
<classpathentry kind="lib" path="lib/noggit-0.6.jar"/>
<classpathentry kind="lib" path="lib/solr-core-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/solr-solrj-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/stax2-api-3.1.4.jar"/>
<classpathentry kind="lib" path="lib/woodstox-core-asl-4.4.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-analyzers-common-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-analyzers-phonetic-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-classification-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-codecs-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-core-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-facet-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-grouping-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-highlighter-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-join-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-memory-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-misc-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-queries-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-queryparser-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-spatial-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-suggest-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-backward-codecs-5.3.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="lib" path="lib/icu4j-56_1.jar"/>
<classpathentry kind="lib" path="lib/htmllexer.jar"/>
<classpathentry kind="lib" path="lib/jsoup-1.8.3.jar"/>
<classpathentry kind="lib" path="lib/javax.servlet-api-3.1.0.jar"/>
<classpathentry kind="lib" path="lib/weupnp-0.1.3.jar"/>
<classpathentry kind="lib" path="lib/common-image-3.1.2.jar"/>
<classpathentry kind="lib" path="lib/common-io-3.1.2.jar"/>
<classpathentry kind="lib" path="lib/common-lang-3.1.2.jar"/>
<classpathentry kind="lib" path="lib/imageio-core-3.1.2.jar"/>
<classpathentry kind="lib" path="lib/imageio-metadata-3.1.2.jar"/>
<classpathentry kind="lib" path="lib/imageio-tiff-3.1.2.jar"/>
<classpathentry kind="lib" path="lib/servlet-3.1.2.jar"/>
<classpathentry kind="output" path="gen"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="source"/>
<classpathentry kind="src" path="test"/>
<classpathentry excluding="api/|env/|processing/domaingraph/applet/|yacy/|api/bookmarks/|api/ymarks/|api/bookmarks/posts/|api/bookmarks/tags/|api/bookmarks/xbel/|solr/|gsa/|solr/collection1/|api/blacklists/|proxymsg/" kind="src" path="htroot"/>
<classpathentry excluding="bookmarks/|ymarks/|bookmarks/posts/|bookmarks/tags/|bookmarks/xbel/|blacklists/" kind="src" path="htroot/api"/>
<classpathentry kind="src" path="htroot/env"/>
<classpathentry kind="src" path="htroot/yacy"/>
<classpathentry excluding="posts/|tags/|xbel/" kind="src" path="htroot/api/bookmarks"/>
<classpathentry kind="src" path="htroot/api/ymarks"/>
<classpathentry kind="src" path="htroot/api/bookmarks/posts"/>
<classpathentry kind="src" path="htroot/api/bookmarks/tags"/>
<classpathentry kind="src" path="htroot/api/bookmarks/xbel"/>
<classpathentry kind="src" path="htroot/api/blacklists"/>
<classpathentry kind="src" path="htroot/proxymsg"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/commons-logging-1.2.jar"/>
<classpathentry kind="lib" path="lib/J7Zip-modified.jar"/>
<classpathentry kind="lib" path="lib/webcat-0.1-swf.jar"/>
<classpathentry kind="lib" path="lib/commons-jxpath-1.3.jar"/>
<classpathentry kind="lib" path="lib/jsch-0.1.53.jar"/>
<classpathentry kind="lib" path="lib/jakarta-oro-2.0.8.jar"/>
<classpathentry kind="lib" path="lib/apache-mime4j-0.6.jar"/>
<classpathentry kind="lib" path="lib/commons-fileupload-1.3.1.jar"/>
<classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/>
<classpathentry kind="lib" path="lib/xercesImpl.jar"/>
<classpathentry kind="lib" path="lib/xml-apis.jar"/>
<classpathentry kind="lib" path="lib/commons-compress-1.10.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.6.jar"/>
<classpathentry kind="lib" path="lib/jaudiotagger-2.0.4-20111207.115108-15.jar"/>
<classpathentry kind="lib" path="lib/commons-codec-1.10.jar"/>
<classpathentry kind="lib" path="lib/jcl-over-slf4j-1.7.13.jar"/>
<classpathentry kind="lib" path="lib/slf4j-jdk14-1.7.13.jar"/>
<classpathentry kind="lib" path="lib/log4j-over-slf4j-1.7.13.jar"/>
<classpathentry kind="lib" path="lib/httpcore-4.4.4.jar"/>
<classpathentry kind="lib" path="lib/metadata-extractor-2.8.1.jar"/>
<classpathentry kind="lib" path="lib/xmpcore-5.1.2.jar"/>
<classpathentry kind="lib" path="lib/jcifs-1.3.17.jar"/>
<classpathentry kind="lib" path="lib/guava-18.0.jar"/>
<classpathentry kind="lib" path="lib/spatial4j-0.4.1.jar"/>
<classpathentry kind="lib" path="lib/zookeeper-3.4.6.jar"/>
<classpathentry kind="lib" path="lib/org.restlet.jar"/>
<classpathentry kind="lib" path="lib/fontbox-1.8.10.jar"/>
<classpathentry kind="lib" path="lib/jempbox-1.8.10.jar"/>
<classpathentry kind="lib" path="lib/pdfbox-1.8.10.jar"/>
<classpathentry kind="lib" path="lib/bcmail-jdk15-1.46.jar"/>
<classpathentry kind="lib" path="lib/bcprov-jdk15-1.46.jar"/>
<classpathentry kind="lib" path="lib/poi-3.13-20150929.jar"/>
<classpathentry kind="lib" path="lib/poi-scratchpad-3.13-20150929.jar"/>
<classpathentry kind="lib" path="lib/commons-io-2.4.jar"/>
<classpathentry kind="lib" path="lib/slf4j-api-1.7.13.jar"/>
<classpathentry kind="lib" path="lib/chardet.jar"/>
<classpathentry kind="lib" path="lib/jetty-client-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-continuation-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-deploy-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-http-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-io-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-jmx-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-proxy-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-security-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-server-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-servlet-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-servlets-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-util-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-webapp-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/jetty-xml-9.2.14.v20151106.jar"/>
<classpathentry kind="lib" path="lib/httpclient-4.5.1.jar"/>
<classpathentry kind="lib" path="lib/httpmime-4.5.1.jar"/>
<classpathentry kind="lib" path="lib/noggit-0.6.jar"/>
<classpathentry kind="lib" path="lib/solr-core-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/solr-solrj-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/stax2-api-3.1.4.jar"/>
<classpathentry kind="lib" path="lib/woodstox-core-asl-4.4.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-analyzers-common-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-analyzers-phonetic-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-classification-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-codecs-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-core-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-facet-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-grouping-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-highlighter-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-join-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-memory-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-misc-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-queries-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-queryparser-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-spatial-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-suggest-5.3.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-backward-codecs-5.3.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="lib" path="lib/icu4j-56_1.jar"/>
<classpathentry kind="lib" path="lib/htmllexer.jar"/>
<classpathentry kind="lib" path="lib/jsoup-1.8.3.jar"/>
<classpathentry kind="lib" path="lib/javax.servlet-api-3.1.0.jar"/>
<classpathentry kind="lib" path="lib/weupnp-0.1.3.jar"/>
<classpathentry kind="lib" path="lib/common-image-3.2.1.jar"/>
<classpathentry kind="lib" path="lib/common-io-3.2.1.jar"/>
<classpathentry kind="lib" path="lib/common-lang-3.2.1.jar"/>
<classpathentry kind="lib" path="lib/imageio-core-3.2.1.jar"/>
<classpathentry kind="lib" path="lib/imageio-metadata-3.2.1.jar"/>
<classpathentry kind="lib" path="lib/imageio-tiff-3.2.1.jar"/>
<classpathentry kind="lib" path="lib/imageio-bmp-3.2.1.jar"/>
<classpathentry kind="lib" path="lib/jsonic-1.2.0.jar"/>
<classpathentry kind="lib" path="lib/langdetect.jar"/>
<classpathentry kind="output" path="gen"/>
</classpath>

2
.gitignore vendored

@ -4,7 +4,7 @@ lib/yacycore.jar
libbuild/svnRevNr.jar
libbuild/GitRevTask.jar
gen/**
DATA/
/DATA
classes/
RELEASE/
/yacy.pid

@ -5,6 +5,11 @@
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
@ -18,5 +23,6 @@
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>
</projectDescription>

@ -0,0 +1,11 @@
language: java
cache:
directories:
- $HOME/.m2
jdk:
- oraclejdk7
# for running tests on Travis CI container infrastructure for faster builds
sudo: false

@ -1,34 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleName</key>
<string>YaCy</string>
<key>CFBundleDisplayName</key>
<string>YaCy</string>
<key>CFBundleShortVersionString</key>
<string>1.82</string>
<key>CFBundleGetInfoString</key>
<string>Peer-to-Peer Search Engine</string>
<key>NSHumanReadableCopyright</key>
<string>GPL-2.0</string>
<key>CFBundleIdentifier</key>
<string>net.yacy.yacy</string>
<key>CFBundleVersion</key>
<string>1.82</string>
<key>CFBundleAllowMixedLocalizations</key>
<string>true</string>
<key>CFBundleExecutable</key>
<string>JavaApplicationStub</string><!-- relative to Contents/MacOS -->
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleIconFile</key>
<string>YaCy_2013_Icon.icns</string><!-- relative to Contents/Resources -->
<key>CFBundleName</key>
<string>YaCy</string>
<key>CFBundleDisplayName</key>
<string>YaCy</string>
<key>CFBundleShortVersionString</key>
<string>1.82</string>
<key>CFBundleGetInfoString</key>
<string>Peer-to-Peer Search Engine</string>
<key>NSHumanReadableCopyright</key>
<string>GPL-2.0</string>
<key>CFBundleIdentifier</key>
<string>net.yacy.yacy</string>
<key>CFBundleVersion</key>
<string>1.82</string>
<key>CFBundleAllowMixedLocalizations</key>
<string>true</string>
<key>CFBundleExecutable</key>
<string>JavaAppLauncher</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleIconFile</key>
<string>YaCy_2013_Icon.icns</string>
<key>JVMMainClassName</key>
<string>net.yacy.yacy</string>
<key>JVMOptions</key>
<array>
</array>
<key>JVMArguments</key>
<array>
</array>
</dict>
</plist>
</plist>

@ -1,16 +0,0 @@
#!/bin/sh
PRG=$0
while [ -h "$PRG" ]; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
if expr "$link" : '^/' 2> /dev/null >/dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
PROGDIR=`dirname "$PRG"`
cd "$PROGDIR"/../../
echo `pwd`
cd Contents/Resources/Java
./startYACY.sh -gui Library/YaCy

@ -0,0 +1,3 @@
"JRELoadError" = "Unable to load Java Runtime Environment.";
"MainClassNameRequired" = "Main class name is required.";
"JavaDirectoryNotFound" = "Unable to enumerate Java directory contents.";

File diff suppressed because it is too large Load Diff

@ -47,7 +47,7 @@
<property name="javadoc" location="javadoc"/>
<property name="htroot" location="htroot"/>
<property name="test" location="test"/>
<property name="langstats" location="langstats"/>
<property name="langdetect" location="langdetect"/>
<property name="locales" location="locales"/>
<property name="skins" location="skins"/>
<property name="release" location="RELEASE"/>
@ -165,9 +165,9 @@
<pathelement location="${lib}/bcmail-jdk15-1.46.jar" />
<pathelement location="${lib}/bcprov-jdk15-1.46.jar" />
<pathelement location="${lib}/chardet.jar" />
<pathelement location="${lib}/common-image-3.1.2.jar" />
<pathelement location="${lib}/common-io-3.1.2.jar" />
<pathelement location="${lib}/common-lang-3.1.2.jar" />
<pathelement location="${lib}/common-image-3.2.1.jar" />
<pathelement location="${lib}/common-io-3.2.1.jar" />
<pathelement location="${lib}/common-lang-3.2.1.jar" />
<pathelement location="${lib}/commons-codec-1.10.jar" />
<pathelement location="${lib}/commons-compress-1.10.jar" />
<pathelement location="${lib}/commons-fileupload-1.3.1.jar" />
@ -179,37 +179,38 @@
<pathelement location="${lib}/guava-18.0.jar" />
<pathelement location="${lib}/htmllexer.jar" />
<pathelement location="${lib}/httpclient-4.5.1.jar" />
<pathelement location="${lib}/httpcore-4.4.3.jar" />
<pathelement location="${lib}/httpcore-4.4.4.jar" />
<pathelement location="${lib}/httpmime-4.5.1.jar" />
<pathelement location="${lib}/icu4j-56_1.jar" />
<pathelement location="${lib}/imageio-core-3.1.2.jar" />
<pathelement location="${lib}/imageio-metadata-3.1.2.jar" />
<pathelement location="${lib}/imageio-tiff-3.1.2.jar" />
<pathelement location="${lib}/imageio-bmp-3.2.1.jar" />
<pathelement location="${lib}/imageio-core-3.2.1.jar" />
<pathelement location="${lib}/imageio-metadata-3.2.1.jar" />
<pathelement location="${lib}/imageio-tiff-3.2.1.jar" />
<pathelement location="${lib}/J7Zip-modified.jar" />
<pathelement location="${lib}/jakarta-oro-2.0.8.jar" />
<pathelement location="${lib}/jaudiotagger-2.0.4-20111207.115108-15.jar" />
<pathelement location="${lib}/javax.servlet-api-3.1.0.jar" />
<pathelement location="${lib}/jcifs-1.3.17.jar" />
<pathelement location="${lib}/jcl-over-slf4j-1.7.12.jar" />
<pathelement location="${lib}/jcl-over-slf4j-1.7.13.jar" />
<pathelement location="${lib}/jempbox-1.8.10.jar" />
<pathelement location="${lib}/jetty-client-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-continuation-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-deploy-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-http-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-io-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-jmx-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-proxy-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-security-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-server-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-servlet-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-servlets-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-util-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-webapp-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-xml-9.2.13.v20150730.jar" />
<pathelement location="${lib}/jetty-client-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-continuation-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-deploy-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-http-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-io-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-jmx-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-proxy-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-security-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-server-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-servlet-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-servlets-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-util-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-webapp-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jetty-xml-9.2.14.v20151106.jar" />
<pathelement location="${lib}/jsch-0.1.53.jar" />
<pathelement location="${lib}/json-simple-1.1.1.jar" />
<pathelement location="${lib}/jsoup-1.8.3.jar" />
<pathelement location="${lib}/log4j-over-slf4j-1.7.12.jar" />
<pathelement location="${lib}/log4j-over-slf4j-1.7.13.jar" />
<pathelement location="${lib}/lucene-analyzers-common-5.3.1.jar" />
<pathelement location="${lib}/lucene-analyzers-phonetic-5.3.1.jar" />
<pathelement location="${lib}/lucene-backward-codecs-5.3.1.jar" />
@ -226,15 +227,16 @@
<pathelement location="${lib}/lucene-queryparser-5.3.1.jar" />
<pathelement location="${lib}/lucene-spatial-5.3.1.jar" />
<pathelement location="${lib}/lucene-suggest-5.3.1.jar" />
<pathelement location="${lib}/jsonic-1.2.0.jar" />
<pathelement location="${lib}/langdetect.jar" />
<pathelement location="${lib}/metadata-extractor-2.8.1.jar" />
<pathelement location="${lib}/noggit-0.5.jar" />
<pathelement location="${lib}/org.restlet.jar" />
<pathelement location="${lib}/pdfbox-1.8.10.jar" />
<pathelement location="${lib}/poi-3.13-20150929.jar" />
<pathelement location="${lib}/poi-scratchpad-3.13-20150929.jar" />
<pathelement location="${lib}/servlet-3.1.2.jar" />
<pathelement location="${lib}/slf4j-api-1.7.12.jar" />
<pathelement location="${lib}/slf4j-jdk14-1.7.12.jar" />
<pathelement location="${lib}/slf4j-api-1.7.13.jar" />
<pathelement location="${lib}/slf4j-jdk14-1.7.13.jar" />
<pathelement location="${lib}/solr-core-5.3.1.jar" />
<pathelement location="${lib}/solr-solrj-5.3.1.jar" />
<pathelement location="${lib}/spatial4j-0.4.1.jar" />
@ -389,8 +391,8 @@
</copy>
<!-- copy language statistics files -->
<copy todir="${release_main}/langstats">
<fileset dir="${langstats}">
<copy todir="${release_main}/langdetect">
<fileset dir="${langdetect}">
<include name="*"/>
</fileset>
</copy>
@ -576,8 +578,8 @@
</copy>
<!-- copy language statistics files -->
<copy todir="${DESTDIR}/usr/share/yacy/langstats">
<fileset dir="${langstats}">
<copy todir="${DESTDIR}/usr/share/yacy/langdetect">
<fileset dir="${langdetect}">
<include name="*"/>
</fileset>
</copy>
@ -778,7 +780,7 @@
</copy>
<copy file="${addon}/YaCy.app/Contents/Info.plist" tofile="${release_mac}/YaCy.app/Contents/Info.plist" filtering="true" overwrite="true" />
<move file="${release_main}" tofile="${release_mac}/YaCy.app/Contents/Resources/Java" verbose="false" />
<chmod file="${release_mac}/YaCy.app/Contents/MacOS/JavaApplicationStub" perm="755"/>
<chmod file="${release_mac}/YaCy.app/Contents/MacOS/JavaAppLauncher" perm="755"/>
<chmod file="${release_mac}/YaCy.app/Contents/Resources/Java/startYACY.sh" perm="755"/>
<exec executable="hdiutil">
<arg line="create -srcfolder ${release_mac}/YaCy.app ${release}/yacy_v${releaseVersion}_${DSTAMP}_${releaseNr}.dmg"/>

@ -23,8 +23,9 @@ csv = text/csv
db = application/octet-stream
dll = application/octet-stream
doc = application/msword
docx = application/msword
docx = application/vnd.openxmlformats-officedocument.wordprocessingml.document
dot = application/msword
dotx = application/vnd.openxmlformats-officedocument.wordprocessingml.template
dvi = application/x-dvi
eps = application/postscript
exe = application/octet-stream
@ -82,9 +83,11 @@ phtml = application/x-httpd-php
pl = text/plain
png = image/png
pot = application/mspowerpoint
potx = application/vnd.openxmlformats-officedocument.presentationml.template
pps = application/mspowerpoint
ppsx = application/vnd.openxmlformats-officedocument.presentationml.slideshow
ppt = application/mspowerpoint
pptx = application/mspowerpoint
pptx = application/vnd.openxmlformats-officedocument.presentationml.presentation
ppz = application/mspowerpoint
ps = application/postscript
py = text/html
@ -128,7 +131,8 @@ wmv = video/x-ms-wmv
xhtml = text/xhtml+xml
xla = application/msexcel
xls = application/msexcel
xlsx = application/msexcel
xlsx = application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xltx = application/vnd.openxmlformats-officedocument.spreadsheetml.template
xpi = application/x-xpinstall
xsl = text/xml
xml = text/xml

@ -51,8 +51,8 @@ title
## id of the host, a 6-byte hash that is part of the document id (mandatory field)
host_id_s
## the md5 of the raw source (mandatory field)
md5_s
## the md5 of the raw source
#md5_s
## the 64 bit hash of the org.apache.solr.update.processor.Lookup3Signature of text_t
exact_signature_l
@ -178,13 +178,13 @@ linksnofollowcount_i
inboundlinkscount_i
## number of outgoing inbound (to same domain) links with nofollow tag, int
inboundlinksnofollowcount_i
#inboundlinksnofollowcount_i
## number of outgoing outbound (to other domain) links, including outboundlinksnofollowcount_i, int
outboundlinkscount_i
## number of outgoing outbound (to other domain) links with nofollow tag, int
outboundlinksnofollowcount_i
#outboundlinksnofollowcount_i
## number of images, int
imagescount_i

@ -90,8 +90,8 @@
<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
<dynamicField name="*_dts" type="date" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
<dynamicField name="*_p" type="location" indexed="true" stored="true"/>
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="true" />
<dynamicField name="*_p" type="location" indexed="true" stored="true"/>
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
<dynamicField name="*_txt" type="text_general" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_val" type="int" indexed="true" stored="true" multiValued="true"/> <!-- YaCy special -->
<!-- unused dynamicFields?

@ -838,7 +838,7 @@
of SearchComponents (see below) and supports distributed
queries across multiple shards
-->
<requestHandler name="/select" class="solr.SearchHandler">
<requestHandler name="/select" class="solr.SearchHandler" startup="lazy">
<!-- default values for query parameters can be specified, these
will be overridden by parameters in the request
-->
@ -902,7 +902,7 @@
</requestHandler>
<!-- A request handler that returns indented JSON by default -->
<requestHandler name="/query" class="solr.SearchHandler">
<requestHandler name="/query" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="wt">json</str>
@ -923,7 +923,7 @@
also always fetch the complete index from the leader because a partial
sync will not be possible in the absence of this handler.
-->
<requestHandler name="/get" class="solr.RealTimeGetHandler">
<requestHandler name="/get" class="solr.RealTimeGetHandler" startup="lazy">
<lst name="defaults">
<str name="omitHeader">true</str>
<str name="wt">json</str>
@ -936,7 +936,7 @@
Do not change these defaults.
-->
<requestHandler name="/export" class="solr.SearchHandler">
<requestHandler name="/export" class="solr.SearchHandler" startup="lazy">
<lst name="invariants">
<str name="rq">{!xport}</str>
<str name="wt">xsort</str>
@ -966,7 +966,7 @@
This handler will pick a response format to match the input
if the 'wt' parameter is not explicit
-->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<requestHandler name="/update" class="solr.UpdateRequestHandler" startup="lazy">
<!-- See below for information on defining
updateRequestProcessorChains that can be used by name
on each Update Request
@ -1101,7 +1101,7 @@
-->
<!-- ping/healthcheck -->
<requestHandler name="/admin/ping" class="solr.PingRequestHandler">
<requestHandler name="/admin/ping" class="solr.PingRequestHandler" startup="lazy">
<lst name="invariants">
<str name="q">solrpingquery</str>
</lst>
@ -1117,7 +1117,7 @@
</requestHandler>
<!-- Echo the request contents back to the client -->
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" startup="lazy">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="echoHandler">true</str>
@ -1137,7 +1137,7 @@
https://wiki.apache.org/solr/SolrCloud/
-->
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy">
<!--
To enable simple master/slave replication, uncomment one of the
sections below, depending on whether this solr instance should be

@ -54,10 +54,9 @@
Define URL substitution rules which allow navigating in proxy environment. Possible values: all, domainlist. Default: domainlist.
</p>
</dd>
</dl>
<input type="submit" name="urlproxySettings" value="Submit" class="btn btn-primary"/>
<dl><dt></dt><dd><input type="submit" name="urlproxySettings" value="Submit" class="btn btn-primary"/></dd></dl>
</fieldset>
</form>

@ -21,7 +21,7 @@
<input type="checkbox" name="allowRegex" #(checked)#:: checked="checked"#(/checked)# />
Allow regular expressions in host part of blacklist entries.
<br /><br />
<input type="submit" name="list" value="Check" />
<input type="submit" name="list" class="btn btn-primary" value="Check" />
</div>::
<p class="error">The blacklist-cleaner only works for the following blacklist-engines up to now:</p>
<ul>#{engines}#
@ -58,7 +58,7 @@
<dd><input type="text" name="entry#[entry]#" value="#[entry]#" size="50" /></dd>#{/entries}#
<dt>&nbsp;</dt>
<dd>
<input type="submit" name="alter" value="Change Selected" /> <input type="submit" name="delete" value="Delete Selected" />
<input type="submit" name="alter" class="btn btn-primary" value="Change Selected" /> <input type="submit" name="delete" class="btn btn-danger" value="Delete Selected" />
</dd>
</dl>::#(/disabled)#
</fieldset>

@ -23,7 +23,7 @@
<option value="#[hash]#">#[name]#</option>
#{/otherHosts}#
</select>
<input type="submit" value="Load new blacklist items" />
<input type="submit" class="btn btn-primary" value="Load new blacklist items" />
</fieldset>
</form>
@ -33,7 +33,7 @@
<legend>URL:</legend>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="text" name="url" />
<input type="submit" value="Load new blacklist items" />
<input type="submit" class="btn btn-primary" value="Load new blacklist items" />
</fieldset>
</form>
@ -45,7 +45,7 @@
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="hidden" name="type" value="plaintext" />
<input type="file" name="file" />
<input type="submit" value="Load new blacklist items" />
<input type="submit" class="btn btn-primary" value="Load new blacklist items" />
</fieldset>
</form>
@ -57,7 +57,7 @@
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="hidden" name="type" value="xml" />
<input type="file" name="file" />
<input type="submit" value="Load new blacklist items" />
<input type="submit" class="btn btn-primary" value="Load new blacklist items" />
</fieldset>
</form>
</fieldset>::#(/disabled)#
@ -76,7 +76,7 @@
#{/blackListNames}#
<option value="">all</option>
</select>
<input type="submit" value="Export list as XML" />
<input type="submit" class="btn btn-primary" value="Export list as XML" />
</fieldset>
</form>
@ -92,7 +92,7 @@
<option value="">all</option>
</select>
<input type="hidden" name="col" value="black" />
<input type="submit" value="Export list as text" />
<input type="submit" class="btn btn-primary" value="Export list as text" />
</fieldset>
</form>

@ -15,7 +15,7 @@
<fieldset>
<legend>Test list:</legend>
<input type="text" name="testurl" size="50" value="#[url]#" />
<input type="submit" name="testList" value="Test" />
<input type="submit" name="testList" class="btn btn-primary" value="Test" />
#(testlist)#::
<br /><br />

@ -28,7 +28,7 @@
</p>
<h3>Active list: #(disabled)#
#{blackLists}#
&nbsp;[&nbsp;<em>#[name]#</em>&nbsp;]&nbsp;
&nbsp;[&nbsp;<em><a href="Blacklist_p.html?selectList&selectedListName=#[name]#">#[name]#</a></em>&nbsp;]&nbsp;
#{/blackLists}#
::<span class="error">No blacklist selected</span>#(/disabled)#</h3>
<!-- blacklist selection -->
@ -42,7 +42,7 @@
#{/blackLists}#
</select>
<input type="hidden" name="selectList" value="select" />
<input type="submit" />
<input type="submit" class="btn btn-primary" />
</fieldset></form>
::
#(/disabled)#
@ -60,7 +60,7 @@
#(/error)#
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8"><fieldset>
<input type="text" id="newListName" size ="50" name="newListName" />
<input type="submit" name="createNewList" value="create" />
<input type="submit" name="createNewList" class="btn btn-primary" value="create" />
</fieldset></form>
</fieldset>
<br /><br />
@ -75,7 +75,7 @@
<div>
<input type="hidden" name="currentBlacklist" value="#[currentBlacklist]#" />
<input type="text" name="newEntry" size="50" />
<input type="submit" name="addBlacklistEntry" value="Add URL pattern" />
<input type="submit" name="addBlacklistEntry" class="btn btn-primary" value="Add URL pattern" />
</div>
<p>The right '*', after the '/', can be replaced by a <a href="http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html" target="_blank">regular expression</a>.</p>
<ul>
@ -119,7 +119,7 @@
#{/blackListsMove}#
</select>
&nbsp;
<input type="submit" />
<input type="submit" class="btn btn-primary" />
</div>
</form>
@ -129,18 +129,18 @@
<p>Show entries:
<table><tr>
#{subListOffset}#
<td style="padding: 5px;"><button type="submit" name="offset" style="padding:3px" value="#[fvalue]#" #(selected)#:: disabled="true"#(/selected)# />#[fvalue]# - #[tvalue]#</button></td>
<td style="padding: 5px;"><button type="submit" name="offset" class="btn btn-sm btn-default" style="padding:3px" value="#[fvalue]#" #(selected)#:: disabled="true"#(/selected)# />#[fvalue]# - #[tvalue]#</button></td>
#{/subListOffset}#
</tr></table>
&nbsp;
Entries per page:
<select name="size" size="1" onchange="document.selectRange.submit();">
<select name="size" size="1" onchange="submit();">
#{subListSize}#
<option value="#[value]#" #(selected)#::selected="selected"#(/selected)#>#[text]#</option>
#{/subListSize}#
</select>
&nbsp;
<input type="submit" value="set" />
<input type="submit" class="btn btn-sm btn-default" value="set" />
</p>
</fieldset></form>
@ -155,7 +155,7 @@
<input type="hidden" name="selectedBlacklistEntry.#[count]#" value="#[item]#"/>
#{/editList}#
<br /><br />
<input type="submit" value="Save URL pattern(s)" />
<input type="submit" class="btn btn-primary" value="Save URL pattern(s)" />
</div>
</form>
#(/edit)#
@ -167,8 +167,8 @@
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
<div>
<input type="hidden" name="selectedListName" value="#[currentBlacklist]#" />
<input type="submit" name="shareList" value="Share/don't share this list" />
<input type="submit" name="deleteList" value="Delete this list" />
<input type="submit" name="shareList" class="btn btn-default" value="Share/don't share this list" />
<input type="submit" name="deleteList" class="btn btn-danger" value="Delete this list" />
</div>
</form>
<form action="Blacklist_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
@ -183,23 +183,11 @@
#{/currentActiveFor}#
</dl>
<input type="hidden" name="selectedListName" value="#[currentBlacklist]#" />
<input type="submit" name="activateList" value="Save" />
<dl><dt></dt><dd><input type="submit" name="activateList" class="btn btn-primary" value="Save" /></dd></dl>
</fieldset>
</form>
</fieldset>
::#(/disabled)#
<!--
<div>
<p>
#(status)#
::
<strong>#[item]#</strong> was removed from blacklist
::
<strong>#[item]#</strong> was added to the blacklist
#(/status)#
</p>
</div>
-->
#%env/templates/footer.template%#
</body>
</html>

@ -77,9 +77,9 @@
</dd>
</dl>
<input type="hidden" name="page" value="#[pageid]#" />
<input type="submit" name="submit" value="Submit" />
<input type="submit" name="preview" value="Preview" />
<input type="submit" name="discard" value="Discard" />
<input type="submit" name="submit" class="btn btn-primary" value="Submit" />
<input type="submit" name="preview" class="btn btn-default" value="Preview" />
<input type="submit" name="discard" class="btn btn-danger" value="Discard" />
</fieldset>
</form>
::
@ -121,9 +121,9 @@
</dd>
</dl>
<input type="hidden" name="page" value="#[pageid]#" />
<input type="submit" name="submit" value="Submit" />
<input type="submit" name="preview" value="Preview" />
<input type="submit" name="discard" value="Discard" />
<input type="submit" name="submit" class="btn btn-primary" value="Submit" />
<input type="submit" name="preview" class="btn btn-default" value="Preview" />
<input type="submit" name="discard" class="btn btn-danger" value="Discard" />
</fieldset>
</form>
::
@ -138,10 +138,10 @@
<form action="Blog.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
<input type="hidden" name="delete" value="sure" />
<input type="hidden" name="page" value="#[pageid]#" />
<input type="submit" value="Yes, delete it." />
<input type="submit" class="btn btn-danger" value="Yes, delete it." />
</form>
<form action="Blog.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
<input type="submit" value="No, leave it." />
<input type="submit" class="btn btn-primary" value="No, leave it." />
</form>
</fieldset>
::
@ -157,7 +157,7 @@
<form action="Blog.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8">
<fieldset>
<input type="file" size="50" name="xmlfile" />
<input type="submit" name="importxml" value="Import" />
<input type="submit" name="importxml" class="btn btn-primary" value="Import" />
</fieldset>
</form>
#(/mode)#

@ -70,9 +70,9 @@
</dd>
</dl>
<input type="hidden" name="page" value="#[pageid]#" />
<input type="submit" name="submit" value="Submit" />
<input type="submit" name="preview" value="Preview" />
<input type="submit" name="view" value="Discard" />
<input type="submit" name="submit" class="btn btn-primary" value="Submit" />
<input type="submit" name="preview" class="btn btn-default" value="Preview" />
<input type="submit" name="view" class="btn btn-danger" value="Discard" />
</fieldset>
</form>
#(/allow)#
@ -109,9 +109,9 @@
</dl>
<input type="hidden" name="page" value="#[pageid]#" />
<!-- <input type="text" name="page" value="#[pageid]#" /> -->
<input type="submit" name="submit" value="Submit" />
<input type="submit" name="preview" value="Preview" />
<input type="submit" name="view" value="Discard" />
<input type="submit" name="submit" class="btn btn-primary" value="Submit" />
<input type="submit" name="preview" class="btn btn-default" value="Preview" />
<input type="submit" name="view" class="btn btn-danger" value="Discard" />
</fieldset>
</form>

@ -76,6 +76,9 @@ public class Bookmarks {
final static boolean TAGS = false;
final static boolean FOLDERS = true;
final static float TAGCLOUD_FONTSIZE_MIN = 0.75f; // min font-size in em
final static float TAGCLOUD_FONTSIZE_MAX = 2.0f; // max font-size in em
public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) {
int max_count = 10;
@ -455,7 +458,7 @@ public class Bookmarks {
}
} else {
// font-size is pseudo-rounded to 2 decimals
prop.put("display_"+id+"_"+count+"_size", Math.round((1.1f+Math.log(tag.size())/4f)*100.0f)/100.0f);
prop.put("display_"+id+"_"+count+"_size", Math.min(TAGCLOUD_FONTSIZE_MAX, Math.round((TAGCLOUD_FONTSIZE_MIN + Math.log(tag.size())/4f)*100.0f)/100.0f));
}
count++;
}

@ -100,7 +100,7 @@ public class ConfigBasic {
port = post.getLong("port", 8090);
ssl = post.getBoolean("withssl");
} else {
port = env.getLocalPort("port", 8090); //this allows a low port, but it will only get one, if the user edits the config himself.
port = env.getLocalPort(); //this allows a low port, but it will only get one, if the user edits the config himself.
ssl = env.getConfigBool("server.https", false);
}
if (ssl) prop.put("withsslenabled_sslport",env.getHttpServer().getSslPort());
@ -266,7 +266,7 @@ public class ConfigBasic {
// set default values
prop.putHTML("defaultName", sb.peers.mySeed().getName());
prop.put("defaultPort", env.getLocalPort("port", 8090));
prop.put("defaultPort", env.getLocalPort());
prop.put("withsslenabled", env.getConfigBool("server.https", false) ? 1 : 0);
lang = env.getConfig("locale.language", "default"); // re-assign lang, may have changed
prop.put("lang_de", "0");

@ -78,7 +78,7 @@
</dd>
<dt>Default maximum number of results per page</dt>
<dd><input type="text" name="maximumRecords" value="#[maximumRecords]#" size="3" /></dd>
<dd><input type="text" name="maximumRecords" value="#[maximumRecords]#" size="3" /> <small>max = 100 (with CACHEONLY=5000)</small></dd>
<dt>Default index.html Page (by forwarder)</dt>
<dd><input type="text" name="indexForward" value="#[indexForward]#" size="60" /></dd>

@ -171,12 +171,6 @@ public class ConfigPortal {
prop.put(SwitchboardConstants.REMOTESEARCH_RESULT_STORE, sb.getConfigBool(SwitchboardConstants.REMOTESEARCH_RESULT_STORE, true) ? 1 : 0);
prop.put("search.navigation.hosts", sb.getConfig("search.navigation", "").indexOf("hosts",0) >= 0 ? 1 : 0);
prop.put("search.navigation.authors", sb.getConfig("search.navigation", "").indexOf("authors",0) >= 0 ? 1 : 0);
prop.put("search.navigation.collections", sb.getConfig("search.navigation", "").indexOf("collections",0) >= 0 ? 1 : 0);
prop.put("search.navigation.namespace", sb.getConfig("search.navigation", "").indexOf("namespace",0) >= 0 ? 1 : 0);
prop.put("search.navigation.topics", sb.getConfig("search.navigation", "").indexOf("topics",0) >= 0 ? 1 : 0);
prop.put("search.verify.nocache", sb.getConfig("search.verify", "").equals("nocache") ? 1 : 0);
prop.put("search.verify.iffresh", sb.getConfig("search.verify", "").equals("iffresh") ? 1 : 0);
prop.put("search.verify.ifexist", sb.getConfig("search.verify", "").equals("ifexist") ? 1 : 0);
@ -224,7 +218,7 @@ public class ConfigPortal {
String myaddress = (sb.peers == null) || sb.peers.mySeed() == null || sb.peers.mySeed().getIP() == null ? null : sb.peers.mySeed().getPublicAddress(sb.peers.mySeed().getIP());
if (myaddress == null) {
myaddress = "localhost:" + sb.getLocalPort("port", 8090);
myaddress = "localhost:" + sb.getLocalPort();
}
prop.put("myaddress", myaddress);
return prop;

@ -35,7 +35,7 @@ public class ConfigSearchBox {
final Switchboard sb = (Switchboard) env;
String myaddress = sb.peers.mySeed().getPublicAddress(sb.peers.mySeed().getIP());
if (myaddress == null) myaddress = "localhost:" + sb.getLocalPort("port", 8090);
if (myaddress == null) myaddress = "localhost:" + sb.getLocalPort();
prop.put("myaddress", myaddress);
return prop;
}

@ -28,8 +28,8 @@
<option #(selected)#::selected="selected"#(/selected)# value="#[url]#">#[name]# #(signatures)#(unsigned)::(signed)#(/signatures)#</option>
#{/availreleases}#
</select>
&nbsp;&nbsp;<input type="submit" name="downloadRelease" value="Download Release"/>
&nbsp;&nbsp;<input type="submit" name="checkRelease" value="Check for new Release"/>
&nbsp;&nbsp;<input type="submit" name="downloadRelease" class="btn btn-primary" value="Download Release"/>
&nbsp;&nbsp;<input type="submit" name="checkRelease" class="btn btn-default" value="Check for new Release"/>
</p></form></dd>
<dt><br />Downloaded Releases</dt>
<dd><form action="ConfigUpdate_p.html" method="get" accept-charset="UTF-8"><p>
@ -43,14 +43,14 @@
#{/downloadedreleases}#
#(downloadsAvailable)#::</select>#(/downloadsAvailable)#
#(deployenabled)#::no&nbsp;automated installation on development environments::
&nbsp;&nbsp;<input type="submit" name="update" value="Install Release" #(buttonsActive)#disabled="disabled"::#(/buttonsActive)#/>
&nbsp;&nbsp;<input type="submit" name="deleteRelease" value="Delete Release" #(buttonsActive)#disabled="disabled"::#(/buttonsActive)#/>
&nbsp;&nbsp;<input type="submit" name="update" class="btn btn-primary" value="Install Release" #(buttonsActive)#disabled="disabled"::#(/buttonsActive)#/>
&nbsp;&nbsp;<input type="submit" name="deleteRelease" class="btn btn-danger" value="Delete Release" #(buttonsActive)#disabled="disabled"::#(/buttonsActive)#/>
#(/deployenabled)#
</p></form></dd>
<dt><br />Automatic Update</dt>
<dd><form action="ConfigUpdate_p.html" method="get" accept-charset="UTF-8"><p>
&nbsp;check for new releases, download if available and restart with downloaded release<br />
&nbsp;&nbsp;<input type="submit" name="autoUpdate" value="Check + Download + Install Release Now" /><br />
&nbsp;&nbsp;<input type="submit" name="autoUpdate" class="btn btn-primary" value="Check + Download + Install Release Now" /><br />
#(autoUpdate)#::
<div class="commit">Download of release #[downloadedRelease]# finished. Restart Initiated.</div>::
<div class="error">No more recent release found.</div>::
@ -99,7 +99,7 @@
<input type="checkbox" name="onlySignedFiles" value="true" #(onlySignedFiles)#::checked="checked" #(/onlySignedFiles)#/>
only accept signed files
</dd>
<dt><input type="submit" name="configSubmit" value="Submit" /></dt>
<dt><input type="submit" name="configSubmit" class="btn btn-primary" value="Submit" /></dt>
<dd>#(configCommit)#&nbsp;::<div class="commit">Accepted Changes.</div>#(/configCommit)#</dd>
</dl>
</fieldset>

@ -28,8 +28,8 @@
</dd>
<dt style="width:260px"></dt>
<dd style="width:360px; float:left; display:inline;">
<input type="submit" name="EnterDoublecheck" value="Set" />
<input type="submit" name="ResetDoublecheck" value="Re-Set to default" />
<input type="submit" name="EnterDoublecheck" class="btn btn-primary" value="Set" />
<input type="submit" name="ResetDoublecheck" class="btn btn-primary" value="Re-Set to default" />
</dd>
</dl>
</fieldset>

@ -69,7 +69,7 @@
<fieldset>
<dl>
<dt><b>Import a database dump</b>,<br /></dt>
<dd><input type="text" name="content.phpbb3.dumpfile" value="#[content.phpbb3.dumpfile]#" size="60" /></dd>
<dd><input type="file" name="content.phpbb3.dumpfile" value="#[content.phpbb3.dumpfile]#" size="60" /></dd>
<dt>&nbsp;</dt>
<dd>
<input type="submit" name="import" value="Import Dump" class="btn btn-primary" style="width:240px"/>

@ -214,7 +214,7 @@ public class CrawlStartScanner_p
path += "&crawlingURL=" + url.toNormalform(true);
WorkTables.execAPICall(
Domains.LOCALHOST,
sb.getLocalPort("port", 8090),
sb.getLocalPort(),
path,
pk,
sb.getConfig(SwitchboardConstants.ADMIN_ACCOUNT_USER_NAME, "admin"),
@ -261,7 +261,7 @@ public class CrawlStartScanner_p
path += "&crawlingURL=" + urlString;
WorkTables.execAPICall(
Domains.LOCALHOST,
sb.getLocalPort("port", 8090),
sb.getLocalPort(),
path,
u.hash(),
sb.getConfig(SwitchboardConstants.ADMIN_ACCOUNT_USER_NAME, "admin"),

@ -377,7 +377,7 @@ public class Crawler_p {
try {
scraper = sb.loader.loadDocument(sitelistURL, CacheStrategy.IFFRESH, BlacklistType.CRAWLER, agent);
// get links and generate filter
for (DigestURL u: scraper.getAnchors()) {
for (DigestURL u: scraper.getHyperlinks().keySet()) {
newRootURLs.add(u);
}
} catch (final IOException e) {

@ -34,11 +34,11 @@
<dd>#(geon0Status)#<div class="info">not loaded</div>::<div class="commit">loaded</div>::deactivated#(/geon0Status)#</dd>
<dt>Action</dt>
<dd>#(geon0Status)#
<input type="submit" name="geon0Load" value="Load" />::
<input type="submit" name="geon0Deactivate" value="Deactivate" />
<input type="submit" name="geon0Remove" value="Remove" />::
<input type="submit" name="geon0Activate" value="Activate" />
<input type="submit" name="geon0Remove" value="Remove" />
<input type="submit" name="geon0Load" class="btn btn-sm btn-primary" value="Load" />::
<input type="submit" name="geon0Deactivate" class="btn btn-sm btn-primary" value="Deactivate" />
<input type="submit" name="geon0Remove" class="btn btn-sm btn-danger" value="Remove" />::
<input type="submit" name="geon0Activate" class="btn btn-sm btn-primary" value="Activate" />
<input type="submit" name="geon0Remove" class="btn btn-sm btn-danger" value="Remove" />
#(/geon0Status)#</dd>
#(geon0ActionLoaded)#::
<dt>Result</dt><dd><div class="commit">loaded and activated dictionary file</div></dd>::
@ -68,11 +68,11 @@
<dd>#(geon1Status)#<div class="info">not loaded</div>::<div class="commit">loaded</div>::deactivated#(/geon1Status)#</dd>
<dt>Action</dt>
<dd>#(geon1Status)#
<input type="submit" name="geon1Load" value="Load" />::
<input type="submit" name="geon1Deactivate" value="Deactivate" />
<input type="submit" name="geon1Remove" value="Remove" />::
<input type="submit" name="geon1Activate" value="Activate" />
<input type="submit" name="geon1Remove" value="Remove" />
<input type="submit" name="geon1Load" class="btn btn-sm btn-primary" value="Load" />::
<input type="submit" name="geon1Deactivate" class="btn btn-sm btn-primary" value="Deactivate" />
<input type="submit" name="geon1Remove" class="btn btn-sm btn-danger" value="Remove" />::
<input type="submit" name="geon1Activate" class="btn btn-sm btn-primary" value="Activate" />
<input type="submit" name="geon1Remove" class="btn btn-sm btn-danger" value="Remove" />
#(/geon1Status)#</dd>
#(geon1ActionLoaded)#::
<dt>Result</dt><dd><div class="commit">loaded and activated dictionary file</div></dd>::
@ -102,11 +102,11 @@
<dd>#(geon2Status)#<div class="info">not loaded</div>::<div class="commit">loaded</div>::deactivated#(/geon2Status)#</dd>
<dt>Action</dt>
<dd>#(geon2Status)#
<input type="submit" name="geon2Load" value="Load" />::
<input type="submit" name="geon2Deactivate" value="Deactivate" />
<input type="submit" name="geon2Remove" value="Remove" />::
<input type="submit" name="geon2Activate" value="Activate" />
<input type="submit" name="geon2Remove" value="Remove" />
<input type="submit" name="geon2Load" class="btn btn-sm btn-primary" value="Load" />::
<input type="submit" name="geon2Deactivate" class="btn btn-sm btn-primary" value="Deactivate" />
<input type="submit" name="geon2Remove" class="btn btn-sm btn-danger" value="Remove" />::
<input type="submit" name="geon2Activate" class="btn btn-sm btn-primary" value="Activate" />
<input type="submit" name="geon2Remove" class="btn btn-sm btn-danger" value="Remove" />
#(/geon2Status)#</dd>
#(geon2ActionLoaded)#::
<dt>Result</dt><dd><div class="commit">loaded and activated dictionary file</div></dd>::
@ -138,11 +138,11 @@
<dd>#(geo1Status)#<div class="info">not loaded</div>::<div class="commit">loaded</div>::deactivated#(/geo1Status)#</dd>
<dt>Action</dt>
<dd>#(geo1Status)#
<input type="submit" name="geo1Load" value="Load" />::
<input type="submit" name="geo1Deactivate" value="Deactivate" />
<input type="submit" name="geo1Remove" value="Remove" />::
<input type="submit" name="geo1Activate" value="Activate" />
<input type="submit" name="geo1Remove" value="Remove" />
<input type="submit" name="geo1Load" class="btn btn-sm btn-primary" value="Load" />::
<input type="submit" name="geo1Deactivate" class="btn btn-sm btn-primary" value="Deactivate" />
<input type="submit" name="geo1Remove" class="btn btn-sm btn-danger" value="Remove" />::
<input type="submit" name="geo1Activate" class="btn btn-sm btn-primary" value="Activate" />
<input type="submit" name="geo1Remove" class="btn btn-sm btn-danger" value="Remove" />
#(/geo1Status)#</dd>
#(geo1ActionLoaded)#::
<dt>Result</dt><dd><div class="commit">loaded and activated dictionary file</div></dd>::
@ -181,11 +181,11 @@
<dd>#(drw0Status)#<div class="info">not loaded</div>::<div class="commit">loaded</div>::deactivated#(/drw0Status)#</dd>
<dt>Action</dt>
<dd>#(drw0Status)#
<input type="submit" name="drw0Load" value="Load" />::
<input type="submit" name="drw0Deactivate" value="Deactivate" />
<input type="submit" name="drw0Remove" value="Remove" />::
<input type="submit" name="drw0Activate" value="Activate" />
<input type="submit" name="drw0Remove" value="Remove" />
<input type="submit" name="drw0Load" class="btn btn-sm btn-primary" value="Load" />::
<input type="submit" name="drw0Deactivate" class="btn btn-sm btn-primary" value="Deactivate" />
<input type="submit" name="drw0Remove" class="btn btn-sm btn-danger" value="Remove" />::
<input type="submit" name="drw0Activate" class="btn btn-sm btn-primary" value="Activate" />
<input type="submit" name="drw0Remove" class="btn btn-sm btn-danger" value="Remove" />
#(/drw0Status)#</dd>
#(drw0ActionLoaded)#::
<dt>Result</dt><dd><div class="commit">loaded and activated dictionary file</div></dd>::
@ -219,7 +219,7 @@
<dt><label>Status</label></dt>
<dd>#(syn0Status)#<div class="info">Deactivated</div>::<div class="commit">Activated</div>#(/syn0Status)#</dd>
<dt>Action</dt>
<dd>#(syn0Status)#<input type="submit" name="syn0Activate" value="Activate" />::<input type="submit" name="syn0Deactivate" value="Deactivate" />#(/syn0Status)#</dd>
<dd>#(syn0Status)#<input type="submit" name="syn0Activate" class="btn btn-sm btn-primary" value="Activate" />::<input type="submit" name="syn0Deactivate" class="btn btn-sm btn-primary" value="Deactivate" />#(/syn0Status)#</dd>
</dl>
<h4><a href="http://icon.shef.ac.uk/Moby/" target="_blank">Moby Lexicon - English Thesaurus from http://icon.shef.ac.uk/Moby/</a></h4>
@ -229,7 +229,7 @@
<dt><label>Status</label></dt>
<dd>#(syn1Status)#<div class="info">Deactivated</div>::<div class="commit">Activated</div>#(/syn1Status)#</dd>
<dt>Action</dt>
<dd>#(syn1Status)#<input type="submit" name="syn1Activate" value="Activate" />::<input type="submit" name="syn1Deactivate" value="Deactivate" />#(/syn1Status)#</dd>
<dd>#(syn1Status)#<input type="submit" name="syn1Activate" class="btn btn-sm btn-primary" value="Activate" />::<input type="submit" name="syn1Deactivate" class="btn btn-sm btn-primary" value="Deactivate" />#(/syn1Status)#</dd>
</dl>
</fieldset>
</form>

@ -659,8 +659,6 @@ public class IndexControlRWIs_p {
sb.index,
sb.getRanking(),
"",//userAgent
false,
false,
0.0d, 0.0d, 0.0d,
new String[0]);
final SearchEvent theSearch = SearchEventCache.getEvent(query, sb.peers, sb.tables, null, false, sb.loader, Integer.MAX_VALUE, Long.MAX_VALUE);
@ -671,8 +669,7 @@ public class IndexControlRWIs_p {
} else {
prop.put("searchresult", 3);
prop.put("searchresult_allurl", theSearch.local_rwi_available.get());
prop
.put("searchresult_description", theSearch.flagCount()[WordReferenceRow.flag_app_dc_description]);
prop.put("searchresult_description", theSearch.flagCount()[WordReferenceRow.flag_app_dc_description]);
prop.put("searchresult_title", theSearch.flagCount()[WordReferenceRow.flag_app_dc_title]);
prop.put("searchresult_creator", theSearch.flagCount()[WordReferenceRow.flag_app_dc_creator]);
prop.put("searchresult_subject", theSearch.flagCount()[WordReferenceRow.flag_app_dc_subject]);

@ -19,9 +19,9 @@
<p>Showing latest #[num]# entries.</p>
<fieldset>
<input type="hidden" name="showRejected" value="#[newnum]#" />
<input type="submit" name="moreRejected" value="show more" />&nbsp;
<input type="submit" name="moreRejected" class="btn btn-success" value="show more" />&nbsp;
#(/only-latest)#
<input type="submit" name="clearRejected" value="clear list" />
<input type="submit" name="clearRejected" class="btn btn-danger" value="clear list" />
</fieldset>
</form>
<p>There are #[num]# entries in the rejected-queue:</p>

@ -74,7 +74,7 @@
<dt class="TableCellDark"></dt>
<dd><input type="checkbox" name="solr.indexing.solrremote.writeenabled" id="solr_indexing_solrremote_writeenabled" #(solr.indexing.solrremote.writeenabled.checked)#:: checked="checked"#(/solr.indexing.solrremote.writeenabled.checked)#/> write-enabled (if unchecked, the remote server(s) will only be used as search peers)</dd>
<dt><input type="submit" name="setsolr" value="Set" /></dt><dd></dd>
<dt><input type="submit" name="setsolr" class="btn btn-primary" value="Set" /></dt><dd></dd>
</dd>
</dl>
@ -95,7 +95,7 @@
<dt><input type="checkbox" name="core.service.webgraph.tmp" id="core_service_webgraph" #(core.service.webgraph.tmp.checked)#:: checked="checked"#(/core.service.webgraph.tmp.checked)# /></dt>
<dd>use webgraph search index (rich information in second Solr core)</dd>
<dt><input type="submit" name="setcitation" value="Set" /></dt><dd></dd>
<dt><input type="submit" name="setcitation" class="btn btn-primary" value="Set" /></dt><dd></dd>
</dl>
</fieldset>
</form>
@ -111,7 +111,7 @@
<dt><input type="checkbox" name="core.service.rwi" id="core_service_rwi" #(core.service.rwi.checked)#:: checked="checked"#(/core.service.rwi.checked)# /></dt>
<dd>support peer-to-peer index transmission (DHT RWI index)</dd>
<dt><input type="submit" name="setrwi" value="Set" /></dt><dd></dd>
<dt><input type="submit" name="setrwi" class="btn btn-primary" value="Set" /></dt><dd></dd>
</dl>
</fieldset>
</form>

@ -24,8 +24,13 @@
<br />
Dumps must be stored in the local file system in XML format and may be compressed in gz or bz2.
<br />
<input name="file" type="text" value="" size="80" />
<input name="submit" type="submit" value="Import MediaWiki Dump" />
<div class="input-group">
<span style="display: inline-block">
<input name="file" style="" type="file" value="" size="75" /></span>
<div class="btn-group">
<input name="submit" class="btn btn-primary" type="submit" value="Import MediaWiki Dump" />
</div>
</div>
</fieldset>
</form>
<p>

@ -25,7 +25,7 @@
<form action="IndexImportOAIPMH_p.html" target="_top" method="post" enctype="multipart/form-data" accept-charset="UTF-8" id="oaipmhimport">
<p>
<input type="hidden" name="num" value="#[num]#" />
<input type="submit" name="loadrows" value="Load Selected Sources" />
<input type="submit" name="loadrows" class="btn btn-primary" value="Load Selected Sources" />
</p>
<!-- Making the following table sortable could really consume some CPU if the list is huge - remove the class="sortable" if that is not desired ! -->
<table class="sortable" >
@ -41,7 +41,7 @@
#{/table}#
</table>
<p>
<input type="submit" name="loadrows" value="Load Selected Sources" />
<input type="submit" name="loadrows" class="btn btn-primary" value="Load Selected Sources" />
</p>
</form>
#(/source)#

@ -17,7 +17,7 @@
<legend>Single request import</legend>
This will submit only a single request as given here to a OAI-PMH server and imports records into the index<br />
<input name="urlstartone" type="text" value="#[defaulturl]#" size="80" />
<input name="submit" type="submit" value="Import OAI-PMH source" />
<input name="submit" type="submit" class="btn btn-primary" value="Import OAI-PMH source" />
#(import-one)#::
<p><dl>
<dt>Source:</dt><dd>#[source]#</dd>
@ -35,8 +35,8 @@
<legend>Import all Records from a server</legend>
Import all records that follow according to resumption elements into index<br />
<input name="urlstart" type="text" value="" size="80" />
<input name="importroot" type="submit" value="import this source" />
#(optiongetlist)#::or&nbsp;<input name="getlist" type="submit" value="import from a list" />#(/optiongetlist)#
<input name="importroot" type="submit" class="btn btn-primary" value="import this source" />
#(optiongetlist)#::or&nbsp;<input name="getlist" type="submit" class="btn btn-primary" value="import from a list" />#(/optiongetlist)#
#(status)#::<p>Import started!</p>::<p>Bad input data: #[message]# </p>#(/status)#
</fieldset>
</form>

@ -54,8 +54,8 @@
</div>
</fieldset>
<div>
<input type="submit" name="set" value="Set" />
<input style="float:right" type="submit" name="resetselectiontodefault" value="reset selection to default" />
<input type="submit" name="set" class="btn btn-primary" value="Set" />
<input style="float:right" type="submit" name="resetselectiontodefault" class="btn btn-primary" value="reset selection to default" />
</div>
</form>
<p><br /></p>
@ -66,7 +66,7 @@
To physically remove them from the index you need to reindex the documents.
Here you can reindex all documents with inactive fields.</p>
<div style="text-align:center ">
<input type="submit" name="reindexSolr" value="reindex Solr" />
<input type="submit" name="reindexSolr" class="btn btn-primary" value="reindex Solr" />
<input type="hidden" name="reindexnow"/>
</div>
<p>You may monitor progress (or stop the job) under <a href="IndexReIndexMonitor_p.html">IndexReIndexMonitor_p.html</a></p>

@ -30,10 +30,10 @@
<input type="hidden" name="crawlingMode" id="url" value="url" checked="checked" />
<input type="hidden" name="createBookmark" value="off" />
<input type="hidden" name="crawlingDepth" value="8" />
<input type="hidden" name="mustmatch" value=".*" />
<input type="hidden" name="mustnotmatch" value="(.*Recentchangeslinked.*)|(.*Whatlinkshere.*)|(.*MediaWiki.*)" />
<input type="hidden" name="range" value="subpath" />
<input type="hidden" name="crawlingIfOlderCheck" value="on"/>
<input type="hidden" name="mustmatch" value=".*" />
<input type="hidden" name="mustnotmatch" value="(.*Recentchangeslinked.*)|(.*Whatlinkshere.*)|(.*MediaWiki.*)" />
<input type="hidden" name="range" value="subpath" />
<input type="hidden" name="crawlingIfOlderCheck" value="on"/>
<input type="hidden" name="crawlingIfOlderNumber" value="1" />
<input type="hidden" name="crawlingIfOlderUnit" value="day" />
<input type="hidden" name="crawlingDomFilterCheck" value="off" />
@ -51,7 +51,7 @@
<input type="hidden" name="xpstopw" value="off" />
</dd>
<dt>&nbsp;</dt>
<dd><input type="submit" name="crawlingstart" value="Get content of Wiki: crawl wiki pages" /></dd>
<dd><input type="submit" name="crawlingstart" class="btn btn-primary" value="Get content of Wiki: crawl wiki pages" /></dd>
</dl>
</fieldset>

@ -39,7 +39,7 @@ public class Load_MediawikiWiki {
// define visible variables
String a = sb.peers.mySeed().getPublicAddress(sb.peers.mySeed().getIP());
if (a == null) a = "localhost:" + sb.getLocalPort("port", 8090);
if (a == null) a = "localhost:" + sb.getLocalPort();
final boolean intranet = sb.getConfig(SwitchboardConstants.NETWORK_NAME, "").equals("intranet");
final String repository = "http://" + a + "/repository/";
prop.put("starturl", (intranet) ? repository : "http://");

@ -35,7 +35,7 @@
<dd><input type="text" name="crawlingURL" value="#[starturl]#" size="60" maxlength="256" onkeypress="changed()" onfocus="check('url')" /></dd>
<dt>&nbsp;</dt>
<dd><input type="submit" name="crawlingstart" value="Get content of phpBB3: crawl forum pages" /></dd>
<dd><input type="submit" name="crawlingstart" class="btn btn-primary" value="Get content of phpBB3: crawl forum pages" /></dd>
</dl>

@ -39,7 +39,7 @@ public class Load_PHPBB3 {
// define visible variables
String a = sb.peers.mySeed().getPublicAddress(sb.peers.mySeed().getIP());
if (a == null) a = "localhost:" + sb.getLocalPort("port", 8090);
if (a == null) a = "localhost:" + sb.getLocalPort();
final boolean intranet = sb.getConfig(SwitchboardConstants.NETWORK_NAME, "").equals("intranet");
final String repository = "http://" + a + "/repository/";
prop.put("starturl", (intranet) ? repository : "http://");

@ -32,7 +32,7 @@
<dt><b>URL of the RSS feed</b></dt>
<dd><input type="text" name="url" value="#[url]#" size="60" maxlength="256"/></dd>
<dt>Preview</dt>
<dd><input type="submit" name="showrss" value="Show RSS Items" /></dd>
<dd><input type="submit" name="showrss" class="btn btn-default" value="Show RSS Items" /></dd>
<dt>Indexing</dt>
<dd>#(showload)#<input type="hidden" name="collection" id="collection" value="#[collection]#" />Available after successful loading of rss feed in preview::
<dl>
@ -57,7 +57,7 @@
<dt>collection</dt>
<dd><input name="collection" id="collection" type="text" size="60" maxlength="100" value="#[collection]#" #(collectionEnabled)#disabled="disabled"::#(/collectionEnabled)# /></dd>
</dl>
<input type="submit" name="indexAllItemContent" value="Add All Items to Index (full content of url)" />
<input type="submit" name="indexAllItemContent" class="btn btn-primary" value="Add All Items to Index (full content of url)" />
#(/showload)#</dd>
#(showerrmsg)#::<dd class="error">#[msgtxt]#</dd>#(/showerrmsg)#
</dl>
@ -95,8 +95,8 @@
</table>
<p>
<input type="hidden" name="num" value="#[num]#" />
<input type="submit" name="removeSelectedFeedsScheduler" value="Remove Selected Feeds from Scheduler" />
<input type="submit" name="removeAllFeedsScheduler" value="Remove All Feeds from Scheduler" />
<input type="submit" name="removeSelectedFeedsScheduler" class="btn btn-danger" value="Remove Selected Feeds from Scheduler" />
<input type="submit" name="removeAllFeedsScheduler" class="btn btn-danger" value="Remove All Feeds from Scheduler" />
</p>
</fieldset></form>
#(/showscheduledfeeds)#
@ -122,9 +122,9 @@
</table>
<p>
<input type="hidden" name="num" value="#[num]#" />
<input type="submit" name="removeSelectedFeedsNewList" value="Remove Selected Feeds from Feed List" />
<input type="submit" name="removeAllFeedsNewList" value="Remove All Feeds from Feed List" />
<input type="submit" name="addSelectedFeedScheduler" value="Add Selected Feeds to Scheduler" />
<input type="submit" name="removeSelectedFeedsNewList" class="btn btn-danger" value="Remove Selected Feeds from Feed List" />
<input type="submit" name="removeAllFeedsNewList" class="btn btn-danger" value="Remove All Feeds from Feed List" />
<input type="submit" name="addSelectedFeedScheduler" class="btn btn-primary" value="Add Selected Feeds to Scheduler" />
</p>
</fieldset></form>
#(/shownewfeeds)#
@ -168,7 +168,7 @@
<p>
<input type="hidden" name="num" value="#[num]#" />
<input type="hidden" name="url" value="#[rss]#" />
<input type="submit" name="indexSelectedItemContent" value="Add Selected Items to Index (full content of url)" />
<input type="submit" name="indexSelectedItemContent" class="btn btn-primary" value="Add Selected Items to Index (full content of url)" />
</p>
</fieldset></form>
#(/showitems)#

@ -17,7 +17,7 @@
<select id="peers" name="hash">#{peers}#
<option value="#[hash]#">#[name]#</option>#{/peers}#
</select>
<input type="submit" name="submit" value="Compose" />
<input type="submit" name="submit" class="btn btn-primary" value="Compose" />
</dd>
</dl>
</fieldset></form>

@ -102,7 +102,7 @@ document.getElementById("apilink").setAttribute("href", "Network.xml?" + window.
<label for="match">Search for a peername (RegExp allowed)</label>:
<input type="text" id="match" name="match" value="#[searchpattern]#" />
<input type="hidden" name="page" value="#[page]#" />
<input type="submit" name="search" value="Search" />
<input type="submit" name="search" class="btn btn-default" value="Search" />
</fieldset>
</form>
<table class="sortable" border="0">
@ -354,7 +354,7 @@ document.getElementById("apilink").setAttribute("href", "Network.xml?" + window.
</tr>
<tr>
<td>&nbsp;<input name="page" type="hidden" value="4" /></td>
<td><input type="submit" name="addPeer" value="add Peer" /></td>
<td><input type="submit" name="addPeer" class="btn btn-primary" value="add Peer" /></td>
</tr>
</table>
</form>

@ -158,6 +158,7 @@
</tr>
</table>
<!-- this cache table wasn't used for years
<p><strong>Object Read Caches:</strong></p>
<table border="0">
<tr class="TableHeader" valign="bottom">
@ -184,7 +185,7 @@
<td>Write Unique</td>
<td>Write Double</td>
<td>Deletes</td>
<!-- <td>Flushes</td> -->
<td>Flushes</td>
</tr>
#{ObjectList}#
<tr class="TableCellLight">
@ -206,13 +207,13 @@
<td align="right">#[objectMissCacheWriteUnique]#</td>
<td align="right">#[objectMissCacheWriteDouble]#</td>
<td align="right">#[objectMissCacheDeletes]#</td>
<!-- <td align="right">#[objectMissCacheFlushes]#</td> -->
<td align="right">#[objectMissCacheFlushes]#</td>
</tr>
#{/ObjectList}#
<tr class="TableCellDark">
<td colspan="19">Total Mem: #[objectHitCacheTotalMem]# MB (hit), #[objectMissCacheTotalMem]# MB (miss); Stop Grow when less than #[objectCacheStopGrow]# MB available left; Start Shrink when less than #[objectCacheStartShrink]# MB availabe left</td>
</tr>
</table>
</table> -->
<!-- other cache sizes -->
<p><strong>Other Caching Structures:</strong></p>
@ -225,32 +226,6 @@
<td>Insert</td>
<td>Delete</td>
</tr>
<!-- CachedSolrConnector was replaced by ConcurrentUpdateSolrConnector
<tr class="TableCellLight">
<td>Solr-Cache/Hit</td>
<td>#[solrcacheHit.size]#</td>
<td>#[solrcacheHit.Hit]#</td>
<td>#[solrcacheHit.Miss]#</td>
<td>#[solrcacheHit.Insert]#</td>
<td>(ARC)</td>
</tr>
<tr class="TableCellLight">
<td>Solr-Cache/Miss</td>
<td>#[solrcacheMiss.size]#</td>
<td>#[solrcacheMiss.Hit]#</td>
<td>#[solrcacheMiss.Miss]#</td>
<td>#[solrcacheMiss.Insert]#</td>
<td>(ARC)</td>
</tr>
<tr class="TableCellLight">
<td>Solr-Cache/Document</td>
<td>#[solrcacheDocument.size]#</td>
<td>#[solrcacheDocument.Hit]#</td>
<td>#[solrcacheDocument.Miss]#</td>
<td>#[solrcacheDocument.Insert]#</td>
<td>(ARC)</td>
</tr>
-->
<tr class="TableCellLight">
<td>DNSCache/Hit</td>
<td>#[namecacheHit.size]#</td>

@ -36,7 +36,6 @@ import org.apache.solr.search.SolrCache;
import net.yacy.cora.protocol.Domains;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.util.ConcurrentLog;
import net.yacy.kelondro.index.Cache;
import net.yacy.kelondro.index.RAMIndex;
import net.yacy.kelondro.table.Table;
import net.yacy.kelondro.util.Formatter;
@ -183,67 +182,51 @@ public class PerformanceMemory_p {
prop.put("indexcache", c);
prop.putNum("indexcacheTotalMem", totalhitmem / (1024d * 1024d));
// write object cache table
i = Cache.filenames();
c = 0;
long missmem, totalmissmem = 0;
totalhitmem = 0;
Map<Cache.StatKeys, String> mapy;
while (i.hasNext()) {
filename = i.next();
mapy = Cache.memoryStats(filename);
prop.put("ObjectList_" + c + "_objectCachePath", ((p = filename.indexOf("DATA",0)) < 0) ? filename : filename.substring(p));
// hit cache
hitmem = Long.parseLong(mapy.get(Cache.StatKeys.objectHitMem));
totalhitmem += hitmem;
prop.put("ObjectList_" + c + "_objectHitChunkSize", mapy.get(Cache.StatKeys.objectHitChunkSize));
prop.putNum("ObjectList_" + c + "_objectHitCacheCount", mapy.get(Cache.StatKeys.objectHitCacheCount));
prop.put("ObjectList_" + c + "_objectHitCacheMem", Formatter.bytesToString(hitmem));
prop.putNum("ObjectList_" + c + "_objectHitCacheReadHit", mapy.get(Cache.StatKeys.objectHitCacheReadHit));
prop.putNum("ObjectList_" + c + "_objectHitCacheReadMiss", mapy.get(Cache.StatKeys.objectHitCacheReadMiss));
prop.putNum("ObjectList_" + c + "_objectHitCacheWriteUnique", mapy.get(Cache.StatKeys.objectHitCacheWriteUnique));
prop.putNum("ObjectList_" + c + "_objectHitCacheWriteDouble", mapy.get(Cache.StatKeys.objectHitCacheWriteDouble));
prop.putNum("ObjectList_" + c + "_objectHitCacheDeletes", mapy.get(Cache.StatKeys.objectHitCacheDeletes));
prop.putNum("ObjectList_" + c + "_objectHitCacheFlushes", mapy.get(Cache.StatKeys.objectHitCacheFlushes));
// miss cache
missmem = Long.parseLong(mapy.get(Cache.StatKeys.objectMissMem));
totalmissmem += missmem;
prop.put("ObjectList_" + c + "_objectMissChunkSize", mapy.get(Cache.StatKeys.objectMissChunkSize));
prop.putNum("ObjectList_" + c + "_objectMissCacheCount", mapy.get(Cache.StatKeys.objectMissCacheCount));
prop.putHTML("ObjectList_" + c + "_objectMissCacheMem", Formatter.bytesToString(missmem));
prop.putNum("ObjectList_" + c + "_objectMissCacheReadHit", mapy.get(Cache.StatKeys.objectMissCacheReadHit));
prop.putNum("ObjectList_" + c + "_objectMissCacheReadMiss", mapy.get(Cache.StatKeys.objectMissCacheReadMiss));
prop.putNum("ObjectList_" + c + "_objectMissCacheWriteUnique", mapy.get(Cache.StatKeys.objectMissCacheWriteUnique));
prop.putNum("ObjectList_" + c + "_objectMissCacheWriteDouble", mapy.get(Cache.StatKeys.objectMissCacheWriteDouble));
prop.putNum("ObjectList_" + c + "_objectMissCacheDeletes", mapy.get(Cache.StatKeys.objectMissCacheDeletes));
//prop.put("ObjectList_" + c + "_objectMissCacheFlushes", mapy.get(Cache.StatKeys.objectMissCacheFlushes));
c++;
}
prop.put("ObjectList", c);
prop.putNum("objectCacheStopGrow", Cache.getMemStopGrow() / (1024d * 1024d));
prop.putNum("objectCacheStartShrink", Cache.getMemStartShrink() / (1024d * 1024d));
prop.putNum("objectHitCacheTotalMem", totalhitmem / (1024d * 1024d));
prop.putNum("objectMissCacheTotalMem", totalmissmem / (1024d * 1024d));
// other caching structures
// final CachedSolrConnector solr = (CachedSolrConnector) Switchboard.getSwitchboard().index.fulltext().getDefaultConnector();
// prop.putNum("solrcacheHit.size", solr.nameCacheHitSize());
// prop.putNum("solrcacheHit.Hit", solr.hitCache_Hit);
// prop.putNum("solrcacheHit.Miss", solr.hitCache_Miss);
// prop.putNum("solrcacheHit.Insert", solr.hitCache_Insert);
//
// prop.putNum("solrcacheMiss.size", solr.nameCacheMissSize());
// prop.putNum("solrcacheMiss.Hit", solr.missCache_Hit);
// prop.putNum("solrcacheMiss.Miss", solr.missCache_Miss);
// prop.putNum("solrcacheMiss.Insert", solr.missCache_Insert);
//
// prop.putNum("solrcacheDocument.size", solr.nameCacheDocumentSize());
// prop.putNum("solrcacheDocument.Hit", solr.documentCache_Hit);
// prop.putNum("solrcacheDocument.Miss", solr.documentCache_Miss);
// prop.putNum("solrcacheDocument.Insert", solr.documentCache_Insert);
// this cache table wasn't used for years
// // write object cache table
// i = Cache.filenames();
// c = 0;
// long missmem, totalmissmem = 0;
// totalhitmem = 0;
// Map<Cache.StatKeys, String> mapy;
// while (i.hasNext()) {
// filename = i.next();
// mapy = Cache.memoryStats(filename);
// prop.put("ObjectList_" + c + "_objectCachePath", ((p = filename.indexOf("DATA",0)) < 0) ? filename : filename.substring(p));
//
// // hit cache
// hitmem = Long.parseLong(mapy.get(Cache.StatKeys.objectHitMem));
// totalhitmem += hitmem;
// prop.put("ObjectList_" + c + "_objectHitChunkSize", mapy.get(Cache.StatKeys.objectHitChunkSize));
// prop.putNum("ObjectList_" + c + "_objectHitCacheCount", mapy.get(Cache.StatKeys.objectHitCacheCount));
// prop.put("ObjectList_" + c + "_objectHitCacheMem", Formatter.bytesToString(hitmem));
// prop.putNum("ObjectList_" + c + "_objectHitCacheReadHit", mapy.get(Cache.StatKeys.objectHitCacheReadHit));
// prop.putNum("ObjectList_" + c + "_objectHitCacheReadMiss", mapy.get(Cache.StatKeys.objectHitCacheReadMiss));
// prop.putNum("ObjectList_" + c + "_objectHitCacheWriteUnique", mapy.get(Cache.StatKeys.objectHitCacheWriteUnique));
// prop.putNum("ObjectList_" + c + "_objectHitCacheWriteDouble", mapy.get(Cache.StatKeys.objectHitCacheWriteDouble));
// prop.putNum("ObjectList_" + c + "_objectHitCacheDeletes", mapy.get(Cache.StatKeys.objectHitCacheDeletes));
// prop.putNum("ObjectList_" + c + "_objectHitCacheFlushes", mapy.get(Cache.StatKeys.objectHitCacheFlushes));
//
// // miss cache
// missmem = Long.parseLong(mapy.get(Cache.StatKeys.objectMissMem));
// totalmissmem += missmem;
// prop.put("ObjectList_" + c + "_objectMissChunkSize", mapy.get(Cache.StatKeys.objectMissChunkSize));
// prop.putNum("ObjectList_" + c + "_objectMissCacheCount", mapy.get(Cache.StatKeys.objectMissCacheCount));
// prop.putHTML("ObjectList_" + c + "_objectMissCacheMem", Formatter.bytesToString(missmem));
// prop.putNum("ObjectList_" + c + "_objectMissCacheReadHit", mapy.get(Cache.StatKeys.objectMissCacheReadHit));
// prop.putNum("ObjectList_" + c + "_objectMissCacheReadMiss", mapy.get(Cache.StatKeys.objectMissCacheReadMiss));
// prop.putNum("ObjectList_" + c + "_objectMissCacheWriteUnique", mapy.get(Cache.StatKeys.objectMissCacheWriteUnique));
// prop.putNum("ObjectList_" + c + "_objectMissCacheWriteDouble", mapy.get(Cache.StatKeys.objectMissCacheWriteDouble));
// prop.putNum("ObjectList_" + c + "_objectMissCacheDeletes", mapy.get(Cache.StatKeys.objectMissCacheDeletes));
// //prop.put("ObjectList_" + c + "_objectMissCacheFlushes", mapy.get(Cache.StatKeys.objectMissCacheFlushes));
//
// c++;
// }
// prop.put("ObjectList", c);
// prop.putNum("objectCacheStopGrow", Cache.getMemStopGrow() / (1024d * 1024d));
// prop.putNum("objectCacheStartShrink", Cache.getMemStartShrink() / (1024d * 1024d));
// prop.putNum("objectHitCacheTotalMem", totalhitmem / (1024d * 1024d));
// prop.putNum("objectMissCacheTotalMem", totalmissmem / (1024d * 1024d));
prop.putNum("namecacheHit.size", Domains.nameCacheHitSize());
prop.putNum("namecacheHit.Hit", Domains.cacheHit_Hit);

@ -60,8 +60,8 @@
#{/table}#
<tr class="TableCellLight">
<td align="left" colspan="19">
<input type="submit" name="submitdelay" value="Submit New Delay Values" />
<input type="submit" name="submitdefault" value="Re-set to default" />
<input type="submit" name="submitdelay" class="btn btn-sm btn-primary" value="Submit New Delay Values" />
<input type="submit" name="submitdefault" class="btn btn-sm btn-primary" value="Re-set to default" />
Changes take effect immediately<br/>
</td>
</tr>
@ -121,7 +121,7 @@
</tr>
<tr valign="top" class="TableCellLight">
<td colspan="4">
<input type="submit" name="cacheSizeSubmit" value="Enter New Cache Size" />
<input type="submit" name="cacheSizeSubmit" class="btn btn-sm btn-primary" value="Enter New Cache Size" />
Changes take effect immediately</td>
</tr>
</table>
@ -145,7 +145,7 @@
#{/pool}#
<tr class="TableCellLight">
<td align="left" colspan="7">
<input type="submit" name="poolConfig" value="Enter new Threadpool Configuration" />
<input type="submit" name="poolConfig" class="btn btn-sm btn-primary" value="Enter new Threadpool Configuration" />
Changes take effect immediately</td>
</tr>
</table>

@ -28,7 +28,7 @@
<dl>
<dt><label for="Xmx">Memory reserved for JVM</label></dt>
<dd><input name="Xmx" id="Xmx" type="text" size="5" maxlength="5" value="#[Xmx]#" /> MByte&nbsp;
<input type="submit" name="setStartup" value="Set" />&nbsp;
<input type="submit" class="btn btn-primary" name="setStartup" value="Set" />&nbsp;
#(setStartupCommit)#::<div class="commit">Accepted change. This will take effect after <strong>restart</strong> of YaCy. <br/><a href="Steering.html?restart=" onclick="return confirm('Confirm Restart')">restart now</a></div>::<div class="error"></div>#(/setStartupCommit)#
</dd>
</dl>
@ -47,7 +47,7 @@
<dt><label for="memoryAcceptDHT">RAM</label></dt>
<dd>disable DHT-in below <input name="memoryAcceptDHT" id="memoryAcceptDHT" type="text" size="4" value="#[memoryAcceptDHT]#" /> MiB free space</dd>
<dt>&nbsp;</dt>
<dd><input type="submit" name="setObserver" value="Save" /></dd>
<dd><input type="submit" class="btn btn-primary" name="setObserver" value="Save" /></dd>
</dl>
</fieldset>
</form>
@ -79,7 +79,7 @@
<td align="right"><input id="crawlPauseRemotesearch" name="crawlPauseRemotesearch" type="text" size="20" maxlength="100" value="#[crawlPauseRemotesearch]#" /></td>
</tr>
<tr class="TableCellLight">
<td align="left" colspan="2"><input type="submit" name="onlineCautionSubmit" value="Enter New Parameters" />
<td align="left" colspan="2"><input type="submit" class="btn btn-sm btn-primary"name="onlineCautionSubmit" value="Enter New Parameters" />
Changes take effect immediately</td>
</tr>
</table>

@ -95,7 +95,7 @@
<tr valign="top" class="TableCellDark">
<td colspan="1">&nbsp;</td>
<td colspan="2"><input type="submit" name="proxyprofileset" value="Set proxy profile" /></td>
<td colspan="2"><input type="submit" name="proxyprofileset" class="btn btn-primary" value="Set proxy profile" /></td>
</tr>
</table>
</form>

@ -60,8 +60,8 @@
</dl>
</fieldset>
<fieldset>
<input type="submit" name="EnterRanking" value="Set as Default Ranking" />
<input type="submit" name="ResetRanking" value="Re-Set to Built-In Ranking" />
<input type="submit" name="EnterRanking" class="btn btn-primary" value="Set as Default Ranking" />
<input type="submit" name="ResetRanking" class="btn btn-primary" value="Re-Set to Built-In Ranking" />
</fieldset>
</form>

@ -33,8 +33,8 @@
</dd>
<dt style="width:260px;margin:0;padding:0;height:1.8em;"></dt>
<dd style="width:360px;margin:0;padding:0;height:1.8em;float:left;display:inline;">
<input type="submit" name="EnterBF" value="Set Boost Function" />
<input type="submit" name="ResetBF" value="Re-Set to default" />
<input type="submit" name="EnterBF" class="btn btn-primary" value="Set Boost Function" />
<input type="submit" name="ResetBF" class="btn btn-primary" value="Re-Set to default" />
</dd>
</dl><br/>
#(boosthint)#::You can boost with vocabularies, use the occurrence counters #[vocabulariesvoccount]# and #[vocabulariesvoclogcount]#.#(/boosthint)#
@ -54,8 +54,8 @@
</dd>
<dt style="width:260px;margin:0;padding:0;height:1.8em;"></dt>
<dd style="width:360px;margin:0;padding:0;height:1.8em;float:left;display:inline;">
<input type="submit" name="EnterBQ" value="Set Boost Query" />
<input type="submit" name="ResetBQ" value="Re-Set to default" />
<input type="submit" name="EnterBQ" class="btn btn-primary" value="Set Boost Query" />
<input type="submit" name="ResetBQ" class="btn btn-primary" value="Re-Set to default" />
</dd>
</dl><br/>
#(boosthint)#::
@ -91,8 +91,8 @@
</dd>
<dt style="width:260px;margin:0;padding:0;height:1.8em;"></dt>
<dd style="width:360px;margin:0;padding:0;height:1.8em;float:left;display:inline;">
<input type="submit" name="EnterFQ" value="Set Filter Query" />
<input type="submit" name="ResetFQ" value="Re-Set to default" />
<input type="submit" name="EnterFQ" class="btn btn-primary" value="Set Filter Query" />
<input type="submit" name="ResetFQ" class="btn btn-primary" value="Re-Set to default" />
</dd>
</dl>
</fieldset>
@ -113,8 +113,8 @@
</dd>#{/boosts}#
<dt style="width:260px;margin:0;padding:0;height:1.8em;"></dt>
<dd style="width:360px;margin:0;padding:0;height:1.8em;float:left;display:inline;">
<input type="submit" name="EnterBoosts" value="Set Field Boosts" />
<input type="submit" name="ResetBoosts" value="Re-Set to default" />
<input type="submit" name="EnterBoosts" class="btn btn-primary" value="Set Field Boosts" />
<input type="submit" name="ResetBoosts" class="btn btn-primary" value="Re-Set to default" />
</dd>
</dl>
</fieldset>

@ -30,7 +30,7 @@
#(match)#<dd><img src="env/grafics/nok.png"> no match</dd>::<dd><img src="env/grafics/ok.png"> match</dd>::<dd><img src="env/grafics/bad.png"> error in expression: #[error]#</dd>#(/match)#
<dt></dt>
<dd>
<input name="submit" id="submit" type="submit" />
<input name="submit" id="submit" type="submit" class="btn btn-primary" />
</dd>
</dl>
</form>

@ -49,7 +49,7 @@
#(edit)#::
<p>
<input type="hidden" name="num" value="#[num]#" />
<input type="submit" name="crawl" value="Add Selected Servers to Crawler" />
<input type="submit" name="crawl" class="btn btn-primary" value="Add Selected Servers to Crawler" />
</p>
#(/edit)#
</fieldset></form>

@ -99,7 +99,7 @@ public class SettingsAck_p {
/*
* display port info
*/
prop.put("info_port", env.getLocalPort("port", 8090));
prop.put("info_port", env.getLocalPort());
prop.put("info_restart", "0");
// read and process data
@ -494,7 +494,7 @@ public class SettingsAck_p {
// change https port
if (post.containsKey("port.ssl")) {
int port = post.getInt("port.ssl", 8443);
if (port > 0 && port != env.getLocalPort("port", 8090)) {
if (port > 0 && port != env.getConfigInt("port.ssl", 8443)) {
env.setConfig("port.ssl", port);
}
prop.put("info_port.ssl", port);

@ -44,7 +44,7 @@
<tr valign="top">
<td>&nbsp;</td>
<td><input type="submit" name="crawlerSettings" value="Submit" /></td>
<td><input type="submit" name="crawlerSettings" class="btn btn-primary" value="Submit" /></td>
<td><em>Changes will take effect immediately.</em></td>
</tr>
</table>

@ -24,7 +24,7 @@
</td>
</tr>
<tr valign="top">
<td colspan="3"><input type="submit" name="msgForwarding" value="Submit" /> <em>Changes will take effect immediately.</em></td>
<td colspan="3"><input type="submit" name="msgForwarding" class="btn btn-primary" value="Submit" /> <em>Changes will take effect immediately.</em></td>
</tr>
</table>
</fieldset>

@ -51,7 +51,7 @@
<!-- submit button -->
<tr valign="top">
<td colspan="4"><input type="submit" name="proxysettings" value="Submit" /> <em>Changes will take effect immediately.</em></td>
<td colspan="4"><input type="submit" name="proxysettings" class="btn btn-primary" value="Submit" /> <em>Changes will take effect immediately.</em></td>
</tr>
</table>
</fieldset>

@ -19,7 +19,7 @@
<option value="#[name]#"#(selected)#:: selected="selected"#(/selected)#>#[name]#</option>
#{/seedUploadMethods}#
</select>
<input type="submit" name="seedSettings" value="Submit" />
<input type="submit" name="seedSettings" class="btn btn-primary" value="Submit" />
</td>
<td><em>Here you can specify which upload method should be used. Select 'none' to deactivate uploading.</em></td>
</tr>
@ -34,7 +34,7 @@
</td>
</tr>
<tr>
<td colspan="3"><input type="submit" name="seedUploadRetry" value="Retry Uploading" /></td>
<td colspan="3"><input type="submit" name="seedUploadRetry" class="btn btn-primary" value="Retry Uploading" /></td>
</tr>
</table>
</form>

@ -5,11 +5,11 @@
<table border="0" cellspacing="5">
<tr valign="top">
<td><label for="fs_path">File Location</label>:</td>
<td><input name="seedFilePath" type="text" id="fs_path" size="40" value="#[seedFilePath]#" /></td>
<td><input name="seedFilePath" type="file" id="fs_path" size="40" value="#[seedFilePath]#" /></td>
<td><i>Here you can specify the path within the filesystem where the seed-list file should be stored.</i></td>
</tr>
<tr>
<td colspan="3"><input type="submit" name="seedFileSettings" value="Submit" /></td>
<td colspan="3"><input type="submit" name="seedFileSettings" class="btn btn-primary" value="Submit" /></td>
</tr>
</table>
</form>

@ -31,7 +31,7 @@
<td><i>The password</i></td>
</tr>
<tr>
<td colspan="3"><input type="submit" name="seedFtpSettings" value="Submit" /></td>
<td colspan="3"><input type="submit" name="seedFtpSettings" class="btn btn-primary" value="Submit" /></td>
</tr>
</table>
</form>

@ -31,7 +31,7 @@
<td><i>The password</i></td>
</tr>
<tr>
<td colspan="3"><input type="submit" name="seedScpSettings" value="Submit" /></td>
<td colspan="3"><input type="submit" name="seedScpSettings" class="btn btn-primary" value="Submit" /></td>
</tr>
</table>
</form>

@ -55,7 +55,7 @@
for the preconfigured value 'localpeer', the URL is: http://localpeer/.</td>
</tr>
<tr valign="top">
<td colspan="3"><input type="submit" name="serveraccount" value="Submit" /></td>
<td colspan="3"><input type="submit" name="serveraccount" class="btn btn-primary" value="Submit" /></td>
</tr>
</table>
</fieldset>

@ -73,7 +73,7 @@ public final class Settings_p {
prop.put("settingsTables", "");
}
prop.put("port", env.getLocalPort("port", 8090));
prop.put("port", env.getLocalPort());
prop.putHTML("peerName", sb.peers.mySeed().getName());
prop.putHTML("staticIP", env.getConfig("staticIP", ""));

@ -127,11 +127,7 @@
<dd class="hint">Latest public version is v#[latestVersion]#.
You can download a more recent version of YaCy. Click here to install this update and restart YaCy:
<form action="Status.html" method="get" class="PeerControl" accept-charset="UTF-8">
<!-- Is this line here on purpose or by accident?
<form action="Table_API_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8" name="apilist">
-->
<button type="submit" name="aquirerelease" value="Update YaCy">
<button type="submit" name="aquirerelease" class="btn btn-primary" value="Update YaCy">
<img src="env/grafics/lock.gif" alt="lock icon"/>
Install YaCy v#[latestVersion]#
</button>

@ -171,7 +171,7 @@ XDtoU7vQ/wIAAP//AwBb7ktEXQ4nqQAAAABJRU5ErkJggg==" width="128" height="64" alt="K
<p>Application will terminate after working off all scheduled tasks.</p>
<h2>Please send us feed-back!</h2>
<p>We don't track YaCy users, YaCy does not send 'home-pings', we do not even know how many people use YaCy as their private search engine.<br/>
Therefore we like to ask you: do you like YaCy? Will you use it again... if not, why? Is is possible that we change a bit to suit your needs?</p>
Therefore we like to ask you: do you like YaCy? Will you use it again... if not, why? Is it possible that we change a bit to suit your needs?</p>
<p>Please send us feed-back about your experience with an<br/>
<a href="http://sayat.me/YaCy" target="_blank">anonymous message</a><br/>
or a<br/>

@ -55,11 +55,11 @@
</p>
<form action="Surftips.html" method="get" class="PeerControl" accept-charset="UTF-8"><div>
<button type="submit" name="publicPage" value="0">
<button type="submit" name="publicPage" class="btn btn-primary" value="0">
<img src="env/grafics/lock.gif" alt="authentication required" />
Hide surftips for users without autorization
</button>
<button type="submit" name="publicPage" value="1">
<button type="submit" name="publicPage" class="btn btn-primary" value="1">
<img src="env/grafics/lock.gif" alt="authentication required" />
Show surftips to everyone
</button>

@ -208,7 +208,7 @@ public class Table_API_p {
}
// now call the api URLs and store the result status
final Map<String, Integer> l = sb.tables.execAPICalls(Domains.LOCALHOST, sb.getLocalPort("port", 8090), pks, sb.getConfig(SwitchboardConstants.ADMIN_ACCOUNT_USER_NAME, "admin"), sb.getConfig(SwitchboardConstants.ADMIN_ACCOUNT_B64MD5, ""));
final Map<String, Integer> l = sb.tables.execAPICalls(Domains.LOCALHOST, sb.getLocalPort(), pks, sb.getConfig(SwitchboardConstants.ADMIN_ACCOUNT_USER_NAME, "admin"), sb.getConfig(SwitchboardConstants.ADMIN_ACCOUNT_B64MD5, ""));
// construct result table
prop.put("showexec", l.isEmpty() ? 0 : 1);

@ -60,7 +60,7 @@ document.write("<div id=\"api\"><a href=\"/Tables_p.xml" + window.location.searc
<dt>reverse:</dt>
<dd><input type="checkbox" name="reverse" #(reverse)#::checked="check"#(/reverse)# onchange='this.form.submit()'></dd>
<dt>search rows for</dt>
<dd><input type="text" name="search" value="#[pattern]#" /><input type="submit" name="edittable" value="Search" /></dd>
<dd><input type="text" name="search" value="#[pattern]#" /> <input type="submit" name="edittable" class="btn btn-default" value="Search" /></dd>
</dl>
</fieldset>
</form>
@ -90,10 +90,10 @@ document.write("<div id=\"api\"><a href=\"/Tables_p.xml" + window.location.searc
<p>
<input type="hidden" name="table" value="#[table]#" />
<input type="hidden" name="num" value="#[num]#" />
<input type="submit" name="editrow" value="Edit Selected Row" />
<input type="submit" name="addrow" value="Add a new Row" />&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="deleterows" value="Delete Selected Rows" />
<input type="submit" name="deletetable" value="Delete Table" />
<input type="submit" name="editrow" class="btn btn-primary" value="Edit Selected Row" />
<input type="submit" name="addrow" class="btn btn-primary" value="Add a new Row" />&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" name="deleterows" class="btn btn-danger" value="Delete Selected Rows" />
<input type="submit" name="deletetable" class="btn btn-danger" value="Delete Table" />
</p>
</fieldset>
</form>

@ -6,20 +6,20 @@
#%env/templates/metas.template%#
</head>
<body id="Threaddump">
#%env/templates/header.template%#
#%env/templates/header.template%#
#%env/templates/submenuComputation.template%#
<h2>Threaddump</h2>
<table border="0" cellpadding="0" cellspacing="0"><tr>
<td><form action="Threaddump_p.html" method="get" accept-charset="UTF-8">
<fieldset>
<input type="submit" name="singleThreaddump" value="Single Threaddump" />
<input type="submit" name="singleThreaddump" class="btn btn-primary" value="Single Threaddump" />
</fieldset>
</form></td>
<td><form action="Threaddump_p.html" method="get" accept-charset="UTF-8">
<fieldset>
<input type="text" name="count" value="#[count]#" size="4" maxlength="4" />
<input type="submit" name="multipleThreaddump" value="Multiple Dump Statistic" />
<input type="submit" name="multipleThreaddump" class="btn btn-primary" value="Multiple Dump Statistic" />
</fieldset>
</form></td>
</tr></table>

@ -14,7 +14,7 @@
<input type="hidden" name="returnto" value="#[returnto]#" />
Username: <input type="text" name="username" value="#[username]#" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" value="login" />
<input type="submit" class="btn btn-primary" value="login" />
</form>
</p>
::
@ -22,7 +22,7 @@
You are currently logged in as #[username]#.<br />
(Identified by #(identified-by)#IP::Username/Password::Cookie#(/identified-by)#)<br />
<form action="User.html" accept-charset="UTF-8">
<input type="submit" name="logout" value="logout">
<input type="submit" name="logout" class="btn btn-primary" value="logout">
</form>
#(limit)#::
#{percent}#<img src="env/grafics/red-block.png" alt="red bar" />#{/percent}##{percent2}#<img src="env/grafics/green-block.png" alt="green bar" />#{/percent2}#
@ -45,14 +45,14 @@
<td><input type="password" name="newpass2" id="newpass2" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="changepass" value="Change" /></td>
<td colspan="2"><input type="submit" name="changepass" class="btn btn-primary" value="Change" /></td>
</tr>
</table>
</form>
::
You are currently logged in as admin.<br />
<form action="User.html" accept-charset="UTF-8">
<input type="submit" name="logout" value="logout">
<input type="submit" name="logout" class="btn btn-primary" value="logout">
</form>
<br />
<p>(after logout you will be prompted for your password again. simply click "cancel")</p>

@ -82,15 +82,15 @@ function updatepage(str) {
<dt>URL:</dt>
<dd>
<input type="text" size="60" name="url" id="url" value="#[url]#" />
<input type="submit" name="show" value="Show Metadata" />
#(moar)#::<input type="button" value="Browse Host" onClick="location.href='/HostBrowser.html?path=' + document.getElementById('url').value" />#(/moar)#
<input type="submit" name="show" class="btn btn-primary" value="Show Metadata" />
#(moar)#::<input type="button" value="Browse Host" class="btn btn-default" onClick="location.href='/HostBrowser.html?path=' + document.getElementById('url').value" />#(/moar)#
<div id="searchresults"></div>
</dd>
#(moar)#::
<dt>Search in Document:</dt>
<dd>
<input type="text" size="60" name="search" id="search" value="#[search]#" />
<input type="submit" name="show" value="Show Snippet" />
<input type="submit" name="show" class="btn btn-primary" value="Show Snippet" />
</dd>
#(/moar)#
</dl>
@ -124,7 +124,7 @@ function updatepage(str) {
<option value="links"#(vMode-links)#:: selected="selected"#(/vMode-links)#>Link List</option>
<option value="iframeCitations"#(vMode-iframeCitations)#:: selected="selected"#(/vMode-iframeCitations)#>Citation Report</option>
</select>
<noscript><input type="submit" name="show" value="Show" /></noscript>
<noscript><input type="submit" name="show" class="btn btn-primary" value="Show" /></noscript>
</dd>
</dl>
<input type="hidden" name="words" value="#[words]#" />

@ -325,6 +325,24 @@ public class ViewFile {
prop.put("viewMode", VIEW_MODE_AS_LINKLIST);
boolean dark = true;
int i = 0;
if (document.getEmaillinks() != null) {
Iterator<AnchorURL> emailit = document.getEmaillinks().iterator();
while (emailit.hasNext()) {
AnchorURL eentry = emailit.next();
prop.put("viewMode_links_" + i + "_nr", i);
prop.put("viewMode_links_" + i + "_dark", dark ? "1" : "0");
prop.put("viewMode_links_" + i + "_type", "email");
prop.put("viewMode_links_" + i + "_text", (eentry.getTextProperty().isEmpty()) ? "&nbsp;" : eentry.getTextProperty());
prop.put("viewMode_links_" + i + "_url", "#");
prop.put("viewMode_links_" + i + "_link", eentry.toNormalform(true));
prop.put("viewMode_links_" + i + "_rel", "");
prop.put("viewMode_links_" + i + "_name", eentry.getNameProperty());
dark = !dark;
i++;
}
}
i += putMediaInfo(prop, wordArray, i, document.getVideolinks(), "video", (i % 2 == 0));
i += putMediaInfo(prop, wordArray, i, document.getAudiolinks(), "audio", (i % 2 == 0));
dark = (i % 2 == 0);
@ -402,7 +420,6 @@ public class ViewFile {
prop.putHTML("error_dc_creator", "");
prop.putHTML("error_dc_publisher", "");
prop.putHTML("error_dc_subject", "");
prop.put("error_md5", "");
prop.put("error_lat", "");
prop.put("error_lon", "");
prop.put("error_language", "");
@ -424,7 +441,6 @@ public class ViewFile {
prop.putHTML("error_dc_creator", urlEntry.dc_creator());
prop.putHTML("error_dc_publisher", urlEntry.dc_publisher());
prop.putHTML("error_dc_subject", urlEntry.dc_subject());
prop.put("error_md5", urlEntry.md5());
prop.put("error_lat", urlEntry.lat());
prop.put("error_lon", urlEntry.lon());
prop.put("error_language", urlEntry.language());

@ -26,14 +26,20 @@ import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.awt.image.Raster;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Map;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import net.yacy.cora.document.id.DigestURL;
import net.yacy.cora.document.id.MultiProtocolURL;
import net.yacy.cora.federate.yacy.CacheStrategy;
@ -44,31 +50,48 @@ import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.storage.ConcurrentARC;
import net.yacy.cora.util.ConcurrentLog;
import net.yacy.data.URLLicense;
import net.yacy.document.ImageParser;
import net.yacy.kelondro.util.FileUtils;
import net.yacy.kelondro.util.MemoryControl;
import net.yacy.kelondro.workflow.WorkflowProcessor;
import net.yacy.peers.graphics.EncodedImage;
import net.yacy.repository.Blacklist.BlacklistType;
import net.yacy.repository.LoaderDispatcher;
import net.yacy.search.Switchboard;
import net.yacy.server.serverObjects;
import net.yacy.server.serverSwitch;
public class ViewImage {
private static Map<String, Image> iconcache = new ConcurrentARC<String, Image>(1000,
Math.max(10, Math.min(32, WorkflowProcessor.availableCPU * 2)));
private static String defaulticon = "htroot/env/grafics/dfltfvcn.ico";
private static byte[] defaulticonb;
private static Map<String, Image> iconcache = new ConcurrentARC<String, Image>(1000,
Math.max(10, Math.min(32, WorkflowProcessor.availableCPU * 2)));
static {
try {
defaulticonb = FileUtils.read(new File(defaulticon));
} catch (final IOException e) {
}
}
private static String defaulticon = "htroot/env/grafics/dfltfvcn.ico";
private static byte[] defaulticonb = null;
public static Object respond(final RequestHeader header, final serverObjects post, final serverSwitch env) {
/**
* Try parsing image from post "url" parameter or from "code" parameter.
* When image format is not supported, return directly image data. When
* image could be parsed, try encoding to target format specified by header
* "EXT".
*
* @param header
* request header
* @param post
* post parameters
* @param env
* environment
* @return an {@link EncodedImage} instance encoded in format specified in
* post, or an InputStream pointing to original image data.
* Return and EncodedImage with empty data when image format is not supported,
* a read/write or any other error occured while loading resource.
* @throws IOException
* when specified url is malformed.
* Sould end in a HTTP 500 error whose processing is more
* consistent across browsers than a response with zero content
* bytes.
*/
public static Object respond(final RequestHeader header, final serverObjects post, final serverSwitch env)
throws IOException {
final Switchboard sb = (Switchboard) env;
@ -85,27 +108,22 @@ public class ViewImage {
|| sb.verifyAuthentication(header); // handle access rights
DigestURL url = null;
if ((urlString.length() > 0) && (auth))
try {
url = new DigestURL(urlString);
} catch (final MalformedURLException e1) {
url = null;
}
if ((urlString.length() > 0) && (auth)) {
url = new DigestURL(urlString);
}
if ((url == null) && (urlLicense.length() > 0)) {
urlString = URLLicense.releaseLicense(urlLicense);
try {
if (urlString != null) {
url = new DigestURL(urlString);
} catch (final MalformedURLException e1) {
url = null;
urlString = null;
} else { // license is gone (e.g. released/remove in prev calls)
ConcurrentLog.fine("ViewImage", "image urlLicense not found key=" + urlLicense);
/* Return an empty EncodedImage. Caller is responsible for handling this correctly (500 status code response) */
return new EncodedImage(new byte[0], ext, post.getBoolean("isStatic")); // TODO: maybe favicon accessed again, check
// iconcache
}
}
if (urlString == null) {
return null;
}
// get the image as stream
if (MemoryControl.shortStatus()) {
iconcache.clear();
@ -115,52 +133,99 @@ public class ViewImage {
if (image != null) {
encodedImage = new EncodedImage(image, ext, post.getBoolean("isStatic"));
} else {
byte[] resourceb = null;
if (url != null)
try {
String agentName = post.get("agentName", auth ? ClientIdentification.yacyIntranetCrawlerAgentName
: ClientIdentification.yacyInternetCrawlerAgentName);
ClientIdentification.Agent agent = ClientIdentification.getAgent(agentName);
resourceb = sb.loader.loadContent(sb.loader.request(url, false, true), CacheStrategy.IFEXIST,
BlacklistType.SEARCH, agent);
} catch (final IOException e) {
ConcurrentLog.fine("ViewImage", "cannot load: " + e.getMessage());
ImageInputStream imageInStream = null;
InputStream inStream = null;
try {
String urlExt = MultiProtocolURL.getFileExtension(url.getFileName());
if (ext != null && ext.equalsIgnoreCase(urlExt) && isBrowserRendered(urlExt)) {
return openInputStream(post, sb.loader, auth, url);
}
boolean okToCache = true;
if (resourceb == null) {
if (urlString.endsWith(".ico")) {
// load default favicon dfltfvcn.ico
// Should not do this here : we can be displaying search
// image result of '.ico' type and do not want to display a
// default
if (defaulticonb == null)
try {
resourceb = FileUtils.read(new File(sb.getAppPath(), defaulticon));
okToCache = false;
} catch (final IOException e) {
return null;
}
else {
resourceb = defaulticonb;
okToCache = false;
}
/*
* When opening a file, the most efficient is to open
* ImageInputStream directly on file
*/
if (url.isFile()) {
imageInStream = ImageIO.createImageInputStream(url.getFSFile());
} else {
return null;
inStream = openInputStream(post, sb.loader, auth, url);
imageInStream = ImageIO.createImageInputStream(inStream);
}
// read image
encodedImage = parseAndScale(post, auth, urlString, ext, imageInStream);
} catch(Exception e) {
/* Exceptions are not propagated here : many error causes are possible, network errors,
* incorrect or unsupported format, bad ImageIO plugin...
* Instead return an empty EncodedImage. Caller is responsible for handling this correctly (500 status code response) */
if ("favicon.ico".equalsIgnoreCase(url.getFileName())) { // but on missing favicon just present a default (occures frequently by call from searchitem.html)
// currently yacysearchitem assigns "hosturl/favicon.ico" (to look for the filename should not much interfere with other situatios)
if (defaulticonb == null) { // load the default icon once
try {
defaulticonb = FileUtils.read(new File(sb.getAppPath(), defaulticon));
} catch (final IOException initicon) {
defaulticonb = new byte[0];
}
}
encodedImage = new EncodedImage(defaulticonb, ext, post.getBoolean("isStatic"));
} else {
encodedImage = new EncodedImage(new byte[0], ext, post.getBoolean("isStatic"));
}
} finally {
/*
* imageInStream.close() method doesn't close source input
* stream
*/
if (inStream != null) {
try {
inStream.close();
} catch (IOException ignored) {
}
}
}
String urlExt = MultiProtocolURL.getFileExtension(url.getFileName());
if (ext != null && ext.equalsIgnoreCase(urlExt) && isBrowserRendered(urlExt)) {
return new ByteArrayInputStream(resourceb);
}
// read image
encodedImage = parseAndScale(post, auth, urlString, ext, okToCache, resourceb);
}
return encodedImage;
}
/**
* Open input stream on image url using provided loader. All parameters must
* not be null.
*
* @param post
* post parameters.
* @param loader.
* Resources loader.
* @param auth
* true when user has credentials to load full images.
* @param url
* image url.
* @return an open input stream instance (don't forget to close it).
* @throws IOException
* when a read/write error occured.
*/
private static InputStream openInputStream(final serverObjects post, final LoaderDispatcher loader,
final boolean auth, DigestURL url) throws IOException {
InputStream inStream = null;
if (url != null) {
try {
String agentName = post.get("agentName", auth ? ClientIdentification.yacyIntranetCrawlerAgentName
: ClientIdentification.yacyInternetCrawlerAgentName);
ClientIdentification.Agent agent = ClientIdentification.getAgent(agentName);
inStream = loader.openInputStream(loader.request(url, false, true), CacheStrategy.IFEXIST,
BlacklistType.SEARCH, agent);
} catch (final IOException e) {
/** No need to log full stack trace (in most cases resource is not available because of a network error) */
ConcurrentLog.fine("ViewImage", "cannot load image. URL : " + url.toNormalform(true));
throw e;
}
}
if (inStream == null) {
throw new IOException("Input stream could no be open");
}
return inStream;
}
/**
* @param formatName
* informal file format name. For example : "png".
@ -180,73 +245,181 @@ public class ViewImage {
}
/**
* Process resourceb byte array to try to produce an Image instance
* eventually scaled and cropped depending on post parameters
* Process source image to try to produce an EncodedImage instance
* eventually scaled and clipped depending on post parameters. When
* processed, imageInStream is closed.
*
* @param post
* request post parameters. Must not be null.
* @param auth
* true when access rigths are OK.
* @param urlString
* image source URL. Must not be null.
* image source URL as String. Must not be null.
* @param ext
* image file extension. May be null.
* @param okToCache
* true when image can be cached
* @param resourceb
* byte array. Must not be null.
* @return an Image instance when parsing is OK, or null.
* target image file format. May be null.
* @param imageInStream
* open stream on image content. Must not be null.
* @return an EncodedImage instance.
* @throws IOException
* when image could not be parsed or encoded to specified format.
*/
protected static EncodedImage parseAndScale(serverObjects post, boolean auth, String urlString, String ext,
boolean okToCache, byte[] resourceb) {
EncodedImage encodedImage = null;
Image image = ImageParser.parse(urlString, resourceb);
ImageInputStream imageInStream) throws IOException {
EncodedImage encodedImage;
if (image != null) {
int maxwidth = post.getInt("maxwidth", 0);
int maxheight = post.getInt("maxheight", 0);
final boolean quadratic = post.containsKey("quadratic");
boolean isStatic = post.getBoolean("isStatic");
if (!auth || maxwidth != 0 || maxheight != 0) {
// find original size
int h = image.getHeight(null);
int w = image.getWidth(null);
// in case of not-authorized access shrink the image to
// prevent
// copyright problems, so that images are not larger than
// thumbnails
Dimension maxDimensions = calculateMaxDimensions(auth, w, h, maxwidth, maxheight);
// if a quadratic flag is set, we cut the image out to be in
// quadratic shape
if (quadratic && w != h) {
image = makeSquare(image, h, w);
h = image.getHeight(null);
w = image.getWidth(null);
}
Dimension finalDimensions = calculateDimensions(w, h, maxDimensions);
// BufferedImage image = ImageIO.read(imageInStream);
Iterator<ImageReader> readers = ImageIO.getImageReaders(imageInStream);
if (!readers.hasNext()) {
try {
/* When no reader can be found, we have to close the stream */
imageInStream.close();
} catch (IOException ignoredException) {
}
String errorMessage = "Image format (" + ext + ") is not supported.";
ConcurrentLog.fine("ViewImage", errorMessage + "Image URL : " + urlString);
/*
* Throw an exception, wich will end in a HTTP 500 response, better
* handled by browsers than an empty image
*/
throw new IOException(errorMessage);
}
ImageReader reader = readers.next();
reader.setInput(imageInStream, true, true);
int maxwidth = post.getInt("maxwidth", 0);
int maxheight = post.getInt("maxheight", 0);
final boolean quadratic = post.containsKey("quadratic");
boolean isStatic = post.getBoolean("isStatic");
BufferedImage image = null;
boolean returnRaw = true;
if (!auth || maxwidth != 0 || maxheight != 0) {
// find original size
final int originWidth = reader.getWidth(0);
final int originHeigth = reader.getHeight(0);
// in case of not-authorized access shrink the image to
// prevent
// copyright problems, so that images are not larger than
// thumbnails
Dimension maxDimensions = calculateMaxDimensions(auth, originWidth, originHeigth, maxwidth, maxheight);
// if a quadratic flag is set, we cut the image out to be in
// quadratic shape
int w = originWidth;
int h = originHeigth;
if (quadratic && originWidth != originHeigth) {
Rectangle square = getMaxSquare(originHeigth, originWidth);
h = square.height;
w = square.width;
}
if (w != finalDimensions.width && h != finalDimensions.height) {
image = scale(finalDimensions.width, finalDimensions.height, image);
Dimension finalDimensions = calculateDimensions(w, h, maxDimensions);
if (originWidth != finalDimensions.width || originHeigth != finalDimensions.height) {
returnRaw = false;
image = readImage(reader);
if (quadratic && originWidth != originHeigth) {
image = makeSquare(image);
}
if ((finalDimensions.width == 16) && (finalDimensions.height == 16) && okToCache) {
// this might be a favicon, store image to cache for
// faster
// re-load later on
iconcache.put(urlString, image);
image = scale(finalDimensions.width, finalDimensions.height, image);
}
if (finalDimensions.width == 16 && finalDimensions.height == 16) {
// this might be a favicon, store image to cache for
// faster
// re-load later on
if (image == null) {
returnRaw = false;
image = readImage(reader);
}
iconcache.put(urlString, image);
}
}
/* Image do not need to be scaled or cropped */
if (returnRaw) {
if (!reader.getFormatName().equalsIgnoreCase(ext) || imageInStream.getFlushedPosition() != 0) {
/*
* image parsing and reencoding is only needed when source image
* and target formats differ, or when first bytes have been discarded
*/
returnRaw = false;
image = readImage(reader);
}
}
if (returnRaw) {
byte[] imageData = readRawImage(imageInStream);
encodedImage = new EncodedImage(imageData, ext, isStatic);
} else {
/*
* An error can still occur when transcoding from buffered image to
* target ext : in that case EncodedImage.getImage() is empty.
*/
encodedImage = new EncodedImage(image, ext, isStatic);
if (encodedImage.getImage().length() == 0) {
String errorMessage = "Image could not be encoded to format : " + ext;
ConcurrentLog.fine("ViewImage", errorMessage + ". Image URL : " + urlString);
throw new IOException(errorMessage);
}
}
return encodedImage;
}
/**
* Read image using specified reader and close ImageInputStream source.
* Input must have bean set before using
* {@link ImageReader#setInput(Object)}
*
* @param reader
* image reader. Must not be null.
* @return buffered image
* @throws IOException
* when an error occured
*/
private static BufferedImage readImage(ImageReader reader) throws IOException {
BufferedImage image;
try {
image = reader.read(0);
} finally {
reader.dispose();
Object input = reader.getInput();
if (input instanceof ImageInputStream) {
try {
((ImageInputStream) input).close();
} catch (IOException ignoredException) {
}
}
}
return image;
}
/**
* Read image data without parsing.
*
* @param inStream
* image source. Must not be null. First bytes must not have been marked discarded ({@link ImageInputStream#getFlushedPosition()} must be zero)
* @return image data as bytes
* @throws IOException
* when a read/write error occured.
*/
private static byte[] readRawImage(ImageInputStream inStream) throws IOException {
byte[] buffer = new byte[4096];
int l = 0;
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
inStream.seek(0);
try {
while ((l = inStream.read(buffer)) >= 0) {
outStream.write(buffer, 0, l);
}
return outStream.toByteArray();
} finally {
try {
inStream.close();
} catch (IOException ignored) {
}
}
}
/**
* Calculate image dimensions from image original dimensions, max
* dimensions, and target dimensions.
@ -317,9 +490,9 @@ public class ViewImage {
* image to scale. Must not be null.
* @return a scaled image
*/
protected static Image scale(final int width, final int height, Image image) {
protected static BufferedImage scale(final int width, final int height, final BufferedImage image) {
// compute scaled image
final Image scaled = image.getScaledInstance(width, height, Image.SCALE_AREA_AVERAGING);
Image scaled = image.getScaledInstance(width, height, Image.SCALE_AREA_AVERAGING);
final MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(scaled, 0);
try {
@ -328,45 +501,91 @@ public class ViewImage {
}
// make a BufferedImage out of that
final BufferedImage i = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
try {
i.createGraphics().drawImage(scaled, 0, 0, width, height, null);
image = i;
result.createGraphics().drawImage(scaled, 0, 0, width, height, null);
// check outcome
final Raster raster = i.getData();
int[] pixel = new int[3];
final Raster raster = result.getData();
int[] pixel = new int[raster.getSampleModel().getNumBands()];
pixel = raster.getPixel(0, 0, pixel);
if (pixel[0] != 0 || pixel[1] != 0 || pixel[2] != 0)
image = i;
} catch (final Exception e) {
// java.lang.ClassCastException: [I cannot be cast to [B
/*
* Exception may be caused by source image color model : try now to
* convert to RGB before scaling
*/
try {
BufferedImage converted = EncodedImage.convertToRGB(image);
scaled = converted.getScaledInstance(width, height, Image.SCALE_AREA_AVERAGING);
mediaTracker.addImage(scaled, 1);
try {
mediaTracker.waitForID(1);
} catch (final InterruptedException e2) {
}
result = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
result.createGraphics().drawImage(scaled, 0, 0, width, height, null);
// check outcome
final Raster raster = result.getData();
int[] pixel = new int[result.getSampleModel().getNumBands()];
pixel = raster.getPixel(0, 0, pixel);
} catch (Exception e2) {
result = image;
}
ConcurrentLog.fine("ViewImage", "Image could not be scaled");
}
return image;
return result;
}
/**
*
* @param h
* image height
* @param w
* image width
* @return max square area fitting inside dimensions
*/
protected static Rectangle getMaxSquare(final int h, final int w) {
Rectangle square;
if (w > h) {
final int offset = (w - h) / 2;
square = new Rectangle(offset, 0, h, h);
} else {
final int offset = (h - w) / 2;
square = new Rectangle(0, offset, w, w);
}
return square;
}
/**
* Crop image to make a square
*
* @param image
* image to crop
* @param h
* @param w
* @return
*/
protected static Image makeSquare(Image image, final int h, final int w) {
protected static BufferedImage makeSquare(BufferedImage image) {
final int w = image.getWidth();
final int h = image.getHeight();
if (w > h) {
final BufferedImage dst = new BufferedImage(h, h, BufferedImage.TYPE_INT_RGB);
final BufferedImage dst = new BufferedImage(h, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = dst.createGraphics();
final int offset = (w - h) / 2;
g.drawImage(image, 0, 0, h - 1, h - 1, offset, 0, h + offset, h - 1, null);
g.dispose();
try {
g.drawImage(image, 0, 0, h - 1, h - 1, offset, 0, h + offset, h - 1, null);
} finally {
g.dispose();
}
image = dst;
} else {
final BufferedImage dst = new BufferedImage(w, w, BufferedImage.TYPE_INT_RGB);
final BufferedImage dst = new BufferedImage(w, w, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = dst.createGraphics();
final int offset = (h - w) / 2;
g.drawImage(image, 0, 0, w - 1, w - 1, 0, offset, w - 1, w + offset, null);
g.dispose();
try {
g.drawImage(image, 0, 0, w - 1, w - 1, 0, offset, w - 1, w + offset, null);
} finally {
g.dispose();
}
image = dst;
}
return image;

@ -94,7 +94,7 @@ To see a list of all APIs, please visit the <a href="http://www.yacy-websuche.de
#{/vocabularyset}#
</select>
</dd>
<dt></dt><dd><input type="submit" name="view" value="View" /></dd>
<dt></dt><dd><input type="submit" class="btn btn-primary" name="view" value="View" /></dd>
</dl>
</fieldset>
</form>
@ -144,7 +144,7 @@ To see a list of all APIs, please visit the <a href="http://www.yacy-websuche.de
<dd><select name="charset">#{charset}#<option value="#[name]#" #(selected)#::selected="selected"#(/selected)#>#[name]#</option>#{/charset}#</select></dd>
</dl>
</dd>
<dt></dt><dd><input type="submit" name="create" value="Create" /></dd>
<dt></dt><dd><input type="submit" class="btn btn-primary" name="create" value="Create" /></dd>
</dl>
</fieldset>
</form>
@ -198,7 +198,7 @@ To see a list of all APIs, please visit the <a href="http://www.yacy-websuche.de
#(/editable)#
</table>
<input type="hidden" name="vocabulary" value="#[name]#" />
<input type="submit" name="set" value="Submit" />
<input type="submit" class="btn btn-primary" name="set" value="Submit" />
</fieldset>
</form>
#(/edit)#

@ -106,7 +106,7 @@ To see a list of all APIs, please visit the <a href="http://www.yacy-websuche.de
<dt>Other Dot</dt><dd>Color <input type="text" name="colordota" id="colordota" value="#[colordota]#" size="6" maxlength="6" /></dd>
<dt>Dot-end</dt><dd>Color <input type="text" name="colorlineend" id="colorlineend" value="#[colorlineend]#" size="6" maxlength="6" /></dd>
</dl>
<div align="center"><input type="submit" value="change" /></div>
<div align="center"><input type="submit" class="btn btn-primary" value="change" /></div>
</fieldset>
</form>

@ -114,12 +114,11 @@ public class getpageinfo {
prop.put("favicon", (scraper.getFavicon()==null) ? "" : scraper.getFavicon().toString());
// put keywords
final String list[] = scraper.dc_subject();
final Set<String> list = scraper.dc_subject();
int count = 0;
for (final String element: list) {
final String tag = element;
if (!tag.equals("")) {
prop.putXML("tags_"+count+"_tag", tag);
if (!element.equals("")) {
prop.putXML("tags_"+count+"_tag", element);
count++;
}
}

@ -114,12 +114,11 @@ public class getpageinfo_p {
prop.put("favicon", (scraper.getFavicon()==null) ? "" : scraper.getFavicon().toString());
// put keywords
final String list[] = scraper.dc_subject();
final Set<String> list = scraper.dc_subject();
int count = 0;
for (final String element: list) {
final String tag = element;
if (!tag.equals("")) {
prop.putXML("tags_"+count+"_tag", tag);
if (!element.equals("")) {
prop.putXML("tags_"+count+"_tag", element);
count++;
}
}

@ -126,7 +126,7 @@ public class push_p {
Set<String> ips = Domains.myPublicIPs();
String address = ips.size() == 0 ? "127.0.0.1" : ips.iterator().next();
if (address == null) address = "127.0.0.1";
prop.put("mode_results_" + i + "_success_message", "http://" + address + ":" + sb.getLocalPort("port", 8090) + "/solr/select?q=sku:%22" + u + "%22");
prop.put("mode_results_" + i + "_success_message", "http://" + address + ":" + sb.getLocalPort() + "/solr/select?q=sku:%22" + u + "%22");
countsuccess++;
} catch (MalformedURLException e) {
e.printStackTrace();

@ -19,7 +19,7 @@
<fieldset>
<legend>Websearch Comparison</legend>
<form action="" method="get" accept-charset="UTF-8">
<p><input type="text" class="searchinput" name="query" value="#[search_query]#" size="40" onFocus="this.select()"/><input type="submit" value="Compare" />
<p><input type="text" class="searchinput" name="query" value="#[search_query]#" size="40" onFocus="this.select()"/> <input type="submit" class="btn btn-primary" value="Compare" />
Left Search Engine
<select name="left">
#{searchengines}#

@ -389,7 +389,7 @@ h4.linktitle {
padding-left: 20px;
}
img.favicon{
img.favicon, object.favicon {
margin: 0px 4px 0px -20px;
width: 16px;
height: 16px;

@ -1,9 +1,8 @@
/*!
* Bootstrap v3.3.4 (http://getbootstrap.com)
* Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
@ -29,6 +28,27 @@
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-default.disabled,
.btn-primary.disabled,
.btn-success.disabled,
.btn-info.disabled,
.btn-warning.disabled,
.btn-danger.disabled,
.btn-default[disabled],
.btn-primary[disabled],
.btn-success[disabled],
.btn-info[disabled],
.btn-warning[disabled],
.btn-danger[disabled],
fieldset[disabled] .btn-default,
fieldset[disabled] .btn-primary,
fieldset[disabled] .btn-success,
fieldset[disabled] .btn-info,
fieldset[disabled] .btn-warning,
fieldset[disabled] .btn-danger {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
@ -64,8 +84,23 @@
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default:disabled,
.btn-default[disabled] {
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #e0e0e0;
background-image: none;
}
@ -90,8 +125,23 @@
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary:disabled,
.btn-primary[disabled] {
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #265a88;
background-image: none;
}
@ -116,8 +166,23 @@
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success:disabled,
.btn-success[disabled] {
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #419641;
background-image: none;
}
@ -142,8 +207,23 @@
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info:disabled,
.btn-info[disabled] {
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #2aabd2;
background-image: none;
}
@ -168,8 +248,23 @@
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning:disabled,
.btn-warning[disabled] {
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #eb9316;
background-image: none;
}
@ -194,8 +289,23 @@
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger:disabled,
.btn-danger[disabled] {
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #c12e2a;
background-image: none;
}
@ -260,6 +370,7 @@
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
/*!
* Bootstrap v3.3.4 (http://getbootstrap.com)
* Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Licensed under the MIT license
*/
if (typeof jQuery === 'undefined') {
@ -11,13 +11,13 @@ if (typeof jQuery === 'undefined') {
+function ($) {
'use strict';
var version = $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')
}
}(jQuery);
/* ========================================================================
* Bootstrap: transition.js v3.3.4
* Bootstrap: transition.js v3.3.6
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -77,7 +77,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: alert.js v3.3.4
* Bootstrap: alert.js v3.3.6
* http://getbootstrap.com/javascript/#alerts
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -96,7 +96,7 @@ if (typeof jQuery === 'undefined') {
$(el).on('click', dismiss, this.close)
}
Alert.VERSION = '3.3.4'
Alert.VERSION = '3.3.6'
Alert.TRANSITION_DURATION = 150
@ -172,7 +172,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: button.js v3.3.4
* Bootstrap: button.js v3.3.6
* http://getbootstrap.com/javascript/#buttons
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -192,7 +192,7 @@ if (typeof jQuery === 'undefined') {
this.isLoading = false
}
Button.VERSION = '3.3.4'
Button.VERSION = '3.3.6'
Button.DEFAULTS = {
loadingText: 'loading...'
@ -204,7 +204,7 @@ if (typeof jQuery === 'undefined') {
var val = $el.is('input') ? 'val' : 'html'
var data = $el.data()
state = state + 'Text'
state += 'Text'
if (data.resetText == null) $el.data('resetText', $el[val]())
@ -229,15 +229,19 @@ if (typeof jQuery === 'undefined') {
if ($parent.length) {
var $input = this.$element.find('input')
if ($input.prop('type') == 'radio') {
if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
else $parent.find('.active').removeClass('active')
if ($input.prop('checked')) changed = false
$parent.find('.active').removeClass('active')
this.$element.addClass('active')
} else if ($input.prop('type') == 'checkbox') {
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
this.$element.toggleClass('active')
}
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
$input.prop('checked', this.$element.hasClass('active'))
if (changed) $input.trigger('change')
} else {
this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
this.$element.toggleClass('active')
}
if (changed) this.$element.toggleClass('active')
}
@ -280,7 +284,7 @@ if (typeof jQuery === 'undefined') {
var $btn = $(e.target)
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
Plugin.call($btn, 'toggle')
e.preventDefault()
if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
})
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
@ -289,7 +293,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: carousel.js v3.3.4
* Bootstrap: carousel.js v3.3.6
* http://getbootstrap.com/javascript/#carousel
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -320,7 +324,7 @@ if (typeof jQuery === 'undefined') {
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
}
Carousel.VERSION = '3.3.4'
Carousel.VERSION = '3.3.6'
Carousel.TRANSITION_DURATION = 600
@ -527,7 +531,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: collapse.js v3.3.4
* Bootstrap: collapse.js v3.3.6
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -557,7 +561,7 @@ if (typeof jQuery === 'undefined') {
if (this.options.toggle) this.toggle()
}
Collapse.VERSION = '3.3.4'
Collapse.VERSION = '3.3.6'
Collapse.TRANSITION_DURATION = 350
@ -739,7 +743,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: dropdown.js v3.3.4
* Bootstrap: dropdown.js v3.3.6
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -759,7 +763,41 @@ if (typeof jQuery === 'undefined') {
$(element).on('click.bs.dropdown', this.toggle)
}
Dropdown.VERSION = '3.3.4'
Dropdown.VERSION = '3.3.6'
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
})
}
Dropdown.prototype.toggle = function (e) {
var $this = $(this)
@ -774,7 +812,10 @@ if (typeof jQuery === 'undefined') {
if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
$(document.createElement('div'))
.addClass('dropdown-backdrop')
.insertAfter($(this))
.on('click', clearMenus)
}
var relatedTarget = { relatedTarget: this }
@ -788,7 +829,7 @@ if (typeof jQuery === 'undefined') {
$parent
.toggleClass('open')
.trigger('shown.bs.dropdown', relatedTarget)
.trigger($.Event('shown.bs.dropdown', relatedTarget))
}
return false
@ -807,57 +848,25 @@ if (typeof jQuery === 'undefined') {
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
if (!isActive && e.which != 27 || isActive && e.which == 27) {
if (e.which == 27) $parent.find(toggle).trigger('focus')
return $this.trigger('click')
}
var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
var $items = $parent.find('.dropdown-menu' + desc)
if (!$items.length) return
var index = $items.index(e.target)
if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
$items.eq(index).trigger('focus')
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
// DROPDOWN PLUGIN DEFINITION
// ==========================
@ -895,13 +904,12 @@ if (typeof jQuery === 'undefined') {
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
}(jQuery);
/* ========================================================================
* Bootstrap: modal.js v3.3.4
* Bootstrap: modal.js v3.3.6
* http://getbootstrap.com/javascript/#modals
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -935,7 +943,7 @@ if (typeof jQuery === 'undefined') {
}
}
Modal.VERSION = '3.3.4'
Modal.VERSION = '3.3.6'
Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150
@ -992,9 +1000,7 @@ if (typeof jQuery === 'undefined') {
that.$element[0].offsetWidth // force reflow
}
that.$element
.addClass('in')
.attr('aria-hidden', false)
that.$element.addClass('in')
that.enforceFocus()
@ -1028,7 +1034,6 @@ if (typeof jQuery === 'undefined') {
this.$element
.removeClass('in')
.attr('aria-hidden', true)
.off('click.dismiss.bs.modal')
.off('mouseup.dismiss.bs.modal')
@ -1092,7 +1097,8 @@ if (typeof jQuery === 'undefined') {
if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
this.$backdrop = $(document.createElement('div'))
.addClass('modal-backdrop ' + animate)
.appendTo(this.$body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
@ -1241,7 +1247,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: tooltip.js v3.3.4
* Bootstrap: tooltip.js v3.3.6
* http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
* ========================================================================
@ -1263,11 +1269,12 @@ if (typeof jQuery === 'undefined') {
this.timeout = null
this.hoverState = null
this.$element = null
this.inState = null
this.init('tooltip', element, options)
}
Tooltip.VERSION = '3.3.4'
Tooltip.VERSION = '3.3.6'
Tooltip.TRANSITION_DURATION = 150
@ -1292,7 +1299,8 @@ if (typeof jQuery === 'undefined') {
this.type = type
this.$element = $(element)
this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
this.inState = { click: false, hover: false, focus: false }
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
@ -1351,16 +1359,20 @@ if (typeof jQuery === 'undefined') {
var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type)
if (self && self.$tip && self.$tip.is(':visible')) {
self.hoverState = 'in'
return
}
if (!self) {
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
$(obj.currentTarget).data('bs.' + this.type, self)
}
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
}
if (self.tip().hasClass('in') || self.hoverState == 'in') {
self.hoverState = 'in'
return
}
clearTimeout(self.timeout)
self.hoverState = 'in'
@ -1372,6 +1384,14 @@ if (typeof jQuery === 'undefined') {
}, self.options.delay.show)
}
Tooltip.prototype.isInStateTrue = function () {
for (var key in this.inState) {
if (this.inState[key]) return true
}
return false
}
Tooltip.prototype.leave = function (obj) {
var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type)
@ -1381,6 +1401,12 @@ if (typeof jQuery === 'undefined') {
$(obj.currentTarget).data('bs.' + this.type, self)
}
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
}
if (self.isInStateTrue()) return
clearTimeout(self.timeout)
self.hoverState = 'out'
@ -1427,6 +1453,7 @@ if (typeof jQuery === 'undefined') {
.data('bs.' + this.type, this)
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
this.$element.trigger('inserted.bs.' + this.type)
var pos = this.getPosition()
var actualWidth = $tip[0].offsetWidth
@ -1434,13 +1461,12 @@ if (typeof jQuery === 'undefined') {
if (autoPlace) {
var orgPlacement = placement
var $container = this.options.container ? $(this.options.container) : this.$element.parent()
var containerDim = this.getPosition($container)
var viewportDim = this.getPosition(this.$viewport)
placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :
placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :
placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :
placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :
placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
placement
$tip
@ -1481,8 +1507,8 @@ if (typeof jQuery === 'undefined') {
if (isNaN(marginTop)) marginTop = 0
if (isNaN(marginLeft)) marginLeft = 0
offset.top = offset.top + marginTop
offset.left = offset.left + marginLeft
offset.top += marginTop
offset.left += marginLeft
// $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0
@ -1564,7 +1590,7 @@ if (typeof jQuery === 'undefined') {
Tooltip.prototype.fixTitle = function () {
var $e = this.$element
if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
}
}
@ -1619,7 +1645,7 @@ if (typeof jQuery === 'undefined') {
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
delta.left = viewportDimensions.left - leftEdgeOffset
} else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
} else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
}
}
@ -1645,7 +1671,13 @@ if (typeof jQuery === 'undefined') {
}
Tooltip.prototype.tip = function () {
return (this.$tip = this.$tip || $(this.options.template))
if (!this.$tip) {
this.$tip = $(this.options.template)
if (this.$tip.length != 1) {
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
}
}
return this.$tip
}
Tooltip.prototype.arrow = function () {
@ -1674,7 +1706,13 @@ if (typeof jQuery === 'undefined') {
}
}
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
if (e) {
self.inState.click = !self.inState.click
if (self.isInStateTrue()) self.enter(self)
else self.leave(self)
} else {
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}
}
Tooltip.prototype.destroy = function () {
@ -1682,6 +1720,12 @@ if (typeof jQuery === 'undefined') {
clearTimeout(this.timeout)
this.hide(function () {
that.$element.off('.' + that.type).removeData('bs.' + that.type)
if (that.$tip) {
that.$tip.detach()
}
that.$tip = null
that.$arrow = null
that.$viewport = null
})
}
@ -1718,7 +1762,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: popover.js v3.3.4
* Bootstrap: popover.js v3.3.6
* http://getbootstrap.com/javascript/#popovers
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -1738,7 +1782,7 @@ if (typeof jQuery === 'undefined') {
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.4'
Popover.VERSION = '3.3.6'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right',
@ -1827,7 +1871,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: scrollspy.js v3.3.4
* Bootstrap: scrollspy.js v3.3.6
* http://getbootstrap.com/javascript/#scrollspy
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -1856,7 +1900,7 @@ if (typeof jQuery === 'undefined') {
this.process()
}
ScrollSpy.VERSION = '3.3.4'
ScrollSpy.VERSION = '3.3.6'
ScrollSpy.DEFAULTS = {
offset: 10
@ -2000,7 +2044,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: tab.js v3.3.4
* Bootstrap: tab.js v3.3.6
* http://getbootstrap.com/javascript/#tabs
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -2015,10 +2059,12 @@ if (typeof jQuery === 'undefined') {
// ====================
var Tab = function (element) {
// jscs:disable requireDollarBeforejQueryAssignment
this.element = $(element)
// jscs:enable requireDollarBeforejQueryAssignment
}
Tab.VERSION = '3.3.4'
Tab.VERSION = '3.3.6'
Tab.TRANSITION_DURATION = 150
@ -2066,7 +2112,7 @@ if (typeof jQuery === 'undefined') {
var $active = container.find('> .active')
var transition = callback
&& $.support.transition
&& (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)
&& ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
function next() {
$active
@ -2154,7 +2200,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery);
/* ========================================================================
* Bootstrap: affix.js v3.3.4
* Bootstrap: affix.js v3.3.6
* http://getbootstrap.com/javascript/#affix
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
@ -2183,7 +2229,7 @@ if (typeof jQuery === 'undefined') {
this.checkPosition()
}
Affix.VERSION = '3.3.4'
Affix.VERSION = '3.3.6'
Affix.RESET = 'affix affix-top affix-bottom'
@ -2233,7 +2279,7 @@ if (typeof jQuery === 'undefined') {
var offset = this.options.offset
var offsetTop = offset.top
var offsetBottom = offset.bottom
var scrollHeight = $(document.body).height()
var scrollHeight = Math.max($(document).height(), $(document.body).height())
if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)

File diff suppressed because one or more lines are too long

@ -1,6 +1,6 @@
/* Fixes for IE 5 and lower */
/* IE 5 and lower can't display favicons, so hide them */
img.favicon {
img.favicon, object.favicon {
display: none;
}

@ -40,7 +40,7 @@ public class opensearchdescription {
if (env.getConfigBool(SwitchboardConstants.GREETING_NETWORK_NAME, false)) promoteSearchPageGreeting = env.getConfig("network.unit.description", "");
String thisaddress = header.get("Host", Domains.LOCALHOST);
if (thisaddress.indexOf(':',0) == -1) thisaddress += ":" + env.getLocalPort("port", 8090);
if (thisaddress.indexOf(':',0) == -1) thisaddress += ":" + env.getLocalPort();
String thisprotocol = env.getConfigBool("server.https", false) ? "https" : "http";
final serverObjects prop = new serverObjects();

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html>
<body style="background:white">
<div align="center" style="width:98%; padding:5px; background:white; border-bottom: medium solid lightgrey;">
<form method="get" target="_parent" action="#[proxyurl]#">
<input type="submit" value="YaCy stop proxy"> #(httpsAlertMsg)#:: &nbsp; - <span style='color:red'>(Warning: secure target viewed over normal http)</span>#(/httpsAlertMsg)#
</form>
</div>
</body>
</html>

@ -0,0 +1,48 @@
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.search.Switchboard;
import net.yacy.server.serverObjects;
import net.yacy.server.serverSwitch;
/**
* Servlet to be included as header (via iframe) on top of a page viewed via urlproxyservlet
*/
public class urlproxyheader {
public static serverObjects respond(@SuppressWarnings("unused") final RequestHeader requestHeader, @SuppressWarnings("unused") final serverObjects post, @SuppressWarnings("unused") final serverSwitch env) {
final serverObjects prop = new serverObjects();
final Switchboard sb = (Switchboard) env;
final String proxyurlstr = post.get("url",""); // the url of remote page currently viewed
prop.put("proxyurl", proxyurlstr);
if (proxyurlstr.startsWith("https")) {
prop.put("httpsAlertMsg", "1");
} else {
prop.put("httpsAlertMsg", "0");
}
// TODO: get some index data to display
/*
if (post.containsKey("hash")) {
try {
String hashstr = post.get("hash");
final SolrDocument idxdoc = sb.index.fulltext().getDefaultEmbeddedConnector().getDocumentById(hashstr);
if (idxdoc != null) {
String keywords = (String) idxdoc.getFieldValue(CollectionSchema.keywords.getSolrFieldName());
if (keywords != null && !keywords.isEmpty()) {
keytxt += keywords;
}
Collection cols = idxdoc.getFieldValues(CollectionSchema.collection_sxt.getSolrFieldName());
if (cols != null && !cols.isEmpty()) {
for (Object sx : cols) {
coltxt += sx.toString();
}
}
}catch (IOException ex) { }
}
*/
return prop;
}
}

@ -83,9 +83,9 @@
</tr>#{/urllist}#
<tr class="small" style="background-color: #eeeeee">
<td colspan="2">
<input type="button" onclick="selectall(this.form.name)" value="select all" />
<input type="button" onclick="deselectall(this.form.name)" value="deselect all" />
<input type="submit" value="add" name="add" />
<input type="button" class="btn btn-primary" onclick="selectall(this.form.name)" value="select all" />
<input type="button" class="btn btn-primary" onclick="deselectall(this.form.name)" value="deselect all" />
<input type="submit" class="btn btn-primary" value="add" name="add" />
</td>
</tr>
</table>

@ -251,8 +251,6 @@ public final class search {
indexSegment,
rankingProfile,
header.get(HeaderFramework.USER_AGENT, ""),
false,
false,
0.0d,
0.0d,
0.0d,
@ -317,8 +315,6 @@ public final class search {
sb.index,
rankingProfile,
header.get(HeaderFramework.USER_AGENT, ""),
false,
false,
0.0d,
0.0d,
0.0d,

@ -109,7 +109,7 @@ div.ys {
img {
vertical-align: top;
}
img.favicon{
img.favicon, object.favicon {
width: 16px;
height: 16px;
vertical-align: middle;

@ -27,7 +27,7 @@ a.favicon {
color:#20A020;
text-decoration:none;
}
img.favicon{
img.favicon, object.favicon {
width: 16px;
height: 16px;
vertical-align: middle;

@ -149,7 +149,7 @@ public class yacysearch {
// adding some additional properties needed for the rss feed
String hostName = header.get("Host", Domains.LOCALHOST);
if ( hostName.indexOf(':', 0) == -1 ) {
hostName += ":" + env.getLocalPort("port", 8090);
hostName += ":" + env.getLocalPort();
}
prop.put("searchBaseURL", "http://" + hostName + "/yacysearch.html");
prop.put("rssYacyImageURL", "http://" + hostName + "/env/grafics/yacy.png");
@ -669,10 +669,6 @@ public class yacysearch {
indexSegment,
ranking,
header.get(HeaderFramework.USER_AGENT, ""),
sb.getConfigBool(SwitchboardConstants.SEARCH_VERIFY_DELETE, false)
&& sb.getConfigBool(SwitchboardConstants.NETWORK_SEARCHVERIFY, false)
&& sb.peers.mySeed().getFlagAcceptRemoteIndex(),
false,
lat, lon, rad,
sb.getConfigArray("search.navigation", ""));
EventTracker.delete(EventTracker.EClass.SEARCH);
@ -900,7 +896,7 @@ public class yacysearch {
// hostname and port (assume locahost if nothing helps)
final String hostIP = sb.peers.mySeed().getIP();
prop.put("myhost", hostIP != null ? hostIP : Domains.LOCALHOST);
prop.put("myport", Domains.LOCALHOST.equals(hostIP) ? sb.getLocalPort("port", 8090) : sb.getPublicPort("port", 8090));
prop.put("myport", Domains.LOCALHOST.equals(hostIP) ? sb.getLocalPort() : sb.getPublicPort("port", 8090));
// return rewrite properties
return prop;

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save