Author Archive Patrick

ByPatrick

MySql, wordpress et reverse engineering

Bonjour,
aujourd’hui j’ai essayé de retrouver où se trouve les valeurs de “image mise en avant” et “etiquette” de wordpress dans la base de données.

Pour ce faire, j’ai installé wordpress sur un de mes serveurs MySql car la fonction que j’ai besoin d’utiliser n’est pas disponible pour des raisons de sécurite sur une instance partagée.

Ensuite, j’ai lancé les commandes sql suivantes :

SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
select * mysql.general_log

Puis j’ai fait les modifications via la page web.

Puis pour ne pas risquer de saturer la db, j’ai désactive

SET GLOBAL general_log = 'OFF';
TRUNCATE table mysql.general_log

Alors évidement, si on truncate la table avant de l’avoir copié, on perd ces informations, mais ca permet de laisser une situation propre.

La commande suivante est très utile aussi car elle donne les requêtes sql en cours d’éxécution :

SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, LEFT(INFO, 51200) AS Info FROM information_schema.PROCESSLIST;

Et pour terminer, la commande “explain select * from ..” permet de comprendre comment optimiser la requête en ajoutant par exemple des index.

Et pour finir, grâce à cette commande, on peut garder un log des query qui prennent des ressources du serveur pour pouvoir ce concentrer sur l’optimisation de celles-ci

SET GLOBAL slow_query_log= 'ON';

Merci a
https://stackoverflow.com/questions/14670075/clear-mysql-general-log-table-is-it-safe
https://stackoverflow.com/questions/650238/how-to-show-the-last-queries-executed-on-mysql

ByPatrick

The Agile Theme Park

Merci à https://twitter.com/DT_comic/status/1365229720196050945/photo/1

ByPatrick

Publier via powershell un événement vers Graylog

class GraylogMessage { [string] $short_message; [string] $full_message }
$Uri = 'http://192.168.1.119:12201/gelf'
$Headers = @{'Content-Type' = 'application/json'; }
$Message = [GraylogMessage]::New()
$Message.short_message = 'Robocopy EMV VIX Pulse'
$Message.full_message = [IO.File]::ReadAllText('C:\logs\robocopylogs.txt')

Invoke-WebRequest -Uri $Uri -Method POST -Headers $Headers -Body (ConvertTo-Json $Message)

Malheureusement, il reste bloqué à la ligne invoke-webrequest.

Je complèterai quand j’aurai la réponse…

ByPatrick

Usage de disque avec docker trop élevé ?

J’ai de plus en plus de mal à faire tourner mes containers, après quelques minutes ou dès que j’ai lancé tous ou une partie de mes containers, il n’est pas content :

Je me suis dit qu’il manquait peut-être de mémoire, alors j’ai augmenté :

et après il s’est senti mieux

ByPatrick

Graylog et event viewer de windows

Ben, maintenant que j’ai un beau service qui centralise mes logs, autant ajouter les events viewer de windows :

Télécharger et installer ceci sur les serveurs qui doivent renvoyer leurs logs : https://nxlog.co/system/files/products/files/348/nxlog-ce-2.10.2150.msi

Ajouter un peu de confirguration :C:\Program Files (x86)\nxlog\conf\nxlog.conf

<Extension gelf>
	Module	xm_gelf
</Extension>

<Input win>
	Module	im_msvistalog
	Query <QueryList><Query Id="0"><Select Path="Application">*</Select></Query></QueryList>
	Exec $Hostname = hostname();
</Input>

<Input in_sys>
Module im_msvistalog
Query <QueryList><Query Id="0"><Select Path="System">*</Select></Query></QueryList>
Exec $Hostname = hostname();
</Input>

<Output graylog>
Module	om_tcp
Host	192.168.1.119
Port	12201
OutputType	GELF_TCP
</Output>

<Route graylog_route>
Path	win => graylog
</Route>

<Route graylog_route>
Path	in_sys => graylog
</Route>

Il me donne un message d’erreur au début : “WARNING Due to a limitation in the Windows EventLog subsystem, a query cannot contain more than 256 sources.” c’est pour ça que j’ai du ajouter les

