Example #1
0
        public static Session Load(string keyName)
        {
            string      puttyKeyPath    = PuttySettings.PUTTY_REGISTRY_KEYPATH_SESSIONS + @"\" + keyName;
            RegistryKey puttySessionKey = Registry.CurrentUser.OpenSubKey(puttyKeyPath);

            Session session = new Session(
                Uri.UnescapeDataString(keyName),
                puttySessionKey.GetValue(PUTTY_REGISTRY_KEY_SESSION_HOSTNAME, "").ToString(),
                Int32.Parse(puttySessionKey.GetValue(PUTTY_REGISTRY_KEY_SESSION_PORTNUMBER, "22").ToString())
                );

            session.Username            = puttySessionKey.GetValue(PUTTY_REGISTRY_KEY_SESSION_USERNAME, "").ToString();
            session.Compression         = puttySessionKey.GetValue(PUTTY_REGISTRY_KEY_SESSION_COMPRESSION, 0).Equals(1);
            session.LocalPortsAcceptAll = puttySessionKey.GetValue(PUTTY_REGISTRY_KEY_SESSION_LOCALPORTACCEPTALL, 0).Equals(1);

            string      ptmKeyPath    = PuttyTunnelManagerSettings.PTM_REGISTRY_KEYPATH_SESSIONS + @"\" + keyName;
            RegistryKey ptmSessionKey = Registry.CurrentUser.OpenSubKey(ptmKeyPath);

            // Load Tunnel Manager specific settings.
            if (ptmSessionKey != null)
            {
                session.UsePtmForTunnels = ptmSessionKey.GetValue(PTM_REGISTRY_KEY_SESSION_USEPTMFORTUNNELS, 0).Equals(1);
                session.AutoStart        = ptmSessionKey.GetValue(PTM_REGISTRY_KEY_SESSION_AUTOSTART, 0).Equals(1);
            }

            string[] portForwardingList;
            if (session.UsePtmForTunnels && ptmSessionKey != null)
            {
                portForwardingList = ptmSessionKey.GetValue(PTM_REGISTRY_KEY_SESSION_PORTFORWARDINGS, "").ToString().Split(',');
                ptmSessionKey.Close();
            }
            else
            {
                portForwardingList = puttySessionKey.GetValue(PUTTY_REGISTRY_KEY_SESSION_PORTFORWARDINGS, "").ToString().Split(',');
            }

            puttySessionKey.Close();

            foreach (string portForwarding in portForwardingList)
            {
                if (portForwarding.Length > 0)
                {
                    Tunnel t = Tunnel.Load(session, portForwarding);
                    session.Tunnels.Add(t);
                }
            }

            return(session);
        }
Example #2
0
        public override bool Equals(object obj)
        {
            Tunnel tunnel = obj as Tunnel;

            if (tunnel == null)
            {
                return(base.Equals(obj));
            }
            else
            {
                return(this.session == tunnel.Session &&
                       this.destination == tunnel.Destination &&
                       this.destinationPort == tunnel.DestinationPort &&
                       this.sourcePort == tunnel.SourcePort &&
                       this.type == tunnel.Type
                       );
            }
        }
Example #3
0
        public virtual void MergeBackPuttyTunnels()
        {
            try
            {
                Registry.CurrentUser.DeleteSubKey(this.PuttyTunnelManagerKeyPath);
            }
            catch (Exception) { }

            RegistryKey puttySessionKey = Registry.CurrentUser.OpenSubKey(this.PuttyKeyPath);

            string[] portForwardingList = puttySessionKey.GetValue(PUTTY_REGISTRY_KEY_SESSION_PORTFORWARDINGS, "").ToString().Split(',');
            puttySessionKey.Close();

            List <Tunnel> additionalTunnels = new List <Tunnel>();

            foreach (string portForwarding in portForwardingList.Where(pf => pf.Length > 0))
            {
                Tunnel t1 = Tunnel.Load(this, portForwarding);
                additionalTunnels.AddRange(from t2 in this.tunnels where !t1.Equals(t2) select t1);
            }
            this.tunnels.AddRange(additionalTunnels);
        }
 public PortAlreadyInUseException(Tunnel tunnel)
 {
     this.tunnel = tunnel;
 }
 public PortAlreadyInUseException(Tunnel tunnel)
 {
     this.tunnel = tunnel;
 }