Exemplo n.º 1
0
        public void SetUid(string uid, string pcid)
        {
            if (_user.Value != null)
            {
                return;
            }

            string country = "US";
            string version = "0.4";
            string name    = uid;

            if (pcid == null || pcid == String.Empty)
            {
                pcid = System.Net.Dns.GetHostName();
            }

            CertificateMaker cm = new CertificateMaker(country, version, pcid,
                                                       name, uid, _rsa,
                                                       this.Address);
            Certificate cert        = cm.Sign(cm, _rsa);
            string      certificate = Convert.ToBase64String(cert.X509.RawData);
            SocialUser  user        = new SocialUser(certificate, this.IP, null);

            _user.Value = user;

            Bso.CertificateHandler.AddCACertificate(user.X509);
            Bso.CertificateHandler.AddSignedCertificate(user.X509);
        }
Exemplo n.º 2
0
        public void LoadState()
        {
#if !SVPN_NUNIT
            try {
                FileState fstate = Utils.ReadConfig <FileState>(STATEPATH);

                if (fstate.Uid != null)
                {
                    _node.SetUid(fstate.Uid, fstate.PCID);
                }

                foreach (FriendState friend in fstate.Friends)
                {
                    SocialUser user = new SocialUser(friend.Certificate, friend.IP,
                                                     friend.Status);
                    _node.AddFriend(user.Address, user.Certificate, user.Uid, user.IP);
                    if (user.Status == StatusTypes.Blocked.ToString() && !_auto_allow)
                    {
                        _node.Block(user.Address);
                    }
                }
            }
            catch {
            }
#endif
        }
Exemplo n.º 3
0
        public void RemoveFriend(string address)
        {
            SocialUser    user = _friends[address];
                  Address addr = AddressParser.Parse(user.Address);

                  _mco.Unset(addr);
                  _marad.RemoveIPMapping(user.IP);

            ImmutableDictionary <string, SocialUser> old;

            _friends = _friends.RemoveFromNew(address, out old);
        }
