Browse Source

return note in GET /api/aliases

Son NK 5 years ago
parent
commit
417009b3be
4 changed files with 39 additions and 21 deletions
  1. 23 21
      README.md
  2. 2 0
      app/api/views/alias.py
  3. 2 0
      app/dashboard/views/index.py
  4. 12 0
      tests/api/test_alias.py

+ 23 - 21
README.md

@@ -67,7 +67,7 @@ docker run --name sl -it --rm \
 Then open http://localhost:7777, you should be able to login with `john@wick.com/password` account!
 Then open http://localhost:7777, you should be able to login with `john@wick.com/password` account!
 
 
 To use SimpleLogin aliases, you need to deploy it on your server with some DNS setup though,
 To use SimpleLogin aliases, you need to deploy it on your server with some DNS setup though,
-the following section will show a step-by-step guide on how to get your own email forwarder service! 
+the following section will show a step-by-step guide on how to get your own email forwarder service!
 
 
 # Table of Contents
 # Table of Contents
 
 
@@ -156,7 +156,7 @@ An **A record** that points `app.mydomain.com.` to your server IP. To verify, th
 
 
 ```bash
 ```bash
 dig @1.1.1.1 app.mydomain.com a
 dig @1.1.1.1 app.mydomain.com a
-``` 
+```
 
 
 should return your server IP.
 should return your server IP.
 
 
@@ -194,7 +194,7 @@ To verify, the following command
 
 
 ```bash
 ```bash
 dig @1.1.1.1 dkim._domainkey.mydomain.com txt
 dig @1.1.1.1 dkim._domainkey.mydomain.com txt
-``` 
+```
 
 
 should return the above value.
 should return the above value.
 
 
@@ -209,10 +209,10 @@ Add a TXT record for `mydomain.com.` with the value:
 
 
 ```
 ```
 v=spf1 mx -all
 v=spf1 mx -all
-``` 
+```
 
 
-What it means is only your server can send email with `@mydomain.com` domain. 
-To verify, the following command 
+What it means is only your server can send email with `@mydomain.com` domain.
+To verify, the following command
 
 
 ```bash
 ```bash
 dig @1.1.1.1 mydomain.com txt
 dig @1.1.1.1 mydomain.com txt
@@ -241,7 +241,7 @@ To verify, the following command
 dig @1.1.1.1 _dmarc.mydomain.com txt
 dig @1.1.1.1 _dmarc.mydomain.com txt
 ```
 ```
 
 
-should return the set value. 
+should return the set value.
 
 
 For more information on DMARC, please consult https://tools.ietf.org/html/rfc7489
 For more information on DMARC, please consult https://tools.ietf.org/html/rfc7489
 
 
@@ -272,7 +272,7 @@ sudo docker network create -d bridge \
 
 
 ### Postgres
 ### Postgres
 
 
-This section creates a Postgres database using Docker. 
+This section creates a Postgres database using Docker.
 
 
 If you already have a Postgres database in use, you can skip this section and just copy the database configuration (i.e. host, port, username, password, database name) to use in the next sections.
 If you already have a Postgres database in use, you can skip this section and just copy the database configuration (i.e. host, port, username, password, database name) to use in the next sections.
 
 
@@ -376,7 +376,7 @@ smtpd_recipient_restrictions =
    permit
    permit
 ```
 ```
 
 
-Create the `/etc/postfix/pgsql-relay-domains.cf` file with the following content. 
+Create the `/etc/postfix/pgsql-relay-domains.cf` file with the following content.
 Make sure that the database config is correctly set and replace `mydomain.com` with your domain.
 Make sure that the database config is correctly set and replace `mydomain.com` with your domain.
 
 
 ```
 ```
@@ -386,11 +386,11 @@ user = myuser
 password = mypassword
 password = mypassword
 dbname = simplelogin
 dbname = simplelogin
 
 
