Skip to content
Snippets Groups Projects
Select Git revision
  • 0523c4e718b0ca9d4b6f339c64773b4904cd6147
  • master default
  • replace_gradle_witness
  • fix_nonlocalized_timestamp
  • fileStorage
  • implement-chunking
  • upgrade_roboletric_to_401
  • implement-mailbox-contact-sessions
  • 541-faster-retransmission-eta
  • add_special_purpose_contacts
  • mailbox-b
  • mailbox
  • mailbox-jd
  • implement_mailbox_connection_manager
  • 1343-vanniktech-emoji
  • 541-allow-retransmission-if-faster
  • asp-temp
  • fix_performance_test_db
  • 514-allow-retransmissions-using-lower-latency-transports
  • implement-SyncSession-writer-error-handling
  • add_special_purpose_contacts_refactored
  • beta-0.16.16
  • beta-0.16.10
  • beta-0.16.11
  • beta-0.16.12
  • beta-0.16.13
  • beta-0.16.14
  • beta-0.16.15
  • beta-0.16.9
  • beta-0.16.1
  • beta-0.16.2
  • beta-0.16.3
  • beta-0.16.4
  • beta-0.16.5
  • beta-0.16.6
  • beta-0.16.7
  • beta-0.16.8
37 results

jtorctl.patch

Blame
  • Forked from briar / briar
    4874 commits behind the upstream repository.
    user avatar
    str4d authored and akwizgran committed
    c74c24ec
    History
    jtorctl.patch 5.13 KiB
    diff --git a/net/freehaven/tor/control/TorControlCommands.java b/net/freehaven/tor/control/TorControlCommands.java
    index 36482d5..14486e3 100644
    --- a/net/freehaven/tor/control/TorControlCommands.java
    +++ b/net/freehaven/tor/control/TorControlCommands.java
    @@ -144,5 +144,8 @@ public interface TorControlCommands {
             "No such OR",
         };
     
    +    public static final String HS_ADDRESS = "onionAddress";
    +    public static final String HS_PRIVKEY = "onionPrivKey";
    +
     }
     
    diff --git a/net/freehaven/tor/control/TorControlConnection.java b/net/freehaven/tor/control/TorControlConnection.java
    index 9524612..c0f2070 100644
    --- a/net/freehaven/tor/control/TorControlConnection.java
    +++ b/net/freehaven/tor/control/TorControlConnection.java
    @@ -736,11 +736,111 @@ public class TorControlConnection implements TorControlCommands {
             sendAndWaitForResponse("TAKEOWNERSHIP\r\n", null);
         }
     
    +    /**
    +     * Tells Tor to generate and set up a new onion service using the best
    +     * supported algorithm.
    +     * <p/>
    +     * ADD_ONION was added in Tor 0.2.7.1-alpha.
    +     */
    +    public Map<String,String> addOnion(Map<Integer,String> portLines)
    +                                       throws IOException {
    +        return addOnion("NEW:BEST", portLines, null);
    +    }
    +
    +    /**
    +     * Tells Tor to generate and set up a new onion service using the best
    +     * supported algorithm.
    +     * <p/>
    +     * ADD_ONION was added in Tor 0.2.7.1-alpha.
    +     */
    +    public Map<String,String> addOnion(Map<Integer,String> portLines,
    +                                       boolean ephemeral, boolean detach)
    +                                       throws IOException {
    +        return addOnion("NEW:BEST", portLines, ephemeral, detach);
    +    }
    +
    +    /**
    +     * Tells Tor to set up an onion service using the provided private key.
    +     * <p/>
    +     * ADD_ONION was added in Tor 0.2.7.1-alpha.
    +     */
    +    public Map<String,String> addOnion(String privKey,
    +                                       Map<Integer,String> portLines)
    +                                       throws IOException {
    +        return addOnion(privKey, portLines, null);
    +    }
    +
    +    /**
    +     * Tells Tor to set up an onion service using the provided private key.
    +     * <p/>
    +     * ADD_ONION was added in Tor 0.2.7.1-alpha.
    +     */
    +    public Map<String,String> addOnion(String privKey,
    +                                       Map<Integer,String> portLines,
    +                                       boolean ephemeral, boolean detach)
    +                                       throws IOException {
    +        List<String> flags = new ArrayList<String>();
    +        if (ephemeral)
    +            flags.add("DiscardPK");
    +        if (detach)
    +            flags.add("Detach");
    +        return addOnion(privKey, portLines, flags);
    +    }
    +
    +    /**
    +     * Tells Tor to set up an onion service.
    +     * <p/>
    +     * ADD_ONION was added in Tor 0.2.7.1-alpha.
    +     */
    +    public Map<String,String> addOnion(String privKey,
    +                                       Map<Integer,String> portLines,
    +                                       List<String> flags)
    +                                       throws IOException {
    +        if (privKey.indexOf(':') < 0)
    +            throw new IllegalArgumentException("Invalid privKey");
    +        if (portLines == null || portLines.size() < 1)
    +            throw new IllegalArgumentException("Must provide at least one port line");
    +        StringBuilder b = new StringBuilder();
    +        b.append("ADD_ONION ").append(privKey);
    +        if (flags != null && flags.size() > 0) {
    +            b.append(" Flags=");
    +            String separator = "";
    +            for (String flag : flags) {
    +                b.append(separator).append(flag);
    +                separator = ",";
    +            }
    +        }
    +        for (Map.Entry<Integer,String> portLine : portLines.entrySet()) {
    +            int virtPort = portLine.getKey();
    +            String target = portLine.getValue();
    +            b.append(" Port=").append(virtPort);
    +            if (target != null && target.length() > 0)
    +                b.append(",").append(target);
    +        }
    +        b.append("\r\n");
    +        List<ReplyLine> lst = sendAndWaitForResponse(b.toString(), null);
    +        Map<String,String> ret = new HashMap<String,String>();
    +        ret.put(HS_ADDRESS, (lst.get(0)).msg.split("=", 2)[1]);
    +        if (lst.size() > 2)
    +            ret.put(HS_PRIVKEY, (lst.get(1)).msg.split("=", 2)[1]);
    +        return ret;
    +    }
    +
    +    /**
    +     * Tells Tor to take down an onion service previously set up with
    +     * addOnion(). The hostname excludes the .onion extension.
    +     * <p/>
    +     * DEL_ONION was added in Tor 0.2.7.1-alpha.
    +     */
    +    public void delOnion(String hostname) throws IOException {
    +        sendAndWaitForResponse("DEL_ONION " + hostname + "\r\n", null);
    +    }
    +
         /** Tells Tor to forget any cached client state relating to the hidden
          * service with the given hostname (excluding the .onion extension).
          */
         public void forgetHiddenService(String hostname) throws IOException {
    -        sendAndWaitForResponse("FORGETHS " + hostname + "\r\n", null);
    +        sendAndWaitForResponse("HSFORGET " + hostname + "\r\n", null);
         }
     }