github.com/maenmax/kairep@v0.0.0-20210218001208-55bf3df36788/RELEASE.txt (about)

     1  2021/02/17 Maen v3.0.16
     2      * Bug 117024 - Fixing simplepush regression. r=Raffi  
     3  
     4  2021/01/15 Maen v3.0.15
     5      * Bug 115073 - enhancing the management of old devices. r=Raffi  
     6  
     7  2020/12/30 Maen v3.0.14
     8      * Bug 113921 - fixing simplepush protocol. r=Raffi  
     9  
    10  2020/12/22 18:17 Maen v3.0.13
    11      * Bug 113368 - correcting vapid check. r=Raffi  
    12  
    13  2020/11/24 Maen v3.0.12
    14      * Bug 110424 - correcting api version check. r=Raffi  
    15  
    16  2020/11/18 Maen v3.0.11
    17      * Bug 108379 - return 202 for offline messages. r=Raffi  
    18  
    19  2020/07/20 sedwards v3.0.10
    20      * Bug 96123 - When setting max_msg=value remove all space and quotes to ensure REP sees the value as an integer. r=Raffi  
    21  
    22  2020/06/08 bqiu v3.0.9
    23      * Bug 96123 - max_msg=0 does not disable max msg check in REP. r=Raffi  
    24  
    25  2020/06/01 sedwards v3.0.8
    26      * Bug 95685: Support passing max_msg in as a variable in the docker-compose file on container startup. r=Bin
    27  
    28  2020/05/29 bqiu v3.0.7
    29  Fixes :
    30       Bug 85112: Cassandra Driver Changes for Multi DC setup.
    31  
    32  2020/05/28 sedwards  v3.0.6
    33      * Bug 92148 - Correct copy and paste error in automated container build. r=Raffi
    34  
    35  2020/05/28 sedwards  v3.0.5
    36      * Bug 92148 - Carry over CI/CD Pipeline from old gorep repo and use empowerthings runner for automated builds. r=Raffi
    37  
    38  2020/05/11 Maen  v3.0.4
    39  Fixes :
    40      * Bug 90233 - fixed fetching TTL value from headers on multicast API.
    41  
    42  2020/05/05 bqiu v3.0.3
    43  Fixes :
    44      * Bug 92015 - fmt.Fprintf should ONLY OCCUR after a rw.w.WriteHeader in REP. -r=raffi
    45  
    46  2020/05/01 bqiu v3.0.2
    47  Fixes :
    48      * Bug 91938 - Add http respond code for all return cases in REP.
    49  
    50  2019/03/20 Maen v0.14.12-p4-USA
    51  
    52  This GoREP version is specific to US market, and have included solving two issues related to multicast API. Those two multicast API issues need to be fixed the same way in JIO version as well. This version will be dockerized (run using docker technology). The ONLY difference between this version and v0.14.12-p4 is the two fixes of multicast API bug, which were repoted in those two bugs:
    53  
    54       57970: REP multicast API makes multiple http responses 
    55       57971: REP multicast API checks for end-to-end encryption requirements 
    56  
    57  
    58  2019/02/05 Afsal v0.14.12-P4 (back porting v0.14.12-P2 changes)
    59  Fixes :
    60      52495 : Optimized LUA script to avoid unnecessary read calls to redis slave nodes. 
    61  
    62  2019/01/17 Maen  v0.14.12-P3
    63  Fixes :
    64      Bug: 55132
    65      * Upgraded redis-go driver to v6.15.1
    66      https://github.com/go-redis/redis/tree/v6.15.1
    67  
    68  2018/12/05 Afsal v0.14.12-P1
    69  Fixes :
    70      52512 : Code modified to redirect all write commands to master nodes only if driver retry the command due to network error like EOF. 
    71  
    72  2018/11/14 Afsal v0.14.12
    73  Fixes : 
    74      * Bug 49842 - Optimised code to reduce uasage of LUA script on redis. 
    75      * Bug 51767 - Scaling has been done to utilise Redis Slave nodes for Read operations. 
    76  
    77  2018/11/05 Afsal v0.14.11
    78  Fixes : 
    79      * Bug 49842,49841 - Count limit validation is done by LUA script. So the operation is atomic now. It will solve issues like 
    80        "Message Count Limit breached in Redis"  and "Message count for a UAID in Cassandra DB and Redis found to be out of sync"
    81  
    82  
    83  2018/11/02 Afsal v0.14.10
    84  Feature: 
    85      * Bug 50746 - Maximum number of socket connections for a node of a redis cluster is now configurable with Connection_Pool_Size parameter. Its default value is 10.
    86  
    87  2018/10/29 Afsal v0.14.9
    88  Fixes: 
    89      * Bug 50745 - Fixed a bug. Now code returns 500 response code for any cassandra transaction errors instead of 410. 
    90  
    91  2018/10/22 Afsal v0.14.8
    92  Fixes: 
    93      * Bug 49898 - Added error codes along with error response code to App Server
    94  
    95  2018/10/18 Afsal v0.14.7
    96  Fixes: 
    97      * Bug 48995 - Added payload size validation and it is controlled by "max_msg_length" configuration parameter
    98      * Bug 49898 - Added error description along with error response code to App Server
    99  
   100  2018/10/15 Afsal v0.14.6
   101  Fixes: 
   102      * Modified code to remove expiry added for redis records 
   103      * Bug 49804 - Handled redis transaction errors. 
   104  
   105  2018/10/11 Maen v0.14.5
   106  
   107  Feature: Added Redis password authentication in GoREP."REDIS_PASSWORD" environment variable should be set with an encrypted value. It should 
   108  be encrypted with the same fernet crypto-key used for encrypting Cassandra password. If max_msg conf parameter is set to zero, it means that we don't want to activate message limitation feature, i.e. we don't want to connect to Redis DB, thus, GoREP will NOT try to connect to Redis, and concequently, it won't complain about not finding REDIS_PASSWORD environment variable.
   109  
   110  2018/10/05 Afsal v0.14.4
   111  Fixes:
   112      * GIT merge conflict which affected message limitation functionality resolved 
   113  
   114  2018/10/03 Afsal v0.14.3
   115  Fixes:
   116      * Bug 49435 Removed Unwanted prints from logs 
   117      * BUg 48142 Removed "not found" string from REP
   118  
   119  2018/09/27 Maen v0.14.2
   120  Fixes:
   121      * Bug 48973 Prevent storing message of TTL= 0 seconds in Cassandra DB.
   122  
   123  2018/09/26 Afsal + Maen v0.14.1
   124  Fixes:
   125      * Bug ID: 48783 Print CEP hostname only for online notifications
   126      * Bug ID: 47862 Print App Server IP for all error messages 
   127      * Changed source code  to fich the value of table_prefix configuration parameter and use it for Redis records prefix.    
   128  
   129  2018/09/24 Maen v0.14.0
   130  Fixes:
   131      * Added message limitation per UAID feature using Redis DB.max_msg parameter added to configure the limitation. Value of zero means that there will be no limitation applied per UAID.
   132  
   133      * Re-organized source code libraries (removed cumulis library and moved all of its content to be inside autoendpoint library).
   134  
   135  2018/09/14 Maen v0.13.5
   136  Fixes:
   137      *Added a new module (executable) to remove provided list of subscriptions from Cassandra DB.
   138      
   139      * Modify Makefile to generate executables in bin folder for all modules by default.    
   140      * Example of valid request:
   141       ./bin/sub_remover -endpoint ./endpoints.txt -crypto_key <CRYPTO_KEY> -cass_user <USERNAME> -cass_pass <PASSWORD>  -cass_addr kaios3-cass002
   142  
   143  2018/09/13 Afsal v0.13.4
   144  Fixes:
   145      *Bug Id : 48569
   146          - Solved issue with reading public key (p256ecdsa) from cryptokey header 
   147  
   148  2018/09/07  Maen v0.13.3
   149  Fixes:
   150      * Modified router_worker module to response 400 bad request to application server. Before it only printed
   151        the error and returned.
   152      * Bug Id : 48320
   153             - Removed some debug logs from fernet.go file .
   154      * Modified some notes (comments) in the source code to reflex on the latest modifications.
   155  
   156  2018/09/07  Raffi v0.13.2
   157  Fixes:
   158      * Isolated the definition of sanitize_header into utils package and made
   159        the function public so that it can be called from any place.
   160      * Modified router_worker.go file in order to call this public function.
   161      * Added test tool with test cases to validate the Sanitize_Header function
   162      * Modified the Makefile to compile the test tool with 'make test'
   163  
   164  2018/09/06  Raffi v0.13.1
   165  
   166  Fixes:
   167      * Loosen the too restrictive Standard Base64 format to support URL Safe Base 64 format as well.
   168      * Make sure the output (i.e. cleaned header)  is a URL Safe Base 64 format.
   169  
   170  2018/09/06  Raffi v0.13.0
   171  
   172  Fixes:
   173      * Rewrite verify_and_clean_headers and renamed it sanitize_header
   174      * Corrected a small issue in Makefile when doing a clean
   175  
   176  2018/09/02  Maen  v0.12.0
   177  
   178  Fixes:
   179  
   180      *Removed a dublicate calling of verify_and_clean_headers method in router_worker.go file.. 
   181      *Added a replacement of "," by ";"  for received Crypto-Key and Encryption headers to avoid falilure of header splitting in verify_and_clean_headers method.
   182  
   183  
   184  2018/08/31  Maen + Raffi - v0.11.9
   185  
   186  Fixes:
   187      * Cleaning the Crypto-Key and Encryption headers by removing the eventually
   188        trailing '=' signs at the end of the value.
   189      * Enforcing the presence of 'salt' label in Encryption header
   190      * Enforcing the presense of 'dh' label in Crypto-Key header
   191      * Fixed a typo from Varify_AppServer_ID to Verify_AppServer_ID
   192  
   193  2018/08/29  Maen + Afsal - v0.11.8
   194  Changes:
   195    Bug Id: 47782
   196  - Modified behavior to save the message if CEP node is down, and to return 201 instead of 500.
   197  - Modified start_rep.sh script. Was stopping suddenly without any error.
   198  
   199  2018/08/25  Maen - v0.11.7
   200  Changes:
   201  - Remove headers incase of empty payload messages.
   202  
   203  2018/08/13  Afsal - v0.11.6
   204  Changes:
   205      Bug Id :46559 
   206          - Added StartREP and StopREP script in GoREP build
   207      Bug Id :46479
   208          - Moved irrelevant prints to debug in log
   209  
   210  
   211  2018/08/10  Maen - v0.11.5
   212  Changes:
   213     - Added graceful shudown mechanism incase of Ctrl+C or Kill <PID>
   214     - Added two optional command line argument flags for CPU and Memory profiling.
   215  
   216  2018/08/06  Afsal - v0.11.4
   217  
   218  Changes:
   219    Bug Id : 46109
   220      - GoREP Support DECIMAL for message tables of May,June, July and August Month Tables
   221    Bug Id : 46138
   222      - Issue with App server IP printing in the log has been solved
   223  
   224  2018/07/27  Maen- v0.11.3
   225      Changes:
   226         Modified worker code to pass headers to CEP incase of a webpush notification wih empty payload. The reason of this change is that CEP does not deliver any header-less offline notifications. Whatsapp notifications are empty (no payload) and they need to be saved and delivered incase a device is offline.
   227  
   228  2018/07/19  Afsal - v0.11.2
   229  
   230  Changes:
   231    Bug Id : 44613
   232      1. Modified log printing for uaid and chid not found cases.
   233      2. Optimized code to print application server IP.
   234  
   235  
   236  2018/07/17  Afsal - v0.11.1
   237  
   238   * Added hostname to statsd gauges.
   239  
   240  
   241  
   242  2018/07/11 Maen  - v0.11.0
   243  
   244  New Features:
   245  
   246  * Added an extra checking to varify that the application (Channel ID) is registered for push service. Checking will be done by quering Cassandra DB's message table of that UAID and varifying if that UAID has the CHID as one of its set entries of "chids" column.
   247  
   248  * If current_month entry for a UAID is not set in router table (null).
   249  GoREP will drop the user subscription. Please refer to /data/autopush/autopush/web/webpush.py
   250  
   251  * GoREP now will check the expiration of JWT as the first varification step.
   252  
   253  
   254  2018/07/02 Afsal  - v0.10.3.8
   255  
   256  Bug Id: 44066
   257  Changes :
   258     - Resolved a bug to print response code 404 in case of error
   259  
   260  2018/06/26  Afsal  - v0.10.3.7:
   261  Changes:
   262  
   263       1. Client IP (Application server) is added in the log for notification request. It will work only if X-Forwarded-For header is set
   264       2. Log folder is created
   265       3. Log configuration modified so that log files will be generated in log folder only
   266  
   267  
   268  2018/06/14  Afsal  - v0.10.3.6:
   269  Changes:
   270  
   271       Log level changed from DEBUG to INFO
   272  
   273  
   274  2018/06/13  Afsal  - v0.10.3.5:
   275  Changes:
   276  
   277       For offline case the log format changed to "Message saved successfully  uaid:<uaid>" irrespective of the debug flag
   278  
   279  
   280  
   281  2018/06/13  Maen  - v0.10.3.4:
   282  Changes:
   283  
   284      * Logs has changed to print response code to application server instead from CEP.
   285        when debug flag is deactivated.
   286      * Changed "Response code to application server to" in logs to "responseCode".
   287      * No subscription found for ID was changed to "No subscription found for uaid".
   288  
   289  2018/06/12  Afsal - v0.10.3.3:
   290  
   291  Changes:
   292  
   293      * Logging changed to key:value format :
   294        responseCode:<response code> uaid:<uaid> cepHostname:<cep node ip address>
   295  
   296  
   297  2018/06/08  Maen - v0.10.3.2:
   298  
   299  Changes:
   300  
   301      * When debug flag is not activated, GoREP will only print:
   302        reponse code + uaid + cep node ip address 
   303        On each message delivery to CEP node.
   304  
   305        if the printed response code is 200, it means successful delivery for that UAID.
   306        if the printed response code is 404, it means router miss for that UAID.
   307        
   308  
   309  2018/05/31  Maen - v0.10.3.1:
   310  
   311  Feature for the patch:
   312    * Clean logs.
   313    * Printing UAID for successful message saves, and for router misses.
   314    * GoREP will now consider the message passed in the broadcast body in "msg" key. Before it made the assumption that message will always be empty (which is the use case for multicast), but it was better to read and send the content of the message for potential future usages.
   315  
   316  
   317  2018/05/30  Maen - v0.10.3:
   318  Bug fix:
   319  
   320  *Offline multicast was not sending the request headers to CEP, which caused an isse on messages delivery when device is back and online again. The reason is that CEP will save the record to Database without headers and that will lead CEP to send an empty noitification ({}) to client instead of sending a full, proper-formated notification JSON message.
   321  
   322  
   323  2018/05/18  Maen - v0.10.2:
   324  New Features:
   325  
   326  * Enhanced broadcast API in two modifications:
   327  
   328  [1] Added the ability to braodcast to a v1 only, v2 only and mix of v1 and v2 endpoints, however each single broadcast request need to have a valid public key of app server in headers and also a valid VAPID JWT even if all the endpoints in the list are v1 endpoints, still, app server need to provide the key and the token.
   329  
   330  [2] Before, if there is an n number of VAPID endpoints in the request, the API was making an n number of JWT checkings. Now, it is optimized to make the checking only one time, and to iterate over the endpoints. After that one time checking, the for loop will start to create workers for each endpoint. During the iteration, if the endpoint is:
   331  
   332    - V1 endpoint: Then GoREP will proceed to notify the corresponding UAID as normal v1 message delivery.
   333  
   334    - V2 endpoint: Then GoREP will check if the public key extracted from the result of decrypting that V2 endpoint matches with the one included in the header of the POST request on /bwpush/ API or not. 
   335  
   336    As a result, if in the multicast request, there is an n number of v1 endpoints and m number of v2 endpoints, then:
   337  
   338    Number of workers created = n + m  ( a worker per endpoint)
   339  
   340    Number of JWT checkings = 1 checkig only before entering the for loop.
   341  
   342    Number of public key comparisons  = m
   343  
   344  * Tried to reduce (optimize) the number of variables created in the worker module.
   345  
   346  * Added a checking before storing message into databas. If the year is 2018 and  "current_month" table entry for a particualr UAID is May and beyond (June, July, ...)   or if the year is greater than 2018, then GoREP will save into INT ttl and timestamp DB columns else, GoREP will save into DECIMAL ttl and timestamp DB colums. 
   347  
   348  
   349  2018/05/14  Maen - v0.10.1:
   350  New Features:
   351  
   352  * Changed log file name format to be a timestamp instead of serial
   353    serial numbering from 0 to 999.
   354  
   355  
   356  2018/04/30  Maen - v0.10.0:
   357  
   358  New Features:
   359  
   360  * Cassandra's hosts can all be added now in configuration file
   361  and separated by a ","
   362  
   363  * Enhanced logs. Incase of deactivated debug flag, router miss or successfull delivery only will be printed.
   364  
   365  * Modified database query to fetch "current_month" column to be used to store offline messages.
   366  
   367  
   368  2018/04/19  Maen - v0.9.4:
   369  
   370  Bug fix:
   371      *Better managed different cases of different response codes from CEP.
   372  
   373  
   374  2018/04/19  Maen - v0.9.3:
   375  
   376  Bug fix:
   377      *Removed creating a go routen on each multicast endpoint.
   378  
   379  
   380  2018/04/19  Maen - v0.9.2:
   381  
   382  Bug fix:
   383      * Enhanced some logs.
   384  
   385  2018/04/19  Maen - v0.9.1:
   386  
   387  Bug fix:
   388      * Fixed Multicast  API message payload size limitation issue.Before it was not set properly.
   389  
   390  2018/04/16 Maen - v0.9.0:
   391  
   392  New Features:
   393      * Added Statsd support. Including configuring Statsd Host + port number in 
   394        configuration file.
   395      * Addressed different kind of responses to application server to memic the 
   396        behaviour of Python REP.
   397      * Corrected the spellings of few logs.
   398  
   399  
   400  2018/03/26 Maen - v0.8.1:
   401  Bug fix:
   402      * Corrected the format of received message to a base64 raw URL encoding.
   403  2018/03/23 Maen - v0.8.0:
   404  
   405  New features:
   406  
   407      * Added SimplePush API.
   408      * Added SimplePush GoFlip2  API /update/
   409      * Added VAPID feature in Go REP (v2 API).
   410      * CLean logs.
   411      
   412  2018/01/29 Maen - v0.7.0:
   413  
   414  New features:
   415  
   416      *Added the multicast API /bwpush/
   417      *Added payload size limits. Limits of Payload size of the multicast API
   418       can be set unsing "Max_Payload" configuration variable in autopush_endpoint.conf file.
   419  
   420  
   421  2017/12/20 Maen - v0.6.0:
   422  
   423  New feature:
   424  
   425      *Added 'keyspace' configuration parameter in autopush_endpoint.conf file.
   426  
   427  
   428  2017/12/20 Maen - v0.5.0:
   429  
   430  New feature:
   431  
   432      *Added Cassandra password decryption.
   433  
   434  
   435  2017/12/18 Maen - v0.4.0:
   436  
   437  New feature:
   438  
   439      *Added /health_status API to return 200 OK. That will be used for Haproxy server.  
   440  
   441  
   442  2017/12/18 Maen - v0.3.0:
   443  
   444  New feature:
   445  
   446      *The implementation of offline messages handling. 
   447  
   448  
   449  2017/12/06 Maen - v0.2.2:
   450  Bug fix:
   451  
   452      *Worked with Raffi on fixing global variable issue.
   453      The issue is in router_worker.go file.
   454      A global variable was used to save notification details (headers, channel ID, crypto key, etc..).
   455      That has created a synchronization issue in the sense that if workers  A, B, and C are created, 
   456      worker B can change a global variable information before worker A can fetch it,
   457      which will result in fetching (and sending) the wrong crypto key by worker A.
   458      And the more worker objects are created, the more liklely for this scenario to occure.
   459      Fix was done by getting rid of global variable and creating variables that are "sepecific to" that worker or object.
   460  
   461  
   462  2017/11/29 Maen - v0.2.1:
   463  Bug fix:
   464  
   465      * Libraries had incomplete source files.Corrected.
   466  
   467  2017/11/28 Maen - v0.2.0
   468  
   469  New feature:
   470  
   471      * New logs to report the response from CEP.
   472  
   473  2017/11/28 Maen - v0.1.1
   474  
   475  Bug fix:
   476      * Array out of index when sending a notification with empty data. Solution was to check if the data is NOT empty first, and befor manipulating  the array.
   477  
   478  
   479  2017/11/23 Maen - v0.1.0
   480     Kaios push Alpha version:
   481     
   482     * The first working version. This version does the basic routing of push message.
   483  
   484     * This version does NOT support offline messages, as it is still being worked on.
   485  
   486     * This version will read CassandraDB user name and password as an environment variables, however it does NOT yet support cassandraDB password decryption. To be added.