From 64ef87442b933d47f4dbc9dfec9a5a16e522c375 Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Sat, 31 May 2008 08:05:18 +0000 Subject: [PATCH] =?utf8?q?ADD=20script=20permettant=20la=20mise=20=C3=A0?= =?utf8?q?=20jour=20de=20la=20BD=20et=20le=20rechargement=20des=20modules?= =?utf8?q?=20lors=20de=20la=20mise=20en=20production?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- css/1/pageMinichat.css | 2 +- doc/TODO.txt | 2 +- img/css1/return.png | Bin 0 -> 215 bytes img/css2/return.png | Bin 215 -> 215 bytes js/euphorik.js | 8 ++++--- js/pageMinichat.js | 8 +++++-- modules/erl/euphorik_bd.erl | 32 +++++++++++++++++++++++++++ modules/erl/euphorik_daemon.erl | 19 ++++++++++++++-- modules/include/euphorik_bd.hrl | 4 ++++ modules/include/euphorik_defines.hrl | 2 -- tools/mise_en_prod.erl | 16 ++++++++++++++ tools/mise_en_prod.rb | 8 ++++--- 12 files changed, 87 insertions(+), 14 deletions(-) create mode 100755 img/css1/return.png create mode 100755 tools/mise_en_prod.erl diff --git a/css/1/pageMinichat.css b/css/1/pageMinichat.css index daae129..338aaad 100755 --- a/css/1/pageMinichat.css +++ b/css/1/pageMinichat.css @@ -90,7 +90,7 @@ #page.minichat form .return { height: 16px; width: 32px; - background-image: url(../../img/css2/return.png); + background-image: url(../../img/css1/return.png); background-repeat: no-repeat; background-position: 5px 2px; vertical-align: top; diff --git a/doc/TODO.txt b/doc/TODO.txt index ec37827..475f9dc 100755 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -185,7 +185,6 @@ * Jamais reproduit avec Opera * Peut être un bug lié à jQuery * Reproduit sur Firefox 2 et 3 ! -[2] Lors du click sur le bouton slap/kick/ban il faut fermer la mini fenêtre [2] Après l'ajout d'une image il n'est pas possible de naviger depuis celle ci vers les autres images en utilisant Next et Prev de lightbox après l'avoir affiché [2] cliquer sur les smiles ne marche pas sous IE [2] Lors d'un logout il faut faire un full refresh (pour mettre à jour les messages auquel on répond par exemple) @@ -232,6 +231,7 @@ [ok] Les processus en attente ne se termine pas lorsque le socket est fermé (pour l'instant un timeout de 1heure est appliqué) [ok] Possibilité d'enregistrer plusieurs users avec le même login [ok] le return ne marche pas sous IE +[ok] Lors du click sur le bouton slap/kick/ban il faut fermer la mini fenêtre === Idées === Une fois l'idée validée elle est déplacée dans une version à venir. diff --git a/img/css1/return.png b/img/css1/return.png new file mode 100755 index 0000000000000000000000000000000000000000..51f19837bd134eb6e0f0a823ed8dcf3564b940e6 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W=!3HF^gw{O+QjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sf4OTgJHNAiv%mF|l$r9Iy66gHf z+|;}h2Ir#G#FEq$h4Rdj3pC|(mo}p+$MJ0wGx7nZSPCHk diff --git a/js/euphorik.js b/js/euphorik.js index a5116ce..c796e41 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -31,7 +31,9 @@ var conf = { nbMessageAffiche : 40, // (par page) pseudoDefaut : "", - tempsAffichageMessageDialogue : 4000, // en ms + tempsAffichageMessageDialogue : 4000, // en ms + tempsKick : 15, // en minute + tempsBan : 60 * 24 * 3, // en minutes (3jours) smiles : { "smile" : [/:\)/g, /:-\)/g], "bigsmile" : [/:D/g, /:-D/g], @@ -945,7 +947,7 @@ Client.prototype.ban = function(userId, raison, minutes) // par défaut un ban correspond à 3 jours if (typeof(minutes) == "undefined") - minutes = 60 * 24 * 3 + minutes = conf.tempsBan; jQuery.ajax({ type: "POST", @@ -970,7 +972,7 @@ Client.prototype.ban = function(userId, raison, minutes) Client.prototype.kick = function(userId, raison) { - this.ban(userId, raison, 15) + this.ban(userId, raison, conf.tempsKick) } /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/js/pageMinichat.js b/js/pageMinichat.js index 03bf142..b6c93d8 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -76,8 +76,9 @@ PageMinichat.prototype.charger = function() ).appendTo("body") this.util.infoBulle("Slap", $("#outilsBan #slap")) - this.util.infoBulle("Kick", $("#outilsBan #kick")) - this.util.infoBulle("Ban", $("#outilsBan #ban")) + this.util.infoBulle("Kick (" + conf.tempsKick + "min)", $("#outilsBan #kick")) + this.util.infoBulle("Ban (" + conf.tempsBan / 24 / 60 + " jours)", $("#outilsBan #ban")) + this.util.infoBulle("La raison", $("#outilsBan input")) } this.util.infoBulle("Ouvrir la conversation liée au troll de la semaine", $("#trollCourant .troll")) @@ -593,6 +594,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv) { thisConversation.client.slap(userId, $("#outilsBan input").val()) $("#outilsBan input").val("") + $("#outilsBan").hide() } ) $("#kick", outils).click( @@ -600,6 +602,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv) { thisConversation.client.kick(userId, $("#outilsBan input").val()) $("#outilsBan input").val("") + $("#outilsBan").hide() } ) $("#ban", outils).click( @@ -607,6 +610,7 @@ Conversation.prototype.flush = function(funClickOuvrirConv) { thisConversation.client.ban(userId, $("#outilsBan input").val()) $("#outilsBan input").val("") + $("#outilsBan").hide() } ) }, diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 56b7d7f..187d6ea 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -29,6 +29,7 @@ connect/0, connect/1, reset/0, + update/0, % users : nouveau_user/2, @@ -167,6 +168,37 @@ reset() -> end). +% Met à jour la bd, compare ?VERSION_BD avec la version dans la table 'proprietes' +% et exécute les patchs nécessaires. +update() -> + mnesia:transaction( + fun() -> + case mnesia:read({proprietes, version}) of + [#proprietes{nom = Version}] -> + update(Version); + _ -> + erreur + end + end + ). + + +% Mise à jour de la BD. +% attention : il est nécessaire de se trouver dans une transaction. +update(?VERSION_BD) -> fini; +update(Version) -> + patch(Version), + update(Version + 1). + + +% Applique une modification de la BD pour passer d'une version à la suivante. +% 1 -> 2 +patch(1) -> + ok. +% 2 -> 3 +%patch(2) -> + + % Ajoute un nouveau user et le renvoie nouveau_user(Pseudo, Cookie) -> F = fun() -> diff --git a/modules/erl/euphorik_daemon.erl b/modules/erl/euphorik_daemon.erl index 4e5d4ed..bf78f92 100755 --- a/modules/erl/euphorik_daemon.erl +++ b/modules/erl/euphorik_daemon.erl @@ -23,7 +23,7 @@ -module(euphorik_daemon). --export([start/1]). +-export([start/1, reload_euphorik/0]). -include("../include/euphorik_defines.hrl"). @@ -37,7 +37,7 @@ loop() -> timer:sleep(1000 * trunc(temps_prochaine_election() + 60)), euphorik_bd:elire_troll(), loop(). - + % Renvoie le nombre de seconde qu'il reste jusque au prochain lundi à l'heure donnée (l'heure est sur 24heures) % 86400 est le nombre de seconde dans un jour @@ -47,3 +47,18 @@ temps_prochaine_election() -> -((calendar:day_of_the_week(Date) - 1) * 86400 + H * 60 * 60 + M * 60 + S), % attention au cas où deux dates (maintenant et la date d'éction) ne se trouvent pas dans la même semaine. if Delta =< 0 -> Delta + 7 * 86400; true -> Delta end. + + +% Recharge tous les modules euphorik. +% Appelé lors d'une mise en prod. +% TODO : récupérer les noms à partir des .beam dans /modules/ebin +reload_euphorik() -> + lists:foreach( + fun(M) -> + code:purge(M), + code:load_file(M) + end, + [euphorik_minichat_conversation, euphorik_protocole, euphorik_requests, euphorik_bd, euphorik_daemon] + ). + + diff --git a/modules/include/euphorik_bd.hrl b/modules/include/euphorik_bd.hrl index 1cadcd6..d7cdd8a 100755 --- a/modules/include/euphorik_bd.hrl +++ b/modules/include/euphorik_bd.hrl @@ -18,6 +18,10 @@ % @author GBurri +% Version de la BD +-define(VERSION_BD, 1). + + % Pour générer des id -record(counter, { diff --git a/modules/include/euphorik_defines.hrl b/modules/include/euphorik_defines.hrl index b8a5b38..9fe5f8e 100755 --- a/modules/include/euphorik_defines.hrl +++ b/modules/include/euphorik_defines.hrl @@ -15,8 +15,6 @@ % You should have received a copy of the GNU General Public License % along with Euphorik. If not, see . -% Version de la BD --define(VERSION_BD, 1). % Le temps d'attente après une erreur de login (mauvais login/pass) : une demie seconde % Permet d'éviter (limiter) les attaques par dictionnaire diff --git a/tools/mise_en_prod.erl b/tools/mise_en_prod.erl new file mode 100755 index 0000000..850c3e8 --- /dev/null +++ b/tools/mise_en_prod.erl @@ -0,0 +1,16 @@ +#!/usr/bin/env escript +% coding: utf-8 + +% Executé sur le serveur après la copie des fichiers lors de la mise en production. +% Recharge les modules de euphorik et met à jour la BD. + +main(_) -> + net_kernel:start([flynux, shortnames]), + io:format("recharchement des modules..~n"), + _Pid = spawn_link(yaws@flynux, euphorik_daemon, reload_euphorik, []), + receive + {'EXIT', _, _} -> + io:format("mise à jour de la BD..~n"), + spawn(yaws@flynux, euphorik_bd, update, []) + end. + diff --git a/tools/mise_en_prod.rb b/tools/mise_en_prod.rb index 356e2f6..09cd568 100755 --- a/tools/mise_en_prod.rb +++ b/tools/mise_en_prod.rb @@ -25,8 +25,8 @@ Dir.chdir('../modules') puts `make` ### COPIE -$rep_remote = '/tmp/euphorik' #'/var/www/euphorik' -$host = 'localhost' #"gburri@euphorik.ch:#{rep_remote}" +$rep_remote = '/var/www/euphorik' +$host = 'euphorik.ch' $opt_rsync = '' def creer_remote_rep(rep) @@ -39,7 +39,7 @@ end creer_remote_rep('BD') Dir.chdir('..') -print `rsync #{$opt_rsync} index.html #{$host}:#{$rep_remote}` +print `rsync #{$opt_rsync} index.yaws #{$host}:#{$rep_remote}` print `rsync #{$opt_rsync} favicon.ico #{$host}:#{$rep_remote}` print `rsync #{$opt_rsync} -r css #{$host}:#{$rep_remote}` print `rsync #{$opt_rsync} -r --exclude 'autres' img #{$host}:#{$rep_remote}` @@ -57,3 +57,5 @@ Dir.entries(rep_js).each{|fichier| creer_remote_rep('modules') `rsync #{$opt_rsync} -r modules/ebin #{$host}:#{$rep_remote}/modules` `rsync #{$opt_rsync} -r pages #{$host}:#{$rep_remote}` + + -- 2.43.0