-query = SELECT domain FROM custom_domain WHERE domain='%s' AND verified=true 
+query = SELECT domain FROM custom_domain WHERE domain='%s' AND verified=true
     UNION SELECT '%s' WHERE '%s' = 'mydomain.com' LIMIT 1;
     UNION SELECT '%s' WHERE '%s' = 'mydomain.com' LIMIT 1;
 ```
 ```
 
 
-Create the `/etc/postfix/pgsql-transport-maps.cf` file with the following content. 
+Create the `/etc/postfix/pgsql-transport-maps.cf` file with the following content.
 Again, make sure that the database config is correctly set and replace `mydomain.com` with your domain.
 Again, make sure that the database config is correctly set and replace `mydomain.com` with your domain.
 
 
 ```
 ```
@@ -401,7 +401,7 @@ password = mypassword
 dbname = simplelogin
 dbname = simplelogin
 
 
 # forward to smtp:127.0.0.1:20381 for custom domain AND email domain
 # forward to smtp:127.0.0.1:20381 for custom domain AND email domain
-query = SELECT 'smtp:127.0.0.1:20381' FROM custom_domain WHERE domain = '%s' AND verified=true 
+query = SELECT 'smtp:127.0.0.1:20381' FROM custom_domain WHERE domain = '%s' AND verified=true
     UNION SELECT 'smtp:127.0.0.1:20381' WHERE '%s' = 'mydomain.com' LIMIT 1;
     UNION SELECT 'smtp:127.0.0.1:20381' WHERE '%s' = 'mydomain.com' LIMIT 1;
 ```
 ```
 
 
@@ -539,7 +539,7 @@ You could make a donation to SimpleLogin on our Patreon page at https://www.patr
 The above self-hosting instructions correspond to a freshly Ubuntu server and doesn't cover all possible server configuration.
 The above self-hosting instructions correspond to a freshly Ubuntu server and doesn't cover all possible server configuration.
 Below are pointers to different topics:
 Below are pointers to different topics:
 
 
-- [UFW - uncomplicated firewall](docs/ufw.md) 
+- [UFW - uncomplicated firewall](docs/ufw.md)
 - [SES - Amazon Simple Email Service](docs/ses.md)
 - [SES - Amazon Simple Email Service](docs/ses.md)
 
 
 ## Contributing
 ## Contributing
@@ -560,7 +560,7 @@ Then make sure all tests pass
 pytest
 pytest
 ```
 ```
 
 
-Install npm packages 
+Install npm packages
 
 
 ```bash
 ```bash
 cd static && npm install
 cd static && npm install
@@ -760,7 +760,7 @@ Output: Same output as for `/api/auth/login` endpoint
 
 
 Input:
 Input:
 - email
 - email
-- password 
+- password
 
 
 Output: 200 means user is going to receive an email that contains an *activation code*. User needs to enter this code to confirm their account -> next endpoint.
 Output: 200 means user is going to receive an email that contains an *activation code*. User needs to enter this code to confirm their account -> next endpoint.
 
 
@@ -769,7 +769,7 @@ Output: 200 means user is going to receive an email that contains an *activation
 
 
 Input:
 Input:
 - email
 - email
-- code: the activation code 
+- code: the activation code
 
 
 Output:
 Output:
 - 200: account is activated. User can login now
 - 200: account is activated. User can login now
@@ -782,7 +782,7 @@ Input:
 - email
 - email
 
 
 Output:
 Output:
-- 200: user is going to receive an email that contains the activation code. 
+- 200: user is going to receive an email that contains the activation code.
 
 
 #### GET /api/aliases
 #### GET /api/aliases
 
 
@@ -806,7 +806,8 @@ If success, 200 with the list of aliases, for example:
             "nb_block": 0,
             "nb_block": 0,
             "nb_forward": 0,
             "nb_forward": 0,
             "nb_reply": 0,
             "nb_reply": 0,
