From 20fe67f3782e6ad90fed64d70f752d6524d20157 Mon Sep 17 00:00:00 2001
From: Tobias Diekershoff <tobias.diekershoff@gmx.net>
Date: Sat, 16 Jan 2016 11:52:21 +0100
Subject: [PATCH] removed remote update functionality from admin panel

---
 include/remoteupdate.php              | 261 --------------------------
 mod/admin.php                         |  59 ------
 view/templates/admin_remoteupdate.tpl |  99 ----------
 3 files changed, 419 deletions(-)
 delete mode 100644 include/remoteupdate.php
 delete mode 100644 view/templates/admin_remoteupdate.tpl

diff --git a/include/remoteupdate.php b/include/remoteupdate.php
deleted file mode 100644
index 9effc9b6e9..0000000000
--- a/include/remoteupdate.php
+++ /dev/null
@@ -1,261 +0,0 @@
-<?php
-/* update friendica */
-define('APIBASE', 'http://github.com/api/v2/');
-define('F9KREPO', 'friendica/friendica');
-
-$up_totalfiles = 0;
-$up_countfiles = 0;
-$up_lastp = -1;
-
-function checkUpdate(){
-	$r = fetch_url( APIBASE."json/repos/show/".F9KREPO."/tags" );
-	$tags = json_decode($r);
-	
-	$tag = 0.0;
-	foreach ($tags->tags as $i=>$v){
-		$i = (float)$i;
-		if ($i>$tag) $tag=$i;
-	}
-	
-	if ($tag==0.0) return false;
-	$f = fetch_url("https://raw.github.com/".F9KREPO."/".$tag."/boot.php","r");
-	preg_match("|'FRIENDICA_VERSION', *'([^']*)'|", $f, $m);
-	$version =  $m[1];
-	
-	$lv = explode(".", FRIENDICA_VERSION);
-	$rv = explode(".",$version);
-	foreach($lv as $i=>$v){
-		if ((int)$lv[$i] < (int)$rv[$i]) {
-			return array($tag, $version, "https://github.com/friendica/friendica/zipball/".$tag);
-			break;
-		}
-	}
-	return false;
-}
-function canWeWrite(){
-	$bd = dirname(dirname(__file__));
-	return is_writable( $bd."/boot.php" );
-}
-
-function out($txt){ echo "§".$txt."§"; ob_end_flush(); flush();}
-
-function up_count($path){
- 
-    $file_count = 0;
- 
-    $dir_handle = opendir($path);
- 
-    if (!$dir_handle) return -1;
- 
-    while ($file = readdir($dir_handle)) {
- 
-        if ($file == '.' || $file == '..') continue;
-		$file_count++;
-        
-        if (is_dir($path . $file)){      
-            $file_count += up_count($path . $file . DIRECTORY_SEPARATOR);
-        }
-        
-    }
- 
-    closedir($dir_handle);
- 
-    return $file_count;
-}
-
-
-
-function up_unzip($file, $folder="/tmp"){
-	$folder.="/";
-	$zip = zip_open($file);
-	if ($zip) {
-	  while ($zip_entry = zip_read($zip)) {
-		$zip_entry_name = zip_entry_name($zip_entry);
-		if (substr($zip_entry_name,strlen($zip_entry_name)-1,1)=="/"){
-			mkdir($folder.$zip_entry_name,0777, true);
-		} else {
-			$fp = fopen($folder.$zip_entry_name, "w");
-			if (zip_entry_open($zip, $zip_entry, "r")) {
-			  $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
-			  fwrite($fp,"$buf");
-			  zip_entry_close($zip_entry);
-			  fclose($fp);
-			}
-		}
-	  }
-	  zip_close($zip);
-	}	
-}
-
-/**
- * Walk recoursively in a folder and call a callback function on every
- * dir entry.
- * args:
- * 	$dir		string		base dir to walk
- * 	$callback	function	callback function
- *  $sort		int			0: ascending, 1: descending
- * 	$cb_argv	any			extra value passed to callback
- * 
- * callback signature:
- * function name($fn, $dir [, $argv])
- * 	$fn		string		full dir entry name
- * 	$dir	string		start dir path
- *  $argv	any			user value to callback
- * 
- */
-function up_walktree($dir, $callback=Null, $sort=0, $cb_argv=Null ,  $startdir=Null){
-	if (is_null($callback)) return;
-	if (is_null($startdir)) $startdir = $dir;
-	$res = scandir($dir, $sort);
-	foreach($res as $i=>$v){
-		if ($v!="." && $v!=".."){
-			$fn = $dir."/".$v;
-			if ($sort==0) $callback($fn, $startdir, $cb_argv);	
-			if (is_dir($fn)) up_walktree($fn, $callback, $sort, $cb_argv, $startdir);
-			if ($sort==1) $callback($fn, $startdir, $cb_argv);	
-		}
-	}
-	
-}
-
-function up_copy($fn, $dir){
-	global $up_countfiles, $up_totalfiles, $up_lastp;
-	$up_countfiles++; $prc=(int)(((float)$up_countfiles/(float)$up_totalfiles)*100);
-	
-	if (strpos($fn, ".gitignore")>-1 || strpos($fn, ".htaccess")>-1) return;  
-	$ddest = dirname(dirname(__file__));
-	$fd = str_replace($dir, $ddest, $fn);
-	
-	if (is_dir($fn) && !is_dir($fd)) {
-		$re=mkdir($fd,0777,true);
-	}
-	if (!is_dir($fn)){
-		$re=copy($fn, $fd);
-	}
-	
-	if ($re===false) { 
-		out("ERROR. Abort."); 
-		killme();
-	}
-	out("copy@Copy@$prc%");
-}
-
-function up_ftp($fn, $dir, $argv){
-	global $up_countfiles, $up_totalfiles, $up_lastp;
-	$up_countfiles++; $prc=(int)(((float)$up_countfiles/(float)$up_totalfiles)*100);
-
-	if (strpos($fn, ".gitignore")>-1 || strpos($fn, ".htaccess")>-1) return;
-	
-	list($ddest, $conn_id) = $argv;
-	$l = strlen($ddest)-1;
-	if (substr($ddest,$l,1)=="/") $ddest = substr($ddest,0,$l);
-	$fd = str_replace($dir, $ddest, $fn);
-	
-	if (is_dir($fn)){
-		if (ftp_nlist($conn_id, $fd)===false) { 
-			$ret = ftp_mkdir($conn_id, $fd);
-		} else {
-			$ret=true;
-		}
-	} else {
-		$ret = ftp_put($conn_id, $fd, $fn, FTP_BINARY); 
-	}
-	if (!$ret) { 
-		out("ERROR. Abort."); 
-		killme();
-	} 
-	out("copy@Copy@$prc%");
-}
-
-function up_rm($fn, $dir){
-	if (is_dir($fn)){
-		rmdir($fn);
-	} else {
-		unlink($fn);
-	}
-}
-
-function up_dlfile($url, $file) {
-	$in = fopen ($url, "r");
-	$out = fopen ($file, "w");
-	
-	$fs = filesize($url);
-	
-
-	if (!$in || !$out) return false;
-	
-	$s=0; $count=0;
-	while (!feof ($in)) {
-		$line = fgets ($in, 1024);
-		fwrite( $out, $line);
-		
-		$count++; $s += strlen($line);
-		if ($count==50){
-			$count=0;
-			$sp=$s/1024.0; $ex="Kb";
-			if ($sp>1024) { $sp=$sp/1024; $ex="Mb"; }
-			if ($sp>1024) { $sp=$sp/1024; $ex="Gb"; }
-			$sp = ((int)($sp*100))/100;
-			out("dwl@Download@".$sp.$ex);
-		}
-	}
-	fclose($in);
-	return true;
-}
-
-function doUpdate($remotefile, $ftpdata=false){
-	global $up_totalfiles;
-	
-	
-	$localtmpfile = tempnam("/tmp", "fk");
-	out("dwl@Download@starting...");
-	$rt= up_dlfile($remotefile, $localtmpfile);
-	if ($rt==false || filesize($localtmpfile)==0){
-		out("dwl@Download@ERROR.");
-		unlink($localtmpfile);
-		return;
-	}
-	out("dwl@Download@Ok.");
-	
-	out("unzip@Unzip@");
-	$tmpdirname = $localfile."ex";
-	mkdir($tmpdirname);
-	up_unzip($localtmpfile, $tmpdirname);
-	$basedir = glob($tmpdirname."/*"); $basedir=$basedir[0];
-	out ("unzip@Unzip@Ok.");
-	
-	$up_totalfiles = up_count($basedir."/");
-	
-	if (canWeWrite()){
-		out("copy@Copy@");
-		up_walktree($basedir, 'up_copy');
-	}
-	if ($ftpdata!==false && is_array($ftpdata) && $ftpdata['ftphost']!="" ){
-		out("ftpcon@Connect to FTP@");
-		$conn_id = ftp_connect($ftpdata['ftphost']);
-		$login_result = ftp_login($conn_id, $ftpdata['ftpuser'], $ftpdata['ftppwd']);
-		
-		if ((!$conn_id) || (!$login_result)) { 
-			out("ftpcon@Connect to FTP@FAILED");
-			up_clean($tmpdirname, $localtmpfile); 
-			return;
-		} else {
-			out("ftpcon@Connect to FTP@Ok.");
-		}
-		out("copy@Copy@");
-		up_walktree($basedir, 'up_ftp', 0, array( $ftpdata['ftppath'], $conn_id));
- 
-		ftp_close($conn_id);
-	}
-
-	up_clean($tmpdirname, $localtmpfile); 
-	
-}
-
-function up_clean($tmpdirname, $localtmpfile){
-	out("clean@Clean up@");
-	unlink($localtmpfile);
-	up_walktree($tmpdirname, 'up_rm', 1);
-	rmdir($tmpdirname);
-	out("clean@Clean up@Ok.");
-}
diff --git a/mod/admin.php b/mod/admin.php
index f3fb56f603..52367e8a2c 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -3,7 +3,6 @@
  /**
   * Friendica admin
   */
