Changement de téléphone

Après 4 ans de bons et loyaux service, mon téléphone commençait vraiment à rendre l'âme. Une version d'android plus supportée par la plupart des applications que j'utilise, donc plus de mise à jour, le bouton d'allumage plus très coopératif, la batterie qui commence à devenir franchement faiblarde, ... un changement ferait du bien.

Je n'ai pas beaucoup de prérequis, je pense que même les téléphones bas de gamme font tourner la plupart des applications que j'utilise, je veux juste une batterie qui tienne le coup, 2 jours ou plus, et qu'il fasse des photos correctes.

Sans regarder de trop près les prérequis, je suis quand même attiré par le FairPhone 3, mais 400€, ça fait un tantinet beaucoup. Je regarde tout de même du côté de mon opérateur, Vodafone pour ne pas le citer, ce n'est pas vraiment de la pub que je vais leur faire ..., et sur leur site, je vois que je peux avoir ce fameux téléphone à 50€ si je prends un forfait 5€ plus cher avec un engagement sur 2 ans, cela fait donc le téléphone à 170€, ce qui est assez raisonnable ... mais impossible de valider la commande sur leur site. Je réessaye après plusieurs jours, même soucis, on part donc en recherche du téléphone qui respectera mes prérequis à un autre endroit.

Au final, mon choix se porte sur le Xiaomi RedMi Note 9, grosse batterie, l'appareil photo ne semble pas trop mal, et pas trop cher.

Le téléphone nécessitant une macro SIM, et n'ayant qu'une micro SIM, je me rends donc à la boutique de Vodafone pour faire le changement. On me demande mon numéro de téléphone, on me donne la nano SIM. Je demande quand le changement est effectif, et c'était déjà le cas. Je rentre chez moi et me dit que quelque chose cloche ... n'importe qui peut arriver, demander une SIM pour un numéro existant, et désactiver l'ancienne SIM sans justificatif d'identité? Je cherche donc la page contact de Vodafone sur leur site histoire de leur dire que ça ne semble pas très sécure, mais à part une page facebook et un compte twitter, pas moyen de les contacter, tant pis.

Après quelques jours d'utilisation, je ne suis pas fan de l'interface MiMui:

  • Premier démarrage, on me demande si je veux de la pub ciblée ou anonyme ... il n'y a pas l'option pas de pub, il faut aller dans les paramètres de toutes les applications systèmes pour retirer l'option Show recommendation.
  • Je n'ai pas de compte Google, donc pas d'accès au PlayStore et j'utilise Aurora Store pour les applications disponibles uniquement sur ce store. Les installations ne fonctionnaient pas. Après recherche, il faut désactiver les MiMui optimization dans les options développeur (si c'est des optimisations contre productives, ils devraient changer leur nom)
  • Une des premières choses que je fais sur mon téléphone, c'est de désactiver les applications que je n'utilise pas. Il n' a pas d'options Deactivate dans le menu application, il faut passer par un contournement pour pouvoir le faire.
  • Les widgets (genre calendrier) ne se mettent pas à jour automatiquement, c'est dommage quand le calendrier affiche la date d'il y a deux jours. Il faut aller dans les paramètres de l'application, lui ajouter l'option auto restart, puis dans le gestionnaire de batterie, retirer les optimisations (encore elles) pour l'application, et redémarrer le téléphone.
  • Avoir le son des notifications est assez aléatoire suivants les applications, il y a plein d'applications avec une option du type workaround for notification sound on MiMui, il faut fouiller au cas par cas.

Et encore d'autres petits détails. Une fois que tout est réglé ça fonctionne, mais ça fait beaucoup de bidouilles pour des choses qui devraient fonctionner par défaut. J'espère juste ne pas avoir à tout refaire à chaque mise à jour (s'il en a).

Par contre je suis très content du téléphone en lui-même, la batterie tient vraiment longtemps, environ 5 jours la première semaine alors que j'étais souvent dessus (plus que mon temps normal d'utilisation de téléphone), et les photos sont plus que correctes.

Flux rss d'une chaîne youtube

