コード例 #1
0
def select_file(strings):
    # get filename, either from argument or file chooser dialog
    if len(sys.argv) == 2:
        filename = sys.argv[1]
    else:
        canceled = False
        chooser = gtk.FileChooserDialog(
            title="Choose a file to share",
            action=gtk.FILE_CHOOSER_ACTION_OPEN,
            buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
        if onionshare.get_platform() == 'Tails':
            chooser.set_current_folder('/home/amnesia/')
        response = chooser.run()
        if response == gtk.RESPONSE_OK:
            filename = chooser.get_filename()
        elif response == gtk.RESPONSE_CANCEL:
            canceled = True
        chooser.destroy()

        if canceled:
            return False, False

    # validate filename
    if not os.path.isfile(filename):
        alert(strings["not_a_file"].format(filename), gtk.MESSAGE_ERROR)
        return False, False

    filename = os.path.abspath(filename)
    basename = os.path.basename(filename)
    return filename, basename
コード例 #2
0
def main():
    onionshare.strings = onionshare.load_strings()

    # start the Qt app
    app = Application()

    # check for root in Tails
    if onionshare.get_platform() == 'Tails' and not onionshare.is_root():
        subprocess.call(['/usr/bin/gksudo']+sys.argv)
        return

    # create the onionshare icon
    global window_icon, onionshare_gui_dir
    window_icon = QIcon("{0}/onionshare-icon.png".format(onionshare_gui_dir))

    # try starting hidden service
    onionshare_port = onionshare.choose_port()
    try:
        onion_host = onionshare.start_hidden_service(onionshare_port)
    except onionshare.NoTor as e:
        alert(e.args[0], QMessageBox.Warning)
        return
    onionshare.tails_open_port(onionshare_port)

    # select file to share
    filename, basename = select_file(onionshare.strings)
    if not filename:
        return

    # initialize the web app
    webapp.onionshare = onionshare
    webapp.onionshare_port = onionshare_port
    webapp.filename = filename
    webapp.onion_host = onion_host
    webapp.qtapp = app
    webapp.clipboard = app.clipboard()

    # run the web app in a new thread
    webapp_port = onionshare.choose_port()
    onionshare.tails_open_port(webapp_port)
    webapp_thread = WebAppThread(webapp_port)
    webapp_thread.start()

    # clean up when app quits
    def shutdown():
        onionshare.tails_close_port(onionshare_port)
        onionshare.tails_close_port(webapp_port)
    app.connect(app, SIGNAL("aboutToQuit()"), shutdown)

    # launch the window
    web = Window(basename, webapp_port)
    web.show()

    # all done
    sys.exit(app.exec_())
コード例 #3
0
ファイル: onionshare_gui.py プロジェクト: joke2k/onionshare
def select_file(strings, filename=None):
    # get filename, either from argument or file chooser dialog
    if not filename:
        args = {}
        if onionshare.get_platform() == 'Tails':
            args['directory'] = '/home/amnesia'

        filename = QFileDialog.getOpenFileName(caption=strings['choose_file'], options=QFileDialog.ReadOnly, **args)
        if not filename:
            return False, False

        filename = str(filename)

    # validate filename
    if not os.path.isfile(filename):
        alert(strings["not_a_file"].format(filename), QMessageBox.Warning)
        return False, False

    filename = os.path.abspath(filename)
    basename = os.path.basename(filename)
    return filename, basename
コード例 #4
0
def main():
    onionshare.strings = onionshare.load_strings()

    # check for root in Tails
    if onionshare.get_platform() == 'Tails' and not onionshare.is_root():
        subprocess.call(['/usr/bin/gksudo']+sys.argv)
        return

    # try starting hidden service
    onionshare_port = onionshare.choose_port()
    try:
        onion_host = onionshare.start_hidden_service(onionshare_port)
    except onionshare.NoTor as e:
        alert(e.args[0], gtk.MESSAGE_ERROR)
        return
    onionshare.tails_open_port(onionshare_port)

    # select file to share
    filename, basename = select_file(onionshare.strings)
    if not filename:
        return

    # start the gui web server
    webapp_port = onionshare.choose_port()
    t = threading.Thread(target=start_webapp, kwargs={
        'webapp_port': webapp_port,
        'onionshare_port': onionshare_port,
        'filename': filename,
        'onion_host': onion_host
    })
    t.daemon = True
    t.start()
    onionshare.tails_open_port(webapp_port)

    # launch the window
    launch_window(webapp_port, onionshare_port, basename)
コード例 #5
0
ファイル: onionshare_gui.py プロジェクト: joke2k/onionshare
def main():
    onionshare.strings = onionshare.load_strings()

    # start the Qt app
    app = Application()

    # check for root in Tails
    if onionshare.get_platform() == 'Tails' and not onionshare.is_root():
        subprocess.call(['/usr/bin/gksudo']+sys.argv)
        return

    # parse arguments
    parser = argparse.ArgumentParser()
    parser.add_argument('--local-only', action='store_true', dest='local_only', help='Do not attempt to use tor: for development only')
    parser.add_argument('--stay-open', action='store_true', dest='stay_open', help='Keep hidden service running after download has finished')
    parser.add_argument('--debug', action='store_true', dest='debug', help='Log errors to disk')
    parser.add_argument('filename', nargs='?', help='File to share')
    args = parser.parse_args()

    filename = args.filename
    local_only = args.local_only
    stay_open = bool(args.stay_open)
    debug = args.debug

    onionshare.set_stay_open(stay_open)

    # create the onionshare icon
    global window_icon, onionshare_gui_dir
    window_icon = QIcon("{0}/onionshare-icon.png".format(onionshare_gui_dir))

    # try starting hidden service
    onionshare_port = onionshare.choose_port()
    local_host = "127.0.0.1:{0}".format(onionshare_port)
    if not local_only:
        try:
            onion_host = onionshare.start_hidden_service(onionshare_port)
        except onionshare.NoTor as e:
            alert(e.args[0], QMessageBox.Warning)
            return
    onionshare.tails_open_port(onionshare_port)

    # select file to share
    filename, basename = select_file(onionshare.strings, filename)
    if not filename:
        return

    # initialize the web app
    webapp.onionshare = onionshare
    webapp.onionshare_port = onionshare_port
    webapp.filename = filename
    if not local_only:
        webapp.onion_host = onion_host
    else:
        webapp.onion_host = local_host
    webapp.qtapp = app
    webapp.clipboard = app.clipboard()
    webapp.stay_open = stay_open
    webapp.debug = debug

    # run the web app in a new thread
    webapp_port = onionshare.choose_port()
    onionshare.tails_open_port(webapp_port)
    webapp_thread = WebAppThread(webapp_port)
    webapp_thread.start()

    # clean up when app quits
    def shutdown():
        onionshare.tails_close_port(onionshare_port)
        onionshare.tails_close_port(webapp_port)
    app.connect(app, SIGNAL("aboutToQuit()"), shutdown)

    # launch the window
    web = Window(basename, webapp_port)
    web.show()

    # all done
    sys.exit(app.exec_())
コード例 #6
0
ファイル: onionshare_gui.py プロジェクト: joke2k/onionshare
    def __init__(self):
        platform = onionshare.get_platform()
        if platform == 'Tails' or platform == 'Linux':
            self.setAttribute(Qt.AA_X11InitThreads, True)

        QApplication.__init__(self, sys.argv)