|
|
Software version |
0.2.3 |
Operating System |
Debian 6 |
Website |
Newznab Website |
Last Update |
28/12/2012 |
Others |
|
1 Introduction
Newznab est un indexeur de newznab. Il sert par exemple à être utilisé avec SABnzbd ou encore Sick-Beard.
2 Installation
Voici les packages nécessaires :
aptitude
|
aptitude install apache2 php5 libapache2-mod-php5 php5-curl php5-mysql php5-gd php-pear
|
Comme il va falloir une base de type MySQL, nous allons en profiter pour mettre en place MariaDB (suivez ce lien).
Ensuite, nous allons mettre en place Newznab :
|
cd /var/www
wget http://www.newznab.com/newznab-0.2.3.zip
unzip newznab-0.2.3.zip
mv newznab-0.2.3 newznab
chown -Rf www-data. newznab
rm -f newznab-0.2.3.zip
|
Enfin, nous allons activer le mode rewrite d'apache :
a2enmod
|
|
3 Configuration
3.1 PHP
Nous allons devoir configurer quelques paramètres PHP pour que Newznab fonctionne correctement :
|
perl -pi -e 's/;date.timezone =.*/date.timezone = Europe\/Paris/' /etc/php5/cli/php.ini
perl -pi -e 's/;date.timezone =.*/date.timezone = Europe\/Paris/' /etc/php5/apache2/php.ini
perl -pi -e "s/max_execution_time = \d*/max_execution_time = 120/" /etc/php5/cli/php.ini
perl -pi -e "s/max_execution_time = \d*/max_execution_time = 120/" /etc/php5/apache2/php.ini
perl -pi -e "s/memory_limit = .*/memory_limit = 256M/" /etc/php5/apache2/php.ini
|
3.2 Apache
Voici une configuration classique. A vous de l'adapter à vos besoins :
/etc/apache2/sites-available/newznab
|
<VirtualHost *:80>
<Directory /var/www/newznab/www>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/newznab/www
LogLevel warn
ServerSignature Off
</VirtualHost>
|
Puis activez le et reloadez votre configuration Apache :
|
a2ensite newznab
/etc/init.d/apache2 reload
|
3.3 MySQL
Nous allons configurer MySQL/MariaDB en créant une base de donnée, ainsi qu'un utilisateur :
mysql
|
create database newznab;
create user 'newznab'@'localhost' identified by 'password';
grant usage ON * . * TO 'newznab'@'localhost' IDENTIFIED BY 'password';
grant ALL on `newznab` .* to 'newznab'@'localhost';
|
Remplacez password par le mot de passe souhaité.
3.4 Newznab
Après toutes ces modifications, redémarrez votre serveur apache :
|
/etc/init.d/apache2 restart
|
Puis connectez vous à votre serveur http://serveur/newznab/www et suivez les instructions. Une fois que vous aurez ajouté un groupe, il vous faudra lancer un script pour récupérer les derniers headers. Le résultat devrait être similaire à celui là :
php
|
> cd /var/www/newznab/misc/update_scripts
> php update_binaries.php
PHP Warning: mysql_pconnect(): Headers and client library minor version mismatch. Headers:50149 Library:50311 in /var/www/newznab/www/lib/framework/db.php on line 12
newznab 0.2.3 Copyright (C) 2012 newznab.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Updating: 1 groups - Using compression? No
Processing alt.binaries.teevee
Group alt.binaries.teevee has 50,001 new parts.
First: 334617788 Last: 454617805 Local last: 0
New group starting with 50000 messages worth.
Getting 20,001 parts (454567805 to 454587805) - 30,000 in queue
Received 20001 articles of 20001 requested, 0 blacklisted, 0 not binaries
500 bin adds...1000 bin adds...1500 bin adds...2000 bin adds...
2,456 new, 0 updated, 20,001 parts. 4.50 headers, 6.17 update, 10.67 range.
Getting 20,001 parts (454587806 to 454607806) - 9,999 in queue
Received 20001 articles of 20001 requested, 0 blacklisted, 0 not binaries
500 bin adds...1000 bin adds...1500 bin adds...
1,989 new, 268 updated, 20,001 parts. 4.05 headers, 6.98 update, 11.03 range.
Getting 9,999 parts (454607807 to 454617805) - 0 in queue
Received 9999 articles of 9999 requested, 0 blacklisted, 1 not binaries
500 bin updates...
487 new, 754 updated, 9,998 parts. 2.84 headers, 4.27 update, 7.11 range.
Group processed in 29.74 seconds
Updating completed in 30.09 seconds
|
Ensuite, il nous faudra créer les releases :
php
|
> php update_releases.php
PHP Warning: mysql_pconnect(): Headers and client library minor version mismatch. Headers:50149 Library:50311 in /var/www/newznab/www/lib/framework/db.php on line 12
newznab 0.2.3 Copyright (C) 2012 newznab.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Starting release update process (2012-12-16 00:42:54)
updated regexes to revision 1742
Applying regex 2 for group alt.binaries.*
Applying regex 1 for group alt.binaries.*
Stage 2
Stage 3
Found 0 nfos in 0 releases
0 nfo files processed
Site config (site.checkpasswordedrar) prevented checking releases are passworded
Processing tv for 0 releases
Lookup tv rage from the web - Yes
Tidying away binaries which cant be grouped after 2 days
Deleting parts which are older than 2 days
Deleting binaries which are older than 2 days
Processed 0 releases
|
Une fois que ces actions ont été exécutées à la main, nous allons les mettre de manière automatique en crontab :
crontab -e
|
0 * * * * /var/www/newznab/misc/update_scripts/cron_scripts/newznab.sh start > /dev/null
|
Nous allons devoir également donner les droits et modifier les paths par défaut :
|
chmod 755 /var/www/newznab/misc/update_scripts/cron_scripts/newznab.sh
perl -pi -e 's/\/usr\/local\/www/\/var\/www/' /var/www/newznab/misc/update_scripts/cron_scripts/newznab.sh
|
4 Utilisation
4.1 Import d'une liste de serveurs
La liste de serveurs fournie par défaut est certe bien, mais ne réponds pas forcément à vos attentes. J'ai donc fait un petit script d'exemple qui va récupérer une liste de serveurs depuis un site web, créer une liste "propre", vérifier qu'ils ne sont pas déjà en base, puis ajouter tout d'un coup et les activer par la même occasion. Voici mon script :
add_ngs_list.sh
|
#!/bin/sh
# Vars
ngs_list='liste_newsgroups'
mysql_batch='mysql_batch.sql'
database='newznab'
login='newznab'
password='password'
activate=1
url='http://www.binnews.in/_bin/newsgroup.php?country=fr'
# Getting URL
echo 'Getting newsgroups servers from URL'
wget -O $ngs_list.old "$url"
echo "Extracting all newsgroups servers"
grep title $ngs_list.old | awk -F\" '{ print $2 }' > $ngs_list
# Generate sql batch
echo "Generating SLQ batch file in $mysql_batch"
echo "" > $mysql_batch
for i in `cat $ngs_list` ; do
if [ `mysql -u$login -p$password -e "select name from newznab.groups where name = '$i'" | grep -c $i` -eq 0 ] ; then
echo "insert into $database.groups (name,backfill_target,first_record,first_record_postdate,last_record,last_record_postdate,last_updated,minfilestoformrelease,minsizetoformrelease,active,description) values ('$i',1,0,NULL,0,NULL,NULL,NULL,NULL,$activate,'$i');" >> $mysql_batch
fi
done
# Import SQL
echo "Importing batch file in $database database"
mysql -u$login -p$password newznab < $mysql_batch
|
Il ne vous reste plus qu'à rensigner la partie vars avec les bons éléments, mettre les droits et exécuter ce script pour faire une insertion massive.