Parce que c'est un réseau social comme les autres, même en suivant une chaîne, youtube n'informe pas forcément de la sortie des nouvelles vidéos de cette chaîne, et à la place, propose du contenu cacatesque, qui a fait le buzz ou autre truc polémique ... bref, un algorithme de réseau social. Heureusement, même s'ils sont cachés, les flux rss sont toujours présents sur youtube, et avec eux, dès qu'une chaîne sort une nouvelle vidéo, on est informé.

Pour récupérer les flux rss, il y a besoin de l'identifiant de la chaîne. Avant, c’était un peu compliqué, et il fallait chercher dans le code source de la page d'accueil d'une chaîne pour le trouver. Avec la nouvelle version de youtube, celui-ci peut se trouver directement dans l'url de la chaîne.

Il faut donc aller sur la page d'accueil d'une chaîne youtube, et dans la barre d'adresse de son navigateur, l'url va ressembler à quelque chose comme

https://www.youtube.com/channel/UCabcdef

Ce qui nous intéresse dans cette url, c'est le UCabcdef qui est l'identifiant de la chaîne. Avec celui-ci, dans son lecteur de flux rss préféré, on peut ajouter un nouveau flux, entrer l'adresse suivante

https://www.youtube.com/feeds/videos.xml?channel_id=UCabcdef

et hop, à chaque nouvelle vidéo de la chaîne, votre lecteur de flux vous informera de celle-ci.

Note: ceci n'est valide que jusqu'au prochain changement de règle dans la gestion des urls chez youtube.

openldap with memberOf overlay

I won't present LDAP, just explain how to configure openldap with the memberof overlay on CentOS 7. By default, the memberof overlay is not enable and it is quite useful to know which groups a user is member of when requesting for user information.

First, install the needed packages

sudo yum install -y openldap openldap-clients openldap-servers