-            "enabled": true 
+            "enabled": true,
+            "note": "This is a note"
         },
         },
         {
         {
             "creation_date": "2020-02-04 16:23:02+00:00",
             "creation_date": "2020-02-04 16:23:02+00:00",
@@ -816,7 +817,8 @@ If success, 200 with the list of aliases, for example:
             "nb_block": 0,
             "nb_block": 0,
             "nb_forward": 0,
             "nb_forward": 0,
             "nb_reply": 0,
             "nb_reply": 0,
-            "enabled": false
+            "enabled": false,
+            "note": null
         }
         }
     ]
     ]
 }
 }
@@ -828,7 +830,7 @@ Delete an alias
 
 
 Input:
 Input:
 - `Authentication` header that contains the api key
 - `Authentication` header that contains the api key
-- `alias_id` in url. 
+- `alias_id` in url.
 
 
 Output:
 Output:
 If success, 200.
 If success, 200.
@@ -846,7 +848,7 @@ Enable/disable alias
 
 
 Input:
 Input:
 - `Authentication` header that contains the api key
 - `Authentication` header that contains the api key
-- `alias_id` in url. 
+- `alias_id` in url.
 
 
 Output:
 Output:
 If success, 200 along with the new alias status:
 If success, 200 along with the new alias status:

+ 2 - 0
app/api/views/alias.py

@@ -26,6 +26,7 @@ def get_aliases():
             - nb_forward
             - nb_forward
             - nb_block
             - nb_block
             - nb_reply
             - nb_reply
+            - note
 
 
     """
     """
     user = g.user
     user = g.user
@@ -48,6 +49,7 @@ def get_aliases():
                     "nb_block": alias.nb_blocked,
                     "nb_block": alias.nb_blocked,
                     "nb_reply": alias.nb_reply,
                     "nb_reply": alias.nb_reply,
                     "enabled": alias.gen_email.enabled,
                     "enabled": alias.gen_email.enabled,
+                    "note": alias.note,
                 }
                 }
                 for alias in aliases
                 for alias in aliases
             ]
             ]

+ 2 - 0
app/dashboard/views/index.py

@@ -30,6 +30,7 @@ class AliasInfo:
 
 
     show_intro_test_send_email: bool = False
     show_intro_test_send_email: bool = False
     highlight: bool = False
     highlight: bool = False
+    note: str
 
 
     def __init__(self, **kwargs):
     def __init__(self, **kwargs):
         for k, v in kwargs.items():
         for k, v in kwargs.items():
@@ -230,6 +231,7 @@ def get_alias_info(
                 nb_reply=0,
                 nb_reply=0,
                 highlight=ge.id == highlight_gen_email_id,
                 highlight=ge.id == highlight_gen_email_id,
                 mailbox=mb,
                 mailbox=mb,
+                note=ge.note,
             )
             )
 
 
         alias_info = aliases[ge.email]
         alias_info = aliases[ge.email]

+ 12 - 0
tests/api/test_alias.py

@@ -48,6 +48,18 @@ def test_success_with_pagination(flask_client):
     assert r.status_code == 200
     assert r.status_code == 200
     assert len(r.json["aliases"]) == PAGE_LIMIT
     assert len(r.json["aliases"]) == PAGE_LIMIT
 
 
+    # assert returned field
+    for a in r.json["aliases"]:
+        assert "id" in a
+        assert "email" in a
+        assert "creation_date" in a
+        assert "creation_timestamp" in a
+        assert "nb_forward" in a
+        assert "nb_block" in a
+        assert "nb_reply" in a
+        assert "enabled" in a
+        assert "note" in a
+
     # get aliases on the 2nd page, should return 2 aliases
     # get aliases on the 2nd page, should return 2 aliases
     # as the total number of aliases is PAGE_LIMIT +2
     # as the total number of aliases is PAGE_LIMIT +2
     # 1 alias is created when user is created
     # 1 alias is created when user is created