<QueryList><Query Id="0"><Select Path="Application">*</Select></Query></QueryList>

(merci à https://nxlog.co/question/4644/nxlog-service-keep-stopping-every-few-days)

ByPatrick

Graylog en docker et c#

Aujourd’hui, j’ai recréé un container docker avec graylog :

docker run --name mongo -d mongo:4.2

docker run --name elasticsearch -e "http.host=0.0.0.0" -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -d docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2

docker run --name graylog4 --link mongo --link elasticsearch -p 9000:9000 -p 12201:12201 -p 1514:1514 -e GRAYLOG_HTTP_EXTERNAL_URI="http://192.168.1.119:9000/" -d graylog/graylog:4.0

J’ai ajouté un input

Puis j’ai créé une application C# avec visual studio, ajouté quelques nuggets

Un petit bout de code :

private void button3_Click(object sender, EventArgs e)
{
var configuration = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();        
Logger logger = new Serilog.LoggerConfiguration()
                        .ReadFrom.Configuration(configuration)
            .CreateLogger();

        while (true)
        {
            var line = "coucou";

            logger.Warning("some warning: {test}", line);
            logger.Information("some warning: {test}", line);
        }
    }

Et voilà, j’ai ajouté mes premières informations dans graylog

Sans oublier le fichier appsettings.json

ByPatrick

Migration d’un webservice .net code 2.2 en 3.1

Aujourd’hui, nous avons fusionné deux projets, l’un en .net core 2.2, l’autre en 3.1.

Lors du 1er lancement, nous avons obtenu l’information que Microsoft.AspNetCore.Razor.Design 2.2 n’était pas compatible en .net core 3.1.

Un forum nous a indiqué que cette librairie était désormais intégré à .net core 3.1 et qu’il suffisait de la retirer du projet à l’aide du nugget manager.

Lors du 2eme lancement, nous avons pu lancer l’application, mais au 1er appel d’une méthode : boom :

Nous avons alors ajouté dans Startup.cs > ConfigureServices method :

services.AddMvc(option => option.EnableEndpointRouting = false)

Et maintenant le webservice est utilisable.

Merci à https://stackoverflow.com/questions/57684093/using-usemvc-to-configure-mvc-is-not-supported-while-using-endpoint-routing

ByPatrick

Comment démarrer le docker de phpbb

Aujourd’hui, je me replonge dans mes vieux amours, j’essaie de démarrer un container docker sous windows avec phpbb:

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
curl https://raw.githubusercontent.com/bitnami/bitnami-docker-phpbb/master/docker-compose.yml > docker-compose.yml
docker-compose up -d

Et bien non, il persiste à me mettre :

J’ai finalement télécharger le fichier depuis firefox 🙁 et là, pas de soucis.

phpBB application username. Default:user

phpBB application password. Default: bitnami

Et voilà, encore un petit container testé.

Sources : https://hub.docker.com/r/bitnami/phpbb/ et https://stackoverflow.com/questions/41618766/powershell-invoke-webrequest-fails-with-ssl-tls-secure-channel

ByPatrick

Livraison continue

Un collègue m’a envoyé ce petit schéma qui résume bien nos objectifs :

ByPatrick

Installation et maintenance de PiHole + unbound

Récemment, nous avons amélioré notre installation de Pihole grâce à l’article suivant : https://discourse.pi-hole.net/t/local-dns-records/31772/16

D’abord on installe un nouveau serveur dns sur le Pi :

sudo apt install unbound

Une petite mise à jour de la configuration :

sudo vi /etc/unbound/unbound.conf.d/pi-hole.conf
# Ensure privacy of local IP ranges
private-address: 192.168.0.0/16

Puis on ajoute manuellement des records dns si besoin:

sudo vi /etc/pihole/custom.list
pihole restartdns

Ne pas oublier de dire à Pihole d’utiliser unbound, sinon, ça ne sert pas à grand chose

Pour la mise à jour de pihole lui même, rien de plus simple. Une fois connecté en ssh au raspberry, il nous suffit de taper la ligne de commande :

pihole -up

Personnellement, je préférais le design des graphiques de la version précédente, toujours une affaire de goût.

Pour une installation de pihole :

wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh