Esempio n. 1
0
        //// Translators

        public async Task <string> AddAddress(string args, PublicIdentity client)
        {
            var request = API.Import <Tuple <string, AddressInfo> >(args);
            await api.AddAddress(request, client);

            return("");
        }
Esempio n. 2
0
        public async Task <string> GetAddresses(string args, PublicIdentity client)
        {
            var request  = API.Import <List <string> >(args);
            var response = await api.GetAddresses(request, client);

            return(API.Export(response));
        }
Esempio n. 3
0
        public async Task <GetImageResponse> Get(string hash, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.NotBlocked);

            var p = await conn.GetAsync <Image>(hash);

            return(p.ToResponse());
        }
Esempio n. 4
0
        public async Task <GetPostResponse> Get(string id, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.NotBlocked);

            var post = await conn.GetAsync <Post>(id);

            return(post.ToResponse());
        }
Esempio n. 5
0
        public async Task <string> Add(AddImageRequest request, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Self);

            var resource = Image.FromAddRequest(request);
            await conn.InsertOrReplaceAsync(resource);

            return(resource.Hash);
        }
Esempio n. 6
0
        public async Task <List <PostInfo> > GetList(DateTimeOffset start, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Friend);

            var posts = await conn.Table <Post>().Where(x => start < x.TimePosted).ToListAsync();

            return(posts.Select(x => new PostInfo {
                ID = x.ID, TimePosted = x.TimePosted
            }).ToList());
        }
Esempio n. 7
0
        public async Task <string> GetProfile(string args, PublicIdentity client)
        {
            if (args != "")
            {
                throw new RPException("Arguments were formatted incorrectly!");
            }
            var response = await api.GetProfile(client);

            return(API.Export(response));
        }
Esempio n. 8
0
        public async Task RemovePost(string id, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Self);

            var num = await conn.DeleteAsync <Post>(id);

            if (num == 0)
            {
                throw new APIException("Image could not be found!");
            }
        }
Esempio n. 9
0
        public async Task <string> InformAddress(string args, PublicIdentity client, IPEndPoint address)
        {
            var port = API.Import <int>(args);

            if (port == -1)
            {
                port = address.Port;
            }
            await api.InformAddress(port, address.Address, client);

            return("");
        }
Esempio n. 10
0
        public async Task <string> Add(AddPostRequest request, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Self);

            var post = Post.FromAddRequest(request);
            var num  = await conn.InsertAsync(post);

            if (num == 0)
            {
                throw new APIException("Image could not be found!");
            }
            return(post.ID);
        }
Esempio n. 11
0
        public async Task <string> AddPost(string args, PublicIdentity client)
        {
            AddPostRequest r;

            try
            {
                r = API.Import <AddPostRequest>(args);
            }
            catch
            {
                throw new RPException("Arguments were formatted incorrectly!");
            }
            return(await api.AddPost(r, client));
        }
Esempio n. 12
0
        public async Task AuthenticateValid()
        {
            var serverPrivID = PrivateIdentity.Create();
            var serverPubID  = new PublicIdentity(serverPrivID.PublicIdentityInfo);
            var clientPrivID = PrivateIdentity.Create();

            var serverAuthenticator = new Authenticator(serverPrivID);
            var clientAuthenticator = new Authenticator(clientPrivID);

            var a = serverAuthenticator.AuthenticateClient(protected1);
            var b = clientAuthenticator.AuthenticateServer(protected2, serverPubID.ID);

            await Task.WhenAll(a, b);
        }
Esempio n. 13
0
        public async Task <string> SetProfile(string args, PublicIdentity client)
        {
            SetProfileRequest r;

            try
            {
                r = API.Import <SetProfileRequest>(args);
            }
            catch
            {
                throw new RPException("Arguments were formatted incorrectly!");
            }
            await api.SetProfile(r, client);

            return("");
        }
Esempio n. 14
0
        public async Task <string> GetPostList(string args, PublicIdentity client)
        {
            DateTimeOffset start;

            try
            {
                start = API.Import <DateTimeOffset>(args);
            }
            catch
            {
                throw new RPException("Arguments were formatted incorrectly!");
            }
            var response = await api.GetPostList(start, client);

            return(API.Export(response));
        }
