Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
oget
toperRet
idiCal
col
ator
iLuc
aTes
toni
L'
intentodi questodocument oe' quell
odi s
piegarel'a
rchit
ett
uraei lfunzi
onamentodiunsi
stema
cli
ent/serveringradodi f
orni
r eall'
utent
eun'inter
facci
awebperl 'uploaddiilemulti
medi
al
i,difor
nir
e
unapi a
t taf
or madiconversi
onedeli l
eorigi
nalein3f ormatis
tandard( AVI
,Mp3eMp4)di stri
buit
asu2
serverdi conversi
oneedi ri
-sinc
r oni
zzareiileottenutinel
lacar
tell
awebdi par
tenzainmododa
permett ereildownloadall
'utente.
Architettura
L'
archit
etturas ibasas upiu'pr
ot ocoll
iel i
nguaggidiprogr ammaz i
onenonc hés uunpr ogramma
denominatobr okerperl ages t
ionedi mes saggi(Rabbi
tMq)eunpr ogrammadi c onver
sionedeiile
chi
amat ofmpeg.
Iprotocol
liutil
izzatisono:
HTTP,perl 'i
nterfacc
iawebs ulserverweb( SW)mes s
aadi spos
izi
onedel l
'ut
ent eperildownloade
l'
uploaddei il
emul timediali
;
AMQP( Advanc edMes sageQueui ngPr otocol)
,perlos ca
mbi odi mes s
aggifrailSW ei serverdi
conversi
one( SC) ;
RSSperper mettereall'
utentedi accorgersiquandoi i
lec onvert
itisonodisponibil
iperildownload.
Ili
nguaggi diprogrammaz ioneut i
li
zz a
tisonoi lphpel'htmlment reilbrokere'sc r
it
toinEr l
ang.
Funzi onament o
Lapagi nadi upl oade' protet tadauns is
t emadi l
oginbas atos ucredenz ialisalvateinunat abel las uun
DBMS.Perr ender eHTTPs tat efullequi ndi mant ener ememor i
adei l
oginefet tuatidagl iutent i,si e'
sceltodi ut
ili
z zar eanc heunc ooki ec hememor izzalas es si
onedi l
ogindi ogni utenteperundet ermi nato
per i
odo.
Dopoav erefet tuat oi llogin,l 'utent es iritrovanel lapagi nac ontenent elaf or m diuploadi nc ui gli viene
chiestoi lnomedeli leel adat a.Unavol tac ompi l
a t
i icampi ,a l
l'
ut ente vienec hi
es t
odi scegl i
er ei li l
eda
car i
caredals uodi spos i
ti
vo.Cl iccandos u“ Upl oad”avvi enel 'uploadver oepr oprio.
Ilnomeel adat avengonos a lvat ii
nduev ariabil
iphpc onduec hiamat ePOST,i lilevienes alva toc onil
nomec ompos toda ll
adat a_nomei nunac artellasulSW c onun’ ulteriorec hiamat aPOST.
Aques topunt oi lnomeel adat aei lpat hdeli l
evengonoi nc apsulati i
nunmes s
aggi oinsiemea llac hiave
di exchangec hei dent i
i caaqua l
es erverdev ees seres peditoi lmes saggio( SC1oSC2)ei lmes saggi o
vienei nviat
oalbr okerl ocale( 127. 0. 0.1)c hes ioc cupadel l'
inviover oepr oprios upr otocolloAMQPal
SCi na s col
toes ol oal ui
.
Quandol '
SCr i
cev eilmes saggi oc ont enent ei da t
i dellevar i
abi l
i,vienea ttivataunaf unz i
onephpc he
leggei lpathdeli leinr emot o;di cons eguenz a,si atti
vaunas essioner syncdaSCaSW c hec opi ai li l
e
i
nunadi rectoryl oc aledi SC,vengonoat t i
va telec onver si
onideli lenei 3f ormat ievengonol etti il
nomeel ada tac hec ompor r annoi nomi dei i l
edi out putc on3es tens i
oni diverse( .
avi .mp3e. mp4) .
Quandol econver si
onis onot er minat es i attivaunas ec ondas essioner syncc heri-si
nc ronizzal ac ar t
ella
localec onl ac art ellar emot a,c ari
c andoqui ndi difa t
t oi 3i l
edi out puts ulSW.
Aques topunt ol 'RSSa vvi
ser àl '
utent edel lac ompar s adei trei leepot ràc ollegarsia l
lapagi nawebper
sca r
icarli
.
Appl i
cazione
L'
appl i
cazi
onepr i
nci
pa l
ediquestos i
stemae' attual
ment equel l
adi converti
relezi
oniregistra
tedi cor
si
universi
tari
,i
nf ormatist
andardchegli st
udent i
pos sonos c
aricare,perpoteres s
erevis t
isiasupcc hesu
dis
pos i
tivimobil
i.
Laf or
m di i
nseri
mentopr ev
edeunpr imoc ampodata modi icabi
lepergar anti
reall'
operatoreches ta
efet t
uandol '
uploadlapossibi
li
tàdicaric
arev ecchi
el ez
ioni
;s eilcampodata nonvi eneva l
orizz
atousa
didefaultladatael '
oraincuisist
aefet tuandol '
upload.Vienequi ndiri
chi
estol'i
nserimentodi un
secondoc ampomateria s elezi
onabiledaunal ist
adi nomi separatipercorsodi i
nsegna mento.
L'i
nsi
emedi ques t
i duec ampi f
ormai lnomedeli lec hever r
a'passatoals i
stemaeut li
zzatod'orainpoi
peridentiic
a r
ei lile.I
lf ormatodelnomes ara' quindiYYMMDD_materia.estensione.
Ilsi
stemae' coni guratoperges t
ir
elel ezioni suddividendoleindirect
ory,unaperogni materia.
All'
i
nternodel l
adi rectorydellama t
er i
at r
ov eremoa ltre3di r
ectory(audio,video,mobil
e)c he
conterr
annoal orovol tai il
emul ti
medi al
ipr odot tidall
ac onversi
oneeuni lephpc hegener agliRSS.L
a
sincr
onizzazi
onec ompr endel '
i
nteradirectorydel lama teri
aspostandos oloi il
enuovi.
Unavol taterminatal ac onversi
oneel as i
nc ronizzaz i
onedel l
acartel
lacont eneteiileprodotti,l
'
RSS
avvisal
'utentedel lapres enzadinuovel ezioni disponibili
perildownload.
Per chéAMQP
Ilvantaggiodiusar
eunbr okerdi i
nviomessaggiba s
a t
os uAMQPs t
atuttanelfattoc hee' unprot
oc ol
lo
diges ti
onedicodedi messaggiasi
ncrono.I
lbr okermanti
eneunac odadei messaggidai nviar
eagliSC
siaquandoques tis
onoof- li
ne,s i
aquandos onooc cupat
inell
ac onversi
onedi alt
riile.Lac adut
adi un
SCi nfatt
inoncompor tal
aper di
tadelmes s
aggi oaluidesti
nato:ilmessaggioresteràqui ndii
ncoda
pressoilbrokerintantoc
hei lbrokernonri
us cir
àas pedi
reilmes saggi
o.
Di
agr
ammadilus
sodels
ist
ema
WS
HTTPUpl
oad/
RSS
Cart
ell
aWSperl '
upl
oadei
ldownl
oaddei
il
emultimedi
al
i
E.
g./
var
/www/
Rabbi
tMQ
Server
fmpeg_exc
hange1 fmpeg_exc
hange2
SC1 SC2
RabbitMQ RabbitMQ
cl
ient cl
ient
RSYNC RSYNC
fmpeg fmpeg
Codi
ce
WS
La
tos erveravr
emounaf unzi
onecheri
ceveivaloridal
laf
orm ecost
ruis
ceilmessaggi
ocompost
odal
pat
h,da lnomedelile(c
ompos t
oas uavol
tada lnomeedalladatascel
tadal
l'
utentenel
laf
orm)e
dal
l'
exchangecheident
iicaSCac ui
deveesserespeditoi
lmessaggi
o.
I
ndex.
php(
logi
nef
orm diupl
oad)
<?php if(!isset($_COOKIE['magicookie'])){
header("location:login/");
} else if($_COOKIE['magicookie']=='no'){
header("location:login/");
} else {?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Ce@ Ajax File Upload Form</title>
<a>Browse</a>
<input type="file" name="upl" multiple />
</div>
<ul>
<!-- The file uploads will be shown here -->
</ul>
</form>
<?php } ?>
</body>
</html>
f
unc
tion.
php(
ilec
onl
efunzi
onidis
ist
ema)
Funzi
oneperlaconnessi
onealDB
function mysql_connection($host, $myuser, $mypass){
$myconnection = mysql_connect($host, $myuser, $mypass);
if (!$myconnection) {
die('Could not connect: ' . mysql_error());
}
return $myconnection;
}
QueryalDBperilc
onfront
odell
ecredenz
ial
i
function login($user, $pass){
$pass=md5($pass);
$link=mysql_connection('127.0.0.1', 'user', 'password');
mysql_select_db('magicboxes');
$query = sprintf("SELECT name, pass FROM mb_users WHERE user='$user' AND
pass='$pass'");
$result = mysql_query($query);
if (mysql_num_rows($result) == 0) {
setcookie('magicookie', 'no', time() + 5, '/');
header('Location: ./index.php');
exit;
}
while ($row = mysql_fetch_assoc($result)) {
if ($row['pass']===$pass){
return true;
}
}
}
For
m dil
ogini
nHTML
function form_login(){
echo'<div id="Login-form"></div>
<form id="login"
method="post"
action="login.php">
<h4>Login</h4><p>
<h4>User
<input type="text" name="user"></h4><p>
<h4>Password
<input type="password" name="pass"></h4>
<input type="submit" id="login" value="Login">
</form> ';
}
Funzi
onesender
function sender($text, $rk, $exchange, $ip){
$msg=$ex->publish($text, $rk);
if (!$msg){echo "error";}echo 'Sended '.$msg.'<br>';
if (!$connection->disconnect()) {
throw new Exception('Could not disconnect');
} else {
echo "disconnected";
}
}
upl
oad.
php
//costruiamo il path
$file = pathinfo($_FILES['file']['name']);
list($path, $url) = explode(' ', urldecode());
$path = $path.'.'.$file['extension'];
if(file_exists($url)){
move_uploaded_file($_FILES['file']['tmp_name'], "$url/$path");
} else {
mkdir("$url", 0755, true);
move_uploaded_file($_FILES['file']['tmp_name'], "$url/$path");
}
$text=$path.' '.$url;
PIDDIR=/var/log/rabbit/
FILE=/var/daemon.php
CONFIGFILE=/etc/php5/apache2/php.ini
DAEMON=/usr/bin/php
DESC=amqp-daemon
NAME=amqp-daemon
USERID=root
GROUPID=root
case "$1" in
start)
stop)
echo -n "Stopping $DESC: "
# Send TERM after 5 seconds, wait at most 30 seconds.
start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet
--exec $DAEMON
echo Stoppped
;;
restart)
echo -n "Restarting $DESC: "
# Send TERM after 5 seconds, wait at most 30 seconds.
start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet
--exec $DAEMON
echo Stopped
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
Laf
unz
ioner
ecei
verc
ont
enut
aneli
ledaemon.
phper
ichi
ama
tada
llos
cri
ptdi
ini
t
/
/Imposta l'ip del broker AMQP
$ip = '';
$SC = 'SC1';
//Imposta l'exchange che identifica la macchina exchange1 per SC1, exchange2 per
SC2
$exch = 'ffmpeg_exchange1';
while(true){
$msg=$queue->get();
list($path, $url) = explode(' ',$msg['msg']);
if ($msg['count'] > -1){
sync($lpath, $url, $path, $ip);
encoder($lpath, $url, $path);
rsync($lpath, $url, $path, $ip);
} else {
sleep(1);
}
}
if (!$connection->disconnect()) {
throw new Exception('Could not disconnect');
}
}
$date = date('y-m-d');
$log=new Logger($cpath.'/log/ffmpeg-calls_'.$date.'.log','a+');
$log->log(date('Y-m-d H:i:s').' > file syncronized for '.$path);
$log->log(date('Y-m-d H:i:s').' > process_start for '.$path);
$info=pathinfo($path);
$input=$cpath.'/'.$url.'/'.$path;
$audio_dir= $cpath.'/'.$url.'/audio/';
$video_dir= $cpath.'/'.$url.'/video/';
$mobile_dir= $cpath.'/'.$url.'/mobile/';
$audio_file= $audio_dir.'AU_'.basename($path,'.'.
$info['extension']).'.mp3';
$video_file= $video_dir.'HD_'.basename($path,'.'.
$info['extension']).'.avi';
$mobile_file= $mobile_dir.'MOB_'.basename($path,'.'.
$info['extension']).'.mp4';
$feed_audio=$cpath.'/rss_audio.php';
$feed_video=$cpath.'/rss_hd.php';
$feed_mobile=$cpath.'/rss_mobile.php';
//Processo audio
//Processo video
//Processo mobile
if (!$connection->isConnected()) {
echo "Cannot connect to the broker";
}
return $connection;
}
Perveri
icar
equanti
cli
entsonoconnes
sials
erver
/br
okerequant
imess
aggisonoincodapront
iper
esser
espedit
ibas
tacoll
egarsi
all
amacchi
nacheospi
tailbr
okeri
nss
hel anc
iar
eilcomando:
pi
ppo@pl
uto#wat
ch-
n1r
abbi
tmqc
tll
is
t_queues
i
lcuiout
putcont
err
àinomedell
ecodeident
iic
atedalnomedelc
li
entc
onnes
soei
lnumer
odei
mess
aggiinc
odapront
iperes
serespedi
ti
.
Li
s t
ingqueues.
..
SC1 3
SC2 4
..
.done.