def start(self):
        logger.debug("client pid:%s" % os.getpid())
        import argparse

        parser = argparse.ArgumentParser()
        self.add_default_arguments(parser, local_port_required=False)
        parser.add_argument("--file-token", default="", help="The token needed to download the file.")
        parser.add_argument("filename", help="The file you want to openport.")
        args = parser.parse_args()
        if args.no_gui:
            args.hide_message = True
            args.no_clipboard = True
        self.args = args

        def show_message_box(share):
            import wx

            wx.MessageBox(
                "You can now download your file(s) from %s\nThis link has been copied to your clipboard."
                % (share.get_link()),
                "Info",
                wx.OK | wx.ICON_INFORMATION,
            )

        def get_restart_command_for_share(share):
            command = self.get_restart_command(share)
            if not "--file-token" in command:
                command.extend(["--file-token", share.token])
            return command

        self.first_time = True

        def callback(ignore):
            #            global first_time
            if not self.first_time:
                return
            self.first_time = False

            share.restart_command = get_restart_command_for_share(share)
            if args.tray_port > 0:
                self.inform_tray_app_new(share, args.tray_port, start_tray=(not args.no_tray))

            share.error_observers.append(self.error_callback)
            share.success_observers.append(self.success_callback)

            if not args.no_clipboard:
                self.copy_share_to_clipboard(share)
            if args.hide_message:
                logger.info("Your file can be downloaded from %s" % share.get_link())
            else:
                self.show_message_box(share)

        share = Share()
        if args.file_token == "":
            share.token = crypt_service.get_token()
        else:
            share.token = args.file_token
        share.filePath = os.path.join(os.getcwd(), args.filename)
        share.server_port = args.request_port
        share.local_port = args.local_port
        share.server_session_token = args.request_token

        self.session = share
        self.open_port_file(share, callback)

        while True:
            sleep(1)
 def get_share(self, path):
     share = Share()
     share.filePath = path
     share.token = TOKEN
     return share