Auteur Topic: 3rd Party Manager  (gelezen 33049 keer)

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 123
  • -Ontvangen: 181
  • Berichten: 1.996
3rd Party Manager
« Gepost op: 07 oktober 2008, 17:31:59 »
Zoals wellicht bekend/ondervonden kunnen bij een update van de firmware de 3rd party applicaties worden gewist... Om dat nu te voorkomen deze 3rd party manager. Ik heb het Duitse origineel aangepast naar het Nederlands en hier en daar een tikje verbeterd.
Naast de mogelijkheid van backup en restore is er de mogelijkheid om via de interface een 3rd party applicatie aan te maken en te wissen.

Enige verduidelijkende tekst over de werking staat onder de afbeelding.


application.cfg

text = 3rd party manager
description = 3rd party manager
type=embedded
path = /phpsrc/manager/manager.php

manager.php NB. Bijgewerkt met de beveiliging van Merty. Zie http://synology.nl/forum/viewtopic.php?f=83&t=2274.

<?php
putenv
('HTTP_COOKIE='&#46;$_SERVER['HTTP_COOKIE'&#93;);
putenv('REMOTE_ADDR='&#46;$_SERVER['REMOTE_ADDR'&#93;);
$user=exec('/usr/syno/synoman/webman/modules/authenticate&#46;cgi');
if(
$user != 'admin'){
    
header("HTTP/1&#46;0 403 Forbidden");
    exit;
}
ini_set('session&#46;use_cookies','0');
session_start();
/**
 * Setting some "global" Vars
 */
$appl_names = array();
$path_3rdparty '/usr/syno/synoman/webman/3rdparty';
$path_phpsrc '/usr/syno/synoman/phpsrc';
$backup_dir '/volume1/tmp';
$backup_name 'backupSynology';

$dh opendir($path_3rdparty);
while((
$res=readdir($dh))!==false){
if($res != '&#46;' && $res != '&#46;&#46;' && is_dir($path_3rdparty&#46;'/'&#46;$res)){
$appl_names[&#93; = $res;
}
}
if(isset(
$_POST['delete'&#93;) && isset($_POST['del'&#93;) && count($_POST['del'&#93;) > 0){
foreach ($_POST['del'&#93; as $wert){
(file_exists($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') ? $res=file_get_contents($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') :$res=0);
if($res===0){
continue;
}
preg_match('/path&#46;*?=&#46;*?/phpsrc(/&#46;*?)/&#46;*?&#46;[^s&#93;*/i',$res,$ret);
$tt = array();
exec('rm -r '&#46;$path_3rdparty&#46;'/'&#46;$wert,$tt);
if(isset($ret[1&#93;) && is_dir($path_phpsrc&#46;$ret[1&#93;)){
exec('rm -r '&#46;$path_phpsrc&#46;$ret[1&#93;,$tt);
}
if(count($tt) == 0){
echo 'Entry deleted';
}else{
echo '<pre>'&#46;implode("rn",$tt)&#46;'</pre>';
}
exit;
}
}elseif(isset(
$_POST['senden'&#93;) && !empty($_POST['Linktext'&#93;) && !empty($_POST['Description'&#93;) && !empty($_POST['Dir'&#93;) && !empty($_POST['type'&#93;) && (!empty($_POST['fname'&#93;) || !empty($_FILES['file'&#93;['name'&#93;[0&#93;))){
$att = array();
$strr '<strong>Please check the data below carefully as after your confirmation application directories will be created with the parameters given<br />*** No operation will be executed <u>before</u> you confirm by clicking below ***</strong>';
$strr &#46;= '<br /><br />First the content of <strong>application&#46;cfg</strong> that will be created in <strong>'&#46;$path_3rdparty&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'</strong><br />';
$str '';
$str &#46;= 'text = '&#46;$_POST['Linktext'&#93;&#46;"rn";
$str &#46;= 'description = '&#46;$_POST['Description'&#93;&#46;"rn";
$str &#46;= 'type = ';
($_POST['type'&#93; == 'embedded') ? $str &#46;= 'embedded' : $str &#46;= 'standalone';
$str &#46;= "rn";
$str &#46;= 'path = /phpsrc/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['fname'&#93;))&#46;"rn";
$_SESSION['appl&#46;cfg'&#93; = $str;
$_SESSION['appl&#46;dir'&#93; = preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;));
for($i=0;$i<count($_FILES['file'&#93;['name'&#93;);$i++){
if($_FILES['file'&#93;['name'&#93;[$i&#93; == '' || $_FILES['file'&#93;['size'&#93;[$i&#93; == 0){
continue;
}
$f file_get_contents($_FILES['file'&#93;['tmp_name'&#93;[$i&#93;);
$att[&#93; = array('path'=>$path_phpsrc&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;&#46;'/'&#46;$_FILES['file'&#93;['name'&#93;[$i&#93;,'content'=>$f);
}
if(isset($_POST['file_content'&#93;) && trim($_POST['file_content'&#93;) != ''){
$att[&#93; = array('path'=>$path_phpsrc&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['fname'&#93;)),'content'=>str_replace(chr(13),'',stripslashes($_POST['file_content'&#93;)));
}
$_SESSION['appl&#46;att'&#93; = $att;
echo $strr;
echo '<pre>'&#46;$str&#46;'</pre>';
echo '<br />';
echo 'The following files from your upload will be created:<br /><br />';
foreach($_SESSION['appl&#46;att'&#93; as $wert){
echo '<strong>'&#46;$wert['path'&#93;&#46;'</strong><br />';
}
echo '<br />By clicking <a href="'&#46;$_SERVER['PHP_SELF'&#93;&#46;'?'&#46;strip_tags(SID)&#46;'">this link</a> all the necessary files and settings will be written to disk!!!<br />You can abort the operation by <a href="https://'&#46;$_SERVER['SERVER_ADDR'&#93;&#46;':5001/webman/index&#46;cgi">clicking this link</a>';
}elseif(isset($_POST['backup'&#93;)){
if(!is_dir($backup_dir&#46;'/'&#46;$backup_name)){
mkdir($backup_dir&#46;'/'&#46;$backup_name);
}
$t time();
mkdir($backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$t);
mkdir($backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$t);
foreach($appl_names as $wert){
(file_exists($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') ? $res=file_get_contents($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') :$res=0);
if($res===0){
continue;
}
preg_match('/path&#46;*?=&#46;*?/phpsrc(/&#46;*?)/&#46;*?&#46;[^s&#93;*/i',$res,$ret);
exec('cp -R '&#46;$path_3rdparty&#46;'/'&#46;$wert&#46;' '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$t);
exec('cp -R '&#46;$path_phpsrc&#46;$ret[1&#93;&#46;' '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$t);
}
die('Data succesfully written to backup directory');
}elseif(isset(
$_POST['restore'&#93;) && isset($_POST['path'&#93;) && !empty($_POST['path'&#93;)){
if(!is_dir($_POST['path'&#93;) || !is_dir($_POST['path'&#93;&#46;'/phpsrc_'&#46;$_POST['time'&#93;) || !is_dir($_POST['path'&#93;&#46;'/3rdparty_'&#46;$_POST['time'&#93;)){
die('Data could not be restored because eihter BackupPath was not given OR the subdirectories (3rdparty phpsrc) do not exist in given path');
}
exec('cp -Rf '&#46;$_POST['path'&#93;&#46;'/phpsrc_'&#46;$_POST['time'&#93;&#46;'/* '&#46;$path_phpsrc);
exec('cp -Rf '&#46;$_POST['path'&#93;&#46;'/3rdparty_'&#46;$_POST['time'&#93;&#46;'/* '&#46;$path_3rdparty);
die('Data succesfully restored');
}elseif(isset(
$_SESSION['appl&#46;cfg'&#93;) && isset($_SESSION['appl&#46;dir'&#93;)){
exec('mkdir '&#46;$path_3rdparty&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;);
exec('mkdir '&#46;$path_phpsrc&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;);
$fp fopen($path_3rdparty&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;&#46;'/application&#46;cfg','w');
fwrite($fp,$_SESSION['appl&#46;cfg'&#93;);
fclose($fp);
foreach($_SESSION['appl&#46;att'&#93; as $wert){
$fp fopen($wert['path'&#93;,'w');
fwrite($fp,$wert['content'&#93;);
fclose($fp);
}
unset($_SESSION);
session_destroy();
echo '<a href="https://'&#46;$_SERVER['SERVER_ADDR'&#93;&#46;':5001/webman/index&#46;cgi">Operation successfull: return</a>';
exit;
}else{
?>

<html>
<head>
<title>3rd Party Application Manager</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'&#93;;?>" method="post">
<?php
/**
* Build up a table with checkboxes and names of the installed application
*/
echo '<font size=10; face="Arial">3rd-Party Manager'
echo '<table border="0">';
echo '<tr><td colspan=2><font size="4">Remove a 3rd-Party application</font></td></tr>';
foreach ($appl_names as $wert){
echo '<tr><td><input type="checkbox" name="del[&#93;" value="'&#46;$wert&#46;'" /></td><td><input disabled="disabled" type="text" value="'&#46;$wert&#46;'" /></td></tr>';
}
echo '<tr colspan="4" style="text-align:center;"><td><input type="submit" name="delete" value="Delete" /></td>';
echo '<td><input type="reset" value="Reset selection" /></td></tr></table>';
?>

</form>
<?php
/**
* Form for adding a new application by user
*/
?>

<form action="<?php echo $_SERVER['PHP_SELF'&#93;;?>" method="post" enctype="multipart/form-data">
<table border="0">
<tr><td colspan="3"><font size="4">Create a 3rd-Party application for Diskstation</font></td></tr>
</th>
<tr>
<td>Text for the Link</td><td><input name="Linktext" type="text" size="40" /></td><td></td>
</tr>
<tr>
<td>Text for the Tooltip</td><td><input name="Description" type="text" size="40" /></td>
</tr>
<tr>
<td>Application Directory</td><td><input name="Dir" type="text" size="40" /></td>
</tr>
<tr>
<td>Application Type</td><td><select name="type">
<option value="embedded" selected="selected">Embedded</option>
<option value="standalone">Standalone</option>
</select>
</td>
</tr>
<tr><td>Filename</td><td><input name="fname" type="text" size="40" /></td><td width="340">This is the file that will initially be called by DSM;</br>if this is an uploaded file (see below) please repeat its name here without a path;</br>otherwise enter the file contents below.</td></tr>
<tr>
<tr>
<td colspan=2>Contents of file:</td>
</tr>
<td colspan="20"><textarea name="file_content" rows="40" cols="80"></textarea></td>
</tr>
<tr><td>File(s) to upload</td><td colspan=2><input name="file[]" type="file" size="40" /></td></tr>
<tr><td>&nbsp;</td><td colspan=2><input name="file[]" type="file" size="40" /></td></tr>
<tr><td>&nbsp;</td><td colspan=2><input name="file[]" type="file" size="40" /></td></tr>
<tr><td>&nbsp;</td><td colspan=2><input name="file[]" type="file" size="40" /></td></tr>
<tr><td>&nbsp;</td><td colspan=2><input name="file[]" type="file" size="40" /></td></tr>
<tr>
<td colspan=2><input type="submit" name="senden" value="Create" />&nbsp;<input type="reset" value="Reset Form" /></td>
</tr>
</table>
</form>
<form action="<?php echo $_SERVER['PHP_SELF'&#93;;?>" method="post">
<font size="4">Backup / Restore 3rd-Party applications</font></br>
<select name="time">
<?php
$path $backup_dir&#46;'/'&#46;$backup_name;
$dh opendir($path);
while(($res=readdir($dh))!==false){
if($res != '&#46;' && $res != '&#46;&#46;' && is_dir($path&#46;'/'&#46;$res)){
$t substr($res,strpos($res,'_')+1);
$arr[&#93; = $t;
}
}
$arr array_unique($arr);
rsort($arr);
foreach($arr as $wert){
if(!empty($wert)){
echo '<option value="'&#46;$wert&#46;'">'&#46;date('d&#46;m&#46;y H:i:s',$wert)&#46;'</option>';
}
}
?>

</select>
<input type="text" name="path" />
<input type="submit" name="backup" value="Backup" />&nbsp;&nbsp;<input type="submit" name="restore" value="Restore" />
</font>
</form>
</body>
</html>
<?php
}
?>



Werking:
1) Verwijderen (Remove a 3rd-Party application)
Er wordt een lijst getoond van alle aanwezige 3rd-Party applicaties. Aanvinken van de te verwijderen applicatie(s) en klikken op 'Delete'. Met 'Reset selection' worden alle applicaties uitgevinkt.

2) Aanmaken (Create a 3rd-Party-Application)
Dit volgt de globale opbouw van application.cfg (zie evt. hierboven)

- 'Text for the link' is de tekst die getoond wordt in het 3rd-Party menu in de DSM

- 'Text for the Tooltip' is de tekst die in de tooltip staat die in het 3rd-Party menu bij deze applicatie getoond wordt

- 'Application Directory' is de directory onder /usr/syno/synoman/phpsrc die aangemaakt zal worden om de applicatie in onder te brengen

- 'Application Type': Embedded of Standalone

- 'Filename' is de bestandsnaam die in de link van de DSM wordt aangeroepen. Ter vergelijk, dit is dus de bestandsnaam die helemaal op het eind van de 'Path' waarde in application.cfg staat (bij deze 3rd-Party manager is dat dus 'manager.php'

- 'Contents of file' geeft de mogelijkheid om het bij filename genoemde bestand te voorzien van inhoud (dus bv. in dit geval de hele lap code die in manager.php staat. Dit betekent dat je dus niet eerst het bestand hoeft aan te maken, te vullen en op te slaan.

- 'File(s) to upload' zijn eventuele extra te plaatsen bestanden in de 'application directory'

Met de knop 'Create' geef je opdracht om de applicatie te maken/installeren. Er verschijnt dan een bevestigingsscherm waarop je e.e.a. nog eens kunt overzien, alsvorens definitief te bevestigen
De knop 'Reset form' wist alle invoer.

LET OP!
Als je enkel bestanden te uploaden hebt en één daarvan is het bestand dat aangeroepen gaat worden vanuit de DSM (en je hoeft dus niet een bestand te vullen met gegevens in ''Contents of file'), dan dien je dit te uploaden bestand nogmaals te benoemen bij 'Filename'.
Anders zou je weliswaar de bestanden uploaden, maar heb je de DSM niet duidelijk gemaakt wélke van de ge-uploade bestanden je als startbestand wilt zien. :mrgreen:
Er vindt een controle plaats of alle benodigde velden zijn ingevoerd.

De enige adder die ik onder het gras zie zitten is bij het 'inplakken' van een .cgi bestand in het 'Contents of file' venster. Zoals ik in eerdere posts al heb geschreven heb je grote kans dat een vanuit Windows geplakt .cgi script niet goed uitgevoerd wordt omdat Windows ^M-tekens aan het einde van een regel plakt. Je kan dus wél op deze manier een .cgi script naar de Syno uploaden, je zal alleen wél naderhand de ^M tekens uit het bestand moeten vissen. :(  PHP bestanden hebben er veel minder moeite mee. Ik studeer nog op een mogelijkheid om ook die ^M's er uit te filteren.... (als iemand nog suggesties heeft....) :mrgreen:

3) Backup en restore
Initieel is de drop-down links leeg; pas als er één of meer backups gemaakt zijn komen hier de diverse gemaakte backups te staan, gesorteerd op datum; de nieuwste eerst.
Als je klikt op 'Backup' wordt de gehele 3rd-party directorystructuur gekopiëerd. Waarheen is instelbaar in het script. Standaard is dit '/volume1/tmp/backupSynology'.
Restore werkt uiteraard enkel ná een eerste backup. Je kiest uit de dropdown lijst de backup die je wilt restoren en klikt op 'Restore'.

Veel plezier er mee!

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 123
  • -Ontvangen: 181
  • Berichten: 1.996
Update 3rd Party Manager
« Reactie #1 Gepost op: 07 oktober 2008, 18:36:01 »
Zie ineens een nog mooiere staan dan er al was... Werking eigenlijk het zelfde alleen grafisch fraaier:



Aan application.cfg hoeft niets te worden veranderd; manager.php is als volgt:

manager.php NB. Bijgewerkt met de beveiliging van Merty. Zie http://synology.nl/forum/viewtopic.php?f=83&t=2274.
<?php
putenv
('HTTP_COOKIE='&#46;$_SERVER['HTTP_COOKIE'&#93;);
putenv('REMOTE_ADDR='&#46;$_SERVER['REMOTE_ADDR'&#93;);
$user=exec('/usr/syno/synoman/webman/modules/authenticate&#46;cgi');
if(
$user != 'admin'){
    
header("HTTP/1&#46;0 403 Forbidden");
    exit;
}
ini_set('session&#46;use_cookies','0');
session_start();

$appl_names = array();
// KEINE abschliessenden / bei den Verzeichnissen!!!
$path_3rdparty '/usr/syno/synoman/webman/3rdparty';
$path_phpsrc '/usr/syno/synoman/phpsrc';
$backup_dir '/volume1/tmp';
$backup_name 'backupSynology';

$dh opendir($path_3rdparty);
while((
$res=readdir($dh))!==false){
  if(
$res != '&#46;' && $res != '&#46;&#46;' && is_dir($path_3rdparty&#46;'/'&#46;$res)){
   
$appl_names[&#93; = $res; 
  

}
natcasesort($appl_names); 

if(isset(
$_POST['delete'&#93;) && isset($_POST['del'&#93;) && count($_POST['del'&#93;) > 0){ 
 
foreach ($_POST['del'&#93; as $wert){ 
  
(file_exists($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') ? $res=file_get_contents($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') :$res=0); 
 
if($res===0){ 
   continue; 
  } 
  
preg_match('/path&#46;*?=&#46;*?/phpsrc(/&#46;*?)/&#46;*?&#46;[^s&#93;*/i',$res,$ret); 
  
$tt = array(); 
  
exec('rm -r '&#46;$path_3rdparty&#46;'/'&#46;$wert,$tt); 
  
if(isset($ret[1&#93;) && is_dir($path_phpsrc&#46;$ret[1&#93;)){ 
   
exec('rm -r '&#46;$path_phpsrc&#46;$ret[1&#93;,$tt); 
  

  if(
count($tt) == 0){ 
   echo 
'Entry deleted'
  }else{ 
   echo 
'<pre>'&#46;implode("rn",$tt)&#46;'</pre>'; 
  

  exit; 
 } 
}elseif(isset(
$_POST['senden'&#93;) && !empty($_POST['Linktext'&#93;) && !empty($_POST['Description'&#93;) && !empty($_POST['Dir'&#93;) && ! 

empty($_POST['type'&#93;) && !empty($_POST['fname'&#93;)){ 
 
$att = array(); 
 
$strr '<strong>Please check the data below carefully as after your confirmation application directories will be created with the parameters given<br />*** No operation will be executed <u>before</u> you confirm by clicking below ***</strong>'
 
$strr &#46;= '<br /><br />First the content of <strong>application&#46;cfg</strong> that will be created in <strong>'&#46;$path_3rdparty&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'</strong><br />'; 
 
$str ''
 
$str &#46;= 'text = '&#46;$_POST['Linktext'&#93;&#46;"rn"; 
 
$str &#46;= 'description = '&#46;$_POST['Description'&#93;&#46;"rn"; 
 
$str &#46;= 'type = '; 
 
($_POST['type'&#93; == 'embedded') ? $str &#46;= 'embedded' : $str &#46;= 'standalone'; 
 
$str &#46;= "rn"; 
 
$str &#46;= 'path = /phpsrc/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['fname'&#93;))&#46;"rn"; 
 
$_SESSION['appl&#46;cfg'&#93; = $str; 
 
$_SESSION['appl&#46;dir'&#93; = preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;)); 

 
for($i=0;$i<count($_FILES['file'&#93;['name'&#93;);$i++){ 
  
if($_FILES['file'&#93;['name'&#93;[$i&#93; == ''){ 
   
continue; 
  } 
  
$f file_get_contents($_FILES['file'&#93;['tmp_name'&#93;[$i&#93;); 
  
$att[&#93; = array('path'=>$path_phpsrc&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;&#46;'/'&#46;$_FILES['file'&#93;['name'&#93;[$i&#93;,'content'=>$f); 
 

 if(isset(
$_POST['file_content'&#93;) && trim($_POST['file_content'&#93;) != ''){ 
  
$att[&#93; = array('path'=>$path_phpsrc&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['fname'&#93;)),'content'=>str_replace(chr(13),'',stripslashes($_POST['file_content'&#93;))); 
 

 
$_SESSION['appl&#46;att'&#93; = $att; 

 
echo $strr
 echo 
'<pre>'&#46;$str&#46;'</pre>'; 
 
echo '<br />'
 echo 
'The following files from your upload will be created:<br /><br />'
 foreach(
$_SESSION['appl&#46;att'&#93; as $wert){ 
  
echo '<strong>'&#46;$wert['path'&#93;&#46;'</strong><br />'; 
 

 echo 
'<br />By clicking <a href="'&#46;$_SERVER['PHP_SELF'&#93;&#46;'?'&#46;strip_tags(SID)&#46;'">this link</a> all the necessary operation will be written to disk!!!<br />You can abort the operation by <a href="https://'&#46;$_SERVER['SERVER_ADDR'&#93;&#46;':5001/webman/index&#46;cgi">clicking this link</a>'; 
}elseif(isset($_SESSION['appl&#46;cfg'&#93;) && isset($_SESSION['appl&#46;dir'&#93;)){ 
 
exec('mkdir '&#46;$path_3rdparty&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;); 
 
exec('mkdir '&#46;$path_phpsrc&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;); 
 
$fp fopen($path_3rdparty&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;&#46;'/application&#46;cfg','w'); 
 
fwrite($fp,$_SESSION['appl&#46;cfg'&#93;); 
 
fclose($fp); 

 foreach(
$_SESSION['appl&#46;att'&#93; as $wert){ 
  
$fp fopen($wert['path'&#93;,'w'); 
  
fwrite($fp,$wert['content'&#93;); 
  
fclose($fp); 
 } 
 unset(
$_SESSION); 
 
session_destroy(); 
 echo 
'<a href="https://'&#46;$_SERVER['SERVER_ADDR'&#93;&#46;':5001/webman/index&#46;cgi">Operation Successfull</a>'; 
 
exit; 
}elseif(isset(
$_POST['backup'&#93;)){ 
 
if(!is_dir($backup_dir&#46;'/'&#46;$backup_name)){ 
  
mkdir($backup_dir&#46;'/'&#46;$backup_name); 
 

 
$t time(); 
 
mkdir($backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$t); 
 
mkdir($backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$t); 
 
foreach($appl_names as $wert){ 
  (
file_exists($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') ? $res=file_get_contents($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') :$res=0); 
 
if($res===0){ 
   continue; 
  } 
  
preg_match('/path&#46;*?=&#46;*?/phpsrc(/&#46;*?)/&#46;*?&#46;[^s&#93;*/i',$res,$ret); 
  
exec('cp -R '&#46;$path_3rdparty&#46;'/'&#46;$wert&#46;' '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$t); 
  
exec('cp -R '&#46;$path_phpsrc&#46;$ret[1&#93;&#46;' '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$t); 
 

 die(
'Data succesfully written to backup directory'); 
}elseif(isset(
$_POST['restore'&#93;) && isset($_POST['time'&#93;) && !empty($_POST['time'&#93;)){ 
 
if(!is_dir($backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$_POST['time'&#93;) || !is_dir($backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$_POST['time'&#93;)){ 
  
die('Data could not be restored because either Backup Path was not given OR the subdirectories (3rdparty phpsrc) do not exist in given path'); 
 } 
 
exec('cp -Rf '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$_POST['time'&#93;&#46;'/* '&#46;$path_phpsrc); 
 
exec('cp -Rf '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$_POST['time'&#93;&#46;'/* '&#46;$path_3rdparty); 
 
die('Data succesfully restored'); 
}else{ 
?>

 <html>
 <head>
 <title>3rd Party Application Remover</title>
 <style>body,input,textarea,td,option,select{font:11px Verdana}fieldset{border:1px solid #bbb}</style>
 </head>
 <body>
 <form action="<?php echo $_SERVER['PHP_SELF'&#93;;?>" method="post">
 <fieldset><legend>installed 3rd-party-applications / remover</legend><table border="0"><tr>
 <?php 
 $ii
=0
 foreach (
$appl_names as $wert){ 
  echo 
'<td width="120px"><input type="checkbox" name="del[&#93;" value="'&#46;$wert&#46;'" />'&#46;$wert&#46;'</td><td>'; 
  
if (++$ii == 0) echo '</td></tr><tr>'
 } 
 
?>

 </tr></table>
 <input style="margin-left:150px;margin-top:5px;" type="reset" value="reset form" />
 <input style="margin-left:320px" type="submit" name="delete" value="remove 3rd-party-apps" />
 </fieldset></form>
 <form action="<?php echo $_SERVER['PHP_SELF'&#93;;?>" method="post" enctype="multipart/form-data">
 <fieldset><legend>create 3rd-party-application</legend>
 <span style="padding-right:53px">text for the link:</span> <input size="90" type="text" name="Linktext" /><br/>
 <span style="padding-right:20px">description for tooltip:</span> <input size="90" type="text" name="Description" /><br/>
 <span style="padding-right:25px">application directory:</span> <input size="90" type="text" name="Dir" /><br/>
 <span style="padding-right:51px">application type:</span> <select name="type">
 <option value="embedded" selected="selected">embedded</option>
 <option value="popup">popup</option></select><br/>
 <span style="padding-right:96px">filename:</span><input input size="90" type="text" name="fname" /><br/>
 <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
 <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
 <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
 <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
 <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
 <span style="padding-right:83px">file content:</span><textarea name="file_content" rows="10" cols="87"></textarea><br/>
 <input style="margin-left:150px" type="reset" value="reset form" /><input style="margin-left:330px" type="submit" name="senden" value="create 3rd-party-app" />
 </fieldset>
 <fieldset><legend>Backup and Restore 3rd Party Applications</legend>
 <fieldset><legend>Backup 3rd Party Applications</legend>
 <input type="submit" name="backup" value="Create Backup" />
 </fieldset>
 <fieldset><legend>Restore 3rd Party Applications</legend>
 <span style="padding-right:20px">Select date for restore</span><select name="time">
 <?php 
 $path 
$backup_dir&#46;'/'&#46;$backup_name; 
 
$dh opendir($path); 
 
$arr = array(); 
 while((
$res=readdir($dh))!==false){ 
  if(
$res != '&#46;' && $res != '&#46;&#46;' && is_dir($path&#46;'/'&#46;$res)){ 
   
$t substr($res,strpos($res,'_')+1); 
   
$arr[&#93; =intval($t); 
  


$arr array_unique($arr); 
rsort($arr); 
foreach(
$arr as $wert){ 
 if(!empty(
$wert) && $wert != 0){ 
   echo 
'<option value="'&#46;$wert&#46;'">'&#46;date('d&#46;m&#46;y H:i:s',$wert)&#46;'</option>'; 
 


?>

</select>
<input type="submit" name="restore" value="Restore" />
</fieldset>
</fieldset>
 </form>
</body>
 </html>
<?php 

?>

Succes!

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 123
  • -Ontvangen: 181
  • Berichten: 1.996
Re: 3rd Party Manager
« Reactie #2 Gepost op: 07 oktober 2008, 19:58:29 »
Oeps!

Was zelf eens even bezig en tot mijn verbazing werkte php-code die ik middels het file-contents venster had ge-upload niet.... Volgens mij miste er een stripslashes :oops:

Voor wie wil weten waar:
de regel
 $att[] = array('path'=>$path_phpsrc.'/'.preg_replace('/s+|/+/','',strtolower($_POST['Dir'])).'/'.preg_replace('/s+|/+/','',strtolower($_POST['fname'])),'content'=>$_POST['file_content']);

Zou moeten luiden:
 $att[] = array('path'=>$path_phpsrc.'/'.preg_replace('/s+|/+/','',strtolower($_POST['Dir'])).'/'.preg_replace('/s+|/+/','',strtolower($_POST['fname'])),'content'=>stripslashes($_POST['file_content']));

Voor ieder ander heb ik de geposte code aangepast.

Bij mij werkt het...

Groet,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 123
  • -Ontvangen: 181
  • Berichten: 1.996
Re: 3rd Party Manager
« Reactie #3 Gepost op: 07 oktober 2008, 20:26:39 »
....en als ik dan toch bezig ben gelijk maar die ^M tekens er uit :mrgreen:

dezelfde regel wordt (weer) vervangen:

$att[] = array('path'=>$path_phpsrc.'/'.preg_replace('/s+|/+/','',strtolower($_POST['Dir'])).'/'.preg_replace('/s+|/+/','',strtolower($_POST['fname'])),'content'=>stripslashes($_POST['file_content']));
Wordt nu:

$att[] = array('path'=>$path_phpsrc.'/'.preg_replace('/s+|/+/','',strtolower($_POST['Dir'])).'/'.preg_replace('/s+|/+/','',strtolower($_POST['fname'])),'content'=>str_replace(chr(13),'',stripslashes($_POST['file_content'])));
Wederom ook bijgewerkt in beide eerder geposte versies van manager.php

Tot zover...

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 123
  • -Ontvangen: 181
  • Berichten: 1.996
Re: 3rd Party Manager
« Reactie #4 Gepost op: 25 oktober 2008, 19:08:20 »
Code is bijgewerkt met de beveiliging van Merty.

Groet,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline Luit

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 301
Re: 3rd Party Manager
« Reactie #5 Gepost op: 25 oktober 2008, 20:14:47 »
Wizjos,

pas je ook nog de 2e variant aan?  Je vond deze zelf grafisch fraaier....

Luit

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 123
  • -Ontvangen: 181
  • Berichten: 1.996
Re: 3rd Party Manager
« Reactie #6 Gepost op: 25 oktober 2008, 21:19:15 »
Citaat van: "Luit"
Wizjos,

pas je ook nog de 2e variant aan?  Je vond deze zelf grafisch fraaier....

Luit

 :oops: ...en dan wil je het even snel doen....  

Ook deze code aangepast! Dank voor de opmerkzaamheid! :mrgreen:

Groet,

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wowo

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 152
Re: 3rd Party Manager
« Reactie #7 Gepost op: 27 oktober 2008, 20:42:35 »
Zojuist jou versie van 3rd Party Manager "geinstalleerd".
Hij werkt  :P , maar geeft wel ook de volgende foutmelding: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/syno/synoman/phpsrc/manager/manager.php:1) in /usr/syno/synoman/phpsrc/manager/manager.php on line 10
Jij weet vast wel wat dat betekent en of hoe ik het kan oplossen.
Er kan blijkbaar iets mis zijn op regel 10 van manager.php.
Ik voeg voor de volledigheid mijn code bij:
   <?php
    putenv
('HTTP_COOKIE='&#46;$_SERVER['HTTP_COOKIE'&#93;);
    
putenv('REMOTE_ADDR='&#46;$_SERVER['REMOTE_ADDR'&#93;);
    
$user=exec('/usr/syno/synoman/webman/modules/authenticate&#46;cgi');
    if(
$user != 'admin'){
        
header("HTTP/1&#46;0 403 Forbidden");
        exit;
    }
    
ini_set('session&#46;use_cookies','0');
    
session_start();

    
$appl_names = array();
    
// KEINE abschliessenden / bei den Verzeichnissen!!!
    
$path_3rdparty '/usr/syno/synoman/webman/3rdparty';
    
$path_phpsrc '/usr/syno/synoman/phpsrc';
    
$backup_dir '/volume1/tmp';
    
$backup_name 'backupSynology';

    
$dh opendir($path_3rdparty);
    while((
$res=readdir($dh))!==false){
      if(
$res != '&#46;' && $res != '&#46;&#46;' && is_dir($path_3rdparty&#46;'/'&#46;$res)){
       
$appl_names[&#93; = $res;
      
}
    }
    
natcasesort($appl_names);

    if(isset(
$_POST['delete'&#93;) && isset($_POST['del'&#93;) && count($_POST['del'&#93;) > 0){
    
foreach ($_POST['del'&#93; as $wert){
      
(file_exists($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') ? $res=file_get_contents($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') :$res=0);
    
if($res===0){
       continue;
      }
      
preg_match('/path&#46;*?=&#46;*?/phpsrc(/&#46;*?)/&#46;*?&#46;[^s&#93;*/i',$res,$ret);
      
$tt = array();
      
exec('rm -r '&#46;$path_3rdparty&#46;'/'&#46;$wert,$tt);
      
if(isset($ret[1&#93;) && is_dir($path_phpsrc&#46;$ret[1&#93;)){
       
exec('rm -r '&#46;$path_phpsrc&#46;$ret[1&#93;,$tt);
      
}
      if(
count($tt) == 0){
       echo 
'Entry deleted';
      }else{
       echo 
'<pre>'&#46;implode("rn",$tt)&#46;'</pre>';
      
}
      exit;
    }
    }elseif(isset(
$_POST['senden'&#93;) && !empty($_POST['Linktext'&#93;) && !empty($_POST['Description'&#93;) && !empty($_POST['Dir'&#93;) && !

    
empty($_POST['type'&#93;) && !empty($_POST['fname'&#93;)){
    
$att = array();
    
$strr '<strong>Please check the data below carefully as after your confirmation application directories will be created with the parameters given<br />*** No operation will be executed <u>before</u> you confirm by clicking below ***</strong>';
    
$strr &#46;= '<br /><br />First the content of <strong>application&#46;cfg</strong> that will be created in <strong>'&#46;$path_3rdparty&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'</strong><br />';
    
$str '';
    
$str &#46;= 'text = '&#46;$_POST['Linktext'&#93;&#46;"rn";
    
$str &#46;= 'description = '&#46;$_POST['Description'&#93;&#46;"rn";
    
$str &#46;= 'type = ';
    
($_POST['type'&#93; == 'embedded') ? $str &#46;= 'embedded' : $str &#46;= 'standalone';
    
$str &#46;= "rn";
    
$str &#46;= 'path = /phpsrc/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['fname'&#93;))&#46;"rn";
    
$_SESSION['appl&#46;cfg'&#93; = $str;
    
$_SESSION['appl&#46;dir'&#93; = preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;));

    
for($i=0;$i<count($_FILES['file'&#93;['name'&#93;);$i++){
      
if($_FILES['file'&#93;['name'&#93;[$i&#93; == ''){
       
continue;
      }
      
$f file_get_contents($_FILES['file'&#93;['tmp_name'&#93;[$i&#93;);
      
$att[&#93; = array('path'=>$path_phpsrc&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;&#46;'/'&#46;$_FILES['file'&#93;['name'&#93;[$i&#93;,'content'=>$f);
    
}
    if(isset(
$_POST['file_content'&#93;) && trim($_POST['file_content'&#93;) != ''){
      
$att[&#93; = array('path'=>$path_phpsrc&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['Dir'&#93;))&#46;'/'&#46;preg_replace('/s+|/+/','',strtolower($_POST['fname'&#93;)),'content'=>str_replace(chr(13),'',stripslashes($_POST['file_content'&#93;)));
    
}
    
$_SESSION['appl&#46;att'&#93; = $att;

    
echo $strr;
    echo 
'<pre>'&#46;$str&#46;'</pre>';
    
echo '<br />';
    echo 
'The following files from your upload will be created:<br /><br />';
    foreach(
$_SESSION['appl&#46;att'&#93; as $wert){
      
echo '<strong>'&#46;$wert['path'&#93;&#46;'</strong><br />';
    
}
    echo 
'<br />By clicking <a href="'&#46;$_SERVER['PHP_SELF'&#93;&#46;'?'&#46;strip_tags(SID)&#46;'">this link</a> all the necessary operation will be written to disk!!!<br />You can abort the operation by <a href="https://'&#46;$_SERVER['SERVER_ADDR'&#93;&#46;':5001/webman/index&#46;cgi">clicking this link</a>';
    
}elseif(isset($_SESSION['appl&#46;cfg'&#93;) && isset($_SESSION['appl&#46;dir'&#93;)){
    
exec('mkdir '&#46;$path_3rdparty&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;);
    
exec('mkdir '&#46;$path_phpsrc&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;);
    
$fp fopen($path_3rdparty&#46;'/'&#46;$_SESSION['appl&#46;dir'&#93;&#46;'/application&#46;cfg','w');
    
fwrite($fp,$_SESSION['appl&#46;cfg'&#93;);
    
fclose($fp);

    foreach(
$_SESSION['appl&#46;att'&#93; as $wert){
      
$fp fopen($wert['path'&#93;,'w');
      
fwrite($fp,$wert['content'&#93;);
      
fclose($fp);
    }
    unset(
$_SESSION);
    
session_destroy();
    echo 
'<a href="https://'&#46;$_SERVER['SERVER_ADDR'&#93;&#46;':5001/webman/index&#46;cgi">Operation Successfull</a>';
    
exit;
    }elseif(isset(
$_POST['backup'&#93;)){
    
if(!is_dir($backup_dir&#46;'/'&#46;$backup_name)){
      
mkdir($backup_dir&#46;'/'&#46;$backup_name);
    
}
    
$t time();
    
mkdir($backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$t);
    
mkdir($backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$t);
    
foreach($appl_names as $wert){
      (
file_exists($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') ? $res=file_get_contents($path_3rdparty&#46;'/'&#46;$wert&#46;'/application&#46;cfg') :$res=0);
    
if($res===0){
       continue;
      }
      
preg_match('/path&#46;*?=&#46;*?/phpsrc(/&#46;*?)/&#46;*?&#46;[^s&#93;*/i',$res,$ret);
      
exec('cp -R '&#46;$path_3rdparty&#46;'/'&#46;$wert&#46;' '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$t);
      
exec('cp -R '&#46;$path_phpsrc&#46;$ret[1&#93;&#46;' '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$t);
    
}
    die(
'Data succesfully written to backup directory');
    }elseif(isset(
$_POST['restore'&#93;) && isset($_POST['time'&#93;) && !empty($_POST['time'&#93;)){
    
if(!is_dir($backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$_POST['time'&#93;) || !is_dir($backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$_POST['time'&#93;)){
      
die('Data could not be restored because either Backup Path was not given OR the subdirectories (3rdparty phpsrc) do not exist in given path');
    }
    
exec('cp -Rf '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/phpsrc_'&#46;$_POST['time'&#93;&#46;'/* '&#46;$path_phpsrc);
    
exec('cp -Rf '&#46;$backup_dir&#46;'/'&#46;$backup_name&#46;'/3rdparty_'&#46;$_POST['time'&#93;&#46;'/* '&#46;$path_3rdparty);
    
die('Data succesfully restored');
    }else{
    
?>

    <html>
    <head>
    <title>3rd Party Application Remover</title>
    <style>body,input,textarea,td,option,select{font:11px Verdana}fieldset{border:1px solid #bbb}</style>
    </head>
    <body>
    <form action="<?php echo $_SERVER['PHP_SELF'&#93;;?>" method="post">
    <fieldset><legend>installed 3rd-party-applications / remover</legend><table border="0"><tr>
    <?php
    $ii
=0;
    foreach (
$appl_names as $wert){
      echo 
'<td width="120px"><input type="checkbox" name="del[&#93;" value="'&#46;$wert&#46;'" />'&#46;$wert&#46;'</td><td>';
      
if (++$ii == 0) echo '</td></tr><tr>';
    }
    
?>

    </tr></table>
    <input style="margin-left:150px;margin-top:5px;" type="reset" value="reset form" />
    <input style="margin-left:320px" type="submit" name="delete" value="remove 3rd-party-apps" />
    </fieldset></form>
    <form action="<?php echo $_SERVER['PHP_SELF'&#93;;?>" method="post" enctype="multipart/form-data">
    <fieldset><legend>create 3rd-party-application</legend>
    <span style="padding-right:53px">text for the link:</span> <input size="90" type="text" name="Linktext" /><br/>
    <span style="padding-right:20px">description for tooltip:</span> <input size="90" type="text" name="Description" /><br/>
    <span style="padding-right:25px">application directory:</span> <input size="90" type="text" name="Dir" /><br/>
    <span style="padding-right:51px">application type:</span> <select name="type">
    <option value="embedded" selected="selected">embedded</option>
    <option value="popup">popup</option></select><br/>
    <span style="padding-right:96px">filename:</span><input input size="90" type="text" name="fname" /><br/>
    <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
    <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
    <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
    <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
    <span style="padding-right:86px">upload file:</span><input size=89 type="file" name="file[]" /><br/>
    <span style="padding-right:83px">file content:</span><textarea name="file_content" rows="10" cols="87"></textarea><br/>
    <input style="margin-left:150px" type="reset" value="reset form" /><input style="margin-left:330px" type="submit" name="senden" value="create 3rd-party-app" />
    </fieldset>
    <fieldset><legend>Backup and Restore 3rd Party Applications</legend>
    <fieldset><legend>Backup 3rd Party Applications</legend>
    <input type="submit" name="backup" value="Create Backup" />
    </fieldset>
    <fieldset><legend>Restore 3rd Party Applications</legend>
    <span style="padding-right:20px">Select date for restore</span><select name="time">
    <?php
    $path 
$backup_dir&#46;'/'&#46;$backup_name;
    
$dh opendir($path);
    
$arr = array();
    while((
$res=readdir($dh))!==false){
      if(
$res != '&#46;' && $res != '&#46;&#46;' && is_dir($path&#46;'/'&#46;$res)){
       
$t substr($res,strpos($res,'_')+1);
       
$arr[&#93; =intval($t);
      
}
    }
    
$arr array_unique($arr);
    
rsort($arr);
    foreach(
$arr as $wert){
    if(!empty(
$wert) && $wert != 0){
       echo 
'<option value="'&#46;$wert&#46;'">'&#46;date('d&#46;m&#46;y H:i:s',$wert)&#46;'</option>';
    
}
    }
    
?>

    </select>
    <input type="submit" name="restore" value="Restore" />
    </fieldset>
    </fieldset>
    </form>
    </body>
    </html>
    <?php
    
}
    
?>


Groet Domwowo
DS-107+ / DSM 2.2-0959 / WDC WD5000AAJS-0 (500GB) / eSATA WDC WD10EACS-00D (1TB) / USB-backup 500GB

Offline wowo

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 152
Re: 3rd Party Manager
« Reactie #8 Gepost op: 27 oktober 2008, 21:03:44 »
Misschien door de "spaties" voor de regels die door session_start(); als characters beschouwd worden?
Ga deze nu even deze weghalen. Kijken of de foutmelding verdwenen is.
Tata!! Probleem opgelost.
Linux is soms zo simpel. :wink:
DS-107+ / DSM 2.2-0959 / WDC WD5000AAJS-0 (500GB) / eSATA WDC WD10EACS-00D (1TB) / USB-backup 500GB

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 123
  • -Ontvangen: 181
  • Berichten: 1.996
Re: 3rd Party Manager
« Reactie #9 Gepost op: 27 oktober 2008, 21:21:54 »
AAArgh :mrgreen:

Ligt 't forum plat of zo? Krijg niets meer gepost.....

Nieuwe poging:

Goed gezien, Wizwowo :mrgreen:
Als ik niet zo'n last had met een onwillige server had ik je wellicht nog voor kunnen zijn.... :D

Bjorn, lees je mee? Ik krijg hier de vreemdste meldingen terug van jullie server :shock:
Zal proberen even een screendumpje te PM-en...
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline wowo

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 152
Re: 3rd Party Manager
« Reactie #10 Gepost op: 27 oktober 2008, 23:31:45 »
Nadat ik mijn berichtje geplaatst had, ging mijn internetverbinding plat.
Sterk spul dit forum. :mrgreen:
DS-107+ / DSM 2.2-0959 / WDC WD5000AAJS-0 (500GB) / eSATA WDC WD10EACS-00D (1TB) / USB-backup 500GB

Offline bluesbroeder

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 15
Re: 3rd Party Manager
« Reactie #11 Gepost op: 11 januari 2009, 00:45:27 »
Kan aan mij liggen maar ben redelijk nieuw, maar waar kan ik deze3rd party manager downloaden of moet ik uets anders doen om het werkend te krijgen.
  • Mijn Synology: DS213
  • HDD's: 2 x WD30EZRX
  • Extra's: DS107+

Offline wizjos

  • Administrator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 123
  • -Ontvangen: 181
  • Berichten: 1.996
Re: 3rd Party Manager
« Reactie #12 Gepost op: 11 januari 2009, 03:25:33 »
Citaat van: "bluesbroeder"
Kan aan mij liggen maar ben redelijk nieuw, maar waar kan ik deze3rd party manager downloaden of moet ik uets anders doen om het werkend te krijgen.

Hi bluesbroeder,

Je zal eerst kennis moeten nemen van de 3rd party management guide die je kunt vinden op de Synology NAS Server 3rd-Party Apps Integration pagina...

Vervolgens is het wel slim om kennis te nemen van de 3rd party apps handleiding  :mrgreen:

Als je dan volgens deze guide's de hierboven staande code in een bestand met de juiste naam opslaat zou het moeten werken.

Succes! BIj vragen horen we je wel :D

Wizjos
Wizjos.


DS409+    4 x WD10EADS DSM 4.2-3243       [TEST]
DS214play 1 x WD20EARX DSM 6.1.4-15217-3  [PROD]
DS1513+   5 x WD80EFZX DSM 6.1.4-15217-5  [PROD]
RT1900ac               SRM 1.1.6-6931-1   [PROD]


Is RAID hetzelfde als een backup?
Goeie schijven voor je NAS? Neem Western Digital!

Offline bluesbroeder

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 15
Re: 3rd Party Manager
« Reactie #13 Gepost op: 11 januari 2009, 14:17:29 »
Ok bedankt,
Is duidelijk, dus eerst maar eens aan de studie!
  • Mijn Synology: DS213
  • HDD's: 2 x WD30EZRX
  • Extra's: DS107+

Offline grafcom

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 1
  • -Ontvangen: 0
  • Berichten: 272
Re: 3rd Party Manager
« Reactie #14 Gepost op: 08 februari 2009, 14:14:27 »
Hallo Wizjos,

ik kom je hier ook al mee tegen.

Ik heb de 3rd Party Manager geïnstalleerd zoals hierboven omschreven. Wanneer ik inlog zie ik het ook staan onder Third-party applications maar in het venster van 3rd Party Manager komt te staan:
Deze webpagina kan niet worden weergegeven

De link bij "Bijgewerkt met de beveiliging van Merty" werkt niet dus ik kan niet controleren of het misschien daarmee te maken heeft.

Enig idee?


 

Virtual Machine manager

Gestart door GuidoGBoard Officiële Packages

Reacties: 1
Gelezen: 1719
Laatste bericht 26 augustus 2017, 08:52:58
door dvandonkelaar
Geen link in 3rd party applications / geen web interface

Gestart door AnonymousBoard SABnzbd (usenet)

Reacties: 3
Gelezen: 2363
Laatste bericht 23 februari 2010, 11:42:31
door nicov
Advanced Power Manager - vreemd gedrag

Gestart door BabyloniaBoard Overige 3rd party packages

Reacties: 2
Gelezen: 3709
Laatste bericht 28 november 2014, 12:47:03
door Babylonia
Docker: Nginx Reverse Proxy manager

Gestart door Syno_NasjeBoard Docker / Container Manager

Reacties: 16
Gelezen: 6812
Laatste bericht 22 februari 2023, 09:51:02
door vdhoek1972
VERPLAATST: Virtual Machine Manager op DS216+II

Gestart door BirdyBoard Synology DSM algemeen

Reacties: 0
Gelezen: 893
Laatste bericht 18 maart 2018, 20:37:22
door Birdy