Fixing Shortcut to parse URLs correctly when adding an address helper. Also a quick example of how to use rsync over i2p.
This commit is contained in:
@ -80,7 +80,14 @@ is divided into following sections:
|
||||
</target>
|
||||
<target depends="-pre-init,-init-private,-init-libraries,-init-user,-init-project,-init-macrodef-property" name="-do-init">
|
||||
<available file="${manifest.file}" property="manifest.available"/>
|
||||
<available file="${application.splash}" property="splashscreen.available"/>
|
||||
<condition property="splashscreen.available">
|
||||
<and>
|
||||
<not>
|
||||
<equals arg1="${application.splash}" arg2="" trim="true"/>
|
||||
</not>
|
||||
<available file="${application.splash}"/>
|
||||
</and>
|
||||
</condition>
|
||||
<condition property="main.class.available">
|
||||
<and>
|
||||
<isset property="main.class"/>
|
||||
@ -95,8 +102,14 @@ is divided into following sections:
|
||||
<isset property="main.class.available"/>
|
||||
</and>
|
||||
</condition>
|
||||
<condition property="do.archive">
|
||||
<not>
|
||||
<istrue value="${jar.archive.disabled}"/>
|
||||
</not>
|
||||
</condition>
|
||||
<condition property="do.mkdist">
|
||||
<and>
|
||||
<isset property="do.archive"/>
|
||||
<isset property="libs.CopyLibs.classpath"/>
|
||||
<not>
|
||||
<istrue value="${mkdist.disabled}"/>
|
||||
@ -109,40 +122,41 @@ is divided into following sections:
|
||||
<isset property="do.mkdist"/>
|
||||
</and>
|
||||
</condition>
|
||||
<condition property="manifest.available+main.class+mkdist.available+splashscreen.available">
|
||||
<and>
|
||||
<istrue value="${manifest.available+main.class+mkdist.available}"/>
|
||||
<istrue value="${splashscreen.available}"/>
|
||||
</and>
|
||||
</condition>
|
||||
<condition property="do.archive">
|
||||
<not>
|
||||
<istrue value="${jar.archive.disabled}"/>
|
||||
</not>
|
||||
</condition>
|
||||
<condition property="do.archive+manifest.available">
|
||||
<and>
|
||||
<isset property="manifest.available"/>
|
||||
<istrue value="${do.archive}"/>
|
||||
</and>
|
||||
</condition>
|
||||
<condition property="do.archive+main.class.available">
|
||||
<and>
|
||||
<isset property="main.class.available"/>
|
||||
<istrue value="${do.archive}"/>
|
||||
</and>
|
||||
</condition>
|
||||
<condition property="do.archive+splashscreen.available">
|
||||
<and>
|
||||
<isset property="splashscreen.available"/>
|
||||
<istrue value="${do.archive}"/>
|
||||
</and>
|
||||
</condition>
|
||||
<condition property="do.archive+manifest.available+main.class">
|
||||
<and>
|
||||
<istrue value="${manifest.available+main.class}"/>
|
||||
<istrue value="${do.archive}"/>
|
||||
</and>
|
||||
</condition>
|
||||
<condition property="do.archive+manifest.available+main.class+mkdist.available">
|
||||
<and>
|
||||
<istrue value="${manifest.available+main.class+mkdist.available}"/>
|
||||
<istrue value="${do.archive}"/>
|
||||
</and>
|
||||
<condition property="manifest.available-mkdist.available">
|
||||
<or>
|
||||
<istrue value="${manifest.available}"/>
|
||||
<isset property="do.mkdist"/>
|
||||
</or>
|
||||
</condition>
|
||||
<condition property="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available">
|
||||
<and>
|
||||
<istrue value="${manifest.available+main.class+mkdist.available+splashscreen.available}"/>
|
||||
<istrue value="${do.archive}"/>
|
||||
</and>
|
||||
<condition property="manifest.available+main.class-mkdist.available">
|
||||
<or>
|
||||
<istrue value="${manifest.available+main.class}"/>
|
||||
<isset property="do.mkdist"/>
|
||||
</or>
|
||||
</condition>
|
||||
<condition property="have.tests">
|
||||
<or>
|
||||
@ -198,8 +212,17 @@ is divided into following sections:
|
||||
<condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
|
||||
<length length="0" string="${endorsed.classpath}" when="greater"/>
|
||||
</condition>
|
||||
<property name="javac.fork" value="false"/>
|
||||
<condition else="false" property="jdkBug6558476">
|
||||
<and>
|
||||
<matches pattern="1\.[56]" string="${java.specification.version}"/>
|
||||
<not>
|
||||
<os family="unix"/>
|
||||
</not>
|
||||
</and>
|
||||
</condition>
|
||||
<property name="javac.fork" value="${jdkBug6558476}"/>
|
||||
<property name="jar.index" value="false"/>
|
||||
<property name="jar.index.metainf" value="${jar.index}"/>
|
||||
<available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
|
||||
</target>
|
||||
<target name="-post-init">
|
||||
@ -327,7 +350,9 @@ is divided into following sections:
|
||||
<delete>
|
||||
<files includesfile="${javac.includesfile.binary}"/>
|
||||
</delete>
|
||||
<delete file="${javac.includesfile.binary}"/>
|
||||
<delete>
|
||||
<fileset file="${javac.includesfile.binary}"/>
|
||||
</delete>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
</target>
|
||||
@ -337,7 +362,8 @@ is divided into following sections:
|
||||
<attribute default="${excludes}" name="excludes"/>
|
||||
<attribute default="**" name="testincludes"/>
|
||||
<sequential>
|
||||
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}">
|
||||
<property name="junit.forkmode" value="perTest"/>
|
||||
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
|
||||
<batchtest todir="${build.test.results.dir}">
|
||||
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
|
||||
<filename name="@{testincludes}"/>
|
||||
@ -353,11 +379,56 @@ is divided into following sections:
|
||||
<formatter type="brief" usefile="false"/>
|
||||
<formatter type="xml"/>
|
||||
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
|
||||
<jvmarg value="-ea"/>
|
||||
<jvmarg line="${run.jvmargs}"/>
|
||||
</junit>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
</target>
|
||||
<target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" name="profile-init"/>
|
||||
<target name="-profile-pre-init">
|
||||
<!-- Empty placeholder for easier customization. -->
|
||||
<!-- You can override this target in the ../build.xml file. -->
|
||||
</target>
|
||||
<target name="-profile-post-init">
|
||||
<!-- Empty placeholder for easier customization. -->
|
||||
<!-- You can override this target in the ../build.xml file. -->
|
||||
</target>
|
||||
<target name="-profile-init-macrodef-profile">
|
||||
<macrodef name="resolve">
|
||||
<attribute name="name"/>
|
||||
<attribute name="value"/>
|
||||
<sequential>
|
||||
<property name="@{name}" value="${env.@{value}}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
<macrodef name="profile">
|
||||
<attribute default="${main.class}" name="classname"/>
|
||||
<element name="customize" optional="true"/>
|
||||
<sequential>
|
||||
<property environment="env"/>
|
||||
<resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
|
||||
<java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
|
||||
<jvmarg value="${profiler.info.jvmargs.agent}"/>
|
||||
<jvmarg line="${profiler.info.jvmargs}"/>
|
||||
<env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
|
||||
<arg line="${application.args}"/>
|
||||
<classpath>
|
||||
<path path="${run.classpath}"/>
|
||||
</classpath>
|
||||
<syspropertyset>
|
||||
<propertyref prefix="run-sys-prop."/>
|
||||
<mapper from="run-sys-prop.*" to="*" type="glob"/>
|
||||
</syspropertyset>
|
||||
<customize/>
|
||||
</java>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
</target>
|
||||
<target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" name="-profile-init-check">
|
||||
<fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
|
||||
<fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
|
||||
</target>
|
||||
<target depends="-init-debug-args" name="-init-macrodef-nbjpda">
|
||||
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||
<attribute default="${main.class}" name="name"/>
|
||||
@ -452,6 +523,7 @@ is divided into following sections:
|
||||
</target>
|
||||
<target name="-init-macrodef-copylibs">
|
||||
<macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||
<attribute default="${manifest.file}" name="manifest"/>
|
||||
<element name="customize" optional="true"/>
|
||||
<sequential>
|
||||
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||
@ -467,7 +539,7 @@ is divided into following sections:
|
||||
</chainedmapper>
|
||||
</pathconvert>
|
||||
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
|
||||
<copylibs compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
|
||||
<copylibs compress="${jar.compress}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
|
||||
<fileset dir="${build.classes.dir}"/>
|
||||
<manifest>
|
||||
<attribute name="Class-Path" value="${jar.classpath}"/>
|
||||
@ -596,10 +668,10 @@ is divided into following sections:
|
||||
<!-- Empty placeholder for easier customization. -->
|
||||
<!-- You can override this target in the ../build.xml file. -->
|
||||
</target>
|
||||
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available">
|
||||
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
|
||||
<j2seproject1:jar/>
|
||||
</target>
|
||||
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
|
||||
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
|
||||
<j2seproject1:jar manifest="${manifest.file}"/>
|
||||
</target>
|
||||
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
|
||||
@ -608,44 +680,53 @@ is divided into following sections:
|
||||
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
|
||||
</j2seproject1:manifest>
|
||||
</j2seproject1:jar>
|
||||
<echo>To run this application from the command line without Ant, try:</echo>
|
||||
<echo level="info">To run this application from the command line without Ant, try:</echo>
|
||||
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||
<pathconvert property="run.classpath.with.dist.jar">
|
||||
<path path="${run.classpath}"/>
|
||||
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
|
||||
</pathconvert>
|
||||
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
|
||||
<echo level="info">java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
|
||||
</target>
|
||||
<target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available" name="-do-jar-with-libraries-and-splashscreen">
|
||||
<target depends="init" if="do.archive" name="-do-jar-with-libraries-create-manifest" unless="manifest.available">
|
||||
<tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
|
||||
<touch file="${tmp.manifest.file}" verbose="false"/>
|
||||
</target>
|
||||
<target depends="init" if="do.archive+manifest.available" name="-do-jar-with-libraries-copy-manifest">
|
||||
<tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
|
||||
<copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
|
||||
</target>
|
||||
<target depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest" if="do.archive+main.class.available" name="-do-jar-with-libraries-set-main">
|
||||
<manifest file="${tmp.manifest.file}" mode="update">
|
||||
<attribute name="Main-Class" value="${main.class}"/>
|
||||
</manifest>
|
||||
</target>
|
||||
<target depends="init,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-with-libraries-set-splashscreen">
|
||||
<basename file="${application.splash}" property="splashscreen.basename"/>
|
||||
<mkdir dir="${build.classes.dir}/META-INF"/>
|
||||
<copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
|
||||
<j2seproject3:copylibs>
|
||||
<customize>
|
||||
<attribute name="Main-Class" value="${main.class}"/>
|
||||
<attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
|
||||
</customize>
|
||||
</j2seproject3:copylibs>
|
||||
<echo>To run this application from the command line without Ant, try:</echo>
|
||||
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||
<echo>java -jar "${dist.jar.resolved}"</echo>
|
||||
<manifest file="${tmp.manifest.file}" mode="update">
|
||||
<attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
|
||||
</manifest>
|
||||
</target>
|
||||
<target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries" unless="splashscreen.available">
|
||||
<j2seproject3:copylibs>
|
||||
<customize>
|
||||
<attribute name="Main-Class" value="${main.class}"/>
|
||||
</customize>
|
||||
</j2seproject3:copylibs>
|
||||
<echo>To run this application from the command line without Ant, try:</echo>
|
||||
<target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen" if="do.mkdist" name="-do-jar-with-libraries-pack">
|
||||
<j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
|
||||
<echo level="info">To run this application from the command line without Ant, try:</echo>
|
||||
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||
<echo>java -jar "${dist.jar.resolved}"</echo>
|
||||
<echo level="info">java -jar "${dist.jar.resolved}"</echo>
|
||||
</target>
|
||||
<target depends="-do-jar-with-libraries-pack" if="do.archive" name="-do-jar-with-libraries-delete-manifest">
|
||||
<delete>
|
||||
<fileset file="${tmp.manifest.file}"/>
|
||||
</delete>
|
||||
</target>
|
||||
<target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-with-libraries-create-manifest,-do-jar-with-libraries-copy-manifest,-do-jar-with-libraries-set-main,-do-jar-with-libraries-set-splashscreen,-do-jar-with-libraries-pack,-do-jar-with-libraries-delete-manifest" name="-do-jar-with-libraries"/>
|
||||
<target name="-post-jar">
|
||||
<!-- Empty placeholder for easier customization. -->
|
||||
<!-- You can override this target in the ../build.xml file. -->
|
||||
</target>
|
||||
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries-and-splashscreen,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
|
||||
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
|
||||
<!--
|
||||
=================
|
||||
EXECUTION SECTION
|
||||
@ -710,6 +791,72 @@ is divided into following sections:
|
||||
<j2seproject1:nbjpdareload/>
|
||||
</target>
|
||||
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
|
||||
<!--
|
||||
=================
|
||||
PROFILING SECTION
|
||||
=================
|
||||
-->
|
||||
<target depends="profile-init,compile" description="Profile a project in the IDE." if="netbeans.home" name="profile">
|
||||
<nbprofiledirect>
|
||||
<classpath>
|
||||
<path path="${run.classpath}"/>
|
||||
</classpath>
|
||||
</nbprofiledirect>
|
||||
<profile/>
|
||||
</target>
|
||||
<target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="netbeans.home" name="profile-single">
|
||||
<fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
|
||||
<nbprofiledirect>
|
||||
<classpath>
|
||||
<path path="${run.classpath}"/>
|
||||
</classpath>
|
||||
</nbprofiledirect>
|
||||
<profile classname="${profile.class}"/>
|
||||
</target>
|
||||
<!--
|
||||
=========================
|
||||
APPLET PROFILING SECTION
|
||||
=========================
|
||||
-->
|
||||
<target depends="profile-init,compile-single" if="netbeans.home" name="profile-applet">
|
||||
<nbprofiledirect>
|
||||
<classpath>
|
||||
<path path="${run.classpath}"/>
|
||||
</classpath>
|
||||
</nbprofiledirect>
|
||||
<profile classname="sun.applet.AppletViewer">
|
||||
<customize>
|
||||
<arg value="${applet.url}"/>
|
||||
</customize>
|
||||
</profile>
|
||||
</target>
|
||||
<!--
|
||||
=========================
|
||||
TESTS PROFILING SECTION
|
||||
=========================
|
||||
-->
|
||||
<target depends="profile-init,compile-test-single" if="netbeans.home" name="profile-test-single">
|
||||
<nbprofiledirect>
|
||||
<classpath>
|
||||
<path path="${run.test.classpath}"/>
|
||||
</classpath>
|
||||
</nbprofiledirect>
|
||||
<junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
|
||||
<env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
|
||||
<jvmarg value="${profiler.info.jvmargs.agent}"/>
|
||||
<jvmarg line="${profiler.info.jvmargs}"/>
|
||||
<test name="${profile.class}"/>
|
||||
<classpath>
|
||||
<path path="${run.test.classpath}"/>
|
||||
</classpath>
|
||||
<syspropertyset>
|
||||
<propertyref prefix="test-sys-prop."/>
|
||||
<mapper from="test-sys-prop.*" to="*" type="glob"/>
|
||||
</syspropertyset>
|
||||
<formatter type="brief" usefile="false"/>
|
||||
<formatter type="xml"/>
|
||||
</junit>
|
||||
</target>
|
||||
<!--
|
||||
===============
|
||||
JAVADOC SECTION
|
||||
@ -756,7 +903,7 @@ is divided into following sections:
|
||||
<target if="do.depend.true" name="-compile-test-depend">
|
||||
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
|
||||
</target>
|
||||
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
|
||||
<target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
|
||||
<j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
|
||||
<copy todir="${build.test.classes.dir}">
|
||||
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||
@ -771,7 +918,7 @@ is divided into following sections:
|
||||
<!-- Empty placeholder for easier customization. -->
|
||||
<!-- You can override this target in the ../build.xml file. -->
|
||||
</target>
|
||||
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
|
||||
<target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
|
||||
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
|
||||
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
|
||||
<j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
|
||||
|
@ -4,5 +4,5 @@ build.xml.stylesheet.CRC32=28e38971@1.38.2.45
|
||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||
nbproject/build-impl.xml.data.CRC32=00fdd0af
|
||||
nbproject/build-impl.xml.script.CRC32=b5dc77d5
|
||||
nbproject/build-impl.xml.stylesheet.CRC32=229523de@1.38.3.45
|
||||
nbproject/build-impl.xml.script.CRC32=b8efd1b3
|
||||
nbproject/build-impl.xml.stylesheet.CRC32=0c01fd8e@1.43.1.45
|
||||
|
@ -5,4 +5,4 @@ file.reference.i2p.jar=/mnt/bb/dream/packages/mtn/i2p.scripts/addresspublisher/l
|
||||
file.reference.javax.servlet.jar=/mnt/bb/dream/packages/mtn/i2p.scripts/addresspublisher/lib/javax.servlet.jar
|
||||
javac.debug=true
|
||||
javadoc.preview=true
|
||||
user.properties.file=/mnt/bb/dream/.netbeans/6.9/build.properties
|
||||
user.properties.file=/mnt/bb/dream/.netbeans/7.0/build.properties
|
||||
|
@ -1,24 +1,28 @@
|
||||
package i2p.dream.lookup;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.data.Base32;
|
||||
import net.i2p.data.Base64;
|
||||
import net.i2p.data.DataFormatException;
|
||||
import net.i2p.data.Destination;
|
||||
import net.i2p.data.Hash;
|
||||
import net.i2p.data.Base64;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import net.i2p.data.Base32;
|
||||
import net.i2p.data.DataFormatException;
|
||||
import net.i2p.data.Destination;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import net.i2p.data.Hash;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.data.Base64;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.net.URLDecoder;
|
||||
import java.net.MalformedURLException;
|
||||
|
||||
public class Shortcut extends HttpServlet {
|
||||
|
||||
@ -31,18 +35,18 @@ public class Shortcut extends HttpServlet {
|
||||
HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
String name = request.getParameter("name");
|
||||
boolean quick = request.getParameter("q") != null;
|
||||
if (name == null) {
|
||||
String bleh = request.getParameter("url");
|
||||
URL url = null;
|
||||
String name = null;
|
||||
if(bleh!=null) {
|
||||
url = new URL(URLDecoder.decode(bleh,"utf-8"));
|
||||
name = url.getHost();
|
||||
}
|
||||
|
||||
final boolean quick = request.getParameter("q") != null;
|
||||
if (url == null) {
|
||||
askForName(response);
|
||||
} else {
|
||||
if (name.startsWith("http://")) {
|
||||
name = name.substring(7);
|
||||
}
|
||||
int i = name.indexOf('/');
|
||||
if (i > 0) {
|
||||
name = name.substring(0, i);
|
||||
}
|
||||
boolean isb32 = false;
|
||||
Destination address = null;
|
||||
int length = name.length();
|
||||
@ -61,18 +65,17 @@ public class Shortcut extends HttpServlet {
|
||||
final String b64 = request.getParameter("b64");
|
||||
if (b64 == null) {
|
||||
// lookup works for both b32 and addressbook names.
|
||||
System.err.println("nameboo " + name);
|
||||
address = I2PAppContext.getGlobalContext().namingService().lookup(name);
|
||||
// we still want to give it a name though.
|
||||
// we still want to give it a name though, even though b32
|
||||
if(isb32) {
|
||||
name = null;
|
||||
name = request.getParameter("name");
|
||||
}
|
||||
showShortcut(response, name, address, quick);
|
||||
showShortcut(response, name, url, address, quick);
|
||||
return;
|
||||
} else {
|
||||
if (isb32) {
|
||||
// don't be adding any b32 names to our addressbook now.
|
||||
name = null;
|
||||
name = request.getParameter("name");
|
||||
}
|
||||
address = new Destination();
|
||||
try {
|
||||
@ -87,7 +90,7 @@ public class Shortcut extends HttpServlet {
|
||||
});
|
||||
return;
|
||||
}
|
||||
showShortcut(response, name, address, quick);
|
||||
showShortcut(response, name, url, address, quick);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -117,14 +120,52 @@ public class Shortcut extends HttpServlet {
|
||||
public void respond(PrintWriter out) {
|
||||
out.println("<html><head><title>Shortcut Finder</title></head><body>");
|
||||
out.println("<p>Enter a name in your addressbook, or a base64 hash to find the shortcut base32 address for the eepsite.</p>");
|
||||
out.println("<p><form><input name=\"name\" type=\"text\"/><input name=\"submit\" type=\"submit\" value=\"OK\"/></p>");
|
||||
out.println("<p><form><input name=\"url\" type=\"text\"/><input type=\"submit\" value=\"OK\"/></p>");
|
||||
out.println("</body></html>");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
URL addAddressHelper(final URL url, final Destination address, boolean useb32) {
|
||||
final String scheme = url.getProtocol();
|
||||
final String host = url.getHost();
|
||||
final int port = url.getPort();
|
||||
final String authority = url.getAuthority();
|
||||
final String userInfo = url.getUserInfo();
|
||||
final String path = url.getPath();
|
||||
String query = url.getQuery();
|
||||
final String fragment = url.getRef();
|
||||
/* the contextual URL constructor parses
|
||||
"http://a.b/c/d" + "?i2paddresshelper=..." wrong
|
||||
into "http://a.b/c/?i2paddresshelper=..." (discarding d)
|
||||
so we'll just do it instead.
|
||||
*/
|
||||
|
||||
final String param;
|
||||
if(useb32)
|
||||
param = "i2paddresshelper="+Base32.encode(address.getHash().getData())
|
||||
+".b32.i2p";
|
||||
else
|
||||
param = "i2paddresshelper="+address.toBase64();
|
||||
|
||||
if(query==null)
|
||||
query = param;
|
||||
else
|
||||
query = query + "&" + param;
|
||||
try {
|
||||
return (new URI(scheme,userInfo,host,port,path,query,fragment)).toURL();
|
||||
// these exceptions should never happen since we started
|
||||
// with a valid URL
|
||||
} catch(URISyntaxException ex) {
|
||||
throw new RuntimeException("The URL wasn't a URI?",ex);
|
||||
} catch(MalformedURLException ex) {
|
||||
throw new RuntimeException("The URL wasn't a URL???",ex);
|
||||
}
|
||||
}
|
||||
|
||||
void showShortcut(HttpServletResponse response,
|
||||
final String name,
|
||||
final URL url,
|
||||
final Destination address,
|
||||
boolean quick)
|
||||
throws IOException {
|
||||
@ -154,8 +195,9 @@ public class Shortcut extends HttpServlet {
|
||||
out.println("<h1>Name needed</h1>");
|
||||
out.println("<p>Please enter a name for " + b32 + ":");
|
||||
out.println("<form><input type=\"text\" name=\"name\" />");
|
||||
out.println("<form><input type=\"hidden\" name=\"url\" value=\""+url+"\" />");
|
||||
out.println("<input type=\"hidden\" name=\"b64\" value=\"" + address.toBase64() + "\" />");
|
||||
out.println("<input type=\"submit\" name=\"submit\" value=\"OK\" />");
|
||||
out.println("<input type=\"submit\" value=\"OK\" />");
|
||||
out.println("</form></body></html>");
|
||||
}
|
||||
});
|
||||
@ -163,19 +205,29 @@ public class Shortcut extends HttpServlet {
|
||||
}
|
||||
if(quick) {
|
||||
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
|
||||
response.setHeader("Location", "http://" + name + "/?i2paddresshelper=" + address.toBase64());
|
||||
response.setHeader("Location", addAddressHelper(url,address,false).toExternalForm());
|
||||
} else {
|
||||
respond(response, new Responder() {
|
||||
public void respond(PrintWriter out) {
|
||||
String b32 = Base32.encode(address.getHash().getData());
|
||||
out.println("<html><head><title>Jump for "+name+"|"+b32+"</title>");
|
||||
out.println("</head><body>");
|
||||
out.println("<h1>"+name+" ready.</h1>");
|
||||
out.println("<ul>");
|
||||
out.println("<li>To add this to your addressbook, go <a href=\"http://"+name+"/?i2paddresshelper="+address.toBase64()+"\">here.</a></li>");
|
||||
out.println("<li>For a shortcut to skip this page go <a href=\"/shortcut/?q=1&name="+name+"\">here.</a></li>");
|
||||
out.println("<li>To just use the base32 of "+name+" go <a href=\"http://"+b32+".b32.i2p\">here.</a></li>");
|
||||
out.println("</ul></body></html>");
|
||||
try {
|
||||
String b32 = Base32.encode(address.getHash().getData());
|
||||
out.println("<html><head><title>Jump for "+name+"|"+b32+"</title>");
|
||||
out.println("</head><body>");
|
||||
out.println("<h1>"+name+" ready.</h1>");
|
||||
out.println("<ul>");
|
||||
out.println("<li>To add this to your addressbook, go <a href=\""+addAddressHelper(url,address,false)+"\">here.</a></li>");
|
||||
out.println("<li>To copy this into IRC, go <a href=\""+addAddressHelper(url,address,true)+"\">here.</a></li>");
|
||||
try {
|
||||
out.println("<li>For a shortcut to skip this page go <a href=\"/shortcut/?q=1&url="+URLEncoder.encode(url.toString(),"UTF-8")
|
||||
+"\">here.</a></li>");
|
||||
} catch(java.io.UnsupportedEncodingException ex) {
|
||||
throw new RuntimeException("Uh...what no utf-8 support?",ex);
|
||||
}
|
||||
out.println("<li>To just use the base32 of "+name+" go <a href=\""+new URL(url.getProtocol(),b32+".b32.i2p",url.getFile())+"\">here.</a></li>");
|
||||
out.println("</ul></body></html>");
|
||||
} catch(MalformedURLException ex) {
|
||||
out.println("<p>error! <pre>"+ex+"</pre></p></body></html>");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
8
rsyncwproxy.sh
Normal file
8
rsyncwproxy.sh
Normal file
@ -0,0 +1,8 @@
|
||||
PORT=7665
|
||||
# Note, you need the openbsd-netcat to do this:
|
||||
export RSYNC_CONNECT_PROG="nc -X 5 -x 127.0.0.1:$PORT %H 873"
|
||||
|
||||
exec rsync $@
|
||||
|
||||
# example:
|
||||
# sh rsyncwproxy.sh bswwika32z7eym55zziv3nath4kqvtzkrtcjtihm6plcxjg6qsnq.b32.i2p::code/
|
Reference in New Issue
Block a user