Calculer un masque de sous-réseau à partir d’un range d’adresses IPs

Une fonction en T-SQL retournant le masque de sous-réseau (netmask) à partir de la première et dernière IP du range… Compatible MS SQL Server 2000.

Ci-dessous le code de la fonction calculant le masque:


create function getSubnetMask (@RangeIPStart as varchar(50), @RangeIPStop as varchar(50))
returns varchar(50)

as
-- Procedure Name : getSubnetMask
-- Created On : 22.01.2008
-- Dependencies: user-defined function SplitWords
begin
declare @Value as int
declare @SubnetMask as varchar(50)

set @SubnetMask = ''

DECLARE SubnetMask CURSOR FAST_FORWARD FOR
SELECT CASE WHEN (CONVERT(INT,IP1.[value]) = CONVERT(INT,IP2.[value]))
THEN 255
ELSE 255 - ((CONVERT(INT,IP1.[value]) ^ CONVERT(INT,IP2.[value])))
END AS value
FROM (SELECT * FROM [dbo].[SplitWords] (@RangeIPStart)) AS IP1
INNER JOIN (SELECT * FROM [dbo].[SplitWords] (@RangeIPStop)) AS IP2 ON IP1.pos = IP2.pos

OPEN SubnetMask
FETCH NEXT FROM SubnetMask INTO @Value
WHILE @@FETCH_STATUS = 0
BEGIN
if @SubnetMask <> ''
begin
set @SubnetMask = @SubnetMask+'.'
end

set @SubnetMask = @SubnetMask+CAST(@Value as varchar)

FETCH NEXT FROM SubnetMask INTO @Value
END
CLOSE SubnetMask
DEALLOCATE SubnetMask

return @SubnetMask
end


Cette dernière est dépendante de la fonction user-defined SplitWords… Le code:


CREATE FUNCTION [dbo].[SplitWords](@text varchar(8000))
RETURNS @words TABLE (pos smallint primary key, value varchar(8000))
AS
BEGIN
DECLARE @pos smallint,
@i smallint,
@j smallint,
@count smallint,
@s varchar(8000)

SET @pos = 1
SET @count = 0
WHILE @pos <= LEN(@text)
BEGIN
SET @i = CHARINDEX(' ', @text, @pos)
SET @j = CHARINDEX('.', @text, @pos)

IF @i > 0 OR @j > 0
BEGIN
IF @i = 0 OR (@j > 0 AND @j < @i)
SET @i = @j

IF @i > @pos
BEGIN
-- @i now holds the earliest delimiter in the string
SET @s = SUBSTRING(@text, @pos, @i - @pos)

INSERT INTO @words
VALUES (@count, @s)
SET @count = @count + 1
END

SET @pos = @i + 1
WHILE @pos < LEN(@text) AND SUBSTRING(@text, @pos, 1) IN (' ', ',')
SET @pos = @pos + 1
END
ELSE
BEGIN
INSERT INTO @words
VALUES (@count, SUBSTRING(@text, @pos, LEN(@text) - @pos + 1))

SET @pos = LEN(@text) + 1
END
END

RETURN
END


  • Share/Save/Bookmark

Openquery “OLE DB provider unable to process object, since the object has no columnsProviderName”

L’erreur “OLE DB provider unable to process object, since the object has no columnsProviderName” retournée par un Openquery peut être résolue simplement. Elle provient de l’utilisation d’objets ne pouvant être rendus avant l’exécution (table temporaire).

Il suffit d’ajouter SET FMTONLY OFF; avant l’exécution d’une requête ou d’une procédure stockée.
Avant (erreur):
select * from OPENQUERY(LOCALHOST, ‘exec mySP @Param = 123′)
Après (corrigé):
select * from OPENQUERY(LOCALHOST, ‘SET FMTONLY OFF; exec mySP @Param = 123′)

Source (nécessaire d’être authentifié): SQL Server Central

  • Share/Save/Bookmark

IFrame - Height “auto”

Pour permettre à une IFrame d’adapter sa hauteur à son contenu, il est nécessaire d’utiliser un JavaScript…

<iframe onLoad="calcHeight(this)" src="Default.aspx" WIDTH="100%" HEIGHT="100%" frameborder="0" scrolling="no">
</iframe>
<script type="text/javascript" language="JavaScript">
function calcHeight(the_iframe) {
    the_iframe.style.height = the_iframe.contentWindow.document.body.scrollHeight; //changement de la hauteur
    the_iframe.style.width = the_iframe.contentWindow.document.body.scrollWidth; //changement de la largeur
}
</script>

Source: Auto-increase frame height

  • Share/Save/Bookmark

Modifier la date de création et de modification d’un fichier

Cette action est possible en installant un freeware: Date/Time Shell extension.

