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); }
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 }
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); }
protected bool IsVerified(SocialUser user) { string fpr; if (_fprs.TryGetValue(user.Address, out fpr)) { if (user.Fingerprint == fpr) { return(true); } } return(false); }
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); } }
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; }
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); }
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; }
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; }
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); }
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; }
public void Unblock(string address) { SocialUser user = _friends[address]; _marad.AddIPMapping(user.IP, AddressParser.Parse(address)); }
public void Block(string address) { SocialUser user = _friends[address]; _marad.RemoveIPMapping(user.IP); }