aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorM.Gergo2020-03-30 23:30:28 +0200
committerM.Gergo2020-03-30 23:30:28 +0200
commitcf1867725f3fd6f70ded0c7b2c679747691fdd69 (patch)
tree41ca8b499c42820fb8ffe81ebf4a9c929efe0628
parent8f71f839bede48264ecb00379ba717e6a59fa43a (diff)
downloadmayor-cf1867725f3fd6f70ded0c7b2c679747691fdd69.tar.gz
mayor-cf1867725f3fd6f70ded0c7b2c679747691fdd69.zip
Mayor-Nextcloud script: csoportmappa létrehozás
-rw-r--r--egyéb/nextcloud/mayor-nextcloud.php147
1 files changed, 113 insertions, 34 deletions
diff --git a/egyéb/nextcloud/mayor-nextcloud.php b/egyéb/nextcloud/mayor-nextcloud.php
index 185299cb..a18ba959 100644
--- a/egyéb/nextcloud/mayor-nextcloud.php
+++ b/egyéb/nextcloud/mayor-nextcloud.php
@@ -40,7 +40,7 @@ $m2n['verbose'] = 3 ;
$occ_path = "/var/www/nextcloud/";
$occ_user = "www-data";
$ALWAYS_SET_DIAK_QUOTA = false;
-//$ALWAYS_CREATE_VIDEODIR = false;
+$groupdir_user = "naploadmin";
$cfgfile = realpath(pathinfo($argv[0])['dirname'])."/"."mayor-nextcloud.cfg.php"; // A fenti konfig behívható config fájlból is, így a nextcloud-betöltő (ez a php) szerkesztés nélkül frissíthető.
if( file_exists($cfgfile)===TRUE ){ include($cfgfile); }
@@ -55,7 +55,7 @@ $log['verbose'] = $m2n['verbose'];
for($i = 1; $i<$argc; $i++){
if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$log['verbose'] = intval($argv[$i+1]); $i++;}
if($argv[$i] == "--set-diak-quota" ){ $ALWAYS_SET_DIAK_QUOTA = true; }
- if($argv[$i] == "--create-groupdir"){ $m2n['groupdir_user'] = $argv[$i+1]; $i++;}
+ if($argv[$i] == "--create-groupdir"){ $groupdir_user = $argv[$i+1]; $i++;}
}
if( $ALWAYS_SET_DIAK_QUOTA === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; }
@@ -352,27 +352,79 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
}
- function create_groupdir($user, $path ){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban
- global $occ_user, $occ_path,$log,$m2n;
- if(!is_dir($occ_path."/data/".$user."/files/".$path)){
- $e = "su -s /bin/sh $occ_user -c 'mkdir -p \"".$occ_path."/data/".$user."/files/".$path."\" '";
- if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; }
- shell_exec($e);
- $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" files:scan --path=\"".$user."/files/".$path."\" -v '";
- if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; }
- shell_exec($e);
+ function create_dir($user, $path){ // Készít egy mappát a: data/$user/files/$path alá
+ global $occ_user, $occ_path,$log;
+ if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami szmötyi
+ @unlink( $occ_path."/data/".$user."/files/".$path."backup");
+ rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path."backup");
+ }
+ if(!is_dir($occ_path."/data/".$user."/files/".$path)){ // Ha Még mindig nen könyvtár
+ mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza
+ chown($occ_path."/data/".$user."/files/".$path, $occ_user);
+ if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" created.\n"; }
}
}
- function write_infotext($msg, $user, $path ){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban
- global $occ_user, $occ_path,$log,$m2n;
+
+ function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát
+ global $occ_user, $occ_path,$log;
if(is_dir(pathinfo($occ_path."/data/".$user."/files/".$path)['dirname'] )){
- // fwrite()
+ $h = fopen($occ_path."/data/".$user."/files/".$path, 'w+');
+ fwrite($h, $msg );
+ fclose($h);
+ chown($occ_path."/data/".$user."/files/".$path, $occ_user);
+ if($log['verbose'] > 5) { echo "php ->\tFILE OK: \"".$occ_path."/data/".$user."/files/".$path."\" created.\n"; }
} else {
- // error, dir is missing
+ if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".pathinfo($occ_path."/data/".$user."/files/".$path)['dirname']."\" dir not found.\n"; }
}
}
+ function files_scan($user, $path ){ // Nextcloud files:scan
+ global $occ_user, $occ_path,$log;
+ $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" files:scan --path=\"".$user."/files/".$path."\" -v '";
+ if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; }
+ shell_exec($e);
+ }
+
+ function user_notify($user, $msg, $title ){ // Nextcloud files:scan
+ global $occ_user, $occ_path, $log;
+ $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" notification:generate -l \"".$msg."\" -- ".$user." ".$title."'";
+ if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; }
+ shell_exec($e);
+ }
+
+ function scan_dir($user, $path ){ // Nextcloud files:scan
+ global $occ_user, $occ_path,$log;
+ $ret = array();
+ if(is_dir($occ_path."/data/".$user."/files/".$path)){
+ $ret = scandir($occ_path."/data/".$user."/files/".$path);
+ if($ret[0] == "." && $ret[1] == ".."){
+ unset($ret[0]);
+ unset($ret[1]);
+ }
+ }
+ return $ret;
+ }
+
+ function clean_dir($user, $path, $tankorei){
+ global $occ_user, $occ_path, $log, $m2n;
+ $listdir = scan_dir($user, $path);
+ foreach($listdir as $key => $val) {
+ if((!in_array(basename($val, '.please-remove'), $tankorei) || !is_dir($occ_path."/data/".$user."/files/".$path."/".$val)) && $val != "INFO.txt"){ //Nincs a tanköreiben, akkor törölni kell (de csak ha üres)
+
+ if(is_dir($occ_path."/data/".$user."/files/".$path."/".$val) && empty(scan_dir($curr, $path.$val))){ // Ha mappa, és üres -> törlés
+ rmdir($occ_path."/data/".$user."/files/".$path."/".$val);
+ if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; }
+ } else { //Nem mappa, vagy nem üres
+ @unlink($occ_path."/data/".$user."/files/".$path."/".$val.".please-remove"); // Már az xxxx.backup is foglalt...
+ rename($occ_path."/data/".$user."/files/".$path."/".basename($val, '.please-remove'), $occ_path."/data/".$user."/files/".$path."/".$val.".please-remove");
+ if($log['verbose'] > 1) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted!!!\n"; }
+ }
+ }
+ }
+ }
+
+
function add_tk_to_users($list, $user, $tankorname){ //Naplón kívüli csoportokat adhatunk a felhasználókhoz
$curr = "";
@@ -728,29 +780,43 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
catalog_useradd($link, $curr);
if ($log['verbose'] > 1 ){ echo "-\t\tA felhasználó:".po("\t$curr",$m2n['felhasznalo_hossz'],1)."-\tnyilvántartásba véve.\n";}
}
-
- if($ALWAYS_SET_DIAK_QUOTA === true && $curr_tanarId < 0 && $curr_diakId > 0 ){ //Állítsunk-e erőből (diák) qvótát?
- $params['quota'] = $m2n['diak_quota']; // Alapértelmezett diák kvóta
+ //--------------------------------------- QUOTA -----------------------------------//
+ if($ALWAYS_SET_DIAK_QUOTA === true && $curr_tanarId < 0 && $curr_diakId > 0 ){ //Állítsunk-e erőből (diák) qvótát?
+ $params['quota'] = $m2n['diak_quota']; // Alapértelmezett diák kvóta
user_set($curr,$params);
if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\t\n";}
}
-
- foreach($nxt_group as $key3 => $val3){ //A tankörök egyeztetése
- if(in_array($key3, $tankorei) /*or $key3 == $m2n['mindenki_csop']*/){ //szerepel-e a felhasználó tankörei között a csoport, vagy a "mindenki" csoport?
- if( in_array($curr, $val3)){ //Igen, és már benne is van +++
+ //------------------------- Tankörmappa györkér + info.txt ------------------------//
+ if(($groupdir_user === "" || ($groupdir_user !== "" && $curr == $groupdir_user)) && $curr_tanarId > 0){ //( " " --> mindenkinek, "username" --> csak neki ) && tanár
+ create_dir($curr,$m2n['groupdir_prefix']); // Tankörmappa gyökér létrehozása
+ write_tofile($curr, $m2n['groupdir_prefix']."INFO.txt", "message\r\n"); // Információs fájlt is
+ }
+ //---------------------------------------------------------------------------------//
+ foreach($nxt_group as $key3 => $val3){ //A tankörök egyeztetése
+ if(in_array($key3, $tankorei) /*or $key3 == $m2n['mindenki_csop']*/){ //szerepel-e a felhasználó tankörei között a csoport, vagy a "mindenki" csoport?
+ if( in_array($curr, $val3)){ //Igen, és már benne is van +++
if ($log['verbose'] > 3 ){ echo " -\t\tBenne van a:".po("\t$key3",$m2n['csoportnev_hossz'],1)."\tcsoportban.\n";}
- } else { //Nincs, most kell beletenni
+ } else { //Nincs, most kell beletenni
if ($log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tHozzáadva a:".po("\t$key3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n";}
- group_user_add($key3, $curr); //A "mindenki csoportot is ellenőrzi
+ group_user_add($key3, $curr); //A "mindenki csoportot is ellenőrzi
+ }
+ //------------------------------- Tankörmappa -----------------------------//
+ if(($groupdir_user === "" || ($groupdir_user !== "" && $curr == $groupdir_user)) && $curr_tanarId > 0){ //( "_" --> mindenkinek, "username" --> csak neki ) && tanár
+ if($key3 != $m2n['mindenki_tanar'] && $key3 != $m2n['mindenki_diak'] && $key3 != $m2n['mindenki_tanar']){ //Ezekre a csoportokra minek?
+ create_dir($curr,$m2n['groupdir_prefix'].$key3); //Tankörmappák létrehozása
+ }
}
- } else { //Nem szerepel a tankörei között
- if(in_array($curr, $val3) and (substr($key3, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix']) ){
- // korábban benne volt egy tankörben, de már nincs, vagy a hozzátartozó tankörben már nem tanít => kiveszi
+ } else { //Nem szerepel a tankörei között
+ if(in_array($curr, $val3) and (substr($key3, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix']) ){ // korábban benne volt egy tankörben, de már nincs, vagy a hozzátartozó tankörben már nem tanít => kiveszi
if ($log['verbose'] > 1 ){if($log['curr'] !== ""){echo "*".$log['curr'];$log['curr'] = "";} echo "* -\t\tTörölve a:".po("\t$key3",$m2n['csoportnev_hossz'],1)."\tcsoportból.\n";}
- group_user_del($key3, $curr); //egy korábbi tankör lehetett...
+ group_user_del($key3, $curr); //egy korábbi tankör lehetett...
}
}
- }
+ }
+ //------------------------------------- Tankörmappa törlés ----------------------------------//
+ if(($groupdir_user === "" || ($groupdir_user !== "" && $curr == $groupdir_user)) && $curr_tanarId > 0){ //( "_" --> mindenkinek, "username" --> csak neki ) && tanár
+ clean_dir($curr, $m2n['groupdir_prefix'], $tankorei),
+ }
break;
}
}
@@ -760,15 +826,28 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
user_add($curr, $curr_n); //Akkor hozzá kell adni
catalog_useradd($link, $curr);
if ($log['verbose'] > 2 ){ echo "**-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tlétrehozva.\n";}
-
+ if(($groupdir_user === "" || ($groupdir_user !== "" && $curr == $groupdir_user)) && $curr_tanarId > 0){ //( "_" --> mindenkinek, "username" --> csak neki ) && tanár
+ create_dir($curr,$m2n['groupdir_prefix']); //Tankörmappa gyökér létrehozása
+ write_tofile("message\n\r", $curr, $m2n['groupdir_prefix']."INFO.txt"); // Információs fájlt is
+ }
+
foreach($tankorei as $key3 => $val3){ //Hozzáadja a (tankör)csoportokhoz is egyből,
if(array_key_exists($val3, $nxt_group)) { // de, csak akkor, ha az a csoport a Nextcloud-ban is létezik.
- group_user_add($val3,$curr);
+ group_user_add($val3, $curr);
if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; }
+ if(($groupdir_user === "" || ($groupdir_user !== "" && $curr == $groupdir_user)) && $curr_tanarId > 0){ //( "_" --> mindenkinek, "username" --> csak neki ) && tanár
+ if($val3 != $m2n['mindenki_tanar'] && $val3 != $m2n['mindenki_diak'] && $val3 != $m2n['mindenki_tanar']){ //Ezekre a csoportokra minek?
+ create_dir($curr, $m2n['groupdir_prefix'].$val3); //Tankörmappák létrehozása
+ }
+ }
}
}
+ if(($groupdir_user === "" || ($groupdir_user !== "" && $curr == $groupdir_user)) && $curr_tanarId > 0 ){ //null --> mindenkinek "username" --> csak neki
+ files_scan($curr, $m2n['groupdir_prefix']); //Tankörmappa györkér NXT-scan
+ }
+
- if($curr_tanarId < 0 && $curr_diakId > 0) { // Diákról van szó
+ if($curr_diakId > 0) { //Ennyi is elég // Diákról van szó /// if($curr_tanarId < 0 && $curr_diakId > 0)
$params['quota'] = $m2n['diak_quota']; // Alapértelmezett kvóta
} else {
$params['quota'] = $m2n['default_quota']; // Alapértelmezett kvóta
@@ -795,7 +874,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
}
-// A megszűnő felhasználónevek egyeztetése
+// A (maradék) megszűnő felhasználónevek egyeztetése
if ($log['verbose'] > 0 ){ echo "\n***\tTörlendő/Letiltandó felhasználók egyeztetése.\n";}
$m2n_catalog = catalog_userlist($link);
foreach($nxt_user as $key => $val){ //Benne van a nyilvántartásban,
@@ -815,7 +894,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
// - akkor vagy új user, vagy már meglévő,
// - ezért őt kihúzza az $nxt_user listáról, --> megtartja
// ezután ha valaki még rajta van az $nxt_user listán, az
- // - vagy más, mayor_naplón kívüli user (rendszergazda vette föl) --> nem nyúl hozzá
+ // - vagy más, mayor_naplón kívüli user (rendszergazda vette föl) --> nem törli, ha kellene
// - vagy megszűnő, korábbi mayor_napló-s user --> törli (vagy letiltja)
// ha rajta van a $catalog listán is, és nincs rajta $mayor_user listán
// - akkor őt a script hozta létre régen --> megszűnő, törli (vagy letiltja)