PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Remi Collet : Accès aux fichiers Windows en PHP depuis Linux

mercredi 9 septembre 2015 à 14:35

Voici quelques information sur l'extension libsmbclient-php que je viens de découvrir.

En fouillant dans le code de owncloud et dans ses dépendances, j'ai remarqué quelques bibliothèques et une extension PHP :

Dans tous les scenarii, pour accéder à des fichier Windows depuis Linux, il faudra utiliser les outils du logiciel Samba.

Bien que je comprenne le besoin d'une implémentation pur PHP (icewind/smb), je pense qu'encapsuler les appels à la commande smbclient est remarquablement laid, et vraiment pas robuste.

Après une première étude, le projet libsmbclient-php m'a semblé intéressant mais un peu tordu à utiliser, car il est nécessaire d'utiliser un ensemble de fonctions dédiées (smbclient_*).

Par exemple, pour afficher le contenu d'un fichier Windows vous devez écrire :

// Creation d'un état
state = smbclient_state_new();
// Initialisation avec le domaine, nom d'utilisateur et mot de passe:
smbclient_state_init($state, null, 'testuser', 'password');
// Ouverture du fichier
$file = smbclient_open($state, 'smb://server/testshare/file.txt', 'r');
if ($file) {
  // Lecture séquentielle et affichage
  while ($data = smbclient_read($state, $file, 1000)) {
    echo $data;
  }
}
// Fermeture 
smbclient_close($state, $file)
// Liberation
smbclient_state_free($state);

Pas très amusant ;) évidement, il est possible de créer un streamWrapper pour simplifier l'utilisation, comme celui fournit par icewin/smb.

J'ai donc commencé à contribuer à ce projet pour l'améliorer :

Il est donc désormais possible d'écrire plus simplement l'exemple précédent :

readfile("smb://testuser:password@server/testshare/file.txt");

Il reste d'autres travaux en cours :

Dans le futur, il pourrait aussi être intéressant de remplacer l'utilisation des ressources par des objects (e.g; SmbClient\\State, SmbClient\\File, SmbClient\\Dir).

Évidement, les RPM de php-libsmbclient sont disponibles dans mon dépôt, la version 0.7.0 dans remi, remi-php55 et remi-php56 ou la version 0.8.0-dev dans remi-test et remi-php70.

Retour et commentaires sont les bienvenus.

 

 

Gravatar de Remi Collet
Original post of Remi Collet.Votez pour ce billet sur Planet Libre.

genma : Ma page de raccourcis d'horaires de bus/train

mercredi 9 septembre 2015 à 09:00

Mon projet

J'avais pour besoin celui de connaître les horaires des prochains bus aux arrêts autour de chez moi et me permettant de me rendre à la gare ou me permettant de rentrer chez moi depuis Paris. Ce sont toujours les mêmes arrêtes/même gare et donc des trajets prédéterminés. Plutôt que d'aller sur les sites de la RATP/SNCF, de perdre du temps à saisir les gares de destinations et d'arrivée, je me suis fait une page de raccourci avec des liens vers les mêmes pages, chaque lien est présenté par un gros bouton coloré. Ce sera l'occasion pour moi de dérouiller un peu mon HTML5/CSS3.

Les services fournis par les transporteurs en Ile de France

Pour une ligne RATP de bus donnée, on a une version WAP (plus légère du site et qui va à l'essentiel) de la forme :

http://wap.ratp.fr/siv/schedule?service=next&reseau=bus&lineid=BXXX&stationid=XXX_XXX

Cette URL, avec l'ID du bus (BXXX) et le numéro de station (XXX_XXX) donne les horaires de prochain passage dans les deux sens (vers les deux terminus de la ligne).

http://www.transilien.mobi/train/result?idOrigin=XXX&idDest=YYY

Pour la SNCF et les RER transilien, c'est cette URL avec la gare de départ et la gare d'arrivée, dont le code est sur 3 lettres. (Représenter ici par XXX et YYY)

Une fois que l'on a les bons liens d'intérêts (pour les différents trajets), on peut passer à la suite.

Les raccourcis

J'ai donc défini la liste des boutons suivants :
- Maison : ça m'affiche sur une même page, les horaires des différentes lignes bus qui passent à côté de chez moi pour mener à la gare.
- Gare : ça m'affiche sur une même page, les horaires des différentes lignes bus qui partent de la gare et me rapproche de chez moi.
- Paris : ça me redirige vers la pages des horaires du RER, dans le sens du retour.
Plutôt que d'avoir des tas de marques-pages/favoris, j'ai un seul favori sur l'écran d'accueil vers une page avec des gros boutons colorés.

Pour l'utilisation des horaires de bus, j'ai deux lignes de bus de possibles. Et plutôt que de cliquer plusieurs fois, pour consulter les horaires du premier bus, revenir en arrière, consulter les horaires du second bus, j'ai fait une fausse page intermédiaire qui fusionne les deux pages correspondant aux deux lignes d'intérêt passant à l'arrêt me menant à la gare. Le lien est donc vers cette page html qui intègre elle-même les deux pages des horaires RATP, comme le montre le code suivant :





height="200" >



Problème de zoom

J'ai fait le développement via le navigateur Firefox, j'ai testé en mode "vue adaptative" et avec le simulateur de FirefoxOS, au sein du navigateur. Pas de soucis, tout s'affiche bien à la taille que je veux. Exemple avec une capture d'écran du prototype :

J'ai mis cette page HTML en ligne sur un serveur. J'accède à cette page depuis mon ZTE Open C sous FirefoxOS 2.2 quand j'ai besoin d'un horaire.
Et là, bien qu'ayant défini des tailles fixes en pixels pour les différentes zones, j'avais un problème d'affichage comme illustrer par l'image suivante :

En ajoutant la ligne au code source




A mettre entre les deux balises de la page html

Je n'ai plus ce problème. L'affichage qui correspond à ce que j'attendais (la vue version adaptative) sur le ZTE Open C et reste identique sur le navigateur et l'émulateur.

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Tuxicoman : Comprendre TLS

mercredi 9 septembre 2015 à 07:03

Un bon article de vulgarisation sur les algorithmes de chiffrement TLS pour les connexions HTTPS.

J’y vois plus clair ainsi.

Pour info, sur Debian Jessie, le réglage par défaut d’Apache (/etc/apache2/mods-enabled/ssl.conf) est :

SSLCipherSuite HIGH:!aNULL

C’est moins restrictif que ce qui est proposé dans l’article (DES est accepté)

Related Posts:

J'aime(0)Ferme-la !(0)

Gravatar de Tuxicoman
Original post of Tuxicoman.Votez pour ce billet sur Planet Libre.

alterlibriste : Halte aux fossoyeurs de Firefox OS

mardi 8 septembre 2015 à 22:14

Suite à la défection de ZTE vis-à-vis de Firefox OS et notamment le fait que contrairement à ce qui était annoncé le successeur de l’Open C ne sortirait pas en France, les esprits s’échauffent et Cyrille nous annonce déjà la mort de Firefox OS, son potentiel passage à Windows Phone et la fin du monde qui s’approche.

Car comme vous le savez tous sans ZTE, le monde risque de s’arrêter. Non ? Celui de Firefox OS ? En France, peut-être puisqu’il n’y a pas d’autre constructeur dans la course...

Alors certains évoquent les erreurs de Mozilla, le créneau du bas de gamme qui n’était pas une bonne option, de ne pas fournir des ROM pour tous les téléphones, etc.
Ce n’est pas faux, enfin, disons que la sortie de Firefox 1.3 en France était peut-être prématurée, mais cela nous a permis de découvrir cet OS que l’on attendait impatiemment et si cette version n’était pas au top des fonctionnalités, la 2.2 est pour moi (et je le répète incessamment ici) la première version mature qui peut satisfaire beaucoup d’utilisateurs qui ne veulent pas faire autre chose que ce pour quoi un ordiphone est sensé faire. La 2.5 qui commence à être annoncé avec les add-ons sera j’en suis quasi sûr à la hauteur d’un Android en matière de fonctionnalités.

Attention, cependant à ne pas mélanger les torchons et les serviettes, il n’y aura pas un market aussi fourni (mais je ne vois pas l’intérêt des milliers d’applications qui font la même chose plus mal les unes que les autres) et il n’y aura peut-être pas un téléphone qui convienne aux plus exigeants (GPS, 42MP, 4Go de RAM, 64Go de stockage pour 100€ maxi). Car à chaque fois que le sujet est abordé, ce sont soit la mauvaise qualité des téléphones, soit les choix de Mozilla par rapport aux constructeurs qui sont attaqués.

En fait, si c’était aussi simple qu’un billet de blog, les ROM foisonneraient, mais contrairement à un OS de PC qui tourne sur une architecture assez standard, ce n’est pas le cas des téléphones et le portage prend du temps. De plus, Mozilla, qui s’est rendu compte de ce problème assez tardivement, n’est pas constructeur de téléphone, donc doit trouver des accords avec les constructeurs qui eux sont rarement des philanthropes amoureux du libre. Si on leur vend un marché de plusieurs millions d’utilisateurs, ils sont preneurs, quand il s’agit de quelques centaines de libristes râleurs qui se mettent à bricoler leurs appareils, ils tournent vite les talons.

Pour autant, tout n’est pas perdu, il y a déjà quelques portages (pour les Nexus notamment), si ZTE et Geeksphone ont retiré leurs billes, Alcatel semble rester dans la danse en passant le One Touch E en 2.0 et en annonçant qu’ils poursuivraient sur cette branche, bref, arrêtons de voir tourner le monde du bout de notre lorgnette franco-française (même si le marché des mobiles est régionalisé à cause des opérateurs téléphoniques).

Certes les pionniers ont toujours la vie dure et certaines nouveautés disparaissent au détriment de ces efforts pleins d’espoir mais Mozilla en a vu d’autres et voit probablement un peu plus loin, donc n’enterrons pas le renard avant de l’avoir vu mort, et sur mon téléphone il bouge encore la queue.

PS : mon centième billet méritait bien ces louanges optimistes

Gravatar de alterlibriste
Original post of alterlibriste.Votez pour ce billet sur Planet Libre.

Articles similaires

Goffi : Parlons XMPP - épisode 8 - PubSub et PEP

mardi 8 septembre 2015 à 15:18

(pour lire les épisodes précédents, suivez l'étiquette correspondante)

Aujourd'hui nous allons expliquer dans les grandes lignes comment fonctionnent « PubSub » et « PEP », et voir à quoi cela peut servir. Cet article va reprendre en partie ce que j'ai dit à la conférence « PubSub, microblogage et XMPP » en juillet dernier aux RMLL.

PubSub signifie « Publish/Subscribe » (Publication/Abonnement), c'est un mécanisme qui permet à une ou plusieurs personnes de publier toutes sortes d'informations sur un endroit connu (qu'on appelle un nœud) et aux personnes qui le désirent de s'abonner, c'est à dire d'avoir accès au contenu et d'être averti des modifications, le tout avec un système d'accès simple. Il s'agit du patron de conception « observateur/observable » décentralisé et appliqué à XMPP.

Le fonctionnement est expliqué dans la XEP-0060, c'est une des XEPs les plus longues de XMPP mais le principe est relativement simple à comprendre. Sans reprendre le long glossaire du document, expliquons quelques termes :

  • le service PubSub est l'entité qui gère le mécanisme de publication, d'autorisation, d'abonnement, de notification. C'est une entité XMPP et un jid y est donc associé, c'est à lui que vous faites toutes les requêtes pour un nœud donné.
  • le nœud est un espace associé à une publication. On peut associer ça à l'adresse d'un flux Atom.
  • un « item » (élément) est une publication dans un nœud. On peut associer ça à un article dans un flux Atom.
  • cet « item » contient un « payload » (charge utile), c'est à dire un contenu significatif qui dépend de la fonctionnalité utilisée. En effet la XEP-0060 décrit un mécanisme générique et souple, qui est ensuite utilisé dans des cas pratiques par d'autres extensions.

Un service PubSub est généralement un composant de votre serveur, mais ça peut-être n'importe quelle entité : votre serveur lui-même (c'est le cas avec PEP que nous allons voir ci-dessous), ou un client voire votre client lui-même (mais c'est assez rare – je n'ai jamais vu de client le faire –, car en général on utilise le service de son serveur).

Le mécanisme général est très simple et centré sur les nœuds : chaque entité (associée à un jid) à un rôle lié à ce nœud selon qu'elle l'ait créé, qu'elle soit publieur, abonné, banni ou sans lien avec le nœud. À ces rôles sont donnés des autorisations : le droit d'écrire (avec le « publish model » ou modèle de publication) et le droit en lecture (avec l'« access model » ou modèle d'accès).

Reprenons de manière un peu plus formelle. Les rôles dont nous avons parlé sont appelés « affiliations », et on peut avoir les suivantes:

  • owner (propriétaire): en général celui qui a créé le nœud
  • publisher (publieur): celui ou ceux (il peut y en avoir plusieurs) qui ont accès en écriture
  • publish-only (publication seulement): droit d'écriture mais pas de lecture, c'est un cas peu fréquent.
  • member (membre): quelqu'un qui est abonné au nœud
  • none (rien): l'entité n'a pas de lien avec le nœud
  • outcast (banni): l'entité a été explicitement interdite d'accès au nœud

La section 4.1 de la XEP-0060 fourni un tableau qui montre les autorisations selon l'affiliation. Ainsi on voit que le propriétaire peut publier ou configurer un nœud.

Les modèles d'accès (pour la lecture) définis dans la XEP-0060 sont les suivants:

  • open (ouvert, public): tout le monde peut lire le nœud
  • presence (présence – oui je traduis même pour un seul accent –) : si une entité est autorisée à voir la présence du publieur, alors elle peut accéder au nœud
  • roster (liste de contacts): si une entité est dans un groupe défini (dans la configuration du nœud) de la liste de contacts du service pubsub, elle a accès au nœud.
  • whitelist (liste blanche): des entités sont explicitement autorisées dans la configuration du nœud

Et rapidement les modèles de publication:

  • publishers (publieurs): quelqu'un qui a l'affiliation publieur peut écrire
  • subscribers (abonnés): n'importe quel abonné peut écrire
  • open (ouvert/libre): tout le monde peut écrire

Il faut bien noter une chose essentielle dans PubSub : quand la combinaison autorisation/abonnement/configuration le permet, on reçoit une notification immédiatement quand un élément est publié, modifié ou supprimé. Autrement dit on n'est plus du tout dans l'analogie avec un flux Atom – où on doit aller vérifier régulièrement qu'il n'y a rien de nouveau –, on est prévenu si nécessaire. Ceci est beaucoup plus efficace, rapide, et économe en ressources.

Voilà pour la base. La XEP défini d'autres choses qu'il n'est pas forcément pertinent d'expliquer ici, comme les métadonnées ou les inscriptions temporaires. On peut toutefois s'arrêter sur les collections, qui ne sont que mentionnées dans la XEP-0060 mais décrites en détails dans la XEP-0248. Elles permettent de faire des arbres de nœuds, et ainsi de représenter des données avec des relations entre elles. Des exemples valent parfois mieux qu'un long discours: les collections peuvent être utilisées pour représenter un système de fichiers sur un disque dur, ou un arbre généalogique.

Tout ceci est souple, générique, puissant, et relativement facile à utiliser par un client. Mais la XEP étant très longue, et l'implémentation de la partie service plus complexe, les implémentations ont mis du temps à arriver (et encore aujourd'hui elles sont très inégales). Comme PubSub peut être intéressant même sans tout le mécanisme, une version simplifiée est décrite dans la XEP-0163: « Personal Eventing Protocol » (Protocole d'évènements personels).

Cette dernière se base sur PubSub, mais définit les règles suivantes qui simplifient beaucoup :

  • 1 compte (jid) = 1 service : probablement la règle la plus importante, elle évite d'avoir à chercher un service PubSub associé à un jid, puisque le service est l'adresse canonique (« bare jid ») de l'entité. Ainsi pour la microblogage (XEP-0277), il suffit de connaître le jid de la personne – le nœud étant défini dans la XEP – pour retrouver ses publications.

  • 1 publieur par nœud : le propriétaire et le publieur sont le même, et il n'y a qu'un publieur par nœud. On se coupe ainsi de l'édition collaborative par souci de simplification, et il faudra utiliser PubSub pour ce genre d'applications.

  • accès par présence par défaut : sans rien toucher, il suffit d'avoir quelqu'un dans sa liste de contacts (et qui a accès à la présence) pour qu'il soit autorisé à voir nos publications

  • notifications filtrées sur l'intérêt exprimé : pour éviter d'être submergé de notifications, une entité/un client doit explicitement indiquer qu'il est intéressé par tel ou tel nœud

  • options par défaut au plus simple

PEP était utilisé au début pour des événements (sans grand intérêt à mon sens) comme l'humeur ou la musique en cours d'écoute, mais depuis son utilisation a évolué.

Voici, pour finir, quelques exemples d'utilisation de PubSub ou PEP:

  • enregistrement de données publiques ou semi-publiques (XEP-0222), par exemple une clef publique de chiffrement
  • enregistrement de données privées (XEP-0223), très utile pour n'importe quelle donnée de petite taille
  • les marque-pages (XEP-0048) utilisés pour les salons de discussions utilisent PEP (la XEP-0048 a été modifiée après l'apparition de PEP pour s'y adapter)
  • le microblogage bien entendu (XEP-0277), qui utilise PEP et utilise du Atom pour sa « charge utile » (« payload ») et un accès en général public. Les commentaires sont sur un nœud PubSub séparé, en général avec un modèle de publication par abonnement.
  • la XEP-0214 utilise PubSub et les collections pour faire un dépôt de fichiers
  • le futur protocole de discussions de groupe « MUC 2 » devrait se baser sur PubSub

PubSub pourrait aussi être utilisé pour placer des points sur une carte, faire un wiki, organiser des événements, ou encore gérer et surveiller une batterie de serveurs qui nous préviendraient en cas de problème.

Je reviendrai sûrement plus tard sur tout ça pour expliquer le microblogage ou d'autres extensions.

La prochaine fois, je pense vous parler de Jingle (mais pas de la partie vidéo-conférence). J'espère qu'à ce stade vous commencez à comprendre que XMPP n'est pas une technologie, mais un ensemble de technologies coordonnées et qui se réutilisent les unes les autres quand nécessaire.

J'ai un peu réduit le rythme des articles ces derniers temps car je travaille sur mon projet, et qu'une partie a été traduite en anglais avec l'aide de pas mal de monde (merci encore !), tout cela prend du temps.

Si vous venez à la fête de l'huma ce week-end, vous pourrez me trouver au village du libre, où Parinux me prête gentiment un bout de stand (merci aussi !). Je n'y serai pas en permanence, car je compte aussi profiter un peu de la fête :)

Gravatar de Goffi
Original post of Goffi.Votez pour ce billet sur Planet Libre.

I'm richer than you! infinity loop