Esempio n. 15
0
        public async Task <string> SetFriend(string args, PublicIdentity client)
        {
            FriendInfo info;

            try
            {
                info = API.Import <FriendInfo>(args);
            }
            catch
            {
                throw new RPException("Arguments were formatted incorrectly!");
            }
            await api.SetFriend(info, client);

            return("");
        }
Esempio n. 16
0
        public async Task <List <ImageInfo> > GetList(PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Self);

            var images = await conn.Table <Image>().ToListAsync();

            List <ImageInfo> info = new();

            foreach (var image in images)
            {
                info.Add(new ImageInfo
                {
                    Hash        = image.Hash,
                    LastUpdated = image.LastUpdated
                });
            }
            return(info);
        }
Esempio n. 17
0
        public async Task Set(SetProfileRequest r, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Self);

            if (r.Name.Length > 18)
            {
                throw new APIException($"Name used {r.Name.Length}/18 characters.");
            }
            if (r.Tagline.Length > 30)
            {
                throw new APIException($"Tagline used {r.Tagline.Length}/30 characters.");
            }
            if (r.Bio.Length > 400)
            {
                throw new APIException($"Bio used {r.Bio.Length}/400 characters.");
            }

            await conn.InsertOrReplaceAsync(Profile.FromSetRequest(r, users.Self));
        }
Esempio n. 18
0
        private void SenderThread()
        {
            Random rng = new Random();

            while (true)
            {
                int            serverIndex     = rng.Next(serviceIdentity.Servers.Count);
                PublicIdentity serverIdentity  = serviceIdentity.Servers[serverIndex];
                byte[]         serverPublicKey = serverIdentity.PublicKey;

                int    randomNumber = rng.Next(10000);
                string message      = string.Format("Hello {0}", randomNumber);
                byte[] messageBytes = Encoding.UTF8.GetBytes(message);

                Console.WriteLine("Sending message {0} to {1}", message, IoScheduler.PublicKeyToString(serverPublicKey));

                scheduler.SendPacket(serverPublicKey, messageBytes);
                Thread.Sleep(1000);
            }
        }
Esempio n. 19
0
        public async Task <GetProfileResponse> Get(PublicIdentity _)
        {
            var p = await conn.GetAsync <Profile>(users.Self);

            return(p.ToResponse());
        }
Esempio n. 20
0
        public async Task <string> RemovePost(string args, PublicIdentity client)
        {
            await api.RemovePost(args, client);

            return("");
        }
Esempio n. 21
0
        public async Task <string> GetPost(string args, PublicIdentity client)
        {
            var response = await api.GetPost(args, client);

            return(API.Export(response));
        }
Esempio n. 22
0
        public async Task InformAddress(int port, IPAddress address, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Friend);

            await AddAddress(client.ID, address, port, false);
        }
Esempio n. 23
0
 public IdentityTester()
 {
     privateIdentity = PrivateIdentity.Create();
     publicIdentity  = new PublicIdentity(privateIdentity.PublicIdentityInfo);
 }
Esempio n. 24
0
        public async Task AddAddress(string user, IPAddress address, int port, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Self);

            await AddAddress(user, address, port, true);
        }
Esempio n. 25
0
        public async Task <string> GetImageList(PublicIdentity client)
        {
            var response = await api.GetImageList(client);

            return(API.Export(response));
        }
Esempio n. 26
0
        public async Task <Dictionary <string, AddressInfo> > GetAddresses(List <string> requested, PublicIdentity client)
        {
            await users.Authenticate(client, User.Auth.Friend);

            var addresses = await conn.Table <Address>().ToListAsync();

            var response = new Dictionary <string, AddressInfo>();

            foreach (var address in addresses)
            {
                if (!requested.Contains(address.UserID))
                {
                    continue;
                }
                response[address.UserID] = new AddressInfo
                {
                    IP   = address.IP,
                    Port = address.Port
                };
            }

            return(response);
        }