-require_once("include/remoteupdate.php");
 require_once("include/enotify.php");
 require_once("include/text.php");
 
@@ -1867,61 +1866,3 @@ function admin_page_viewlogs(&$a){
 		'$logname' =>  get_config('system','logfile')
 	));
 }
-/**
- * @param App $a
- */
-function admin_page_remoteupdate_post(&$a) {
-	// this function should be called via ajax post
-	if(!is_site_admin()) {
-		return;
-	}
-
-
-	if (x($_POST,'remotefile') && $_POST['remotefile']!=""){
-		$remotefile = $_POST['remotefile'];
-		$ftpdata = (x($_POST['ftphost'])?$_POST:false);
-		doUpdate($remotefile, $ftpdata);
-	} else {
-		echo "No remote file to download. Abort!";
-	}
-
-	killme();
-}
-
-/**
- * @param App $a
- * @return string
- */
-function admin_page_remoteupdate(&$a) {
-	if(!is_site_admin()) {
-		return login(false);
-	}
-
-	$canwrite = canWeWrite();
-	$canftp = function_exists('ftp_connect');
-
-	$needupdate = true;
-	$u = checkUpdate();
-	if (!is_array($u)){
-		$needupdate = false;
-		$u = array('','','');
-	}
-
-	$tpl = get_markup_template("admin_remoteupdate.tpl");
-	return replace_macros($tpl, array(
-		'$baseurl' => $a->get_baseurl(true),
-		'$submit' => t("Update now"),
-		'$close' => t("Close"),
-		'$localversion' => FRIENDICA_VERSION,
-		'$remoteversion' => $u[1],
-		'$needupdate' => $needupdate,
-		'$canwrite' => $canwrite,
-		'$canftp'	=> $canftp,
-		'$ftphost'	=> array('ftphost', t("FTP Host"), '',''),
-		'$ftppath'	=> array('ftppath', t("FTP Path"), '/',''),
-		'$ftpuser'	=> array('ftpuser', t("FTP User"), '',''),
-		'$ftppwd'	=> array('ftppwd', t("FTP Password"), '',''),
-		'$remotefile'=>array('remotefile','', $u['2'],''),
-	));
-
-}
diff --git a/view/templates/admin_remoteupdate.tpl b/view/templates/admin_remoteupdate.tpl
deleted file mode 100644
index c3e85f2e80..0000000000
--- a/view/templates/admin_remoteupdate.tpl
+++ /dev/null
@@ -1,99 +0,0 @@
-
-<script src="js/jquery.htmlstream.js"></script>
-<script>
-	/* ajax updater */
-	function updateEnd(data){
-		//$("#updatepopup .panel_text").html(data);
-		$("#remoteupdate_form").find("input").removeAttr('disabled');
-		$(".panel_action_close").fadeIn()	
-	}
-	function updateOn(data){
-		
-		var patt=/§([^§]*)§/g; 
-		var matches = data.match(patt);
-		$(matches).each(function(id,data){
-			data = data.replace(/§/g,"");
-			d = data.split("@");
-			console.log(d);
-			elm = $("#updatepopup .panel_text #"+d[0]);
-			html = "<div id='"+d[0]+"' class='progress'>"+d[1]+"<span>"+d[2]+"</span></div>";
-			if (elm.length==0){
-				$("#updatepopup .panel_text").append(html);
-			} else {
-				$(elm).replaceWith(html);
-			}
-		});
-		
-		
-	}
-	
-	$(function(){
-		$("#remoteupdate_form").submit(function(){
-			var data={};
-			$(this).find("input").each(function(i, e){
-				name = $(e).attr('name');
-				value = $(e).val();
-				e.disabled = true;
-				data[name]=value;
-			});
-
-			$("#updatepopup .panel_text").html("");
-			$("#updatepopup").show();
-			$("#updatepopup .panel").hide().slideDown(500);
-			$(".panel_action_close").hide().click(function(){
-				$("#updatepopup .panel").slideUp(500, function(){
-					$("#updatepopup").hide();
-				});				
-			});
-
-			$.post(
-				$(this).attr('action'), 
-				data, 
-				updateEnd,
-				'text',
-				updateOn
-			);
-
-			
-			return false;
-		})
-	});
-</script>
-<div id="updatepopup" class="popup">
-	<div class="background"></div>
-	<div class="panel">
-		<div class="panel_in">
-			<h1>Friendica Update</h1>
-			<div class="panel_text"></div>
-			<div class="panel_actions">
-				<input type="button" value="{{$close|escape:'html'}}" class="panel_action_close">
-			</div>
-		</div>
-	</div>
-</div>
-<div id="adminpage">
-	<dl> <dt>Your version:</dt><dd>{{$localversion}}</dd> </dl>
-{{if $needupdate}}
-	<dl> <dt>New version:</dt><dd>{{$remoteversion}}</dd> </dl>
-
-	<form id="remoteupdate_form" method="POST" action="{{$baseurl}}/admin/update">
-	<input type="hidden" name="{{$remotefile.0}}" value="{{$remotefile.2|escape:'html'}}">
-
-	{{if $canwrite}}
-		<div class="submit"><input type="submit" name="remoteupdate" value="{{$submit|escape:'html'}}" /></div>
-	{{else}}
-		<h3>Your friendica installation is not writable by web server.</h3>
-		{{if $canftp}}
-			<p>You can try to update via FTP</p>
-			{{include file="field_input.tpl" field=$ftphost}}
-			{{include file="field_input.tpl" field=$ftppath}}
-			{{include file="field_input.tpl" field=$ftpuser}}
-			{{include file="field_password.tpl" field=$ftppwd}}
-			<div class="submit"><input type="submit" name="remoteupdate" value="{{$submit|escape:'html'}}" /></div>
-		{{/if}}
-	{{/if}}
-	</form>
-{{else}}
-<h4>No updates</h4>
-{{/if}}
-</div>