more robust sql scripts adding IF EXISTS to DROP TABLE statementes
[brisk.git] / TODO.txt
index 12580ed..a84c3e9 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
-/* 
+ TODO |
+------+
+
+  FEATURES |
+ ----------+
+   - APPRENTICE
+     Phase1
+     DONE - ip check and time limit
+       DONE . sql
+         DONE . temporary table limitation
+       DONE . message
+     DONE - usermgmt extension
+     DONE - add close button
+     DONE - add apprentice icon
+     - match counters
+       . sql for match counters
+       . migration script for old users
+
+     Phase2
+     - new info system
+     - guarantee for apprentice
+   
+    - MENTORS
+     - listen all
+
+   - BUDDY LIST
+     - white list
+     - black list
+     - delegate
+
+   - DEANONYMIZER
+      . study how to move login delta injection
+
+   - CERTIFICATIONS
+      DONE . Guarantes for certified-only (buttons choice managed)
+      DONE . Tables for certified-only
+      . Term Of Use
+      . Placing for certified-only
+
+   - IP CLASSES BAN
+      DONE . BAN and BLACK lists added
+      DONE . update method to SIGHUP manager
+      DONE . create constructor refactored
+
+   - PLACEMENT-NORMALIZATION
+      DONE . Normalize previous points
+      DONE . Denormalize "Info" view
+      DONE . Denormalize explained matches
+      DONE . Check placement
+      DONE . Distinguish between inherited mult and local mult
+
+   - AUTO-MAINTENANCE
+     DONE . Terms Of Service acceptance
+       DONE . print date of hard switch
+       DONE . TOS version
+       DONE . user TOS acceptance (db field)
+       DONE . show TOS ([show me later, yes, no]/[yes, no])
+       DONE . switch-off date
+       DONE . manage accept
+       DONE . manage refuse
+       DONE . show current TOS
+       DONE . disable user reason integer field and remove SUSPEND state (db, php)
+       DONE . fix tos layout
+       DONE . opt - download TOS
+       . opt - checkbox for anonimous users with message when not checked
+       . opt - button enabled when arrived to the bottom of the TOS only
+       . opt - check TOS version between config file and TOS file
+     DONE . show guarantee (/guar <login> command)
+       DONE . multi-language
+       DONE . command documentation
+       DONE . manage disagreeding users investigation
+       DONE . self guaranteed
+     . DONE New Users Guarantee Procedure
+       . DONE Change guarantee workflow
+       . DONE Db update
+
+         UserA                 UserB                      Admin
+-------------------------------------------------------------------------
+      guarante UserB
+           |
+           v
+      Save on mail
+         table,
+      email to UserB
+    (Disabled, MAILED)
+-------------------------------------------------------------------------
+                           Receive email
+                           to check address
+                                 |
+                                 v
+                           Click on link
+                                 |
+                                 v
+                           Check on mail
+                               table,
+                           update user status,
+                           delete mail rec
+                          (Disabled, TOBECHK)
+-------------------------------------------------------------------------
+                                                       admin panel
+                                                       accept user
+                                                            |
+                                                            v
+                                                     send email with
+                                                     password,
+                                                     update user status
+                                                      (Normal, NONE)
+-------------------------------------------------------------------------
+                           Receive email
+                           with password
+-------------------------------------------------------------------------
+
+     DONE . More user info in the list
+     DONE . Manage date to display when a user was required
+     . Email-address expiration check
+     . Account expiration
+
+
+   DONE - CONTINUE FEATURE
+     DONE . replace explicit strings with multilanguage array
+     DONE . add a php downloader with filtering on allowed requests
+     DONE . save points every game
+     DONE . modify points calculation to include order and mazzo
+     DONE . exclude not standard types from statistics
+         DONE . daily reports (1 for each active tournament)
+         DONE . monthly stats (for normal match only)
+     DONE . show current match ID when created
+     DONE . add info about continue to the info page
+     DONE . add command to continue
+         DONE . check consistency of the request
+     DONE . rearrange users and game status to continue the selected match
+     DONE . investigate user reordering ??
+
+   - WEBSOCKET TRANSPORT
+     . refactoring $enc attribute management
+     DONE . reintroduced $enc = 'plain' for websocket
+     DONE . fallback for not correct WS version
+     DONE . fini of ws stream
+     DONE . reactivate compression
+     DONE . fix xynt_test01
+     DONE M2: brisk working
+     DONE . manage multiport apache config
+     DONE . manage headers correctly in sac-a-push
+     DONE . manage transport.close method where required
+     DONE . xynt_stream: manage fallback to multiple ports
+     DONE . manage fini for ws
+     POST . server: manage input data from clients
+     POST . manage ping/pong (seems not required)
+
+     DONE . client (xynt_streaming.js)
+     DONE . server (transport.phh)
+
+     DONE M1: xynt_test01.php working
+
+
+   - improved S
+     . db update (add components, maybe single string)
+     . filter in index.php
+     . filter in index_wr.php
+
+   - prefs API:
+     . prefs_assign(content): assign json content as output var
+     . prefs_apply(prefs_new): apply new content to g_prefs and system
+     . prefs_load(content): load json content and apply to g_prefs and system
+
+     . prefs_update: update preferences temporarly
+     . prefs_save: save to the server the new prefs
+
+   - preferences (listen into preferences)
+        // js var, volatile server, (db server || cookie)
+        temporary: js var, volatile server
+        permanent: js var, volatile server, (db server || cookie)
+
+     . data from db OR, if missing, from cookies
+
+     . update values
+     . database change
+     . MANAGE NOT AUTH USERS
+
+   - preferences (with "modifiable S")
+     . Mod. S: new flag into database
+     . graph infrastructure
+     . new box to edit color
+
+  MAJOR |
+ -------+
+   - BUG: some connection to the named socket fails
+   - Not simultaneous more then one stream
+
+
+  MINOR |
+ -------+
+   WIP - try to be more antivirus-friendly
+   - multiple rows between games
+   - packetize and automatize php-ancillary and apache module
+   - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
+
+
+  DONE |
+ ------+
+   DONE - temporarly server hung not reflected on user timeouts
+   DONE - timeouted users are still be able to sit down (only the first at the table is banned)
+   DONE - page still opened after the server restart
+   DONE - log_legal address fix
+   DONE - manage too fast reload in xynt-streaming
+   DONE - add xhr as transport layer and manage different streams better
+   TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
+   TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
+   DONE - save/restore database
+   DONE - into the room local step remains -1
+   DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
+   DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
+          in the first tentative, the second works
+   DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
+          problem was a call to a static parent method instead of the overrided child method,
+          substitute self:: with the dynamically get class::)
+   DONE - garbage management
+
+   DONE/FROZEN - problem with getpeer (HOSTADDR)
+
+   DONE - slow cards distribution
+   DONE - substr to mb_substr
+   DONE - parametrizations:
+          . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
+          . parametrization of SITE_PREFIX(_LEN) define
+          . move the name of the named socket into the configuration file
+   DONE - manage and test cross forwarder between table and room
+   DONE - setcookie (for tables only and persist prefs)
+   DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
+   DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
+   DONE - unneeded garbage_time.expired access
+   DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
+   DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
+   DONE - 404 wrong page management (remove directories redirections (es. brisk/))
+   DONE - configuration file management
+   DONE - app level keep-alive
+   DONE - index_wr other issues
+   DONE - from room to table
+   DONE - from table to room
+   DONE - chunked
+   DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
+   DONE - partial write for normal page management
+   DONE - index_rd_ifra: last_clean issue
+   DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
+   DONE - bug: after restart index_rd.php receive from prev clients a lot of req
+   DONE - index_wr.php::chat
+   DONE - index_wr.php::exit
+   DONE - index_rd.php porting
+   DONE - generic var management from internet
+   DONE - index.php auth part
+   ABRT - index_wr.php::reload - reload is js-only function
+   ABRT - keepalive management - not interesting for our purposes
+
+ BRISK4 (mammuth)
+ ======
+
+ - STEP MANAGEMENT VERIFY
+ Slim Paragraph
+ DONE - move the garbage timeout on file
+ DONE - in index_rd load all data only when required
+ - briskin5 alignment
+   DONE . extern del garb_timeout
+   DONE . user_load parameters verify
+   DONE . Bin5::load_data and Bin5::save_data refactoring with
+          data split
+   . move many function into "Bin5 class"
+ - garbaging of .step files
+
+ DB: - initial usage
+     DONE - configurabilità file o db
+     DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
+     DONE - travasatore file to pg
+       DONE - travaso punteggi
+       DONE - memorizzazione nuovi i punteggi nel db
+       DONE - gestione classifiche in SQL
+         DONE - produrle
+         DONE - mostrarle
+
+     STEP 1.1
+       DONE - points archiver
+
+     STEP 1.2
+       DONE - partial usability if database go down.
+
+     STEP 1.5
+     - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
+
+     STEP 2
+     - modifica password   
+     - ripristino password 
+
+     STEP 3
+     - comunicazioni di aggiornamento (stato salvato sul server) 
+
+ DONE - var $G_base aggiunta per gestire include in include da path differenti
 
  BRISK3 (trusty)
  ======
+  DONE - donameter
+    DONE - G_donors
+    DONE (WOW!) - js object with infos
+    DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
+           to prevent fast reload)
+    DONE - cookie per non assillare e visualizz.
+    DONE - graphical donameter
+    WIP content (in conf.)
+
+  DONE - numero di tavoli auth-only nel .brisk-install
+  - isolation
+    TEST - ricalcolo delle persone in piedi quando si cambia modalità
+    DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
+    DONE - non leggere le chat di quelli non autenticati (in isolation)
+    DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
+    DONE - treni non auth da nascondere 
+    DONE - verso gli altri ??: uguale a prima
+
+  finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
+  coniglio
+  only auth strictly
+  placing limits to config file
+
+Dunque, 
+
+- come vengono aggiornate le classifiche: ogni giorno alle 23:58
+
+- cosa cambia tra le tre coppie di classifiche: 
+  ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
+  per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
+
+- come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
+
+Un esempio per chiarire:
+
+  l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
+    -2, 1, 2, 1
+  lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
+  
+  a parità di score tra utenti va più in alto chi ha giocato più partite.
 
- BUG
- ===
- DONE   righe troncate
-    - problema col treno se mouse sopra mentre stringe (verif)
-    DONE - questione "a monte" che:
-       DONE - lascia fuori il bottone
-       DONE - scrive &agrave e compagnia
-    DONE - refresh act_table when unauthorized
-    DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
+Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
+sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
 
- MINOR
-    DONE - refactoring of the owner name (auth attr for owner name)
-      DONE - room
-        DONE - at chat input line 
-        DONE - in the chat output line
-        DONE - deauth management
-      DONE - table
-        DONE - at chat input line
-        DONE - in the chat output line
-        DONE - for user area of other users
-        DONE - deauth management
-    DONE - alart to one user
-
- TODO
- ====
-   - strong ban: "expire time|IP|session|(nick if authenticated)"
-     DONE - login: se auth      -  verifica solo gli expire per quel nick
-     DONE -        se non auth  -  verifica gli expire per IP e sessione
-     - riscrivere i messaggi
-
- DONE - login 
- DONE -   se pass:
- DONE -     richiede per l' utente un token (tutta la parte backend va un minimo studiata)
- DONE -     lo legge, ci hasha la password
- DONE -     invia la pass al server hashata
- DONE -   se non pass:
- DONE -     check del login e return corretto
- DONE -     oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
- DONE -     rename ghost if logged
- DONE -     onunload_cb e onbeforeunload_cb !!! 
- DONE -   da change attrs a change class (input field)
- DONE -     colore del bg per arrivare ad essere omogeneo
- DONE -     cambiare path e file di config
- DONE -   login with or without pass
- DONE -   registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
- DONE -     segnalare tavoli solo per auth
- DONE -     rename restriction at auth table
- DONE -     change nick (strcasecmp)
- DONE -   refact js tables to handle flags
-      restrict challenge per IP
-      restricted charset for login
-
-   - login modify
- DONE  - db (fake)
- DONE  - display auth
-     - manage preferences 
-   - db (minimal)
-     - db admin page
-     - user db admin
-     - use db 
-     - admin db
- DONE  - work background
- DONE  - reserved tables
+
+  
 
 
 
-      STUDIARE UN ANTI-DOS
 
+ BUG
+ ---
+  DONE - paste da demauroparavia
+  DONE - recupero partita per re-login con password
+  DONE - problema "|" nei nomi (manca enhance degli script lato server)
+  - problema col treno se mouse sopra mentre stringe (verif)
   
-   DONE - room javascript refactoring
+ MINOR
+ -----
+
+ NORMAL
+ ------
+
+  - win test
+  WIP - /listen 
+    DONE - skin della textarea
+    DONE - set cookie 
+    DONE - init client (read from cookie) - ALWAYS BY SERVER
+    DONE - init server
+    DONE - after cookie check auth-only when no-auth case
+    DONE - aggiungi info accanto a "Chat"
+  DONE - /mesgtoadm
+  DONE - img dei comandi
+
+  DONE - form per garantire utenti (accoda in un file nel formato corretto)
+  DONE -   process request
+  DONE -   show form
+  DONE -   close butt
+  DONE -   submit form
+  DONE -   process form js side 
+  DONE -   process form
+  DONE -   documentazione in help
+
+  DONE - user status
+
+  DONE - aggiornare help
+  DONE -   overflow management
+  DONE -   for status
+  -   for password
+
+  DONE - reload home
+  - notify for long pages
+
+  - buddy list
+  - silenziastolti vari (fino al buddy import)
+  - restrict challenge per IP
+  - restricted charset for login
+  - watchdog
+
+  - db (minimal)
+    - db admin page
+    - user db admin
+    - use db 
+    - admin db
+
+    - studiare un anti-dos
+  - login modify
+ DONE  - db (fake)
+ DONE  - display auth
+    - manage preferences 
 
  minor
  -----
    - auth after login
 
+----- done ------
+
+ BUG
+ ---
+  DONE   righe troncate
+  DONE - questione "a monte" che:
+  DONE   - lascia fuori il bottone
+  DONE   - scrive &agrave e compagnia
+  DONE - refresh act_table when unauthorized
+  DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
+
+ MINOR
+ -----
+  DONE - refactoring of the owner name (auth attr for owner name)
+  DONE   - room
+  DONE     - at chat input line 
+  DONE     - in the chat output line
+  DONE     - deauth management
+  DONE - table
+  DONE   - at chat input line
+  DONE   - in the chat output line
+  DONE   - for user area of other users
+  DONE   - deauth management
+  DONE - alart to one user
+
+
+ NORMAL
+ ------
+  DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
+  DONE   - login: se auth      -  verifica solo gli expire per quel nick
+  DONE   -        se non auth  -  verifica gli expire per IP e sessione
+  DONE   - riscrivere messaggi
+
+  DONE - login 
+  DONE   - se pass:
+  DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
+  DONE     - lo legge, ci hasha la password
+  DONE     - invia la pass al server hashata
+  DONE   - se non pass:
+  DONE     - check del login e return corretto
+  DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
+  DONE     - rename ghost if logged
+  DONE     - onunload_cb e onbeforeunload_cb !!! 
+  DONE   - da change attrs a change class (input field)
+  DONE     - colore del bg per arrivare ad essere omogeneo
+  DONE     - cambiare path e file di config
+  DONE   - login with or without pass
+  DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
+  DONE     - segnalare tavoli solo per auth
+  DONE     - rename restriction at auth table
+  DONE     - change nick (strcasecmp)
+  DONE   - refact js tables to handle flags
+  DONE - room javascript refactoring
+
+  DONE - work background
+  DONE - reserved tables
+
 
  BRISK2 (spawn)
  ======
    DONE - standup centrati
    DONE - current player - in info
    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
-   DONE - wellcome lines in the chats (room and table)
-   DONE - wellcome lines in the chats (room and table)
+   DONE - welcome lines in the chats (room and table)
+   DONE - welcome lines in the chats (room and table)
    DONE - nomi in primo piano se vai sul quadrato   
    DONE - to pass explicit config file to INSTALL.sh
    DONE - flag to create a config file