Then, copy the samples database from /usr/share/openldap-servers/DB_CONFIG.example to /var/lib/ldap/DB_CONFIG, and update the permission in the /var/lib/ldap folder

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown ldap:ldap /var/lib/ldap/*

The server can now be started

sudo systemctl start slapd

For ldap server to start automatically when restarting the machine

sudo systemctl enable slapd

Generate a password for the ldap administrator

sudo slappasswd

The server will now be configured for our domain, in this example, it will be dc=jupfaf,dc=net.

The base configuration can be found under /etc/opnldap/slapd.d/cn=config/ (you can have a look at the files olcDatabase={1}monitor.ldif and olcDatabase={2}hdb.ldif). The files in this folder can't be modified directly, changes will be lost when using some ldap commands otherwise, so we will create some ldif files and apply them to modify configuration.

Create a file db.ldif with the following content (adapt to your domain, and change the password with the one returned by the slappasswd command)

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=jupfaf,dc=net

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=jupfaf,dc=net

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}avm/5RsK69rlKEV/Y9LJufW9Nyke2bQe

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=jupfaf,dc=net" read by * none

Send the configuration to the ldap server

sudo ldapmodify -Y EXTERNAL  -H ldapi:/// -f db.ldif

Add the cosine, nis and inetorgperson schema

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

To enable memberOf overlay in the openldap configuration, create 3 files (it can be done with only one file, but I prefer to differenciate the load of the modules, and their configuration)

module.ldif

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib64/openldap
olcModuleload: memberof.la
olcModuleload: refint.la

memberof.ldif

dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof

refint.ldif

dn: olcOverlay={1}refint,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner

and send the configuration to the ldap server

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f module.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f memberof.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f refint.ldif

The server configuration is now done, we need to polulate it with groups and users, start with a base.ldif file which will include the admin user and two organizations: Users and Groups

dn: dc=jupfaf,dc=net
dc: jupfaf
objectClass: top
objectClass: domain

dn: cn=ldapadm,dc=jupfaf,dc=net
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou=Users,dc=jupfaf,dc=net
objectClass: organizationalUnit
ou: Users

dn: ou=Groups,dc=jupfaf,dc=net
objectClass: organizationalUnit
ou: Groups

and build the directory structure using ldapadd command

sudo ldapadd -x -W -D "cn=ldapadm,dc=jupfaf,dc=net" -f base.ldif

it will ask for the ldapadm user password.

Add a user and a group, create a julien.ldif file

dn: uid=julien,ou=Users,dc=jupfaf,dc=net
objectClass: top
objectClass: organizationalPerson
objectClass: person
objectClass: inetOrgPerson
cn: julien
sn: julien
uid: julien

dn: cn=Writers,ou=Groups,dc=jupfaf,dc=net
objectclass: groupOfNames
cn: Writers
member: uid=julien,ou=Users,dc=jupfaf,dc=net

and send the configuration to the server

sudo ldapadd -x -W -D "cn=ldapadm,dc=jupfaf,dc=net" -f julien.ldif

There is now one user julien who is member of the group Writers, that can be verified by using a ldapsearch command

ldapsearch -LL -Y EXTERNAL -H ldapi:/// "(uid=julien)" -b dc=jupfaf,dc=net memberOf

which should return

SASL/EXTERNAL authentication started
SASL username: gidNumber=1000+uidNumber=1000,cn=peercred,cn=external,cn=auth
SASL SSF: 0
version: 1

dn: uid=julien,ou=Users,dc=jupfaf,dc=net
memberOf: cn=Writers,ou=Groups,dc=jupfaf,dc=net

memberOf is not a direct attribute of the user, so it has to be requested explicitely. The overlay applies ony for newly created objects, if some objects were created before adding the memberOf overlay in LDAP configuration, they have to be recreated.

Shared folder between two machines

I sometimes need to have a shared folder between some of my test machines. The need is sporadic, so I don't want to setup a NFS server. I found sshfs for this usage which is really handy.

It is using the ssh layer, so one of the machine will be the server, and the other the client. As usual, my test machines are running on CentOS 7.

On the server side:

my user is named admin
the shared folder is /home/admin/shared
ssh server is already configured

On the client side:

my user is named user
the shared folder is /home/user/shared
ssh client is installed
I need to install sshfs

The package name is fuse-sshfs, and it can be found in the EPEL repository (so this repository needs to be configured):

user@client:~$ sudo yum install -y sshfs

The shared folder can now be mounted by using the following command:

user@client:~$ sshfs admin@server:/home/admin/shared ~/shared

(it is not recommended to mount the folder as a superuser)

Now the folder is shared and synchronized between the two machines, so if a file is created on the server:

admin@server:~/shared$ touch file.txt

it will be visible from the client:

user@client:~/shared$ ls
file.txt

and vice versa.

Unmount the folder has to be done on the client side, with the command:

user@client:~$ fusermount -u ~/shared

Because it is using the ssh layer, it is possible to configure the connection to use a private key and avoid sshfs asking for your admin@server password. First, the key has to be generated:

user@client:~$ ssh-keygen -t rsa -b 2048

(check for the options to generate a far more secure key)

then sent to the server:

user@client:~$ ssh-copy-id -i /home/user/.ssh/id_rsa admin@server

A config file can be created to not be bothered with connection options:

user@client:~$ cat >> .ssh/config
Host server
        User admin
        IdentityFile /home/user/.ssh/id_rsa
^C
user@client:~$ chmod 600 .ssh/config

The shared folder can now be mounted with the following command:

user@client:~$ sshfs server:/home/admin/shared ~/shared

and no password will be asked.

Multicast between virtual machines in Virtualbox

For some tests, I needed multicast to work between some virtual machines in Virtualbox, here are the steps I follow to have it enable. My guest OS is CentOs7.

VM configuration

In the network tab, add a new card with type internal network, and in the advanced option set the promiscuous mode to allow all VMs

System configuration

ip addr show

tell that the new card is recognized as enp0s9, so under /etc/sysconfig/network-scripts, create a file ifcfg-enp0s9 with the following content:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.57.11
PREFIX=24
DEFROUTE=no
IPV4_FAILURE_FATAL=yes
NAME=enp0s9
UUID=e280c669-e4fd-4a60-adb0-2d8d9c1015f0
DEVICE=enp0s9
ONBOOT=yes

(adapt to your need)

and a route-enp0s9 file containing:

224.0.0.0/4 via 192.168.57.11 dev enp0s9

This is to say the multicast traffic has to be routed on the internal network interface.

Then restart the network:

sudo systemctl restart network

Some kernel parameters has to be updated, edit the file /etc/sysctl.d/99-sysctl.conf and add the lines:

net.ipv4.icmp_echo_ignore_broadcasts=0
net.ipv4.ip_forward=1

Reload configuration:

sudo sysctl -p

And voilà, multicast should work between the VMs configured this way.

Page 1 / 1