Exemplo n.º 4
0
        protected bool IsVerified(SocialUser user)
        {
            string fpr;

            if (_fprs.TryGetValue(user.Address, out fpr))
            {
                if (user.Fingerprint == fpr)
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 5
0
        protected void AddFriend(string address, string cert)
        {
            SocialUser user = _node.AddFriend(address, cert, null, null);

            if (_pending.Contains(user.Address))
            {
                _pending = _pending.RemoveFromNew(user.Address);
            }

            if (!_auto_allow && !IsVerified(user))
            {
                _node.Block(user.Address);
            }
        }
Exemplo n.º 6
0
        public SocialUser AddFriend(string address, string cert, string uid,
                                    string ip)
        {
            if (_friends.ContainsKey(address))
            {
                throw new Exception("Address already exists");
            }

            Address    addr   = AddressParser.Parse(address);
            string     new_ip = _marad.AddIPMapping(ip, addr);
            SocialUser user   = new SocialUser(cert, new_ip, null);

            Bso.CertificateHandler.AddCACertificate(user.X509);
            _mco.Set(addr);
            _friends = _friends.InsertIntoNew(address, user);

            return(user);
        }
    public void LoadState() {
#if !SVPN_NUNIT
      try {
        FileState fstate = Utils.ReadConfig<FileState>(STATEPATH);

        if(fstate.Uid != null) {
          _node.SetUid(fstate.Uid, fstate.PCID);
        }

        foreach (FriendState friend in fstate.Friends) {
          SocialUser user = new SocialUser(friend.Certificate, friend.IP, 
            friend.Status);
          _node.AddFriend(user.Address, user.Certificate, user.Uid, user.IP);
          if(user.Status == StatusTypes.Blocked.ToString() && !_auto_allow) {
            _node.Block(user.Address);
          }
        }
      }
      catch {
      }
#endif
    }
 protected bool IsVerified(SocialUser user) {
   string fpr;
   if(_fprs.TryGetValue(user.Address, out fpr)) {
     if(user.Fingerprint == fpr) {
       return true;
     }
   }
   return false;
 }
Exemplo n.º 9
0
    public void SetUid(string uid, string pcid) {

      if(_user.Value != null) {
        return;
      }

      string country = "US";
      string version = "0.4";
      string name = uid;

      if(pcid == null || pcid == String.Empty) {
        pcid = System.Net.Dns.GetHostName();
      }

      CertificateMaker cm = new CertificateMaker(country, version, pcid,
                                                 name, uid, _rsa, 
                                                 this.Address);
      Certificate cert = cm.Sign(cm, _rsa);
      string certificate = Convert.ToBase64String(cert.X509.RawData);
      SocialUser user = new SocialUser(certificate, this.IP, null);
      _user.Value = user;

      Bso.CertificateHandler.AddCACertificate(user.X509);
      Bso.CertificateHandler.AddSignedCertificate(user.X509);
    }
Exemplo n.º 10
0
    public SocialUser AddFriend(string address, string cert, string uid, 
      string ip) {

      if(_friends.ContainsKey(address)) {
        throw new Exception("Address already exists");
      }

      Address addr = AddressParser.Parse(address);
      string new_ip = _marad.AddIPMapping(ip, addr);
      SocialUser user = new SocialUser(cert, new_ip, null);

      Bso.CertificateHandler.AddCACertificate(user.X509);
      _mco.Set(addr);
      _friends = _friends.InsertIntoNew(address, user);

      return user;
    }
Exemplo n.º 11
0
    protected SocialUser AddFriend(string certb64, string uid, string ip) {
      bool new_friend = IsNewFriend(uid);
      SocialUser user = new SocialUser();
      user.Certificate = certb64;
      user.Status = StatusTypes.Offline.ToString();
      user.Time = String.Empty;

      if (user.Uid.ToLower() != uid.ToLower()) {
        throw new Exception("Uids do not match");
      }

      foreach (SocialUser tmp_user in GetFriends()) {
        if (tmp_user.Address == user.Address) {
          throw new Exception("Address already exists");
        }
      }

      if (_friends.ContainsKey(user.Alias)) {
        RemoveFriend(user.Alias);
      }

      Address addr = AddressParser.Parse(user.Address);
      _bso.CertificateHandler.AddCACertificate(user.GetCert().X509);
      AppNode.Node.ManagedCO.AddAddress(addr);
      user.IP = _marad.AddIPMapping(ip, addr);
      _marad.AddDnsMapping(user.Alias, user.IP, true);
      user.Access = AccessTypes.Allow.ToString();

      lock (_sync) {
        _friends.Add(user.Alias, user);
      }
      // Check global block option and block if necessary
      if((new_friend && _global_block.Value) || _bfriends.Contains(uid)) {
        Block(uid);
      }
      GetState(true);
      return user;
    }
Exemplo n.º 12
0
 public SocialNode(NodeConfig brunetConfig, IpopConfig ipopConfig,
                   string certificate) : base(brunetConfig, ipopConfig) {
   _friends = new Dictionary<string, SocialUser>();
   _bfriends = new List<string>();
   _sync = new object();
   _status = StatusTypes.Offline.ToString();
   _global_block = new WriteOnce<bool>();
   _local_user = new SocialUser();
   _local_user.Certificate = certificate;
   _local_user.IP = _marad.LocalIP;
   _marad.AddDnsMapping(_local_user.Alias, _local_user.IP, true);
   _bso = AppNode.SecurityOverlord;
   _bso.CertificateHandler.AddCACertificate(_local_user.GetCert().X509);
   _bso.CertificateHandler.AddSignedCertificate(_local_user.GetCert().X509);
 }
Exemplo n.º 13
0
 public SocialUser[] GetFriends() {
   SocialUser[] friends;
   lock(_sync) {
     friends = new SocialUser[_friends.Count];
     int i = 0;
     foreach(SocialUser user in _friends.Values) {
       friends[i] = user.ExactCopy();
       i++;
     }
   }
   return friends;
 }
Exemplo n.º 14
0
        public void Unblock(string address)
        {
            SocialUser user = _friends[address];

            _marad.AddIPMapping(user.IP, AddressParser.Parse(address));
        }
Exemplo n.º 15
0
        public void Block(string address)
        {
            SocialUser user = _friends[address];

            _marad.RemoveIPMapping(user.IP);
        }