示例#1
0
        public void Load(ConfigNode parent)
        {
            ConfigNode n = parent.FindChildConfigNode("profiles");

            if (n != null)
            {
                foreach (ConfigNode ch in n.Children)
                {
                    ChannelProfile p = null;
                    if (ch.Name == "local-to-remote")
                    {
                        p = new LocalToRemoteChannelProfile();
                    }
                    else if (ch.Name == "remote-to-local")
                    {
                        p = new RemoteToLocalChannelProfile();
                    }
                    else
                    {
                        throw new FormatException(ch.Name + " is invalid channel profile name.");
                    }

                    p.Import(ch);
                    _data.Add(p);
                }
            }
        }
示例#2
0
        public void Load(ConfigNode parent) {
            ConfigNode n = parent.FindChildConfigNode("profiles");
            if (n != null) {
                foreach (ConfigNode ch in n.Children) {
                    ChannelProfile p = null;
                    if (ch.Name == "local-to-remote")
                        p = new LocalToRemoteChannelProfile();
                    else if (ch.Name == "remote-to-local")
                        p = new RemoteToLocalChannelProfile();
                    else
                        throw new FormatException(ch.Name + " is invalid channel profile name.");

                    p.Import(ch);
                    _data.Add(p);
                }
            }
        }
示例#3
0
        private void InitUI(ChannelProfile prof)
        {
            if (prof == null)
            {
                _localToRemoteOption.Checked = true;
                _passwordOption.Checked      = true;
            }
            else
            {
                _sshHostBox.Text = prof.SSHHost;
                _portBox.Text    = prof.SSHPort.ToString();
                _accountBox.Text = prof.SSHAccount;
                //_udpOption.Checked = prof.ProtocolType==ProtocolType.Udp;
                if (prof.AuthType == AuthenticationType.Password)
                {
                    _passwordOption.Checked = true;
                }
                else
                {
                    _publicKeyOption.Checked = true;
                    _privateKeyBox.Text      = prof.PrivateKeyFile;
                }
                _loopbackOnly.Checked = !prof.AllowsForeignConnection;

                if (prof is LocalToRemoteChannelProfile)
                {
                    LocalToRemoteChannelProfile p = (LocalToRemoteChannelProfile)prof;
                    _localToRemoteOption.Checked = true;
                    _LRLocalPortBox.Text         = p.ListenPort.ToString();
                    _LRIPv6.Checked       = p.UseIPv6;
                    _LRRemoteHostBox.Text = p.DestinationHost;
                    _LRRemotePortBox.Text = p.DestinationPort.ToString();
                }
                else
                {
                    RemoteToLocalChannelProfile p = (RemoteToLocalChannelProfile)prof;
                    _remoteToLocalOption.Checked = true;
                    _RLLocalPortBox.Text         = p.DestinationPort.ToString();
                    _RLLocalHostBox.Text         = p.DestinationHost;
                    _RLRemotePortBox.Text        = p.ListenPort.ToString();
                }
            }
        }
示例#4
0
        private void OnOK(object sender, EventArgs args)
        {
            this.DialogResult = DialogResult.None;
            string itemname = null;

            try {
                if (_localToRemoteOption.Checked)
                {
                    _result = new LocalToRemoteChannelProfile();
                }
                else
                {
                    _result = new RemoteToLocalChannelProfile();
                }

                if (_sshHostBox.Text.Length == 0)
                {
                    throw new Exception(Env.Strings.GetString("Message.ProfileEdit.EmptySSHServer"));
                }
                _result.SSHHost = _sshHostBox.Text;
                if (_accountBox.Text.Length == 0)
                {
                    throw new Exception(Env.Strings.GetString("Message.ProfileEdit.EmptyAccount"));
                }
                _result.SSHAccount = _accountBox.Text;
                _result.AuthType   = _publicKeyOption.Checked ? AuthenticationType.PublicKey : AuthenticationType.Password;
                if (_result.AuthType == AuthenticationType.PublicKey)
                {
                    _result.PrivateKeyFile = _privateKeyBox.Text;
                }

                itemname        = Env.Strings.GetString("Caption.ProfileEdit.SSHPortNumber");
                _result.SSHPort = Util.ParsePort(_portBox.Text);

                _result.ProtocolType = ProtocolType.Tcp;

                _result.AllowsForeignConnection = !_loopbackOnly.Checked;
                if (_localToRemoteOption.Checked)
                {
                    LocalToRemoteChannelProfile p = (LocalToRemoteChannelProfile)_result;
                    itemname     = Env.Strings.GetString("Caption.ProfileEdit.LocalPort");
                    p.ListenPort = Util.ParsePort(_LRLocalPortBox.Text);
                    if (_LRRemoteHostBox.Text.Length == 0)
                    {
                        throw new Exception(Env.Strings.GetString("Message.ProfileEdit.EmptyRemoveHost"));
                    }
                    p.DestinationHost = _LRRemoteHostBox.Text;
                    itemname          = Env.Strings.GetString("Caption.ProfileEdit.DestinationPort");
                    p.DestinationPort = Util.ParsePort(_LRRemotePortBox.Text);
                    p.UseIPv6         = _LRIPv6.Checked;
                }
                else
                {
                    RemoteToLocalChannelProfile p = (RemoteToLocalChannelProfile)_result;
                    itemname                  = Env.Strings.GetString("Caption.ProfileEdit.RemotePort");
                    p.ListenPort              = Util.ParsePort(_RLRemotePortBox.Text);
                    itemname                  = Env.Strings.GetString("Caption.ProfileEdit.DestinationHost");
                    p.DestinationHost         = _RLLocalHostBox.Text;
                    itemname                  = Env.Strings.GetString("Caption.ProfileEdit.DestinationPort");
                    p.DestinationPort         = Util.ParsePort(_RLLocalPortBox.Text);
                    p.AllowsForeignConnection = !_loopbackOnly.Checked;

                    /*
                     * if(_udpOption.Checked && _loopbackOnly.Checked) {
                     *  throw new Exception("リモートからローカルへのUDPの転送をするときはLoopback以外からの接続を許可する必要があります。");
                     * }
                     */
                }

                this.DialogResult = DialogResult.OK;
            }
            catch (FormatException) {
                Util.Warning(this, String.Format(Env.Strings.GetString("Message.OptionDialog.InvalidItem"), itemname));
            }
            catch (Exception ex) {
                Util.Warning(this, ex.Message);
            }
        }
示例#5
0
 public RemoteToLocalChannelFactory(RemoteToLocalChannelProfile prof)
 {
     _profile = prof;
 }
示例#6
0
 public RemoteToLocalChannelFactory(RemoteToLocalChannelProfile prof)
 {
     _profile = prof;
 }