Hallo,
Ik ben bezig met een verbetering in ons CMS.
Ik wil dat ik het Admin gedeelte kan updaten via een simpele klik.
Ik werk met het Zend Framework, het gaat vooral om de Controllers in de Admin module die aangepast worden.
Op dit moment werkt het ongeveer zo:
Op mijn server heb ik verschillende versies van het cms.
bv:V2.0
Daarbij horend heb ik een xml bestand:
In dit bestand geef ik aan welke de nieuwe versie is en welke bestanden een update moeten krijgen.
Vervolgens worden door mijn class de versies gecontroleerd de rechten tijdelijk op schrijfbaar gezet en de nieuwe inhoud erin geschreven.
Op de websites zelf is ook een bestand aanwezig waarin staat welke versie het is.
Nu voor het controleren maak ik een ftp verbinding met mijn server en controleer ik de licenties.
Maar dit lijkt me niet zo heel veilig.
heeft iemand een idee hoe ik dit beter zou kunnen doen?
Stukje uit de class
Ik ben bezig met een verbetering in ons CMS.
Ik wil dat ik het Admin gedeelte kan updaten via een simpele klik.
Ik werk met het Zend Framework, het gaat vooral om de Controllers in de Admin module die aangepast worden.
Op dit moment werkt het ongeveer zo:
Op mijn server heb ik verschillende versies van het cms.
bv:V2.0
Daarbij horend heb ik een xml bestand:
PHP:
1
2
3
4
5
6
7
8
9
10
11
| <?xml version="1.0" encoding="utf-8"?> <files version="2.0"> <updatefile id="1"> <file>BlockController.php</file> <location>/application/modules/admin/controllers/</location> </updatefile> <updatefile id="2"> <file>version.xml</file> <location>/library/CMS/Licence/</location> </updatefile> </files> |
In dit bestand geef ik aan welke de nieuwe versie is en welke bestanden een update moeten krijgen.
Vervolgens worden door mijn class de versies gecontroleerd de rechten tijdelijk op schrijfbaar gezet en de nieuwe inhoud erin geschreven.
Op de websites zelf is ook een bestand aanwezig waarin staat welke versie het is.
Nu voor het controleren maak ik een ftp verbinding met mijn server en controleer ik de licenties.
Maar dit lijkt me niet zo heel veilig.
heeft iemand een idee hoe ik dit beter zou kunnen doen?
Stukje uit de class
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
| <?php public function indexAction() { $docroot=getenv("DOCUMENT_ROOT"); $licence = new CMS_Licence_Licence(); if($licence->version()==1){ $this->view->msg='CMS is up to date.'; }else{ $data=$licence->version(); if($data['current']<>$data['new']){ $this->view->version=$data; $this->view->msg='CMS is niet up to date.'; // Changelog ophalen $doc = new DOMDocument(); $doc->load('http://licence.**eendomein**.be/versions/'.$data['new'].'.xml'); $updatefiles= $doc->getElementsByTagName( "updatefile" ); $i=0; foreach( $updatefiles as $updatefile) { $i++; $files = $updatefile->getElementsByTagName( "file" ); $file[$i]['name'] = $files->item(0)->nodeValue; $locations = $updatefile->getElementsByTagName( "location" ); $file[$i]['location'] = $locations->item(0)->nodeValue; } $this->view->files=$file; echo '<br>'; $error=false; $q = Doctrine_Query::CREATE() ->from('CMS_model_Settings'); $result = $q->fetchArray(); // FTP verbinding checken $ftp_server = $result[0]['ftp']; $ftp_user_name = $result[0]['ftpuser']; $ftp_user_pass = $result[0]['ftppwd']; foreach($file as $f){ // instellingen instellen $local_file = $docroot.$f['location'].$f['name']; $ftp_file = '/public_html/'.$f['location'].$f['name']; $file = $local_file; // connectie maken $conn_id = ftp_connect($ftp_server); // inloggen $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // chmodden if (ftp_chmod($conn_id, 0777, $ftp_file) !== false) { echo $f['name'].' => Schrijfrechten gegeven <br>'; } else { $error=true; echo 'Kon geen rechten geven aan '.$f['name'].'<br>'; } // verbinding sluiten ftp_close($conn_id); // $server_file = '/public_html/licence/versions/'.$data['new'].$f['location'].$f['name']; // connectie maken $ftp_server='**MIJN FTP**'; $conn_id = ftp_connect($ftp_server,21) or die("Couldn't connect to $ftp_server"); // inloggen $login_result = ftp_login($conn_id, '**MIJN GEBRUIKER**', '**MIJN WACHTWOOR**'); // Bestand downloaden en vervangen if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) { echo 'Update van het bestand <b>'.$f['name'].'</b> gelukt! <br>'; } else { $error=true; echo 'Fout bij updaten bestand<br>'; } // Verbinding sluiten ftp_close($conn_id); // RESET PERMISSIONS // verbinding maken $conn_id = ftp_connect('**MIJN FTP**'); // inloggen $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // chmodden if (ftp_chmod($conn_id, 0644, $ftp_file) !== false) { echo $f['name'].' => Schrijfrechten weggenomen <br>'; } else { $error=true; echo 'Kon rechten niet wijzigen van <b>'.$f['name'].'</b> <br>'; } // sluiten verbinding ftp_close($conn_id); echo '<hr />'; } if(!$error){ echo '<font color="green" size="5">Update voltooid!</font>'; }else{ echo 'Fout bij updaten. Gelieve contact op te nemen met **nvt**'; } }else{ $this->view->msg='CMS is up to date.'; } } } |