Просмотр исходного кода

added Cron::executeCurlTastByToken and test forceTablePermsAction

Piotr Labudda 8 лет назад
Родитель
Сommit
31e2bc2d5c
1 измененных файлов с 58 добавлено и 13 удалено
  1. 58 13
      SE/se-lib/Route/Cron.php

+ 58 - 13
SE/se-lib/Route/Cron.php

@@ -2,23 +2,25 @@
 
 Lib::loadClass('RouteBase');
 
-/**
- * usage example - cli script:
- * $token = Router::getRoute('Cron')->generateCliAuthToken('bach_sync_perms', 300);
- * file_get_contents("https://{$baseUrl}/index.php?_route=Cron&_key=bach_sync_perms&_token={$token}&_task=run");
- *
- * TEST: $ php SE/se-lib/Route/Cron-test.php biuro.biall-net.pl
+/* @usage - inside cli script:
+ *		 $cronTaskName = 'checkInstall';
+ *		 $keyToken = 'bash_install_check';
+ *		 $token = Router::getRoute('Cron')->generateCliAuthToken($keyToken, $cronTaskName, 300 * 10);
+ *		 $output = Router::getRoute('Cron')->executeCurlTastByToken($cronTaskName, $keyToken, $token);
  */
+/* @usage - inside cli script with args:
+ *		 $cronTaskName = 'forceTablePerms';
+ *		 $keyToken = 'bash_force_table_perms';
+ *		 $token = Router::getRoute('Cron')->generateCliAuthToken($keyToken, $cronTaskName, 300 * 10);
+ *		 $output = Router::getRoute('Cron')->executeCurlTastByToken($cronTaskName, $keyToken, $token, [ 'idGroup' => 3, 'table' => 'CRM_PROCES' ]);
+ */
+// TEST: $ php SE/se-lib/Route/Cron-test.php biuro.biall-net.pl
 class Route_Cron extends RouteBase {
 
 	public function handleAuth() {
 		if (User::logged()) {
-
-    } else if ($this->authByToken()) {
-
-    } else {
-			throw new HttpException('Unauthorized', 401);
-		}
+		} else if ($this->authByToken()) {
+		} else throw new HttpException('Unauthorized', 401);
 	}
 
 	public function generateCliAuthToken($cliKey, $task, $ttl = 300) {
@@ -82,7 +84,28 @@ class Route_Cron extends RouteBase {
 		$_SESSION['ADM_ID'] = 9999999999;
 		DBG::_('DBG_CRON', '>1', 'rawToken', array('createDateTimestamp'=>$createDateTimestamp, 'ttl'=>$ttl, 'cur'=>time()), __CLASS__, __FUNCTION__, __LINE__);
 		$this->runTask($task);
-  }
+	}
+
+	public function executeCurlTastByToken($cronTaskName, $keyToken, $token, $args = []) { // @require $_SERVER['SERVER_NAME']
+		$baseUrl = "https://{$_SERVER['SERVER_NAME']}/SE";
+		if ('biuro.biall-net.pl' == $_SERVER['SERVER_NAME']) $baseUrl = "https://{$_SERVER['SERVER_NAME']}/SE/version-git";
+
+		//file_get_contents("https://{$baseUrl}/index.php?_route=Cron&_key={$keyToken}&_token={$token}&_task=sendNotify");
+		$url = "{$baseUrl}/index.php?_route=Cron&_key={$keyToken}&_token={$token}&_task={$cronTaskName}";
+		if (!empty($args)) $url .= "&" . implode("&", array_map(function ($key, $val) {
+			return "{$key}={$val}";
+		}, array_keys($args), array_values($args)));
+
+		$ch = curl_init();
+		curl_setopt($ch, CURLOPT_VERBOSE, true);
+		curl_setopt($ch, CURLOPT_URL, $url);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+		$return = curl_exec($ch);
+		curl_close($ch);
+		return $return;
+	}
 
 	public function defaultAction() {
 		Lib::loadClass('UI');
@@ -180,4 +203,26 @@ class Route_Cron extends RouteBase {
 		echo "\n.EOF\n";
 	}
 
+
+	/* @usage - inside cli script with args:
+	 *		 $cronTaskName = 'forceTablePerms';
+	 *		 $keyToken = 'bash_force_table_perms';
+	 *		 $token = Router::getRoute('Cron')->generateCliAuthToken($keyToken, $cronTaskName, 300 * 10);
+	 *		 $output = Router::getRoute('Cron')->executeCurlTastByToken($cronTaskName, $keyToken, $token, [ 'idGroup' => 3, 'table' => 'CRM_PROCES' ]);
+	 */
+	public function forceTablePermsAction() {
+		$idGroup = V::get('idGroup', 0, $_GET, 'int');
+		if (!$idGroup) throw new Exception("Missing idGroup");
+		$table = V::get('table', '', $_GET, 'word');
+		if (!$table) throw new Exception("Missing table");
+		Lib::loadClass('UsersLdapHelper');
+		$groupsNetwork = UsersLdapHelper::getGroupsByID($idGroup);
+		if (empty($groupsNetwork)) throw new Exception("Group {$idGroup} not found");
+		foreach ($groupsNetwork as $vGroup) {
+			echo "Will try to update table ".$table." set A_CLASSIFIED='".$vGroup->cn."', A_ADM_COMPANY='".$vGroup->cn."' ;" . "\n";
+			// DB::getPDO()->execSql("update table `{$table}` set `A_CLASSIFIED`='{$vGroup->cn}', `A_ADM_COMPANY`='{$vGroup->cn}' ");
+		}
+		echo "DONE";
+	}
+
 }