Date/Time Shell extension V1.41 (fonctionne sous Windows 9x et Windows XP)
Télécharger depuis AutourduPC.com: L’expérience partagée.

Le programme est ensuite accessible par le biais des propriétés du fichier, sous l’onglet “Date / Heure”.

Date/Time Shell extension V1.41

  • Share/Save/Bookmark

Eviter le cache des fichiers XML sous IE7

Lors du chargement d’un fichier XML depuis une animation Flash, Internet Explorer a tendance à prendre la version en cache. Ce problème peut être outrepasser en précisant la manière dont la mise en cache doit être traitée via des fonctions PHP.

Il suffit de remplacer dans l’appelle XML de l’animation Flash le fichier statique XML par un fichier PHP, puis d’indiquer en premières lignes de ce dernier:
header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, ");

Il est possible de retourner le contenu d’un fichier texte:
header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, ");

$myFile = “testFile.txt”;
$fh = fopen($myFile, ‘r’);
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo $theData;

Ou de générer dynamiquement le message XML…

  • Share/Save/Bookmark

Anti-virus ClamAV (Plesk 8.1 sur FC5)

Comme alternative open-source à Dr. Web, il existe ClamAV. Un anti-virus gratuit, régulierement mis à jour, qui peut se greffer simplement sur une configuration Plesk, sous Linux (Fedora Core 5 dans cet article), utilisant qmail.

