Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
Trac
Trac
  • Project overview
    • Project overview
    • Details
    • Activity
  • Issues 246
    • Issues 246
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Operations
    • Operations
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Create a new issue
  • Issue Boards

GitLab is used only for code review, issue tracking and project management. Canonical locations for source code are still https://gitweb.torproject.org/ https://git.torproject.org/ and git-rw.torproject.org.

  • Legacy
  • TracTrac
  • Issues
  • #15999

Closed
Open
Opened May 12, 2015 by Damian Johnson@atagar

End-to-end integ test for hidden service

While adding support for ephemeral hidden services I tried to add a end-to-end integ test without success. Ideally the test would create a new hidden service, then use tor to retrieve its content.

Really shouldn't be a big whoop. We have a tutorial for something similar after all. But for some reason even the tutorial wasn't working for me (hidden service was inaccessible)...

  @require_online
  @require_controller
  @require_version(Requirement.ADD_ONION)
  def test_using_ephemeral_hidden_services(self):
    """  
    Create and use a live ephemeral hidden service.
    """

    # TODO: Not having success getting... well, just about any damn hidden
    # serivce working. Even our prior tutorial is failing right now. >:(

    return

    with test.runner.get_runner().get_tor_controller() as controller:
      incoming_address = None, None 

      def run_server():
        serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        serversocket.bind(('localhost', 4567))
        serversocket.listen(5)
        incoming_socket, incoming_address = serversocket.accept()
        incoming_socket.write('hello world')
        serversocket.shutdown(socket.SHUT_RDWR)

      server_thread = threading.Thread(target = run_server)
      server_thread.setDaemon(True)
      server_thread.start()

      response = controller.create_ephemeral_hidden_service({80: 4567})

      with test.network.Socks(controller.get_socks_listeners()[0]) as s:
        s.settimeout(30)
        s.connect(('%s.onion' % response.service_id, 80)) 
        print s.read()

      self.assertTrue(incoming_address is not None)

      server_thread.join()
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: legacy/trac#15999