def set_up(): '''Create the GUI''' # Default settings for the settings GUI tests test_settings = { "no_bridges": False, "tor_bridges_use_custom_bridges": "Bridge 1.2.3.4:56 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\nBridge 5.6.7.8:910 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\nBridge 11.12.13.14:1516 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n", } # Create our test file testfile = open('/tmp/test.txt', 'w') testfile.write('onionshare') testfile.close() common = Common() common.settings = Settings(common) common.define_css() strings.load_strings(common) # Start the Onion testonion = Onion(common) global qtapp qtapp = Application(common) app = OnionShare(common, testonion, True, 0) for key, val in common.settings.default_settings.items(): if key not in test_settings: test_settings[key] = val open('/tmp/settings.json', 'w').write(json.dumps(test_settings)) gui = SettingsDialog(common, testonion, qtapp, '/tmp/settings.json', True) return gui
def set_up(test_settings): """Create GUI with given settings""" # Create our test file testfile = open("/tmp/test.txt", "w") testfile.write("onionshare") testfile.close() # Create a test dir and files if not os.path.exists("/tmp/testdir"): testdir = os.mkdir("/tmp/testdir") testfile = open("/tmp/testdir/test.txt", "w") testfile.write("onionshare") testfile.close() common = Common() common.settings = Settings(common) common.define_css() strings.load_strings(common) # Get all of the settings in test_settings test_settings["connection_type"] = "automatic" test_settings["data_dir"] = "/tmp/OnionShare" for key, val in common.settings.default_settings.items(): if key not in test_settings: test_settings[key] = val # Start the Onion testonion = Onion(common) global qtapp qtapp = Application(common) app = OnionShare(common, testonion, False, 0) web = Web(common, False, False) open("/tmp/settings.json", "w").write(json.dumps(test_settings)) gui = OnionShareGui( common, testonion, qtapp, app, ["/tmp/test.txt", "/tmp/testdir"], "/tmp/settings.json", False, ) return gui
def set_up(test_settings): '''Create GUI with given settings''' # Create our test file testfile = open('/tmp/test.txt', 'w') testfile.write('onionshare') testfile.close() # Create a test dir and files if not os.path.exists('/tmp/testdir'): testdir = os.mkdir('/tmp/testdir') testfile = open('/tmp/testdir/test.txt', 'w') testfile.write('onionshare') testfile.close() common = Common() common.settings = Settings(common) common.define_css() strings.load_strings(common) # Get all of the settings in test_settings test_settings['connection_type'] = 'automatic' test_settings['data_dir'] = '/tmp/OnionShare' for key, val in common.settings.default_settings.items(): if key not in test_settings: test_settings[key] = val # Start the Onion testonion = Onion(common) global qtapp qtapp = Application(common) app = OnionShare(common, testonion, False, 0) web = Web(common, False, False) open('/tmp/settings.json', 'w').write(json.dumps(test_settings)) gui = OnionShareGui(common, testonion, qtapp, app, ['/tmp/test.txt', '/tmp/testdir'], '/tmp/settings.json', False) return gui
def set_up(test_settings): """Create GUI with given settings""" # Create our test file testfile = open("/tmp/index.html", "w") testfile.write( "<html><body><p>This is a test website hosted by OnionShare</p></body></html>" ) testfile.close() common = Common() common.settings = Settings(common) common.define_css() strings.load_strings(common) # Get all of the settings in test_settings test_settings["data_dir"] = "/tmp/OnionShare" for key, val in common.settings.default_settings.items(): if key not in test_settings: test_settings[key] = val # Start the Onion testonion = Onion(common) global qtapp qtapp = Application(common) app = OnionShare(common, testonion, True, 0) web = Web(common, False, True) open("/tmp/settings.json", "w").write(json.dumps(test_settings)) gui = OnionShareGui( common, testonion, qtapp, app, ["/tmp/index.html"], "/tmp/settings.json", True, ) return gui
def main(): """ The main() function implements all of the logic that the GUI version of onionshare uses. """ common = Common() common.define_css() # Load the default settings and strings early, for the sake of being able to parse options. # These won't be in the user's chosen locale necessarily, but we need to parse them # early in order to even display the option to pass alternate settings (which might # contain a preferred locale). # If an alternate --config is passed, we'll reload strings later. common.load_settings() strings.load_strings(common) # Display OnionShare banner print(strings._('version_string').format(common.version)) # Allow Ctrl-C to smoothly quit the program instead of throwing an exception # https://stackoverflow.com/questions/42814093/how-to-handle-ctrlc-in-python-app-with-pyqt signal.signal(signal.SIGINT, signal.SIG_DFL) # Start the Qt app global qtapp qtapp = Application(common) # Parse arguments parser = argparse.ArgumentParser(formatter_class=lambda prog: argparse. HelpFormatter(prog, max_help_position=48)) parser.add_argument('--local-only', action='store_true', dest='local_only', help=strings._("help_local_only")) parser.add_argument('--debug', action='store_true', dest='debug', help=strings._("help_debug")) parser.add_argument('--filenames', metavar='filenames', nargs='+', help=strings._('help_filename')) parser.add_argument('--config', metavar='config', default=False, help=strings._('help_config')) args = parser.parse_args() filenames = args.filenames if filenames: for i in range(len(filenames)): filenames[i] = os.path.abspath(filenames[i]) config = args.config if config: # Re-load the strings, in case the provided config has changed locale common.load_settings(config) strings.load_strings(common) local_only = bool(args.local_only) debug = bool(args.debug) # Debug mode? common.debug = debug # Validation if filenames: valid = True for filename in filenames: if not os.path.isfile(filename) and not os.path.isdir(filename): Alert(common, strings._("not_a_file").format(filename)) valid = False if not os.access(filename, os.R_OK): Alert(common, strings._("not_a_readable_file").format(filename)) valid = False if not valid: sys.exit() # Start the Onion onion = Onion(common) # Start the OnionShare app app = OnionShare(common, onion, local_only) # Launch the gui gui = OnionShareGui(common, onion, qtapp, app, filenames, config, local_only) # Clean up when app quits def shutdown(): onion.cleanup() app.cleanup() qtapp.aboutToQuit.connect(shutdown) # All done sys.exit(qtapp.exec_())
def main(): """ The main() function implements all of the logic that the GUI version of onionshare uses. """ common = Common() common.define_css() # Display OnionShare banner print("OnionShare {0:s} | https://onionshare.org/".format(common.version)) # Allow Ctrl-C to smoothly quit the program instead of throwing an exception # https://stackoverflow.com/questions/42814093/how-to-handle-ctrlc-in-python-app-with-pyqt signal.signal(signal.SIGINT, signal.SIG_DFL) # Start the Qt app global qtapp qtapp = Application(common) # Parse arguments parser = argparse.ArgumentParser( formatter_class=lambda prog: argparse.HelpFormatter(prog, max_help_position=48) ) parser.add_argument( "--local-only", action="store_true", dest="local_only", help="Don't use Tor (only for development)", ) parser.add_argument( "-v", "--verbose", action="store_true", dest="verbose", help="Log OnionShare errors to stdout, and web errors to disk", ) parser.add_argument( "--filenames", metavar="filenames", nargs="+", help="List of files or folders to share", ) parser.add_argument( "--config", metavar="config", default=False, help="Custom JSON config file location (optional)", ) args = parser.parse_args() filenames = args.filenames if filenames: for i in range(len(filenames)): filenames[i] = os.path.abspath(filenames[i]) config = args.config if config: common.load_settings(config) local_only = bool(args.local_only) verbose = bool(args.verbose) # Verbose mode? common.verbose = verbose # Validation if filenames: valid = True for filename in filenames: if not os.path.isfile(filename) and not os.path.isdir(filename): Alert(common, "{0:s} is not a valid file.".format(filename)) valid = False if not os.access(filename, os.R_OK): Alert(common, "{0:s} is not a readable file.".format(filename)) valid = False if not valid: sys.exit() # Start the Onion onion = Onion(common) # Start the OnionShare app app = OnionShare(common, onion, local_only) # Launch the gui gui = OnionShareGui(common, onion, qtapp, app, filenames, config, local_only) # Clean up when app quits def shutdown(): onion.cleanup() app.cleanup() qtapp.aboutToQuit.connect(shutdown) # All done sys.exit(qtapp.exec_())
def main(): """ The main() function implements all of the logic that the GUI version of onionshare uses. """ common = Common() common.define_css() # Display OnionShare banner print("OnionShare {0:s} | https://onionshare.org/".format(common.version)) # Allow Ctrl-C to smoothly quit the program instead of throwing an exception # https://stackoverflow.com/questions/42814093/how-to-handle-ctrlc-in-python-app-with-pyqt signal.signal(signal.SIGINT, signal.SIG_DFL) # Start the Qt app global qtapp qtapp = Application(common) # Parse arguments parser = argparse.ArgumentParser(formatter_class=lambda prog: argparse.HelpFormatter(prog,max_help_position=48)) parser.add_argument('--local-only', action='store_true', dest='local_only', help="Don't use Tor (only for development)") parser.add_argument('-v', '--verbose', action='store_true', dest='verbose', help="Log OnionShare errors to stdout, and web errors to disk") parser.add_argument('--filenames', metavar='filenames', nargs='+', help="List of files or folders to share") parser.add_argument('--config', metavar='config', default=False, help="Custom JSON config file location (optional)") args = parser.parse_args() filenames = args.filenames if filenames: for i in range(len(filenames)): filenames[i] = os.path.abspath(filenames[i]) config = args.config if config: common.load_settings(config) local_only = bool(args.local_only) verbose = bool(args.verbose) # Verbose mode? common.verbose = verbose # Validation if filenames: valid = True for filename in filenames: if not os.path.isfile(filename) and not os.path.isdir(filename): Alert(common, "{0:s} is not a valid file.".format(filename)) valid = False if not os.access(filename, os.R_OK): Alert(common, "{0:s} is not a readable file.".format(filename)) valid = False if not valid: sys.exit() # Start the Onion onion = Onion(common) # Start the OnionShare app app = OnionShare(common, onion, local_only) # Launch the gui gui = OnionShareGui(common, onion, qtapp, app, filenames, config, local_only) # Clean up when app quits def shutdown(): onion.cleanup() app.cleanup() qtapp.aboutToQuit.connect(shutdown) # All done sys.exit(qtapp.exec_())