Afin d’installer ce dernier, il est recommandé d’avoir une Fedora Core 5. Si vous désirez mettre à jour Fedora, regardez du côté de l’article suivant Upgrading a Plesk FC2 server to FC4. Attention: cette mise à jour requiert la ré-installation de Plesk!
(Afin de télécharger les rpms de la FC2: http://download.fedora.redhat.com/pub/fedora/linux/core/)

- Désinstaller Dr. Web:
rpm -e drweb
rpm -e drweb-qmail
ou
yum remove drweb
yum remove drweb-qmail

- Configurer YUM pour utiliser les archives de Atomic Rocket Turtle (repository):
wget -q -O - http://www.atomicorp.com/installers/atomic.sh | sh

- Installer ClamAV et QmailScanner:
yum install qmail-scanner clamav-db clamav clamd

- Stopper SpamAssassin (afin d’éviter que QmailScanner fasse le travail à double):
service psa-spamassassin stop

- Configuration automatique de QmailScanner:
/usr/bin/qmail-scanner-reconfigure

- Mettre à jour ClamAV
/usr/bin/freshclam

- Lancer ClamD
clamd

- Lancer SpamAssassin
service psa-spamassassin start

- Automatiser la mise à jour de la base de donnée de ClamAV
Créer une tâche planifiée (via interface Plesk, pour l’utilisateur root) exécutée chaque jour pour la commande:
/usr/bin/freshclam >/dev/null
La redirection de la sortie vers /dev/null permet d’éviter l’envoi par mail à l’admin du résultat de l’exécutable. Le LogWatch comportera désormais des lignes concernant l’état de la mise à jour de ClamAV.

- Contrôler le fonctionnement de ClamAV
Observer les headers des mails, une indication de ce type devrait apparaître après votre domaine, au niveau des informations “Received”:
with qmail-scanner-2.01st (clamdscan: 0.90.1/3027. perlscan: 2.01st. Clear:RC:0(85.218.0.111)
Envoyer un mail à une des adresses hébergées avec en pièce jointe la marque d’essai d’anti-virus EICAR. Si ce dernier ne parvient pas au serveur, ClamAV fonctionne correctement.

  • Share/Save/Bookmark

Installation carte Wireless Intel Pro 2915 (FC6)

L’installation d’une carte Wifi MiniPCI Intel Pro 2915ABG sous Fedora Core 6 est normalement automatisée… Mais si le message “Le périphérique ipw2200 n’étant pas présent, l’initialisation de eth1 sera retardée” apparaît, il est nécessaire de procéder à la ré-installation du firmware.

Source: Communauté francophone Fedora Core - Forum

Pour ré-installer le firmware, il est nécessaire d’utiliser le repository Livna:
rpm -ivh http://rpm.livna.org/livna-release-6.rpm

Ensuite, suivre la procédure ci-dessous. Dans le cas d’un échec, il suffit de continuer la procédure:
- Supprimer ipw2200-firmware avec yum:
yum remove ipw2200-firmware
- Supprimer la carte eth1 dans system-config-network:
Exécuter system-config-network
Puis sélectionner sous “Matériel” la carte “Intel Corporation PRO/Wireless 2915ABG” et cliquez sur “Supprimer”
- Exécuter:
rmmod ipw2200
- Réinstaller ipw2200-firmware avec yum:
yum install ipw2200-firmware
- Exécuter:
modprobe ipw2200-firmware
- Redémarrer la machine
- Re-configurer la carte sous system-config-network:
Exécuter system-config-network
Sous “Périphériques”, cliquer sur “Nouveau”.
Sélectionner “Connexion sans fil”, cliquer sur “Avancer”.
Sélectionner “Intel Corporation PRO/Wireless 2915…” et cliquer sur “Avancer”.
Sélectionner le mode “Géré”, et configuré les paramètres du réseau wifi. Cliquer sur “Avancer”.
Définir les paramètres IP, cliquer sur “Avancer”.
Cliquer sur “Appliquer”.
Une fois de retour sous “Périphériques”, sélectionner la nouvelle entrée (eth1) et cliquer sur “Activer”.
- Redémarrer le réseau (pas forcément nécessaire):
service network restart

  • Share/Save/Bookmark

SSL - Certificat par défaut

Afin de remplacer le certificat SSL utilisé par défaut sous Plesk (webmail, https, etc…), il est nécessaire d’en définir un nouveau et de modifier la configuration par défaut de Fedora.

1ère étape, créer un nouveau certificat:
- En tant qu’admin de Plesk, se rendre sous Server>Certificates
- Sélectionner “Add New Certificate” et définir les différents champs nécessaires
- Il est possible de créer un certificat self-signed en cliquant sur “SELF-SIGNED”, ou d’uploader les différents éléments d’un certificat obtenu aurpès d’une société compétente.
- Une fois le nouveau certificat créé, il devrait apparaître dans la liste sous Server>Certificates.
- Cocher ce nouveau certificat et cliquer sur “Default”
Le nouveau certificat est créé et définis comme certificat par défaut.

2ème étape, lié le nouveau certificat à l’adresse IP:
- En tant qu’admin de Plesk, se rendre sous Server>IP Adresses
- Cliquer sur l’IP concernée
- Sous “SSL Certificate”, sélectionner le nouveau certificat
- Cliquer “OK”
Le nouveau certificat est désormais lié à l’IP.

(seulement nécessaire sous la distribution FEDORA)
3ème étape, modifier la configuration par défaut de Fedora:
- Editer le fichier

vi /etc/httpd/conf.d/ssl.conf

- Commenter (#) tout les lignes situées entre

 <VirtualHost _default_:443>

et

</VirtualHost>

- Sauvegarder le fichier
Cette modification permet de supprimer le certificat par défaut localhost.localdomain proposé par Fedora.

4ème étape, arrêter et redémarrer le service Apache:
- Executer

service httpd stop

- Executer

service httpd start

Désormais, si vous tentez d’accéder à une page sécurisée via SSL (ex.: https://webmail.domain.tld), le nouveau certificat devrait être utilisé.

  • Share/Save/Bookmark

Image avec bordure arrondie

Créer une image avec des bordures arrondies via un masque d’écrêtage, sous Photoshop.

Situation:
- 1 calque avec photo
- 1 calque inférieur avec forme vectorielle représentant la bordure arrondie (outil rectangle arrondi)

Créer l’écrêtage:
- placer son curseur sur la ligne qui sépare les deux calques (entre les deux calques)
- maintenir enfoncé simultanément les touches CTRL+ALT (ou Pomme + ALT sur MAC)
- cliquer avec le bouton de droite

L’image obtenue est découpée de manière à présenter des bordures arrondies.

  • Share/Save/Bookmark

Récupérer les données des filtres bayesien

Après une migration d’un serveur Plesk vers un autre, ou après la mise à jour automatique de Spamassassin (version PSA7.5 à 8.0 par exemple), il se peut que les fichiers de données des filtres bayesien ne soient plus synchronisés…

Dans ce cas de figure, $user représente le compte email concerné et $domain le domaine correspondant.
Pour remédier à ce problème, il est nécessaire de contrôler la présence des fichiers de données:
- se diriger dans le dossier “/var/qmail/mailnames/$domain/$user/.spamassassin
cd /var/qmail/mailnames/$domain/$user/.spamassassin
- vérifier la présence des fichiers nécessaires
ls -al
- si les fichiers bayes_seen et bayes_toks sont présents et comportent des données (taille > ~50ko), ils peuvent être récupérés. Dans le cas contraire, les données des filtres bayesien ont malheureusement été supprimées… Regardez du côté des sauvegardes!

Une fois la présence de ces fichiers dans le dossier “/var/qmail/mailnames/$domain/$user/.spamassassin” contrôlée, il suffit d’exécuter deux commandes propres à SpamAssassin:
sa-learn --import --dbpath /var/qmail/mailnames/$domain/$user/.spamassassin -D
sa-learn --sync --dbpath /var/qmail/mailnames/$domain/$user/.spamassassin -D

Une fois ces commandes exécutées sans erreurs, il suffit de désactiver et réactiver la protection anti-spam sous Plesk du compte mail concerné pour que les données soient à nouveau énumérées (Spam Filter d’un compte mail).

  • Share/Save/Bookmark