From a1405d0aa7b7c45f6011492f7ca7b94eb49aca48 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Tue, 31 Mar 2020 23:17:49 +0200 Subject: Mayor-Nextcloud script: README --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 205f6714..b316acee 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -198,6 +198,8 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['diak_quota'] = "2GB"; //A diákok! indulási kvótája // amikor új diákot ad hozzá, ezt a qvótát állítja be a számára. + //Lehetőség van az összes diák kvótáját egyszerre, az itt beállított értékre állítani, + // de ez nem fut automatikusan éjjelente, ezt kézzel kell, --set-diak-qupta kapcsoló kiadásával. $m2n['default_lang'] = "hu"; //Az alapértelmezett nyelv (később minden felhasználó átállíthatja magának) @@ -261,9 +263,11 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. - --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre + --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, + csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. - --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre. + --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, + illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre. -- cgit v1.2.3 From 53641293b7960701cb5f38e309015b4f68d61f45 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 2 Apr 2020 22:07:24 +0200 Subject: Mayor-Nextcloud script: Tankörmappák Leírás --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 118 ++++++++++++++++++----- 1 file changed, 96 insertions(+), 22 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index b316acee..191767d6 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -50,54 +50,128 @@ $m2n['infotxt_szöveg'] = << "(tk) 11.b fizika". ) -Természetesen a tanárnak lehetősége van az idegennek minősített mappákat, és azok tartalmát a "Iskolai Távoktatás" mappán kívülre, a saját mappái közé áthelyezni, vagy az idegennek minősített mappák tartalmát egy másik, már "elfogadott" tankörmappába tenni. -(Ez utóbbit kell tenni, vagyis a tanárnak kézzel áthelyezni a fájlokat az egyik tankörmappából, az új tankörmappába, amikor évváltás van, és a tankör ugrik egyet "(tk) 10.b fizika" --> "(tk) 11.b fizika". ) +*** Tippek: -*** Tipp: 1) -Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, a tanár által, az egész tankörnek küldött fájlokba véletlenül beleszerkesszen, hozzunk létre egy egy "beadás", vagy hasonló nevű mappát a tankörmappán belül, és csak erre a "beadás" mappára adjuk meg a jogot a diáknak/diákcsoportnak/tankörnek szerkesztésre/módosításra. +Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, +a tanár által, az egész tankörnek küldött fájlokba véletlenül +beleszerkesszen, vagy esetleg töröljön belőlük, hozzunk létre egy +"beadás", vagy hasonló nevű mappát a tankörmappán belül, +és csak erre a "beadás" mappára adjuk meg a jogot a +diáknak/tankörnek szerkesztésre/módosításra/törlésre. 2) -Ha videófájlokat szeretnénk feltölteni nagy mennyiségben, akkor hozzunk létre az adott tankörhöz tartozó tankörmappában egy "Videók" nevű mappát, és abba helyezzük el a videófájlokat. A könnyebb megkülönböztethetőség végett nevezzük át a videófájlokat dátum szerinti, fájlnévre, vagy sorszámozzuk őket, és a sorszámot tüntessük föl a fájl nevében! +Ha videófájlokat szeretnénk feltölteni nagy mennyiségben, +akkor hozzunk létre az adott tankörhöz tartozó tankörmappában egy +"Videók" nevű mappát, és abba helyezzük el a videófájlokat. +A könnyebb megkülönböztethetőség végett nevezzük át a videófájlokat +dátum szerinti, fájlnévre, vagy sorszámozzuk őket, +és a sorszámot tüntessük föl a fájl nevében! + + +3) A létrejövő mappák megosztási beállításait nekünk kell +finomhangolnunk, mert nem jönnek automatikusan létre a +feltöltési/szerkesztési/törlési/stb. engedélyek. + +Tehát, minután megosztottuk egy tankörrel, kattintsunk rá a +fektetett "V" betűhöz haonlító ikonra, és a megosztási beállításoknál +engedélyezzük a feltöltést/szerkesztést/törlést/továbbadást/stb. a +csoport tagjainak, igényünknek megfelelően! + +(Magát a megosztást is nekünk, kézzel kell megtennünk, +mert azt sem állítja be a szerver automatikusan.) EOT; -- cgit v1.2.3 From 4bffc51042df26854d06becd90145b92605dbca3 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 2 Apr 2020 22:11:03 +0200 Subject: Mayor-Nextcloud script: Tankörmappák Leírás --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 191767d6..e9063948 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -335,7 +335,7 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) További Paraméterek / Kapcsolók: - --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. + --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. -- cgit v1.2.3 From 90782a8da42acd3069a6788c20e4afdcfb329450 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 2 Apr 2020 22:11:31 +0200 Subject: Mayor-Nextcloud script: Tankörmappák Leírás --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index e9063948..cfeb5996 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -335,12 +335,12 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) További Paraméterek / Kapcsolók: - --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. + --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. - --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, + --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. - --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, + --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre. -- cgit v1.2.3 From c3394cb5ced191591aa0dac51b771dd038d25529 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 2 Apr 2020 22:14:02 +0200 Subject: Mayor-Nextcloud script: Tankörmappák Leírás --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index cfeb5996..38487a24 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -288,10 +288,10 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['mindenki_csop'] = "naplós_felhasználók"; //Legyen egy olyan csoport, amiben "mindenki benne van". // ebbe a "mindenki" csoportba minden, a script által létrehozott felhasználó bekerül. - + $m2n['mindenki_tanar'] = "naplós_tanárok"; //Legyen egy olyan csoport, amiben minden tanár benne van // ebbe a "minden_tanár" csoportba a naplóbeli tanárok kerülnek. - + $m2n['mindenki_diak'] = "naplós_diákok"; //Legyen egy olyan csoport, amiben "minden diák" benne van. // ebbe a "minden_diák" csoportba a naplóbeli diákok kerülnek. @@ -301,7 +301,7 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['manage_groupdirs'] = false; //Ha szerenénk, hogy a script létrehozza a távoktatást segítő tankörmappákat, állítsuk "true"-re! $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; //A távoktatást segítő mappák gyüjtőmappája/gyökérkönyvtára. - + $m2n['verbose'] = 3 //Log bőbeszédűség (A leg informatívabb(tömörebb), talán a 3-mas fokozat.) // 0: csak fatális hibák, 1: fontosabbak, 2: csop./felh. elvétel, 3: csop./felh. hozzáadás, // 4: csop./felh. állapot, 5: részletesebben, 6: sql query + bash parancsok kiírása is @@ -314,14 +314,14 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['kihagy'] = array(); //Lehetőség van egy-egy felhasználó kezelésének letiltására, ezt felsorolásként tehetjük meg. // Ekkor a script nem fog foglalkozni, az adott felhasználóval a továbbiakban. - //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') - - $m2n['megfigyelo_user'] = "naplo_robot"; //Lehetőség van egy úgymond "megfigyelő" felhasználó létrehozására. - // ez a felhasználó be lesz léptetve az összes csoportba, így az összes üzenetet megkapja, + //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') + + $m2n['megfigyelo_user'] = "naplo_robot"; //Lehetőség van egy úgymond "megfigyelő" felhasználó létrehozására. + // ez a felhasználó be lesz léptetve az összes csoportba, így az összes üzenetet megkapja, // és az összes tankörben megosztott fájlt látja, amit a csoportokkal/tankörökkel megosztottak. - CONFIG FILE: "mayor-nextcloud.cfg.php"; //Lehetőség van a konfig exportálására egy külön fájlba, + CONFIG FILE: "mayor-nextcloud.cfg.php"; //Lehetőség van a konfig exportálására egy külön fájlba, // így a mayor-nextcloud scriptet nem kell szerkeszteni, ha frissítés érkezik hozzá. // Ez alapértelmezetten a maxor-nextcloud.php -val kell egy könyvtárba legyen. @@ -332,9 +332,9 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) Az "occ" parancs működését pl. az: (>>> sudo -u www-data php /var/www/nextcloud/occ ) kiadásával ellenőrizzük! - - További Paraméterek / Kapcsolók: - + + További Paraméterek / Kapcsolók: + --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, -- cgit v1.2.3 From c2234d2eb4e98e54eee5eb23d339f2e49544a992 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 2 Apr 2020 23:02:38 +0200 Subject: Mayor-Nextcloud script: Tankörmappák Leírás friss --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 46 +++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 38487a24..83271462 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -53,7 +53,7 @@ $m2n['infotxt_szöveg'] = <<= 7) { //MySQLi (Im group_user_add($key3, $curr); //A "mindenki csoportot is ellenőrzi } //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - if($key3 != $m2n['mindenki_tanar'] && $key3 != $m2n['mindenki_diak'] && $key3 != $m2n['mindenki_tanar']){ //Ezekre a csoportokra minek? + if($key3 != $m2n['mindenki_tanar'] && $key3 != $m2n['mindenki_diak'] && $key3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} } @@ -914,7 +914,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im 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); if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } - if($val3 != $m2n['mindenki_tanar'] && $val3 != $m2n['mindenki_diak'] && $val3 != $m2n['mindenki_tanar']){ //Ezekre a csoportokra minek mappa? + if($val3 != $m2n['mindenki_tanar'] && $val3 != $m2n['mindenki_diak'] && $val3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek mappa? $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} } -- cgit v1.2.3 From 7faf07cfa8ee9bfb7e31540db6399007cdc4d8a1 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Fri, 3 Apr 2020 20:54:42 +0200 Subject: Mayor-Nextcloud script: Tankörmappák Leírás --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 5f4b57d5..6f281244 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -142,8 +142,8 @@ Viszont az "Iskolai Távoktatás" nevű mappában csak! a más fájl, vagy mappa, nem! Ha mégis kerülne oda egyéb fájl, vagy mappa, akkor arról először -értesíti a tanárt, majd a 3. értesítést követően, a nem odaillő -fájlokat, vagy mappákat automatikusan törli. +értesíti a tanárt, majd, a nem odaillő fájlokat, vagy mappákat +automatikusan eltávolításra megjelöli. Ez szintén vonatkozik a korábban itt levő, de átnevezett mappákra is, tehát, ha a "(tk) 10.b fizika" mappát a tanár véletlenül átnevezné, @@ -159,10 +159,11 @@ Természetesen a tanárnak lehetősége van az idegennek minősített mappákat, és azok tartalmát a "Iskolai Távoktatás" mappán kívülre, a saját mappái közé áthelyezni, vagy az idegennek minősített mappák tartalmát egy másik, már "elfogadott" tankörmappába áttenni. +Majd a kiürült, előző mappát törölnie kell! (Ez utóbbit kell tenni, vagyis a tanárnak, kézzel áthelyezni a fájlokat az egyik tankörmappából, az új tankörmappába, amikor -évváltás van, és a tankör ugrik egyet +évváltás van, és a tankör ugrik egyet: "(tk) 10.b fizika" --> "(tk) 11.b fizika". ) @@ -191,6 +192,8 @@ dátum szerinti, fájlnévre, vagy sorszámozzuk őket, 3) A létrejövő mappák megosztási beállításait nekünk kell finomhangolnunk, mert nem jönnek automatikusan létre a feltöltési/szerkesztési/törlési/stb. engedélyek. +A megosztás pillanatában, a fogadó félnek, csak az olvasási +jogosultsága jön létre, automatikusan. Tehát, minután megosztottuk egy tankörrel, kattintsunk rá a fektetett "V" betűhöz hasonlító ikonra, és a megosztási beállításoknál, -- cgit v1.2.3 From 8a3adb76473b13842bda18ee5e6eb7b3735ec07e Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 12:37:25 +0200 Subject: Mayor-Nextcloud script: Tankörmappák BEADÁS --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 2 +- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 66 +++++++++++++----------- 2 files changed, 38 insertions(+), 30 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 6f281244..0236ebcb 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -30,7 +30,7 @@ $m2n['min_osztalyok'] = array(); //pl: array('9.a','11.a'); $m2n['csoportnev_hossz'] = 40; $m2n['felhasznalo_hossz'] = 45; $m2n['default_lang'] = "hu"; -$m2n['manage_groupdirs'] = false; +$m2n['manage_groupdirs'] = false; //Foglalkozzon-e a script a tankörmappákkal $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; $m2n['mindenki_csop'] = "naplós_felhasználók"; $m2n['mindenki_tanar'] = "naplós_tanárok"; diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 8ee8e362..0dc27a62 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -29,7 +29,7 @@ $m2n['felhasznalo_hossz'] = 45; $m2n['megfigyelo_user'] = "naplo_robot"; //ha nem kell, akkor állítsd üres stringre. $m2n['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') $m2n['default_lang'] = "hu"; -$m2n['manage_groupdirs'] = false; +$m2n['manage_groupdirs'] = false; // Foglalkozzon-e a script a tankörmappákkal $m2n['groupdir_prefix'] = "tavsuli"; $m2n['mindenki_csop'] = "naplós_felhasználók"; $m2n['mindenki_tanar'] = "naplós_tanárok"; @@ -355,55 +355,59 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function create_dir($user, $path){ // Készít egy mappát a: data/$user/files/$path alá global $occ_user, $occ_path,$log; $ret = false; - if(!file_exists($occ_path."/data/".$user."/files/")){ // Ha Még nincs home könyvtára sem + /* if(!file_exists($occ_path."/data/".$user."/files/")){ // Ha Még nincs home könyvtára sem $ret = mkdir($occ_path."/data/".$user."/files/", 0755, true); // Akkor létrehozza chown($occ_path."/data/".$user, $occ_user); chgrp($occ_path."/data/".$user, $occ_user); chown($occ_path."/data/".$user."/files/", $occ_user); chgrp($occ_path."/data/".$user."/files/", $occ_user); if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/"."\" \t created.\n"; } - } - if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még mindig nen könyvtár + } */ + if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még nem létezik $ret = mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza - chown($occ_path."/data/".$user."/files/".$path, $occ_user); - chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dreated.\n"; } + + $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".$user."/'"; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec($e); + // chown($occ_path."/data/".$user."/files/".$path, $occ_user); + // chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + //if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } return $ret; } - function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát + function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát global $occ_user, $occ_path,$log; $ret = 0; - if(is_dir(pathinfo($occ_path."/data/".$user."/files/".$path)['dirname'] )){ - $h = fopen($occ_path."/data/".$user."/files/".$path, 'w+'); + if( ($h = fopen($occ_path."/data/".$user."/files/".$path, 'w+')) !== false ){ $ret = fwrite($h, $msg ); fclose($h); chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); if($log['verbose'] > 5) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } else { - if($log['verbose'] > 5) { echo "php ->\tERROR: \"".pathinfo($occ_path."/data/".$user."/files/".$path)['dirname']."\" \t dir not found.\n"; } + if($log['verbose'] > 5) { echo "php ->\tERROR: \"".pathinfo($occ_path."/data/".$user."/files/".$path)['dirname']."\" \t container dir not found.\n"; } } return $ret; } - function files_scan($user, $path ){ // Nextcloud files:scan + function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx 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 + function user_notify($user, $msg, $title ){ // Nextcloud értesítés 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 + function scan_dir($user, $path ){ // PHP mappa listázása global $occ_user, $occ_path,$log; $ret = array(); if(is_dir($occ_path."/data/".$user."/files/".$path)){ @@ -416,14 +420,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im return $ret; } - function clean_dir($user, $path, $tankorei){ + function clean_dir($user, $path, $tankorei){ //Tankörmappák kitisztítása (path: mappagyökér) global $occ_user, $occ_path, $log, $m2n; $listdir = scan_dir($user, $path); $ret[0] = array(); $ret[1] = array(); $ret[2] = array(); foreach($listdir as $key => $val) { - if((!in_array($val, $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((!in_array($val, $tankorei) && !in_array(basename($val,"_beadás"), $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($user, $path."/".$val))){ // Ha mappa, és üres -> törlés rmdir($occ_path."/data/".$user."/files/".$path."/".$val); @@ -452,21 +456,21 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } - function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja + function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja global $groupdir_user, $m2n, $occ_path, $occ_user,$log; $ret = array(false, false); if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl - if(@unlink( $occ_path."/data/".$user."/files/".$path."backup") && $log['verbose'] > 0 ){ //Helyet csinál a backupnak (sorry) - rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path."backup"); //Átnevezi, hogy azért mégse vasszen oda + if(@unlink( $occ_path."/data/".$user."/files/".$path.".please-remove") && $log['verbose'] > -1 ){ //Helyet csinál a backupnak (sorry) + rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path.".please-remove"); //Átnevezi, hogy azért mégse vasszen oda echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t deleted!!!\n"; - user_notify($user,"Fájl: $val \nIllegális helyen, és útban volt. \nAutomata által törölve.", "Fájl: $val törölve!"); + user_notify($user,"Fájl: ".$path.".please-remove \nIllegális helyen volt. \nAutomata által törölve.", "Fájl: ".$path." törölve!"); } } - $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása - $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // Információs fájlt is + $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása + $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // Információs fájlt is } return $ret; } @@ -474,22 +478,20 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function groupdir_create_groupdir($user, $oktId, $path){ global $groupdir_user, $m2n; if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ - return create_dir($user, $path); // Tankörmappa gyökér létrehozása + return create_dir($user, $path); // Tankörmappa létrehozása } } function groupdir_finish($user, $oktId, $path, $tankorei){ global $groupdir_user, $m2n; - $ret[0] = array(); - $ret[1] = array(); - $ret[2] = array(); - $ret[3] = array(); + $ret = array(array(),array(),array(),false,false); //return sekelton if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ if(isset($tankorei)) { $ret = clean_dir($user, $path, $tankorei); } - files_scan($user, $path); // Tankörmappa gyökér létrehozása - $ret[3] = true; + $ret[3] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); //INFO.txt újraírása + files_scan($user, $path); // Nextcloud értesítése + $ret[4] = true; } return $ret; } @@ -878,6 +880,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if($key3 != $m2n['mindenki_tanar'] && $key3 != $m2n['mindenki_diak'] && $key3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + } //------------------------------------- Tankör (Csoportból) törlés -------------------------// @@ -917,6 +922,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if($val3 != $m2n['mindenki_tanar'] && $val3 != $m2n['mindenki_diak'] && $val3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek mappa? $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + } } } -- cgit v1.2.3 From ac296a83cdcbcd13ae72fbf2910cdcc8e5f8e693 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 14:10:01 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 0dc27a62..3fd1f78e 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/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; -$groupdir_user = ""; +$groupdir_user = "naplo_robot"; $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); } -- cgit v1.2.3 From 9515c52f99159a5fc554074ffaf63d938670300d Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 15:52:47 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 8 +++++-- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 27 ++++++++++++++---------- 2 files changed, 22 insertions(+), 13 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 0236ebcb..8d90b977 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -333,9 +333,11 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) // Tehát ha beállítunk egy minimális évfolyamot, a listában felsorolt osztályok akkor is importálódnak, // ha a min_évfolyam-nál kisebbek. //pl: array('9.a','11.a'); - $m2n['csoportnev_hossz'] = 40; // Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a csoport neve. (csak a script kinézete/átláthatósága végett) + $m2n['csoportnev_hossz'] = 40; //Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a csoport neve. + // (csak a script kinézete/átláthatósága végett) - $m2n['felhasznalo_hossz'] = 45; // Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a felhasználó valódi neve. (csak a script kinézete/átláthatósága végett) + $m2n['felhasznalo_hossz'] = 45; //Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a felhasználó valódi neve. + // (Ssak a script szép kinézete, átláthatósága végett.) $m2n['mindenki_csop'] = "naplós_felhasználók"; //Legyen egy olyan csoport, amiben "mindenki benne van". // ebbe a "mindenki" csoportba minden, a script által létrehozott felhasználó bekerül. @@ -370,6 +372,8 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['megfigyelo_user'] = "naplo_robot"; //Lehetőség van egy úgymond "megfigyelő" felhasználó létrehozására. // ez a felhasználó be lesz léptetve az összes csoportba, így az összes üzenetet megkapja, // és az összes tankörben megosztott fájlt látja, amit a csoportokkal/tankörökkel megosztottak. + //EZ a felhasználó nem egyezik meg a MaYor "mayoradmin" felhasználójával (nem lesz automatikusan rendszergazda)! + // de megadható ugyanazon felhasználónév, és lejszó, mint a MaYor "mayoradmin"-nak CONFIG FILE: "mayor-nextcloud.cfg.php"; //Lehetőség van a konfig exportálására egy külön fájlba, diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 3fd1f78e..87ba0e12 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -529,7 +529,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im return $list; } - function add_param_to_user($list, $user, $paramname, $param){ // Paramétert állít be a felhasználónak. + function set_param_to_user($list, $user, $paramname, $param){ // Paramétert állít be a felhasználónak. foreach($list as $key => $val){ // Csak rendezett tömbökön! (vagy mégsem?) if($user === null or ($user !== null && $val['userAccount'] == $user )){ //Vagy mindenki vagy adott user @@ -789,22 +789,25 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $mayor_tanar = get_mayor_tanar($link2); //Rendezve jön $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $m2n['mindenki_tanar']); //csak rendezett tömbökön! - $mayor_tanar = add_param_to_user($mayor_tanar, null, 'quota', $m2n['default_quota']); - $mayor_tanar = add_param_to_user($mayor_tanar, null, 'diakId', -1 ); + $mayor_tanar = set_param_to_user($mayor_tanar, null, 'quota', $m2n['default_quota']); + $mayor_tanar = set_param_to_user($mayor_tanar, null, 'diakId', -1 ); usort($mayor_tanar, "mayor_userlistcmp"); $mayor_diak = get_mayor_diak($link2); //mysql rendezi $mayor_diak = add_tk_to_users( $mayor_diak, null, $m2n['mindenki_diak']); //csak rendezett tömbökön! - $mayor_diak = add_param_to_user($mayor_diak, null, 'quota', $m2n['diak_quota']); - $mayor_diak = add_param_to_user($mayor_diak, null, 'tanarId', -1 ); + $mayor_diak = set_param_to_user($mayor_diak, null, 'quota', $m2n['diak_quota']); + $mayor_diak = set_param_to_user($mayor_diak, null, 'tanarId', -1 ); usort($mayor_diak, "mayor_userlistcmp"); $mayor_user = array(); - $mayor_user = array_merge($mayor_tanar, $mayor_diak); - $mayor_user = add_tk_to_users( $mayor_user, null, $m2n['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport - usort($mayor_user, "mayor_userlistcmp"); - + $mayor_user = array_merge($mayor_tanar, $mayor_diak); //Tanár, és diák lista együtt if(isset($m2n['megfigyelo_user']) && $m2n['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére + $mayor_user = array_merge($mayor_user, array( + array( 'userAccount' => $m2n['megfigyelo_user'], //A virtuális "naplo_admin" legyen egyben tanár is + 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin", + 'email' => $m2n['default_email'], + 'tankorNev' => $m2n['mindenki_tanar'], + ))); foreach(get_mayor_tankor($link2) as $key => $val){ $mayor_user = array_merge($mayor_user, array( array( 'userAccount' => $m2n['megfigyelo_user'], @@ -819,9 +822,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - - usort($mayor_user, "mayor_userlistcmp"); //ha a megfigyelo helyesen van egy rendezett lista végén, nem kell ismét rendezni + usort($mayor_user, "mayor_userlistcmp"); //rendezés + $mayor_user = add_tk_to_users( $mayor_user, null, $m2n['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport + usort($mayor_user, "mayor_userlistcmp"); //Végén ismét rendezzük az egészet $mayor_user = array_merge($mayor_user, array(array('userAccount' => null, 'fullName' => null, 'tankorNev' => null, 'diakId' => 0, 'tanarId' => 0,)) ); //strázsa a lista végére + $nxt_user = nxt_user_list(); $nxt_group = nxt_group_list(); $m2n_catalog = catalog_userlist($link); -- cgit v1.2.3 From 2a6faf03062724433e681c8359317f184955d25b Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 16:32:33 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 36 ++++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 87ba0e12..b1f4181c 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -364,8 +364,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/"."\" \t created.\n"; } } */ if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még nem létezik - $ret = mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza - if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dreated.\n"; } + $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza + if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".$user."/'"; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } @@ -381,14 +382,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát global $occ_user, $occ_path,$log; $ret = 0; - if( ($h = fopen($occ_path."/data/".$user."/files/".$path, 'w+')) !== false ){ + if( ($h = @fopen($occ_path."/data/".$user."/files/".$path, 'w+')) !== false ){ $ret = fwrite($h, $msg ); fclose($h); chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); if($log['verbose'] > 5) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } else { - if($log['verbose'] > 5) { echo "php ->\tERROR: \"".pathinfo($occ_path."/data/".$user."/files/".$path)['dirname']."\" \t container dir not found.\n"; } + if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } } return $ret; } @@ -462,13 +463,10 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl - if(@unlink( $occ_path."/data/".$user."/files/".$path.".please-remove") && $log['verbose'] > -1 ){ //Helyet csinál a backupnak (sorry) - rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path.".please-remove"); //Átnevezi, hogy azért mégse vasszen oda - echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t deleted!!!\n"; - user_notify($user,"Fájl: ".$path.".please-remove \nIllegális helyen volt. \nAutomata által törölve.", "Fájl: ".$path." törölve!"); - } + rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path.".".time().".please-remove"); //Átnevezi, hogy azért mégse vasszen oda + echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; + user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); } - $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // Információs fájlt is } @@ -477,9 +475,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function groupdir_create_groupdir($user, $oktId, $path){ global $groupdir_user, $m2n; - if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ - return create_dir($user, $path); // Tankörmappa létrehozása - } + if( $path != $m2n['groupdir_prefix']."/".$m2n['mindenki_tanar'] and $path != $m2n['groupdir_prefix']."/".$m2n['mindenki_diak'] and $path != $m2n['groupdir_prefix']."/".$m2n['mindenki_csop']){ //Ezekre a csoportokra minek? + if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + return create_dir($user, $path); // Tankörmappa létrehozása + } + } } function groupdir_finish($user, $oktId, $path, $tankorei){ @@ -882,13 +882,13 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im group_user_add($key3, $curr); //A "mindenki csoportot is ellenőrzi } //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - if($key3 != $m2n['mindenki_tanar'] && $key3 != $m2n['mindenki_diak'] && $key3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); + //if($key3 != $m2n['mindenki_tanar'] && $key3 != $m2n['mindenki_diak'] && $key3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} - } + //} //------------------------------------- Tankör (Csoportból) törlés -------------------------// } else { //Nem szerepel a tankörei között @@ -924,13 +924,13 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im 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); if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } - if($val3 != $m2n['mindenki_tanar'] && $val3 != $m2n['mindenki_diak'] && $val3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek mappa? + //if($val3 != $m2n['mindenki_tanar'] && $val3 != $m2n['mindenki_diak'] && $val3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek mappa? $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} - } + //} } } $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); -- cgit v1.2.3 From bfc6da893526efa4654d1b5db96fea2720c3d158 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 16:36:11 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index b1f4181c..1a6da6c0 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -396,7 +396,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx 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 + $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); } @@ -466,6 +466,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path.".".time().".please-remove"); //Átnevezi, hogy azért mégse vasszen oda echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); + files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli } $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // Információs fájlt is -- cgit v1.2.3 From 74ce0b8b869cadf973c9532e72353ffb9f30b4d3 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 17:04:34 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 34 ++++++++++------------------ 1 file changed, 12 insertions(+), 22 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 1a6da6c0..a64a8682 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -354,26 +354,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function create_dir($user, $path){ // Készít egy mappát a: data/$user/files/$path alá global $occ_user, $occ_path,$log; - $ret = false; - /* if(!file_exists($occ_path."/data/".$user."/files/")){ // Ha Még nincs home könyvtára sem - $ret = mkdir($occ_path."/data/".$user."/files/", 0755, true); // Akkor létrehozza - chown($occ_path."/data/".$user, $occ_user); - chgrp($occ_path."/data/".$user, $occ_user); - chown($occ_path."/data/".$user."/files/", $occ_user); - chgrp($occ_path."/data/".$user."/files/", $occ_user); - if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/"."\" \t created.\n"; } - } */ + $ret = null; if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még nem létezik $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } - - $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".$user."/'"; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); - // chown($occ_path."/data/".$user."/files/".$path, $occ_user); - // chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - //if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + chown($occ_path."/data/".$user."/files/".$path, $occ_user); + chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } return $ret; } @@ -396,7 +384,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx 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 + $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); } @@ -434,18 +422,15 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im rmdir($occ_path."/data/".$user."/files/".$path."/".$val); $ret[0][] = $val; if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } + } else { //Nem mappa, vagy nem üres - //if( @unlink($occ_path."/data/".$user."/files/".$path."/".$val.time().".please-remove") === true && $log['verbose'] > 0 ){ // Már "xxxx.please-remove" is volt... - // echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."/".$val.time()."\" deleted!!!\n"; - // user_notify($user,"Fájl: ".$path."/".$val.".please-remove Illegális helyen, volt. Automata által törölve.", "Fájl: ".$path."/".$val.".please-remove törölve!"); - //} if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".$user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove"); $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Később automatikusan törlésre kerül! A fájl átnevezve, új neve --> ".basename($val, '.please-remove').".".time().".please-remove", "Fájl/Mappa rossz helyen! --> ".$path."/".basename($val, '.please-remove').".".time().".please-remove" ); if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".basename($val, '.please-remove').".".time().".please-remove"."\n"; } } else { - // A Hanyagul otthagyottakért figyelmeztessen: + // A Hanyagul otthagyottakért csak figyelmeztessen: user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Később automatikusan törlésre kerül! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); } } @@ -470,6 +455,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // Információs fájlt is + if(is_null($ret[0])){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni + $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".$user."/'"; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec($e); + } } return $ret; } -- cgit v1.2.3 From af494be820417b7c0ad58c827902fea080bbfbba Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 17:54:58 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 57 +++++++++++++++------------- 1 file changed, 31 insertions(+), 26 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index a64a8682..e3c64c44 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -442,7 +442,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } - function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja + function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja $path=tankörgyökér global $groupdir_user, $m2n, $occ_path, $occ_user,$log; $ret = array(false, false); if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava @@ -455,34 +455,42 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // Információs fájlt is - if(is_null($ret[0])){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni + if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".$user."/'"; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); + files_scan($user, $path); } } return $ret; } - function groupdir_create_groupdir($user, $oktId, $path){ + function groupdir_create_groupdir($user, $oktId, $path){ // $path = tankörmappa global $groupdir_user, $m2n; - if( $path != $m2n['groupdir_prefix']."/".$m2n['mindenki_tanar'] and $path != $m2n['groupdir_prefix']."/".$m2n['mindenki_diak'] and $path != $m2n['groupdir_prefix']."/".$m2n['mindenki_csop']){ //Ezekre a csoportokra minek? + $ret = false; + if( basename($path,"_beadás") != $m2n['mindenki_tanar'] and basename($path,"_beadás") != $m2n['mindenki_diak'] and basename($path,"_beadás") != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ - return create_dir($user, $path); // Tankörmappa létrehozása + $ret = create_dir($user, $path); // Tankörmappa létrehozása + if($ret === true){ + files_scan($user, $path); + } } + return $ret; } } - function groupdir_finish($user, $oktId, $path, $tankorei){ + function groupdir_finish($user, $oktId, $path, $tankorei, $pret){ //$path= global $groupdir_user, $m2n; $ret = array(array(),array(),array(),false,false); //return sekelton if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ if(isset($tankorei)) { $ret = clean_dir($user, $path, $tankorei); } - $ret[3] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); //INFO.txt újraírása - files_scan($user, $path); // Nextcloud értesítése - $ret[4] = true; + $ret[3] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); //INFO.txt újraírása + if(!empty($ret[0]) or !empty($ret[1]) ){ + files_scan($user, $path); // Nextcloud értesítése + $ret[4] = true; + } } return $ret; } @@ -872,14 +880,12 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im 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 } + //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - //if($key3 != $m2n['mindenki_tanar'] && $key3 != $m2n['mindenki_diak'] && $key3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} - - //} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} //------------------------------------- Tankör (Csoportból) törlés -------------------------// } else { //Nem szerepel a tankörei között @@ -895,7 +901,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}} if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}} if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} - if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + if ($ret[3] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tÚjraírva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n"; + if ($ret[4] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} break; } @@ -915,17 +922,15 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im 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); if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } - //if($val3 != $m2n['mindenki_tanar'] && $val3 != $m2n['mindenki_diak'] && $val3 != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek mappa? - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} - - //} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} } } - $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); - if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); + if ($ret[3] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tÚjraírva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + if ($ret[4] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} if($curr_diakId > 0) { //Ennyi is elég // Diákról van szó /// if($curr_tanarId < 0 && $curr_diakId > 0) -- cgit v1.2.3 From 4b7f396520232412baf9b80b74a8d772dde85561 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 18:02:00 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index e3c64c44..a90cee78 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -479,17 +479,18 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - function groupdir_finish($user, $oktId, $path, $tankorei, $pret){ //$path= + function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path= global $groupdir_user, $m2n; $ret = array(array(),array(),array(),false,false); //return sekelton if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ if(isset($tankorei)) { $ret = clean_dir($user, $path, $tankorei); + $ret[3] = false; //mert felülírja a skeleton-t } - $ret[3] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); //INFO.txt újraírása +// $ret[3] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); //INFO.txt újraírása if(!empty($ret[0]) or !empty($ret[1]) ){ files_scan($user, $path); // Nextcloud értesítése - $ret[4] = true; + $ret[3] = true; } } return $ret; @@ -901,7 +902,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}} if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}} if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} - if ($ret[3] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tÚjraírva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n"; + if ($ret[3] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tÚjraírva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n"; } if ($ret[4] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} break; -- cgit v1.2.3 From 6aa22d4af60e348b40f4094d2f33ec3523d5999a Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 4 Apr 2020 18:14:49 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index a90cee78..926624b5 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -357,11 +357,10 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret = null; if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még nem létezik $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza - if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } - if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? } return $ret; } @@ -454,7 +453,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli } $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása - $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // Információs fájlt is + $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // INFO.txt (Újra)Írása. if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".$user."/'"; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } @@ -487,7 +486,6 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret = clean_dir($user, $path, $tankorei); $ret[3] = false; //mert felülírja a skeleton-t } -// $ret[3] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); //INFO.txt újraírása if(!empty($ret[0]) or !empty($ret[1]) ){ files_scan($user, $path); // Nextcloud értesítése $ret[3] = true; @@ -902,12 +900,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}} if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}} if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} - if ($ret[3] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tÚjraírva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n"; } - if ($ret[4] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} break; } - } + } unset($nxt_user[$curr]); //Felhasználó Megvizsgálva, többször már nem kell dönteni róla. if($curr != $key2 and $curr != null){ //Nincs még ilyen felhasználó @@ -930,8 +927,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); - if ($ret[3] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tÚjraírva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} - if ($ret[4] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} if($curr_diakId > 0) { //Ennyi is elég // Diákról van szó /// if($curr_tanarId < 0 && $curr_diakId > 0) -- cgit v1.2.3 From 733aac0ec44be4310e5b096d049605d0688d863e Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 5 Apr 2020 02:08:04 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 926624b5..f8cd4489 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -113,6 +113,12 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } + function escp($str){ //Escape strings + $str = str_replace(array('`', '\'', "\"" ),array('\`', '\\\'', "\\\""), $str); + return escapeshellarg($str); + } + + function nxt_get_version(){ global $occ_path,$occ_user,$m2n,$log; // sudo -u honlap-felho php /home/honlap-felho/web/occ status --output=json @@ -163,7 +169,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function catalog_useradd($link, $account){ // feljegyzi az általa létrehozott felhasználókat global $log,$db; - $q = "INSERT INTO ".$db['m2n_db'].".".$db['m2n_prefix']."register (account) VALUES ('".$account."')"; + $q = "INSERT INTO ".$db['m2n_db'].".".$db['m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-hozzáadás, m2n nyilvántartásba vétele.\n"; } @@ -172,7 +178,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function catalog_userena($link, $account){ // az engedélyezetteket global $db,$log; - $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='active' WHERE account='".$account."'"; + $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-engedélyezés, m2n nyilvántartásba vétele.\n" ;} @@ -181,7 +187,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function catalog_userdel($link, $account){ // a törölteket global $db,$log; - $q = "DELETE FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE account='".$account."' "; + $q = "DELETE FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-törlés, m2n nyilvántartásba vétele.\n"; } @@ -190,7 +196,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function catalog_userdis($link, $account){ // a letiltottakat global $m2n,$db,$log; - $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='disabled' WHERE account='".$account."'"; + $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-letiltás, m2n nyilvántartásba vétele.\n"; } @@ -383,14 +389,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx 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 + $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" files:scan --path=\"".escp($user)."/files/".escp($path)."\" '"; // -v if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } function user_notify($user, $msg, $title ){ // Nextcloud értesítés global $occ_user, $occ_path, $log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" notification:generate -l \"".$msg."\" -- ".$user." \"".$title."\" '"; + $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" notification:generate -l \"".escp($msg)."\" -- ".escp($user)." \"".escp($title)."\" '"; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -455,12 +461,12 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // INFO.txt (Újra)Írása. if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni - $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".$user."/'"; + $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".escp($user)."/'"; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); files_scan($user, $path); } - } + } return $ret; } @@ -478,7 +484,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path= + function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path=tankörgyökér global $groupdir_user, $m2n; $ret = array(array(),array(),array(),false,false); //return sekelton if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ @@ -489,7 +495,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if(!empty($ret[0]) or !empty($ret[1]) ){ files_scan($user, $path); // Nextcloud értesítése $ret[3] = true; - } + } + files_scan($user, $path."/INFO.txt"); } return $ret; } -- cgit v1.2.3 From 36b29c8ac54e055072f1671dca748fc4ffaf7947 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 5 Apr 2020 02:14:18 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index f8cd4489..622639b3 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -389,14 +389,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" files:scan --path=\"".escp($user)."/files/".escp($path)."\" '"; // -v + $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } function user_notify($user, $msg, $title ){ // Nextcloud értesítés global $occ_user, $occ_path, $log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" notification:generate -l \"".escp($msg)."\" -- ".escp($user)." \"".escp($title)."\" '"; + $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } -- cgit v1.2.3 From cd1a1c9cdb6282f0c667bf27644bb194bfde042c Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 5 Apr 2020 02:51:32 +0200 Subject: Mayor-Nextcloud script: Tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 23 ++++++++++++++++------- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 6 +++--- 2 files changed, 19 insertions(+), 10 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 8d90b977..87fdda23 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -90,9 +90,9 @@ A működési szabályok: más módon juttassa vissza. 5) A Tankörmappákban, a fájlok rendjét a tanár határozhatja meg, - viszont, amelyik mappára, vagy alsóbb mappára engedélyezve van - a diák(ok) részére a feltöltés/szerkesztés/törlés, - ott már értelemszerűen nem csak a tanár dönt. + viszont, amelyik mappára engedélyezve van a diák(ok) részére a + feltöltés/szerkesztés/törlés, ott már értelemszerűen nem csak a + tanár dönt a fájlok sorsáról. 6) A tankörmappák gyűjtőmappájában a rendet a szerver tartja, oda egyéb fájl, nem helyezhető. @@ -121,6 +121,10 @@ Ezen, a mappán belül létrejön mondjuk, egy "(tk) 10.b fizika" és egy "(tk) 10.b osztályfőnöki" tankörmappa. (Vagyis, a tanár, az e-naplóban ezen tankörök tagja.) +Ezen mappák mellé létrejön még a "(tk) 10.b fizika_beadás" és a +"(tk) 10.b osztályfőnöki_beadás" mappa is. Ezek a mappák a diákok +által visszaküldendő fájlok gyűjtésére szolgálnak. + A tanár szabadon használhatja a "(tk) 10.b fizika" és a "(tk) 10.b osztályfőnöki" mappákat, azokat szabadon megoszthatja, bele fájlokat helyezhet, belőlük fájlokat törölhet, stb., @@ -174,10 +178,15 @@ fájlokat az egyik tankörmappából, az új tankörmappába, amikor 1) Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, a tanár által, az egész tankörnek küldött fájlokba véletlenül -beleszerkesszen, vagy esetleg töröljön belőlük, hozzunk létre egy -"beadás", vagy hasonló nevű mappát, a tankörmappán belül, -és csak erre a "beadás" mappára adjuk meg a jogot a -diáknak/tankörnek szerkesztésre/módosításra/törlésre/stb.. +beleszerkesszen, vagy esetleg töröljön belőlük, akkor vonjuk meg a +szerkesztési/létrehozási/törlési jogokat, és ezt ellenőrizzük is +minden megosztáskor, hogy valóban a megfelelő jogok vannak-e bállítva +a megosztott mappán! + +A szerver létrehoz egy "_beadás", végződésű mappát is, a tankörmappák +mellé, hogy ezeket használhassuk a visszaküldendő fájlok gyűjtésére, így +csak erre a "_beadás" mappára kell jogot adnunk a diáknak/tankörnek +a szerkesztésre/módosításra/törlésre/stb.. 2) diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 622639b3..a439d12d 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -432,11 +432,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".$user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove"); $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; - user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Később automatikusan törlésre kerül! A fájl átnevezve, új neve --> ".basename($val, '.please-remove').".".time().".please-remove", "Fájl/Mappa rossz helyen! --> ".$path."/".basename($val, '.please-remove').".".time().".please-remove" ); + user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".basename($val, '.please-remove').".".time().".please-remove", "Fájl/Mappa rossz helyen! --> ".$path."/".basename($val, '.please-remove').".".time().".please-remove" ); if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".basename($val, '.please-remove').".".time().".please-remove"."\n"; } } else { // A Hanyagul otthagyottakért csak figyelmeztessen: - user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Később automatikusan törlésre kerül! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); + user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjelölve! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); } } } else { @@ -461,7 +461,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // INFO.txt (Újra)Írása. if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni - $e = "/bin/chown -R '".$occ_user.":".$occ_user."' '".$occ_path."/data/".escp($user)."/'"; + $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); files_scan($user, $path); -- cgit v1.2.3 From bb03ef52ff7be65c8b678c4f2087ec1ce9e94d6a Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 5 Apr 2020 13:31:26 +0200 Subject: Mayor-Nextcloud script: Tankörmappák userek --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 1 + "egy\303\251b/nextcloud/mayor-nextcloud.php" | 17 +++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 87fdda23..4206d949 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -31,6 +31,7 @@ $m2n['csoportnev_hossz'] = 40; $m2n['felhasznalo_hossz'] = 45; $m2n['default_lang'] = "hu"; $m2n['manage_groupdirs'] = false; //Foglalkozzon-e a script a tankörmappákkal +$m2n['groupdir_users'] = array("naplo_robot","12abcd"); //Ha a tömb üres, akkor az összes tanárral dolgozik. $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; $m2n['mindenki_csop'] = "naplós_felhasználók"; $m2n['mindenki_tanar'] = "naplós_tanárok"; diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index a439d12d..ad11935f 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -31,6 +31,7 @@ $m2n['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.El $m2n['default_lang'] = "hu"; $m2n['manage_groupdirs'] = false; // Foglalkozzon-e a script a tankörmappákkal $m2n['groupdir_prefix'] = "tavsuli"; +$m2n['groupdir_users'] = array("naplo_robot","123abcd"); //Ha mindenkire -> =array(); //(legyen üres) $m2n['mindenki_csop'] = "naplós_felhasználók"; $m2n['mindenki_tanar'] = "naplós_tanárok"; $m2n['mindenki_diak'] = "naplós_diákok"; @@ -40,7 +41,7 @@ $m2n['verbose'] = 3 ; $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; $ALWAYS_SET_DIAK_QUOTA = false; -$groupdir_user = "naplo_robot"; + $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 +56,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"){ $groupdir_user = $argv[$i+1]; $i++;} + if($argv[$i] == "--create-groupdir"){ $m2n['groupdir_users'] = array( $argv[$i+1] ); $i++;} } if( $ALWAYS_SET_DIAK_QUOTA === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } @@ -448,9 +449,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja $path=tankörgyökér - global $groupdir_user, $m2n, $occ_path, $occ_user,$log; + global $m2n, $occ_path, $occ_user,$log; $ret = array(false, false); - if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path.".".time().".please-remove"); //Átnevezi, hogy azért mégse vasszen oda @@ -471,10 +472,10 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } function groupdir_create_groupdir($user, $oktId, $path){ // $path = tankörmappa - global $groupdir_user, $m2n; + global $m2n; $ret = false; if( basename($path,"_beadás") != $m2n['mindenki_tanar'] and basename($path,"_beadás") != $m2n['mindenki_diak'] and basename($path,"_beadás") != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? - if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ $ret = create_dir($user, $path); // Tankörmappa létrehozása if($ret === true){ files_scan($user, $path); @@ -485,9 +486,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path=tankörgyökér - global $groupdir_user, $m2n; + global $m2n; $ret = array(array(),array(),array(),false,false); //return sekelton - if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ if(isset($tankorei)) { $ret = clean_dir($user, $path, $tankorei); $ret[3] = false; //mert felülírja a skeleton-t -- cgit v1.2.3 From 382d463bc0c7cb589e2f95fd18830e010c9d78be Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 5 Apr 2020 13:52:04 +0200 Subject: Mayor-Nextcloud script: Tankörmappák userek --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index ad11935f..165c69aa 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -115,10 +115,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } function escp($str){ //Escape strings - $str = str_replace(array('`', '\'', "\"" ),array('\`', '\\\'', "\\\""), $str); + $str = str_replace(array("\\","`", "\'", "\"" ),array("\\\\", "\`", "\\\'", "\\\""), $str); return escapeshellarg($str); } + function rnescp($str){ //Escape strings + $str = str_replace(array("\\","`", "\'", "\"" ),array("_", "-", "´", "˝"), $str); + return escapeshellarg($str); + } function nxt_get_version(){ global $occ_path,$occ_user,$m2n,$log; @@ -431,7 +435,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { //Nem mappa, vagy nem üres if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él - rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".$user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove"); + rename($occ_path."/data/".$user."/files/".$path."/".$val, rnescp($occ_path."/data/".$user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".basename($val, '.please-remove').".".time().".please-remove", "Fájl/Mappa rossz helyen! --> ".$path."/".basename($val, '.please-remove').".".time().".please-remove" ); if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".basename($val, '.please-remove').".".time().".please-remove"."\n"; } @@ -454,7 +458,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl - rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".$user."/files/".$path.".".time().".please-remove"); //Átnevezi, hogy azért mégse vasszen oda + rename($occ_path."/data/".$user."/files/".$path, rnescp($occ_path."/data/".$user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli -- cgit v1.2.3 From fd68dd15ba15f1935a71b4c5c5253166c52c42e3 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 5 Apr 2020 23:12:10 +0200 Subject: Mayor-Nextcloud script: Tankörmappák userek --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 165c69aa..9f054c98 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -120,8 +120,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } function rnescp($str){ //Escape strings - $str = str_replace(array("\\","`", "\'", "\"" ),array("_", "-", "´", "˝"), $str); - return escapeshellarg($str); + str_replace(array("\\","`", "\'", "\"", "\ ", ), array("_", "", "", "", "_", ), $str); + return substr(escapeshellarg($str), 1, -1); } function nxt_get_version(){ @@ -435,10 +435,10 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { //Nem mappa, vagy nem üres if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él - rename($occ_path."/data/".$user."/files/".$path."/".$val, rnescp($occ_path."/data/".$user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); + rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; - user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".basename($val, '.please-remove').".".time().".please-remove", "Fájl/Mappa rossz helyen! --> ".$path."/".basename($val, '.please-remove').".".time().".please-remove" ); - if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".basename($val, '.please-remove').".".time().".please-remove"."\n"; } + user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".rnescp(basename($val, '.please-remove').".".time().".please-remove"), "Fájl/Mappa rossz helyen! --> ".rnescp($path."/".basename($val, '.please-remove').".".time().".please-remove" )); + if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } } else { // A Hanyagul otthagyottakért csak figyelmeztessen: user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjelölve! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); @@ -450,7 +450,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } return $ret; } - + function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja $path=tankörgyökér global $m2n, $occ_path, $occ_user,$log; @@ -458,7 +458,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl - rename($occ_path."/data/".$user."/files/".$path, rnescp($occ_path."/data/".$user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda + rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli -- cgit v1.2.3 From 7fa39584ac0b7a750f6d17447bf2e8943cada139 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 01:23:00 +0200 Subject: Mayor-Nextcloud script: Tankörmappák userek --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 9f054c98..936ed081 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -114,14 +114,20 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } + function rmnp($str){ //Remove non-printable + return preg_replace('/[\x00-\x1F\x7F-\xA0\xAD]/u', '', $str); + } + function escp($str){ //Escape strings $str = str_replace(array("\\","`", "\'", "\"" ),array("\\\\", "\`", "\\\'", "\\\""), $str); return escapeshellarg($str); } function rnescp($str){ //Escape strings - str_replace(array("\\","`", "\'", "\"", "\ ", ), array("_", "", "", "", "_", ), $str); - return substr(escapeshellarg($str), 1, -1); + $str = rmnp($str); + $str = escapeshellarg($str); + $str = str_replace(array("\\", "`", "'", "\"", "\ ", ), array("", "", "", "", "_", ), $str); + return $str; } function nxt_get_version(){ -- cgit v1.2.3 From 7a243130c8c8690d65ad262cc75b8615dc162cfd Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 03:49:53 +0200 Subject: Mayor-Nextcloud script: Tankörmappák userek --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 64 +++++++++++++++------------- 1 file changed, 34 insertions(+), 30 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 936ed081..6132f6b1 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -15,7 +15,7 @@ $db['nxt_prefix'] = "oc_"; //$db['mayor_port'] = ""; //$db['mayor_user'] = ""; //$db['mayor_pass'] = ""; - + $m2n['min_evfolyam'] = 1; $m2n['isk_rovidnev'] = "rovid"; $m2n['csoport_prefix'] = "(tk) "; @@ -133,7 +133,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function nxt_get_version(){ global $occ_path,$occ_user,$m2n,$log; // sudo -u honlap-felho php /home/honlap-felho/web/occ status --output=json - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" status --output=json'" ; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." status --output=json \"" ; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return explode(".", json_decode(shell_exec($e),true)['version'])[0]; echo "\n\n\n".explode(".", json_decode(shell_exec($e),true)['version'])[0]."\n\n\n"; @@ -218,10 +218,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im global $occ_path,$occ_user,$m2n,$log; // export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c 'php web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' if(strlen($userAccount) > 64 or strlen($fullName) > 64){ - echo "\n******** Hiba: A felahsználónév, vagy a \"teljes név\" hosszabb, mint 64 karakter! ********\n"; + echo "\n******** Hiba: A felahsználónév, vagy a \"teljes név\" hosszabb, mint 64 karakter! NEM hozható létre!! ********\n"; } else { - $e = "export OC_PASS=".$m2n['default_passw']."; su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:add \ - --password-from-env --display-name=\"$fullName\" --group=\"".$m2n['mindenki_csop']."\" $userAccount'" ; + $e = "export OC_PASS=".escp($m2n['default_passw'])."; su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($m2n['mindenki_csop'])." ".escp($userAccount)." \"" ; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -229,15 +228,15 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:info $userAccount --output=json'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $last_login = json_decode(shell_exec($e),true)['last_seen'] ; if($last_login == "1970-01-01T00:00:00+00:00" ){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:delete $userAccount'"; // Ha még soha nem lépett be + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); // akkor törölhető } else { - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:disable $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); // különben csak letiltja } @@ -246,7 +245,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function user_info($userAccount){ // User állpot a Nextcloudban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:info $userAccount --output=json '"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return (array)json_decode(shell_exec($e),true); } @@ -254,14 +253,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function user_dis($userAccount){ // letiltja a felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:disable $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } function user_ena($userAccount){ // engedélyezi global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:enable $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -269,26 +268,26 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function nxt_group_list() { // Csoportok listázása a Nextcloud-ból global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:list --limit=1000000 --output=json'"; //* Jó nagy limittel dolgozzunk + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return (array)json_decode(shell_exec($e),true); } function nxt_user_list() { // Felhasználók listázása a Nextcloud-ból global $occ_path,$occ_user,$log; - // $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:report | grep \"total\" | sed -e \"s/[^0-9]//g\" | tr -d \"[:blank:]\n\" '"; + // $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; // if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } // $num = shell_exec($e); $num = 1000000; //inkább kézi limit! // $num = $num + 100; // Biztos-ami-biztos, a nextcloud rejtett hibái miatt... - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:list --limit $num --output=json'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return (array)json_decode(shell_exec($e),true); } function nxt_user_lastlogin($userAccount){ // legutóbbi belépés lekérdezése global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:info $userAccount --output=json'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } return json_decode(shell_exec($e),true)['last_seen'] ; } @@ -297,33 +296,36 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function user_set($userAccount, array $params){ //beállítja az e-mailt, quota-t, nyelvet a kapott értékekre global $occ_path,$occ_user,$log; if(isset($params['quota'])){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount files quota \"".$params['quota']."\"'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec( $e ); } if(isset($params['email'])){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount settings email \"".$params['email']."\"'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec( $e ); } if(isset($params['lang'])){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" user:setting $userAccount core lang \"".$params['lang']."\"'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } - } + } + + function group_add($groupName){ //Új csoport létrehozása a Nextcloud-ban global $occ_user,$occ_path,$link,$db,$log; + $groupName = rmnp($groupName); if(strlen($groupName) > 64){ //mivel (egyelőre) nics erre 'occ' parancs, ezért közvetlenül kell... echo "\n****** Hiba: a csoportnév nagyobb, mint 64 karakter!! ******\n"; } else { if(nxt_get_version() < 14) { - $q = "INSERT IGNORE INTO ".$db['nxt_dbname'].".".$db['nxt_prefix']."groups (gid) VALUES ('".$groupName."'); "; + $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link, $db['nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; } else { - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:add \"$groupName\" '"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -333,21 +335,22 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function group_del($groupName){ // Csoport törlése a Nextcloud-ból global $occ_user,$occ_path,$db,$link,$log,$m2n; $grp = nxt_group_list(); + $groupName = rmnp($groupName); if(isset($grp[$groupName])){ - if(nxt_get_version() < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... + if(nxt_get_version() < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... foreach($grp[$groupName] as $key => $user){ - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:removeuser \"$groupName\" $user'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$m2n['csoportnev_hossz']+5,1)."\t csoportból.\n"; } } - $q = "DELETE FROM ".$db['nxt_dbname'].".".$db['nxt_prefix']."groups WHERE gid='".$groupName."'; " ; + $q = "DELETE FROM ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link,$db['nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\n NXT -> \t****** csoport törlési hiba. (adatbázis) ******\n"; } else { - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:delete \"$groupName\" '"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -356,14 +359,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function group_user_add($groupName, $userAccount){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:adduser \"$groupName\" $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } function group_user_del($groupName, $userAccount){ // Kitöröl egy felhasználót egy Nextcoud csoportból global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c 'php \"".$occ_path."/occ\" group:removeuser \"$groupName\" $userAccount'"; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -594,7 +597,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )); "; */ //csak a megadott évfeolyamokhoz kötődő tankörök: - $qq = "SELECT tanev FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; + $qq = "SELECT tanev FROM intezmeny_".mysqli_real_escape_string($link, $m2n['isk_rovidnev']).".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$qq."\n"; } if( ($r = mysqli_query($link, $qq)) !== FALSE ){ $ev = mysqli_fetch_array($r, MYSQLI_ASSOC); @@ -723,7 +726,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } //------------------------------------------------------------------------------------------------------------------------------- - if($log['verbose'] > 0) { echo "\n\n######## Mayor-Nextcloud Script ########\n\n\n"; } + if($log['verbose'] > 0) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## ".date("Y-m-d H:i:s")."\n\n"; } + if( file_exists($cfgfile)===TRUE ){ include($cfgfile); @@ -1030,7 +1034,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im @mysqli_close($link2); @mysqli_close($link); - if ($log['verbose'] > 0 ){echo "kész.\n";} //endline + if ($log['verbose'] > 0 ){echo "kész.\n"; echo "(".date("Y-m-d H:i:s").")\n";} //endline } else { echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; -- cgit v1.2.3 From 5b5485ac12a8f992c9fff7c9a17a91ca9ee3ec31 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 04:28:55 +0200 Subject: Mayor-Nextcloud script: Tankörmappák userek --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 1 + "egy\303\251b/nextcloud/mayor-nextcloud.php" | 28 ++++++++++++------------ 2 files changed, 15 insertions(+), 14 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 4206d949..65547de7 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -24,6 +24,7 @@ $m2n['isk_rovidnev'] = "rovid"; $m2n['csoport_prefix'] = "(tk) "; $m2n['default_email'] = "indulo@iskola.hu"; $m2n['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; +$m2n['always_set_diak_quota'] = false; $m2n['default_quota'] = "10GB"; $m2n['diak_quota'] = "2GB"; $m2n['min_osztalyok'] = array(); //pl: array('9.a','11.a'); diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 6132f6b1..3f5ed7da 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -2,6 +2,7 @@ = 7) { //MySQLi (Improved) és php7 kell! @@ -726,7 +722,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } //------------------------------------------------------------------------------------------------------------------------------- - if($log['verbose'] > 0) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## ".date("Y-m-d H:i:s")."\n\n"; } + if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").")\n\n"; } if( file_exists($cfgfile)===TRUE ){ @@ -735,7 +731,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { if($log['verbose'] > 0) { echo "*** M2N Config betöltése: (".pathinfo($cfgfile)['dirname']."/mayor-nextcloud.php fejlécéből.) ***\n\n"; } } - + $log['verbose'] = $m2n['verbose']; + if(isset($m2l['always_set_diak_quota'])){ $m2n['always_set_diak_quota'] = $m2l['always_set_diak_quota']; } + if(isset($m2l['groupdir_users'])){ $m2n['groupdir_users'] = $m2l['groupdir_users']; } + if(isset($m2l['log_verbose'])){ $log['verbose'] = $m2l['log_verbose']; } + if( $m2l['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } if(($link = db_connect($db)) == FALSE){ //csatlakozás echo "\n******** MySQL (general) kapcsolat hiba. ********\n"; @@ -882,7 +882,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 1 ){ echo "-\t\tA felhasználó:".po("\t$curr",$m2n['felhasznalo_hossz'],1)."-\tnyilvántartásba véve.\n";} } //--------------------------------------- QUOTA -----------------------------------// - if($ALWAYS_SET_DIAK_QUOTA === true && $curr_tanarId < 0 && $curr_diakId > 0 ){ //Állítsunk-e erőből (diák) qvótát? + if($m2n['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";} @@ -1034,7 +1034,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im @mysqli_close($link2); @mysqli_close($link); - if ($log['verbose'] > 0 ){echo "kész.\n"; echo "(".date("Y-m-d H:i:s").")\n";} //endline + if ($log['verbose'] > 0 ){echo "\nkész.\n"; echo "(".date("Y-m-d H:i:s").")\n";} //endline } else { echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; -- cgit v1.2.3 From 6597b5549273b137259bd27d06380a419778e8b0 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 04:45:48 +0200 Subject: Mayor-Nextcloud script: Tankörmappák userek --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 2 +- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 65547de7..816fc2b3 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -32,7 +32,7 @@ $m2n['csoportnev_hossz'] = 40; $m2n['felhasznalo_hossz'] = 45; $m2n['default_lang'] = "hu"; $m2n['manage_groupdirs'] = false; //Foglalkozzon-e a script a tankörmappákkal -$m2n['groupdir_users'] = array("naplo_robot","12abcd"); //Ha a tömb üres, akkor az összes tanárral dolgozik. +$m2n['groupdir_users'] = array("naplo_robot","123abcd"); //Ha a tömb üres, akkor az összes tanárral dolgozik. $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; $m2n['mindenki_csop'] = "naplós_felhasználók"; $m2n['mindenki_tanar'] = "naplós_tanárok"; diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 3f5ed7da..0b671b27 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -16,7 +16,7 @@ $db['nxt_prefix'] = "oc_"; //$db['mayor_port'] = ""; //$db['mayor_user'] = ""; //$db['mayor_pass'] = ""; - + $m2n['min_evfolyam'] = 1; $m2n['isk_rovidnev'] = "rovid"; $m2n['csoport_prefix'] = "(tk) "; @@ -56,7 +56,7 @@ for($i = 1; $i<$argc; $i++){ } - + if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Improved) és php7 kell! function db_connect(array $db){ @@ -88,7 +88,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } return $l; } - } + } // bezár: mysqli_close($link); function script_install($link){ -- cgit v1.2.3 From d95c880cfc486c43d18079778558cde72c9e576c Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 04:59:07 +0200 Subject: Mayor-Nextcloud script: Tankörmappák userek --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 0b671b27..9a29c14e 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -735,7 +735,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if(isset($m2l['always_set_diak_quota'])){ $m2n['always_set_diak_quota'] = $m2l['always_set_diak_quota']; } if(isset($m2l['groupdir_users'])){ $m2n['groupdir_users'] = $m2l['groupdir_users']; } if(isset($m2l['log_verbose'])){ $log['verbose'] = $m2l['log_verbose']; } - if( $m2l['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } + if( $m2n['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } if(($link = db_connect($db)) == FALSE){ //csatlakozás echo "\n******** MySQL (general) kapcsolat hiba. ********\n"; -- cgit v1.2.3 From a067c6bc208a4793f12420b344d154e37cc09e04 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 13:58:57 +0200 Subject: Mayor-Nextcloud script: Tankörmappák leírás frissítve. --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 63 +++++++++++++++--------- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 5 +- 2 files changed, 44 insertions(+), 24 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 816fc2b3..35ac1619 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -68,7 +68,7 @@ a rengeteg fájl már számára egy átláthatatlan mappa-tengert fog képezni, Ezen probléma kivédésére született ez, az alábbi megoldás: A tanátoknak a szerver automatikusan létrehoz egy, a távoktatásra -használatos gyűjtőmappát, ebbe a mappába létrehozza a tanár által +használatos gyűjtőmappát, utána ebbe a mappába létrehozza a tanár által tanított (e-napló szerint) tanköröknek megfelelő mappákat automatikusan. @@ -97,16 +97,17 @@ A működési szabályok: tanár dönt a fájlok sorsáról. 6) A tankörmappák gyűjtőmappájában a rendet a szerver tartja, - oda egyéb fájl, nem helyezhető. + oda egyéb fájl, mappa nem helyezhető. Ha mégis kerülne oda egyéb fájl akkor, azt a szerver, átnevezi, és a tanárnak értesítést küld, egészen addig, amíg az "idegen" fájlok tekintetében helyre nem áll a rend. Az átnevezéskor, a szerver, a fájl nevét kiegészíti egy "számsorozat.please-remove" utótaggal. Ezt az utótagot, a fájl, - a gyűjtőmappából történő áthelyezése után már kézzel eltávolíthatjuk. - (Az "Átnevezés" gomb segítségével.) + a gyűjtőmappából történő áthelyezése után már kézzel eltávolíthatjuk, + így visszakapjuk az eredeti fájlunkat, mappáinkat. + (Az "Átnevezés" gomb segítségével. (Jobb-Egér kattintással.)) -7) A szerver, a tankörök egyeztetését, az e-naplóval, minden nap egyszer, +7) A szerver, a tankörök egyeztetését, a naplóval, minden nap egyszer, éjfél és hajnali 5 óra között végzi el. Tehát, az iskolatitkárok által elvégzett módosítások, így a tankör-csoportok összerendezése, a tankörök, valamint a tanárok és diákok jogviszonyában beálló @@ -125,7 +126,8 @@ Ezen, a mappán belül létrejön mondjuk, egy "(tk) 10.b fizika" Ezen mappák mellé létrejön még a "(tk) 10.b fizika_beadás" és a "(tk) 10.b osztályfőnöki_beadás" mappa is. Ezek a mappák a diákok -által visszaküldendő fájlok gyűjtésére szolgálnak. +által visszaküldendő fájlok gyűjtésére szolgálhatnak. + A tanár szabadon használhatja a "(tk) 10.b fizika" és a "(tk) 10.b osztályfőnöki" mappákat, azokat szabadon megoszthatja, @@ -143,9 +145,11 @@ akkor a diák, a kezdőoldalán a "(tk) 10.b fizika" mappát fogja találni, és benne a tanár által hozzáadott fájlokat. -Viszont az "Iskolai Távoktatás" nevű mappában csak! a -"(tk) 10.b fizika" és a "(tk) 10.b osztályfőnöki" mappák lehetnek, -más fájl, vagy mappa, nem! +Viszont az "Iskolai Távoktatás" nevű mappában csak(!!) a +"(tk) 10.b fizika" és a "(tk) 10.b osztályfőnöki" mappák lehetnek, +valamint a beadásra szolgáló társmappák, illetve az INFO.txt. +Más fájl, vagy mappa, nem! + Ha mégis kerülne oda egyéb fájl, vagy mappa, akkor arról először értesíti a tanárt, majd, a nem odaillő fájlokat, vagy mappákat @@ -161,11 +165,12 @@ tankörből, tehát nem tanítja tovább, vagy a tankör ugrik egyet ekkor, a, még ottmaradó "(tk) 10.b fizika" mappát szintén idegennek fogja tekinteni. -Természetesen a tanárnak lehetősége van az idegennek minősített -mappákat, és azok tartalmát a "Iskolai Távoktatás" mappán kívülre, -a saját mappái közé áthelyezni, vagy az idegennek minősített mappák -tartalmát egy másik, már "elfogadott" tankörmappába áttenni. -Majd a kiürült, előző mappát törölnie kell! +Ilyenkor a tanárnak szükséges, kézzel, az idegennek minősített mappákat +kiüríteni, és az egész mappát, vagy csak azok tartalmát +az "Iskolai Távoktatás" mappán kívülre, a saját mappái közé áthelyezni, +vagy az idegennek minősített mappák tartalmát egy másik, az "elfogadott" +tankörmappák valamelyikébe átrakni. +Majd a kiürült, előző mappát kézzel kell törölnie! (Ez utóbbit kell tenni, vagyis a tanárnak, kézzel áthelyezni a fájlokat az egyik tankörmappából, az új tankörmappába, amikor @@ -175,6 +180,7 @@ fájlokat az egyik tankörmappából, az új tankörmappába, amikor + *** Tippek/Megjegyzések: 1) @@ -182,7 +188,7 @@ Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, a tanár által, az egész tankörnek küldött fájlokba véletlenül beleszerkesszen, vagy esetleg töröljön belőlük, akkor vonjuk meg a szerkesztési/létrehozási/törlési jogokat, és ezt ellenőrizzük is -minden megosztáskor, hogy valóban a megfelelő jogok vannak-e bállítva +minden megosztáskor, hogy valóban a megfelelő jogok vannak-e beállítva a megosztott mappán! A szerver létrehoz egy "_beadás", végződésű mappát is, a tankörmappák @@ -191,12 +197,13 @@ csak erre a "_beadás" mappára kell jogot adnunk a diáknak/tankörnek a szerkesztésre/módosításra/törlésre/stb.. + 2) Ha videó fájlokat szeretnénk feltölteni nagy mennyiségben, akkor hozzunk létre az adott tankörhöz tartozó tankörmappában egy "Videók" nevű mappát, és abba helyezzük el a videó fájlokat. A könnyebb megkülönböztethetőség végett nevezzük át a videó fájlokat -dátum szerinti, fájlnévre, vagy sorszámozzuk őket, +dátum szerinti fájlnévre, vagy sorszámozzuk őket, és a sorszámot tüntessük föl a fájl nevében! @@ -204,7 +211,7 @@ dátum szerinti, fájlnévre, vagy sorszámozzuk őket, finomhangolnunk, mert nem jönnek automatikusan létre a feltöltési/szerkesztési/törlési/stb. engedélyek. A megosztás pillanatában, a fogadó félnek, csak az olvasási -jogosultsága jön létre, automatikusan. +jogosultsága jön létre automatikusan. Tehát, minután megosztottuk egy tankörrel, kattintsunk rá a fektetett "V" betűhöz hasonlító ikonra, és a megosztási beállításoknál, @@ -215,6 +222,15 @@ igényünknek megfelelően! (Magát a megosztást is nekünk, kézzel kell megtennünk, mert azt sem állítja be a szerver automatikusan.) +Alapesetben, gyakorlatilag csak annyi a dolgunk, hogy például, +a "(tk) 10.b fizika" mappát megosszuk a "(tk) 10.b fizika" tankörrel. +Ha a beadást is szeretnénk itt összegyűjteni, akkor +a "(tk) 10.b fizika_beadás" mappát is meg kell osszuk +a "(tk) 10.b fizika" tankörrel, ügyelve arra, hogy csak +a "(tk) 10.b fizika_beadás" mappára kerüljön a diákok számára +létrehozási/szerkesztési/törlési jogosultság. + + 4) Ha egy rossz helyen lévő fájl miatt értesítést kapunk, akkor a @@ -364,6 +380,9 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $m2n['manage_groupdirs'] = false; //Ha szerenénk, hogy a script létrehozza a távoktatást segítő tankörmappákat, állítsuk "true"-re! + $m2n['groupdir_users'] = array("123abcd", ); //Ha csak egyes tanároknak szeretnénk bekapcsolni a tankörmappákat, + // ha minden tanárnak, akkor állítsuk üresre a tömböt! / = array();/ + $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; //A távoktatást segítő mappák gyüjtőmappája/gyökérkönyvtára. $m2n['verbose'] = 3 //Log bőbeszédűség (A leg informatívabb(tömörebb), talán a 3-mas fokozat.) @@ -401,13 +420,13 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) További Paraméterek / Kapcsolók: - --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. + --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. - --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, - csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. + --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, + csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. - --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, - illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre. + --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, + illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre. diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 9a29c14e..b4cbdde5 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -722,7 +722,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } //------------------------------------------------------------------------------------------------------------------------------- - if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").")\n\n"; } + if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").")\n\n"; $t_start = microtime(true); } if( file_exists($cfgfile)===TRUE ){ @@ -1034,7 +1034,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im @mysqli_close($link2); @mysqli_close($link); - if ($log['verbose'] > 0 ){echo "\nkész.\n"; echo "(".date("Y-m-d H:i:s").")\n";} //endline + $t_run = (mictrotime(true) - $t_start)/60; + if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run."min.)\nkész.\n";} //endline } else { echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; -- cgit v1.2.3 From cc80572f33600fd6d96ee637a637388090692471 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 14:00:22 +0200 Subject: Mayor-Nextcloud script: . --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index b4cbdde5..19fee700 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -1034,9 +1034,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im @mysqli_close($link2); @mysqli_close($link); - $t_run = (mictrotime(true) - $t_start)/60; + $t_run = (microtime(true) - $t_start)/60; if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run."min.)\nkész.\n";} //endline - + } else { echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; } -- cgit v1.2.3 From 70180abdfc226d1640a0408248fefd1fd1e45c1f Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 14:01:58 +0200 Subject: Mayor-Nextcloud script: . --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 19fee700..9629ab35 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -1034,8 +1034,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im @mysqli_close($link2); @mysqli_close($link); - $t_run = (microtime(true) - $t_start)/60; - if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run."min.)\nkész.\n";} //endline + $t_run = round((microtime(true) - $t_start)/60, 3); + if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run." min.)\nkész.\n";} //endline } else { echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; -- cgit v1.2.3 From 4acc9545afb9a49b16275d58519abcde14ad3637 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 6 Apr 2020 18:11:39 +0200 Subject: Mayor-Nextcloud script: tankörmappák --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 9629ab35..ed009cf2 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -468,7 +468,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli } - $ret[0] = create_dir($user, $path); // Tankörmappa gyökér létrehozása + $ret[0] = create_dir($user, rmnp($path)); // Tankörmappa gyökér létrehozása $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // INFO.txt (Újra)Írása. if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; @@ -485,7 +485,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret = false; if( basename($path,"_beadás") != $m2n['mindenki_tanar'] and basename($path,"_beadás") != $m2n['mindenki_diak'] and basename($path,"_beadás") != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ - $ret = create_dir($user, $path); // Tankörmappa létrehozása + $ret = create_dir($user, rmnp($path)); // Tankörmappa létrehozása if($ret === true){ files_scan($user, $path); } -- cgit v1.2.3 From 1595138571fef9cb0fcfc64897d2822aa7e1efad Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 8 Apr 2020 01:51:52 +0200 Subject: Munin grafikon --- "egy\303\251b/munin/mayor_munin.php" | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/munin/mayor_munin.php" "b/egy\303\251b/munin/mayor_munin.php" index 92fc264d..ed59b5c2 100755 --- "a/egy\303\251b/munin/mayor_munin.php" +++ "b/egy\303\251b/munin/mayor_munin.php" @@ -22,35 +22,35 @@ if (isset($argv[1]) and $argv[1] == "config"){ $cf .= "mayor_ip_sum.label Összes\n"; $cf .= "mayor_ip_sum.draw AREA\n"; - $cf .= "mayor_ip_sum.info Összes\n"; + $cf .= "mayor_ip_sum.info Összes bejelentkezett felhasználó\n"; $cf .= "mayor_ip_k.label Külső IP\n"; $cf .= "mayor_ip_k.draw AREA\n"; - $cf .= "mayor_ip_k.info Külső IP\n"; + $cf .= "mayor_ip_k.info Külső IP címről\n"; $cf .= "mayor_ip_b.label Belső IP\n"; $cf .= "mayor_ip_b.draw AREA\n"; - $cf .= "mayor_ip_b.info Belső IP\n"; + $cf .= "mayor_ip_b.info Belső IP címről\n"; $cf .= "mayor_p_pri.label Policy pri.\n"; $cf .= "mayor_p_pri.draw LINE1.2\n"; - $cf .= "mayor_p_pri.info Policy pri.\n"; + $cf .= "mayor_p_pri.info Policy privát\n"; $cf .= "mayor_p_par.label Policy par.\n"; $cf .= "mayor_p_par.draw LINE1.2\n"; - $cf .= "mayor_p_par.info Policy par.\n"; + $cf .= "mayor_p_par.info Policy parent\n"; $cf .= "mayor_a_t1.label Aktív: ".$set['t_active']."perc\n"; $cf .= "mayor_a_t1.draw AREA\n"; - $cf .= "mayor_a_t1.info Aktív: ".$set['t_active']."perc\n"; + $cf .= "mayor_a_t1.info Aktív felhasználók az elmúlt ".$set['t_active']."percben\n"; $cf .= "mayor_a_t2.label Aktív: ".($set['t_active']*2)."perc\n"; $cf .= "mayor_a_t2.draw LINE1\n"; - $cf .= "mayor_a_t2.info Aktív: ".($set['t_active']*2)."perc\n"; + $cf .= "mayor_a_t2.info Aktív felhasználók az elmúlt ".($set['t_active']*2)."percben\n"; $cf .= "mayor_a_tt.label Aktív: tétlen\n"; $cf .= "mayor_a_tt.draw LINE1\n"; - $cf .= "mayor_a_tt.info Aktív: tétlen\n"; + $cf .= "mayor_a_tt.info Tétlen, de bejelentkezett felhasználók\n"; echo iconv("UTF-8", "ISO-8859-2", $cf), PHP_EOL; -- cgit v1.2.3 From 153f27b203fedbba474af4373e37960a9a1740eb Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 8 Apr 2020 15:44:09 +0200 Subject: Mayor-Munin: precízebb számolás --- "egy\303\251b/munin/mayor_munin.php" | 120 ++++++++++++++++++--------- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 2 +- 2 files changed, 80 insertions(+), 42 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/munin/mayor_munin.php" "b/egy\303\251b/munin/mayor_munin.php" index ed59b5c2..f0021a9a 100755 --- "a/egy\303\251b/munin/mayor_munin.php" +++ "b/egy\303\251b/munin/mayor_munin.php" @@ -11,7 +11,7 @@ $set['t_active'] = "10"; //pl: 10 perc (Az elmúlt x percben aktívak voltak) $ret = array(); -if (isset($argv[1]) and $argv[1] == "config"){ +if (isset($argv[1]) and $argv[1] == "config"){ $cf = "host_name ".$set['naplo_host']."\n"; $cf .= "graph_title Napló rendszerterhelés (Mayor)\n"; @@ -50,7 +50,15 @@ if (isset($argv[1]) and $argv[1] == "config"){ $cf .= "mayor_a_tt.label Aktív: tétlen\n"; $cf .= "mayor_a_tt.draw LINE1\n"; - $cf .= "mayor_a_tt.info Tétlen, de bejelentkezett felhasználók\n"; + $cf .= "mayor_a_tt.info Tétlen, de bejelentkezett felhasználók\n"; + + $cf .= "mayor_villam.label Villámgyors\n"; + $cf .= "mayor_villam.draw LINE1\n"; + $cf .= "mayor_villam.info Azok a villámgyors felhasználók, akik kevesebb mint 5 perc alatt, be, és ki is jelentkeztenk.\n"; + + $cf .= "mayor_s_len.label Sikertelen\n"; + $cf .= "mayor_s_len.draw LINE1\n"; + $cf .= "mayor_s_len.info Sikertelen bejelentkezések\n"; echo iconv("UTF-8", "ISO-8859-2", $cf), PHP_EOL; @@ -64,58 +72,88 @@ if (isset($argv[1]) and $argv[1] == "config"){ $ret['p_par'] = 0; $ret['a_t1'] = 0; $ret['a_t2'] = 0; - $ret['a_tt'] = 0; + $ret['a_tt'] = 0; + $ret['villam'] = 0; + $ret['s_len'] = 0; $l = mysqli_connect($set['db_host'], $set['db_user'], $set['db_pass'], $set['db_db']); if(!$l){ -// echo "hiba\n "; - $ret['ip_b'] = "U"; - $ret['ip_k'] = "U"; - $ret['p_pri'] = "U"; - $ret['p_par'] = "U"; - $ret['a_t1'] = "U"; - $ret['a_t2'] = "U"; - $ret['a_tt'] = "U"; - + // echo "hiba\n "; + $ret['ip_b'] = "U"; + $ret['ip_k'] = "U"; + $ret['p_pri'] = "U"; + $ret['p_par'] = "U"; + $ret['a_t1'] = "U"; + $ret['a_t2'] = "U"; + $ret['a_tt'] = "U"; + $ret['villam'] = "U"; + $ret['s_len'] = "U"; } else{ - mysqli_set_charset($l, "utf8"); - $r = mysqli_query($l," SELECT session.userAccount,session.policy, UNIX_TIMESTAMP(session.activity) AS activity, loginLog.ip - FROM mayor_login.session, mayor_login.loginLog - WHERE session.dt = loginLog.dt AND session.userAccount=loginLog.userAccount AND loginLog.flag=0; "); + mysqli_set_charset($l, "utf8"); + $r = mysqli_query($l,"SELECT session.userAccount,session.policy, UNIX_TIMESTAMP(session.activity) AS activity, loginLog.ip + FROM mayor_login.session, mayor_login.loginLog + WHERE UNIX_TIMESTAMP(loginLog.dt) >= (UNIX_TIMESTAMP()-36000) + AND ( ABS(UNIX_TIMESTAMP(session.dt) - UNIX_TIMESTAMP(loginLog.dt))<2 + AND session.userAccount=loginLog.userAccount ) AND loginLog.flag=0 + GROUP BY session.sessionId ORDER BY activity ;" + ); + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + if($row['policy'] == "private") { + $ret['p_pri'] ++; + } + if($row['policy'] == "parent") { + $ret['p_par'] ++; + } - while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { - if($row['policy'] == "private") { - $ret['p_pri'] ++; - } - if($row['policy'] == "parent") { - $ret['p_par'] ++; - } - - if( $row['activity'] >= time()-$set['t_active']*60){ //Az elmúlt x percben aktívak voltak - $ret['a_t1']++; - } else if( $row['activity'] >= time()-$set['t_active']*2*60){ //Az elmúlt 2*x percben aktívak voltak - $ret['a_t2']++; - } else { - $ret['a_tt']++; - } - - if( preg_match('/^((10\.)|(192\.168\.)|(172\.16\.)|(fd..\:)).*/', $row['ip']) ){ - $ret['ip_b']++ ; - } else{ - $ret['ip_k']++ ; + if( $row['activity'] >= time()-$set['t_active']*60){ //Az elmúlt x percben aktívak voltak + $ret['a_t1']++; + } else if( $row['activity'] >= time()-$set['t_active']*2*60){ //Az elmúlt 2*x percben aktívak voltak + $ret['a_t2']++; + } else { + $ret['a_tt']++; + } + + if( preg_match('/^((10\.)|(192\.168\.)|(172\.16\.)|(fd..\:)).*/', $row['ip']) ){ + $ret['ip_b']++ ; + } else{ + $ret['ip_k']++ ; + } + + $ret['ip_sum']++; //Mindenki } + @mysqli_free_result($r); + + $r = mysqli_query($l,"SELECT COUNT(*) AS cnt FROM loginLog + WHERE UNIX_TIMESTAMP(dt) >= (UNIX_TIMESTAMP() - 300) + AND userAccount NOT IN (SELECT userAccount FROM session) + AND flag=0 + ORDER BY dt desc ;" + ); + $ret['villam'] = mysqli_fetch_array($r, MYSQLI_ASSOC)['cnt']; + $ret['ip_sum'] += $ret['villam']; + @mysqli_free_result($r); + + + $r = mysqli_query($l,"SELECT COUNT(*) AS cnt FROM loginLog + WHERE UNIX_TIMESTAMP(dt) >= (UNIX_TIMESTAMP() - 300) + AND userAccount NOT IN (SELECT userAccount FROM session) + AND flag!=0 + ORDER BY dt desc ;" + ); + $ret['s_len'] = mysqli_fetch_array($r, MYSQLI_ASSOC)['cnt']; + @mysqli_free_result($r); } - } - @mysqli_free_result($r); @mysqli_close($l); - echo "mayor_ip_sum.value ".($ret['ip_b']+$ret['ip_k'])."\n". "mayor_ip_k.value ".$ret['ip_k']."\n". "mayor_ip_b.value ".$ret['ip_b']."\n" ; + echo "mayor_ip_sum.value ".($ret['ip_sum'])."\n". "mayor_ip_k.value ".$ret['ip_k']."\n". "mayor_ip_b.value ".$ret['ip_b']."\n" ; echo "mayor_p_pri.value ".$ret['p_pri']."\n". "mayor_p_par.value ".$ret['p_par']."\n"; - echo "mayor_a_t1.value ".$ret['a_t1']."\n". "mayor_a_t2.value ".$ret['a_t2']."\n". "mayor_a_tt.value ".$ret['a_tt']."\n" ; + echo "mayor_a_t1.value ".$ret['a_t1']."\n". "mayor_a_t2.value ".$ret['a_t2']."\n". "mayor_a_tt.value ".$ret['a_tt']."\n" ; + echo "mayor_villam.value ".$ret['villam']."\n". "mayor_s_len.value ".$ret['s_len']."\n"; - } else{ + } else{ // függvény/PHP hiány külön kezelve echo "mayor_ip_sum.value U\n". "mayor_ip_b.value U\n". "mayor_ip_k.value U\n" ; echo "mayor_p_pri.value U\n". "mayor_p_par.value U\n"; echo "mayor_a_t1.value U\n". "mayor_a_t2.value U\n". "mayor_a_tt.value U\n"; + echo "mayor_villam.value U\n". "mayor_s_len.value U\n"; } } diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index ed009cf2..a613c2ac 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -722,7 +722,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } //------------------------------------------------------------------------------------------------------------------------------- - if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").")\n\n"; $t_start = microtime(true); } + if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n\n"; $t_start = microtime(true); } if( file_exists($cfgfile)===TRUE ){ -- cgit v1.2.3 From b5c46b6ef04a9c29de44965d76877603df094538 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 8 Apr 2020 16:00:52 +0200 Subject: Mayor-Munin: graph --- "egy\303\251b/munin/mayor_munin.php" | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/munin/mayor_munin.php" "b/egy\303\251b/munin/mayor_munin.php" index f0021a9a..b533c0d0 100755 --- "a/egy\303\251b/munin/mayor_munin.php" +++ "b/egy\303\251b/munin/mayor_munin.php" @@ -1,19 +1,29 @@ #!/usr/bin/env php = 7 ) { //MySQLi (Improved) és php7 kell!!! - + $ret['ip_sum'] = 0; $ret['ip_b'] = 0; $ret['ip_k'] = 0; $ret['p_pri'] = 0; @@ -78,6 +88,7 @@ if (isset($argv[1]) and $argv[1] == "config"){ $l = mysqli_connect($set['db_host'], $set['db_user'], $set['db_pass'], $set['db_db']); if(!$l){ // echo "hiba\n "; + $ret['ip_sum'] = "U"; $ret['ip_b'] = "U"; $ret['ip_k'] = "U"; $ret['p_pri'] = "U"; -- cgit v1.2.3 From 6e512fa08f6dd2e7dd3c48ed484f5cc38afc5913 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 8 Apr 2020 17:51:47 +0200 Subject: Munin grafikon --- "egy\303\251b/munin/README" | 98 ------------------------------------ "egy\303\251b/munin/README.md" | 91 +++++++++++++++++++++++++++++++++ "egy\303\251b/munin/mayor_munin.php" | 13 ++--- 3 files changed, 96 insertions(+), 106 deletions(-) delete mode 100644 "egy\303\251b/munin/README" create mode 100644 "egy\303\251b/munin/README.md" (limited to 'egyéb') diff --git "a/egy\303\251b/munin/README" "b/egy\303\251b/munin/README" deleted file mode 100644 index a0ad5eb8..00000000 --- "a/egy\303\251b/munin/README" +++ /dev/null @@ -1,98 +0,0 @@ - -Munin monitorozó plugin a mayorhoz - -Grafikonokat készít a "munin" program segítségével a Mayor pillanatnyi állapotáról. -Egyelőre csak debian 9+ rendszeren tesztelt, de pár apró módosítással életrekelthető más rendszereken is. - -Rögzíti az: --- Egyidejűleg (pillanatnyi) bejelentkezett felhasználók számát. --- IP-cím alapján a lokális (192.168.*.*, 10.*.*.*, 172.16.*.*, fd**::/8) és külön a külső tartományokat. --- Policy alapján a 'private' és/vagy 'parent' -ben belépett felhasználókat. --- Aktivitás alapján az Xperc (pl:10perc) ideje, a 2*Xperc ideje aktív felhasználókat és a tétleneket. - - -Beállítása a következő: (debian) - -1.lépés: >>> apt-get install munin -2.lépés: a "/etc/munin/munin.conf" fájl szerkesztése a következő módon: - ---(I.) először keressük meg a következő részt: - # a simple host tree - [localhost.localdomain] - address 127.0.0.1 - use_node_name yes - --- módosítsuk a "localhost.localdomain"-t a napló-szerver gépnevének megfelelően: - (itt az FQDN (teljes elérési út szükséges)) - [gépnév.iskolaneve.hu] - address 127.0.0.1 - use_node_name yes - ---(II.) ugyanitt, adjuk hozzá a következő sorokat: - (és írjuk át a "mayor.iskolaneve.hu" címet a napló címének megfelelően) - [mayor.iskolaneve.hu] - address 127.0.0.1 - use_node_name no - - ---(III.) ezután módosítanunk kell a "mayor_munin.php" scriptben a "$set['naplo_host'] = "mayor.iskolaneve.hu";"-t - (első sorok egyike) a saját naplónk címének megfelelően. - Ez egy fontos beállítás, mert ezen keresztül ismeri fel a munin rendszer a mi - monitorozó scriptünket. - - ---(IV.) utána másoljuk a "mayor_munin.php"-t az: - az /usr/share/munin/plugins/ mappába vagy - az /etc/munin/ könyvtárba vagy - bárhova, ahonnan a munin eléri. - - FONTOS!! - A "mayor_munin.php"-nak állítsuk be a "root" tulajdonost és 700-as jogokat! - (nehogy valami kiolvassa a jelszót) - - ---(V.) ezután el kell helyezni egy simlink-et a /etc/munin/plugins/ könyvtárba, ami a bemásolt fájlra mutat. - pl: ln -s /usr/share/munin/plugins/mayor_munin.php /etc/munin/plugins/munin - - ---(VI.) végül be kell állítanunk egy felhasználót, a mysql-ben, amivel olvasni lehet a mayor_login.session és a mayor_login.loginLog táblákat - (például:) - mysql> GRANT SELECT ON mayor_login.loginLog TO 'mayor-monitor'@'localhost' IDENTIFIED BY 'erőős-jelszóó!'; - mysql> GRANT SELECT ON mayor_login.session TO 'mayor-monitor'@'localhost' IDENTIFIED BY 'erőős-jelszóó!'; - -- Lehetőség van mysql/unix_socket authentikációra is, ez nagyban növeli biztonságot, mert nem alkalmaz jelszót, - így szinte lehetetlen próbálgatással feltörni. - Fontos, hogy a kiválasztott felhasználónak/felhasználónévnek valósnak kell lenni, és léteznie kell a rendszerben. - Egyszerűség kedvéért használhatjuk a "root" felhasználót, ez eredetileg is unix_socket-tel authentikál a mysql-ben, - (hacsak a mysql telepítésénél meg nem változtattuk) - - vagy a "munin" nevű felhasználót, ezt adjuk hozzá a mysql-hez: - - mysql> GRANT SELECT ON mayor_login.session TO 'munin'@'localhost' IDENTIFIED via unix_socket; - mysql> GRANT SELECT ON mayor_login.loginLog TO 'munin'@'localhost' IDENTIFIED via unix_socket; - - majd rá kell venni a munin-t, hogy a "munin" felhasználónévvel futtassa, ezt a "/etc/munin/plugin-conf.d/munin-node" - fájlba kell beírni, a következő sorok hozzáadásával: - - [mayor_munin] - user munin - - Fontos: ekkor a mayor_munin.php tulajdonosát a "munin"-ra kell állítani! - - - ---(VII.) Finomhangolás: - Végül írjuk be a "mayor_munin.php" elejére, a "$set['___']" tömböt módosítva, a maysql adatokat, - illetve itt tudjuk beállítani az aktivitáshoz számolt időt percben, és a napló webcímét is. - - ---(VIII.) Befejezésképpen pedig indítsuk újra a munin-t az alábbi parancsokkal: - >>> /etc/init.d/munin-node restart - >>> /etc/init.d/munin restart - - ---(++) a beálítás végeztével a következő paranccsal ellenőrizhetjük, hogy mindent jól csináltunk-e: - >>> munin-run mayor_munin - - Ekkor egy listát kapunk, ahol a változók nevei ("mayor_xxxx_xx.values") mellett számértékeket látunk, - ha semmi, vagy a számok helyett egy "U" betű jelenik meg, akkor még valamit finomhangolni kell. diff --git "a/egy\303\251b/munin/README.md" "b/egy\303\251b/munin/README.md" new file mode 100644 index 00000000..c8eb91e4 --- /dev/null +++ "b/egy\303\251b/munin/README.md" @@ -0,0 +1,91 @@ + +# Munin monitorozó plugin a mayorhoz + +Grafikonokat készít a "munin" program segítségével a Mayor pillanatnyi állapotáról. +Egyelőre csak debian 9+ rendszeren tesztelt, de pár apró módosításokkal életre kelthető más/régebbi rendszereken is. + +Rögzíti az: + +* Egyidejűleg (pillanatnyi) bejelentkezett felhasználók számát. +* IP-cím alapján a lokális (192.168.*.*, 10.*.*.*, 172.16.*.*, fd**::/8) és külön a külső tartományokat. +* Policy alapján a 'private' és/vagy 'parent' -ben belépett felhasználókat. +* Aktivitás alapján az Xperc (pl:10perc) ideje, a 2*Xperc ideje aktív felhasználókat és a tétleneket. + + +## Beállítása: (debian) + +1. lépés: Telepítsük fel a Munin monitorozó rendszert! + >>> apt-get install munin +2. lépés: a **/etc/munin/munin.conf** fájl szerkesztése a következő módon: + +* Adjuk hozzá az alábbi sorokat, a napló-szerver gépnevének megfelelően: + (itt az FQDN (teljes elérési út szükséges)) és állítsuk "no"-ra az "use_node_name"-t. + + [gépnév.iskolaneve.hu] + address 127.0.0.1 + use_node_name no + +3. Ezután módoítanunk kell a **/etc/munin/plugin-conf.d/munin-node** fájlt, + +* (a.) Adjuk hozzá a következőket: + + [mayor_munin] + user munin + timeout 60 + env.host naplo.iskolaneve.hu + env.db_user mayor-munin + env.db_pass <;erős_jelszó> + env.db_host localhost + env.t_active 10 + + [mayor_munin] + user >>A felhasználó, amelyik neve alatt a munin futtatja a scriptet<< + timeout >>A munin ennyi ideig várjon a script lefutására<< + env.host >>A napló web-címe<< + env.db_user >>Az adatbázishoz használt felhasználónév<< + env.db_pass >>Az adatbázishoz használt jelszó<< + env.db_host >>Ahol a mayor mysql szervere elérhető<< + env.t_active >>Mennyi percet számoljon a tétlenségnek<< + +* (b.) Vagy lehetőségünk van mindezeket a script fejlécében is beáálítani, + akkor nem szükséges a **/etc/munin/plugin-conf.d/munin-node** fájl szerkesztése. + +* (c.) Debian 10-től lehetőség van a mysql-nél úgynevezett **unix-shocket** hitelesítésre is. + Ez alapból a **root**-nak van bekapcsolva, előnye, hogy sehol sem kell kiolvasható jelszót + használni, a mysql egyszerűen az oprendszerhez hitelesíti a bejelentkező felhasználót. + (Értelemszerűen ez csak "locahost"-ra működik.) + + * Az unix_shocket használtaához állítsuk be az alábbiakat: + (Ekkor a root lesz a mysql felhasználó, számára nem kell külön engedélyezni a mayor_login + táblából való olvasást, viszont ekkor a munin-nak is root-ként kell futtatnia a scriptet.) + + [mayor_munin] + user root + env.host naplo.iskolaneve.hu + env.db_user root + #env.db_pass + env.db_host localhost + env.t_active 10 + +4. Utána másoljuk a **mayor_munin.php** az: + az **/usr/share/munin/plugins/** mappába vagy + az **/etc/munin/** könyvtárba vagy + bárhova, ahonnan a munin eléri. + + * FONTOS!! + A "mayor_munin.php"-nak állítsuk be a "root" tulajdonost és 700-as jogokat! + (A Munin-nak futtatási jog kell, illetve nehogy valami kiolvassa a jelszót) + + +5. Végül el kell helyezni egy simlink-et a **/etc/munin plugins** + könyvtárba, ami a bemásolt fájlra mutat. + >>> ln -s /usr/share/munin/plugins/mayor_munin.php /etc/munin/plugins/munin/mayor_munin + + +6. Befejezésképpen pedig indítsuk újra a munin-t az alábbi parancsokkal: + >>> /etc/init.d/munin-node restart + >>> /etc/init.d/munin restart + +7. A beálítás végeztével a következő paranccsal ellenőrizhetjük, hogy mindent jól csináltunk-e: + >>> munin-run mayor_munin + diff --git "a/egy\303\251b/munin/mayor_munin.php" "b/egy\303\251b/munin/mayor_munin.php" index b533c0d0..dfb92efc 100755 --- "a/egy\303\251b/munin/mayor_munin.php" +++ "b/egy\303\251b/munin/mayor_munin.php" @@ -3,13 +3,10 @@ $ret = array(); $set['host'] = getenv('host'); -//$set['occ_user'] = getenv('occ_user'); //If "serverinfo" would be a part of occ commands... -//$set['occ_path'] = getenv('occ_path'); -$set['db_user'] = getenv('db_user'); -$set['db_pass'] = getenv('db_pass'); -$set['db_db'] = getenv('db_db'); -$set['db_host'] = getenv('db_host'); -$set['db_prefix'] = getenv('db_prefix'); +$set['db_user'] = strval(getenv('db_user')); +$set['db_pass'] = strval(getenv('db_pass')); +$set['db_db'] = "mayor_login"; +$set['db_host'] = strval(getenv('db_host')); $set['t_active'] = intval(getenv('t_active')); /* $set['db_user'] = "mayor-munin"; @@ -32,7 +29,7 @@ if (isset($argv[1]) and $argv[1] == "config"){ $cf .= "mayor_ip_sum.label Összes\n"; $cf .= "mayor_ip_sum.draw AREA\n"; - $cf .= "mayor_ip_sum.info Összes bejelentkezett felhasználó\n"; + $cf .= "mayor_ip_sum.info Összes bejelentkezett felhasználó +(a villámgyorsak)\n"; $cf .= "mayor_ip_k.label Külső IP\n"; $cf .= "mayor_ip_k.draw AREA\n"; -- cgit v1.2.3 From eb2b56065ce7ee755a8869c368318c924e00bd34 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Tue, 1 Sep 2020 19:39:43 +0200 Subject: mayor-nextcloud: csoportok kezelésének kihagyása --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 165 +++++++++++++++------------ 1 file changed, 89 insertions(+), 76 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index a613c2ac..8f4be971 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -31,6 +31,7 @@ $m2n['felhasznalo_hossz'] = 45; $m2n['megfigyelo_user'] = "naplo_robot"; //ha nem kell, akkor állítsd üres stringre. $m2n['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') $m2n['default_lang'] = "hu"; +$m2n['manage_groups'] = false; $m2n['manage_groupdirs'] = false; // Foglalkozzon-e a script a tankörmappákkal $m2n['groupdir_prefix'] = "tavsuli"; $m2n['groupdir_users'] = array("naplo_robot","123abcd"); //Ha mindenkire -> =array(); //(legyen üres) @@ -44,15 +45,22 @@ $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; $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); } // Le kell cserélni az ékezetes betűket, mert a Vezetéknév.Keresztnév nem POSIX kompatibilis. $search = array( 'á', 'ä', 'é', 'í', 'ó', 'ö', 'ő', 'ú', 'ü', 'ű', 'Á', 'Ä', 'É', 'Í', 'Ó', 'Ö', 'Ő', 'Ú', 'Ü', 'Ű'); // egyelőre csak a magyar betűket ismeri $replace = array( 'aa', 'ae', 'ee', 'ii', 'oo', 'oe', 'ooe', 'uu', 'ue', 'uue', 'Aa', 'Aae', 'Ee', 'Ii', 'Oo', 'Oe', 'Ooe', 'Uu', 'Ue', 'Uue'); -for($i = 1; $i<$argc; $i++){ +for($i = 1; $i<$argc; $i++){ //Ha van külön config megadva, akkor először azt töltjük be. + if($argv[$i] == "--config" ){$cfgfile = strval($argv[$i+1]); $i++;} +} +if( file_exists($cfgfile)===TRUE ){ include($cfgfile); } //Config betöltés + + +for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$m2l['log_verbose'] = intval($argv[$i+1]); $i++;} if($argv[$i] == "--set-diak-quota" ){ $m2l['always_set_diak_quota'] = true; } if($argv[$i] == "--create-groupdir"){ $m2l['groupdir_users'] = array($argv[$i+1]); $i++;} + if($argv[$i] == "--manage_groupdirs" and is_string($argv[$i+1])){$m2l['manage_groupdirs'] = boolval($argv[$i+1]); $i++;} + if($argv[$i] == "--manage_groups" and is_string($argv[$i+1])){$m2l['manage_groups'] = boolval($argv[$i+1]); $i++;} } @@ -774,32 +782,34 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_diak'] ))); $nxt_csop = nxt_group_list(); $elozo_tcsop = ""; - foreach($tankorok as $key => $val){ //Végignézi a tankörök szerint - foreach($nxt_csop as $key2 => $val2){ // - if($key2 == $val['tankorNev']){ //Már van ilyen (tankör)nevű csoport - if ($log['verbose'] > 3 ){ echo " -\t Csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\tok.\n";} - $elozo_tcsop = $val['tankorNev']; - break; + if($m2n['manage_groups'] === true){ + foreach($tankorok as $key => $val){ //Végignézi a tankörök szerint + foreach($nxt_csop as $key2 => $val2){ // + if($key2 == $val['tankorNev']){ //Már van ilyen (tankör)nevű csoport + if ($log['verbose'] > 3 ){ echo " -\t Csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\tok.\n";} + $elozo_tcsop = $val['tankorNev']; + break; + } + } + unset($nxt_csop[$val['tankorNev']]); //Megvizsgálva, többször már nem kell dönteni róla. + if( $val['tankorNev'] == $elozo_tcsop and $key2 != $val['tankorNev'] ){ //Duplikált tankör(név) a Mayorban + if($log['verbose'] > 2 ){ echo "* -\t Dupla tankör:".po("\t".$val['tankorNev'], $m2n['csoportnev_hossz'],1)."-\tmayor.\n";} + } + else if($key2 != $val['tankorNev']){ //Ha nincs ilyen (tankör)nevű csoport + group_add($val['tankorNev']); //Akkor létrehozza + if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\thozzáadva.\n";} } } - unset($nxt_csop[$val['tankorNev']]); //Megvizsgálva, többször már nem kell dönteni róla. - if( $val['tankorNev'] == $elozo_tcsop and $key2 != $val['tankorNev'] ){ //Duplikált tankör(név) a Mayorban - if($log['verbose'] > 2 ){ echo "* -\t Dupla tankör:".po("\t".$val['tankorNev'], $m2n['csoportnev_hossz'],1)."-\tmayor.\n";} - } - else if($key2 != $val['tankorNev']){ //Ha nincs ilyen (tankör)nevű csoport - group_add($val['tankorNev']); //Akkor létrehozza - if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\thozzáadva.\n";} - } + // A megszűnt tanköröket-csoportokat kitörli + foreach($nxt_csop as $key => $val){ + if(substr($key, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. + group_del($key); //elvégzi a törlést + if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t eltávolítva.\n";} + } else { + if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t békén hagyva.\n";} + } // Figyelem! A csoport prefix-szel: "(tk) " kezdődő csoportokat magáénak tekinti, automatikusan töröli! + } // Akkor is, ha az külön, kézzel lett létrehozva. } -// A megszűnt tanköröket-csoportokat kitörli - foreach($nxt_csop as $key => $val){ - if(substr($key, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. - group_del($key); //elvégzi a törlést - if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t eltávolítva.\n";} - } else { - if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t békén hagyva.\n";} - } // Figyelem! A csoport prefix-szel: "(tk) " kezdődő csoportokat magáénak tekinti, automatikusan töröli! - } // Akkor is, ha az külön, kézzel lett létrehozva. @@ -823,8 +833,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $mayor_user = array_merge($mayor_tanar, $mayor_diak); //Tanár, és diák lista együtt if(isset($m2n['megfigyelo_user']) && $m2n['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére $mayor_user = array_merge($mayor_user, array( - array( 'userAccount' => $m2n['megfigyelo_user'], //A virtuális "naplo_admin" legyen egyben tanár is - 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin", + array( 'userAccount' => $m2n['megfigyelo_user'], //A megfigyelő user legyen egyben virtuális tanár is + 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin Megfigyelő", 'email' => $m2n['default_email'], 'tankorNev' => $m2n['mindenki_tanar'], ))); @@ -835,7 +845,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im 'tanarId' => 1, 'diakId' => 0, 'tankorId' => $val['tankorId'], - 'fullName' => "Napló Admin", + 'fullName' => "Napló Admin Megfigyelő", 'tankorNev' => $val['tankorNev'], ))); //if($val['tankorNev'] == "(tk) 10.b kémia" ){ break; } @@ -882,48 +892,50 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 1 ){ echo "-\t\tA felhasználó:".po("\t$curr",$m2n['felhasznalo_hossz'],1)."-\tnyilvántartásba véve.\n";} } //--------------------------------------- QUOTA -----------------------------------// - if($m2n['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 + if($m2n['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";} } - //------------------------- Tankörmappa györkér + info.txt ------------------------// - $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); - if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix'],$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} - if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} - - //------------------------------------------ Tankörök egyeztetése -------------------------------------------// - 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 - 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 - } - //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} - - //------------------------------------- Tankör (Csoportból) törlés -------------------------// - } 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... + if($m2n['manage_groups'] === true){ //Csak, ha a acsoportokhoz is nyúlunk + //------------------------- Tankörmappa györkér + info.txt ------------------------// + $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); + if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix'],$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} + if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + + //------------------------------------------ Tankörök egyeztetése -------------------------------------------// + 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 + 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 + } + + //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + + //------------------------------------- Tankör (Csoportból) törlés -------------------------// + } 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... + } } } + + //------------------------------------- Tankörmappa törlés + NXT-rescan ----------------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár + $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], $tankorei); + if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}} + if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}} + if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} } - //------------------------------------- Tankörmappa törlés + NXT-rescan ----------------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - - $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], $tankorei); - if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}} - if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}} - if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} - if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} - break; } } @@ -937,20 +949,21 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); if ($ret[0] === true && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/",$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} if ($ret[1] > 0 && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} - - 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); - if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} - } - } - $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); - if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + if($m2n['manage_groups'] === true){ + 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); + if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + } + } + $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + } 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 -- cgit v1.2.3 From 3d20c05bc2769d49086490192510958b36e2b537 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Tue, 1 Sep 2020 22:14:01 +0200 Subject: Új script kapcsolók: --manage-groups, --manage-groupdirs --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 1 + "egy\303\251b/nextcloud/mayor-nextcloud.php" | 66 +++++++++++++++++------- 2 files changed, 47 insertions(+), 20 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 35ac1619..f8173903 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -31,6 +31,7 @@ $m2n['min_osztalyok'] = array(); //pl: array('9.a','11.a'); $m2n['csoportnev_hossz'] = 40; $m2n['felhasznalo_hossz'] = 45; $m2n['default_lang'] = "hu"; +$m2n['manage_groups'] = false; $m2n['manage_groupdirs'] = false; //Foglalkozzon-e a script a tankörmappákkal $m2n['groupdir_users'] = array("naplo_robot","123abcd"); //Ha a tömb üres, akkor az összes tanárral dolgozik. $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 8f4be971..eb94d871 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -2,7 +2,6 @@ : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, \n"; + echo " illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre.\n"; + echo " --manage-groups <1/0> : Ha 1: A felhasználókat csoportokba rendezi a MaYor tankörök szerint, ha 0, nem foglalkozik vele.\n"; + echo " --manage-groupdirs <1/0> : Ha 1: tankörmappákat hoz létre a tankör-csoportokhoz, ha 0, nem foglalkozik vele. (kell hozzá a --manage-groups is!)\n"; + echo "\n\n"; +} if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Improved) és php7 kell! @@ -704,7 +723,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im SELECT szemeszter FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )) - ORDER BY userAccount ; + ORDER BY userAccount; "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ @@ -728,21 +747,27 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im echo "\n\n******** Legalább Nextcloud 13-mas verzió szükséges! ********\n\n"; die(); } + if($printhelp === true){ + print_help(); + die(); + } + if ($m2n['manage_groupdirs'] === true && $m2n['manage_groups'] === false){ + print_help(); + die(); + } //------------------------------------------------------------------------------------------------------------------------------- - if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n\n"; $t_start = microtime(true); } - + if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n\n"; $t_start = microtime(true); } + if(true) { echo "*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } - if( file_exists($cfgfile)===TRUE ){ - include($cfgfile); - if($log['verbose'] > 0) { echo "*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } - } else { - if($log['verbose'] > 0) { echo "*** M2N Config betöltése: (".pathinfo($cfgfile)['dirname']."/mayor-nextcloud.php fejlécéből.) ***\n\n"; } + if($printconfig === true){ + echo "\n Betöltött Konfig:\n"; + $m2l = $m2n; + $m2l['infotxt_szöveg'] = "<-- TEXT -->"; //Túl hosszú lenne kiprintelni + var_export($m2l); + echo "\n"; } $log['verbose'] = $m2n['verbose']; - if(isset($m2l['always_set_diak_quota'])){ $m2n['always_set_diak_quota'] = $m2l['always_set_diak_quota']; } - if(isset($m2l['groupdir_users'])){ $m2n['groupdir_users'] = $m2l['groupdir_users']; } - if(isset($m2l['log_verbose'])){ $log['verbose'] = $m2l['log_verbose']; } if( $m2n['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } if(($link = db_connect($db)) == FALSE){ //csatlakozás @@ -800,6 +825,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\thozzáadva.\n";} } } + } // A megszűnt tanköröket-csoportokat kitörli foreach($nxt_csop as $key => $val){ if(substr($key, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. @@ -809,7 +835,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t békén hagyva.\n";} } // Figyelem! A csoport prefix-szel: "(tk) " kezdődő csoportokat magáénak tekinti, automatikusan töröli! } // Akkor is, ha az külön, kézzel lett létrehozva. - } + -- cgit v1.2.3 From 677cb0295ebd1701f6bfd37d3a62848435a509e6 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Tue, 1 Sep 2020 23:50:25 +0200 Subject: M2N: új kapcsoló: (--debug) + összesített statisztika a végére --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 2 +- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 182 +++++++++++++++-------- 2 files changed, 123 insertions(+), 61 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index f8173903..45319ddb 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -19,7 +19,7 @@ $db['nxt_prefix'] = "oc_"; //$db['mayor_user'] = ""; //$db['mayor_pass'] = ""; -$m2n['min_evfolyam'] = 1; +$m2n['min_evfolyam'] = 7; $m2n['isk_rovidnev'] = "rovid"; $m2n['csoport_prefix'] = "(tk) "; $m2n['default_email'] = "indulo@iskola.hu"; diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index eb94d871..8160c64b 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -45,6 +45,7 @@ $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; $printhelp = false; $printconfig = false; +$debug = false; $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ő. // Le kell cserélni az ékezetes betűket, mert a Vezetéknév.Keresztnév nem POSIX kompatibilis. @@ -59,6 +60,7 @@ if(file_exists($cfgfile) === TRUE){ include($cfgfile); } //Config betöltés for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--help" ){$printhelp = true;} + if($argv[$i] == "--debug" ){$debug = true;} if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$m2n['verbose'] = intval($argv[$i+1]); $i++;} if($argv[$i] == "--set-diak-quota" ){ $m2n['always_set_diak_quota'] = true; } if($argv[$i] == "--create-groupdir"){ $m2n['groupdir_users'] = array($argv[$i+1]); $i++;} @@ -71,6 +73,7 @@ function print_help(){ echo "php mayor-nextcloud.php [kapcsolók] \n"; echo "Kapcsolók: (felülbírálja a configot!)\n"; echo " --help : Help kiírása. \n"; + echo " --debug : Ugyanaz mint a \"--loglevel 100\" \n"; echo " --config-file : Konfig fájl elérési útvonala.\n"; echo " --config-print : A betöltött konfig kiírása\n"; echo " --loglevel x : A bőbeszédűséget/logolást tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. \n"; @@ -116,7 +119,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im return $l; } } -// bezár: mysqli_close($link); +// bezár: mysqli_close($link); function script_install($link){ global $db,$log; @@ -158,8 +161,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im // sudo -u honlap-felho php /home/honlap-felho/web/occ status --output=json $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." status --output=json \"" ; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - return explode(".", json_decode(shell_exec($e),true)['version'])[0]; - echo "\n\n\n".explode(".", json_decode(shell_exec($e),true)['version'])[0]."\n\n\n"; + $ret = explode(".", json_decode(shell_exec($e),true)['version'])[0]; + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } function catalog_userlist($link){ //akiket a script hozott létre @@ -178,6 +182,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im mysqli_free_result($r); if ($log['verbose'] > 4 ){ echo "*\tFelhasználó m2n nyilvántartás lekérdezése.\n"; } return $ret; + if ($log['verbose'] > 10 ){ print_r($ret); } } else { echo "\nM2N -> \t**** Adatbázislekérdezési hiba! ****\n"; } @@ -270,7 +275,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - return (array)json_decode(shell_exec($e),true); + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } @@ -278,14 +285,16 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } function user_ena($userAccount){ // engedélyezi global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -293,7 +302,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - return (array)json_decode(shell_exec($e),true); + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } function nxt_user_list() { // Felhasználók listázása a Nextcloud-ból @@ -305,14 +316,18 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im // $num = $num + 100; // Biztos-ami-biztos, a nextcloud rejtett hibái miatt... $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - return (array)json_decode(shell_exec($e),true); + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } function nxt_user_lastlogin($userAccount){ // legutóbbi belépés lekérdezése global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - return json_decode(shell_exec($e),true)['last_seen'] ; + $ret = json_decode(shell_exec($e),true)['last_seen']; + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } @@ -350,7 +365,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } } } @@ -365,7 +381,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im foreach($grp[$groupName] as $key => $user){ $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$m2n['csoportnev_hossz']+5,1)."\t csoportból.\n"; } } $q = "DELETE FROM ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link,$db['nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; @@ -375,7 +392,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } } } @@ -384,14 +402,16 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im global $occ_user, $occ_path,$log; $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } function group_user_del($groupName, $userAccount){ // Kitöröl egy felhasználót egy Nextcoud csoportból global $occ_user, $occ_path,$log; $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -405,6 +425,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? } + if ($log['verbose'] > 11 ){ print_r($ret); } return $ret; } @@ -421,6 +442,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } } + if ($log['verbose'] > 11 ){ print_r($ret); } return $ret; } @@ -428,14 +450,16 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im global $occ_user, $occ_path,$log; $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } function user_notify($user, $msg, $title ){ // Nextcloud értesítés global $occ_user, $occ_path, $log; $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } function scan_dir($user, $path ){ // PHP mappa listázása @@ -448,6 +472,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im unset($ret[1]); } } + if ($log['verbose'] > 11 ){ print_r($ret); } return $ret; } @@ -480,6 +505,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret[2][] = $val; } } + if ($log['verbose'] > 12 ){ print_r($ret); } return $ret; } @@ -504,6 +530,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im files_scan($user, $path); } } + if ($log['verbose'] > 12 ){ print_r($ret); } return $ret; } @@ -516,7 +543,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if($ret === true){ files_scan($user, $path); } - } + } + if ($log['verbose'] > 12 ){ print_r($ret); } return $ret; } } @@ -535,6 +563,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } files_scan($user, $path."/INFO.txt"); } + if ($log['verbose'] > 12 ){ print_r($ret); } return $ret; } @@ -542,6 +571,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function add_tk_to_users($list, $user, $tankorname){ //Naplón kívüli csoportokat adhatunk a felhasználókhoz + global $log; $curr = ""; foreach($list as $key => $val){ // Csak rendezett tömbökön! if($curr != $val['userAccount'] && ($user === null or ($user !== null && $val['userAccount'] == $user ))){ //Vagy mindenki vagy adott user + rendezett lista @@ -568,16 +598,19 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $curr = $val['userAccount']; } } + if ($log['verbose'] > 15 ){ print_r($list); } return $list; } function set_param_to_user($list, $user, $paramname, $param){ // Paramétert állít be a felhasználónak. + global $log; foreach($list as $key => $val){ // Csak rendezett tömbökön! (vagy mégsem?) if($user === null or ($user !== null && $val['userAccount'] == $user )){ //Vagy mindenki vagy adott user $list[$key][$paramname] = $param; // A paraméter } } + if ($log['verbose'] > 15 ){ print_r($list); } return $list; } @@ -650,11 +683,12 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret[] = $row; } mysqli_free_result($r); - return $ret; } else { echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; } } + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } @@ -683,10 +717,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $ret[] = $row; } mysqli_free_result($r); - return $ret; } else { echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (adatbázis) ********\n"; } + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } @@ -728,21 +763,27 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ // mysqli_fetch_array($r, MYSQLI_ASSOC); - while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { - $ret[] = $row; - } - mysqli_free_result($r); - return $ret; + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + $ret[] = $row; + } + mysqli_free_result($r); } else { echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; } } else { echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; } - + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } -//------------------------------------------------------------------------------------------------------------------------------- + + +//--------------------------------------------------------------------------------------------------------------------------------------------// +// RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN // +//--------------------------------------------------------------------------------------------------------------------------------------------// + + if(nxt_get_version() < 13){ //Nextcloud 13-tól támogatott echo "\n\n******** Legalább Nextcloud 13-mas verzió szükséges! ********\n\n"; die(); @@ -768,6 +809,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im echo "\n"; } $log['verbose'] = $m2n['verbose']; + if($debug === true) {$log['verbose'] = 100;} if( $m2n['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } if(($link = db_connect($db)) == FALSE){ //csatlakozás @@ -807,35 +849,38 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_diak'] ))); $nxt_csop = nxt_group_list(); $elozo_tcsop = ""; + $mod_nxt_group = 0; if($m2n['manage_groups'] === true){ - foreach($tankorok as $key => $val){ //Végignézi a tankörök szerint - foreach($nxt_csop as $key2 => $val2){ // - if($key2 == $val['tankorNev']){ //Már van ilyen (tankör)nevű csoport + foreach($tankorok as $key => $val){ //Végignézi a tankörök szerint + foreach($nxt_csop as $key2 => $val2){ + if($key2 == $val['tankorNev']){ //Már van ilyen (tankör)nevű csoport if ($log['verbose'] > 3 ){ echo " -\t Csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\tok.\n";} $elozo_tcsop = $val['tankorNev']; break; } } - unset($nxt_csop[$val['tankorNev']]); //Megvizsgálva, többször már nem kell dönteni róla. - if( $val['tankorNev'] == $elozo_tcsop and $key2 != $val['tankorNev'] ){ //Duplikált tankör(név) a Mayorban + unset($nxt_csop[$val['tankorNev']]); //Megvizsgálva, többször már nem kell dönteni róla. + if( $val['tankorNev'] == $elozo_tcsop and $key2 != $val['tankorNev'] ){ //Duplikált tankör(név) a Mayorban if($log['verbose'] > 2 ){ echo "* -\t Dupla tankör:".po("\t".$val['tankorNev'], $m2n['csoportnev_hossz'],1)."-\tmayor.\n";} } - else if($key2 != $val['tankorNev']){ //Ha nincs ilyen (tankör)nevű csoport - group_add($val['tankorNev']); //Akkor létrehozza + else if($key2 != $val['tankorNev']){ //Ha nincs ilyen (tankör)nevű csoport + group_add($val['tankorNev']); //Akkor létrehozza + $mod_nxt_group++; if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\thozzáadva.\n";} } } - } - // A megszűnt tanköröket-csoportokat kitörli + + // A megszűnt tanköröket-csoportokat kitörli foreach($nxt_csop as $key => $val){ if(substr($key, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. - group_del($key); //elvégzi a törlést + group_del($key); //elvégzi a törlést + $mod_nxt_group++; if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t eltávolítva.\n";} } else { if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t békén hagyva.\n";} } // Figyelem! A csoport prefix-szel: "(tk) " kezdődő csoportokat magáénak tekinti, automatikusan töröli! } // Akkor is, ha az külön, kézzel lett létrehozva. - + } @@ -900,20 +945,25 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $curr = ""; $tankorei = array(); - foreach($mayor_user as $key => $val){ //Végignézi a mayorból kinyert lista alapján. + $mod_nxt_user_all = 0; + $mod_nxt_user = 0; + foreach($mayor_user as $key => $val){ //Végignézi a mayorból kinyert lista alapján. - if($curr != $val['userAccount']){ //CSAK Rendezett tömbökön !! + if($curr != $val['userAccount']){ //CSAK Rendezett tömbökön !! foreach($nxt_user as $key2 => $val2){ - if($curr == $key2){ //Már létezik a felhasználó a Nextcloud-ban - $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tok.\n"; + if($curr == $key2){ //Már létezik a felhasználó a Nextcloud-ban + $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tlétezik.\n"; if ($log['verbose'] > 3 ){ echo " -".$log['curr']; $log['curr'] = "";} - if( in_array($curr, $m2n_catalog['account'])){ //Benne van-e a nyilvántartásban? - if($m2n_catalog['status'][array_keys($m2n_catalog['account'], $curr)[0]] == 'disabled' ){ // Ha le lett tiltva - //if(user_info($curr)['enabled']!=true){ // Ez valós, de irtó lassú - catalog_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi, - user_ena($curr); // ha a script tiltotta le. + if ( in_array($curr, $m2n_catalog['account'])){ //Benne van-e a nyilvántartásban? + if($m2n_catalog['status'][array_keys($m2n_catalog['account'], $curr)[0]] == 'disabled' ){ // Ha le lett tiltva + //if(user_info($curr)['enabled']!=true){ // Ez valós, de irtó lassú + catalog_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi, + user_ena($curr); // ha a script tiltotta le. + $mod_nxt_user++; + $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tengedélyezve.\n"; + if ($log['verbose'] > 2 ){ echo " -".$log['curr']; $log['curr'] = ""; } //Ez is változtatás } - } else { //Nincs a katalógusban, nincs tiltva, felvesszük + } else { //Nincs a katalógusban, nincs tiltva, felvesszük 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";} } @@ -921,7 +971,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if($m2n['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";} + $mod_nxt_user++; + if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\t\n"; } } if($m2n['manage_groups'] === true){ //Csak, ha a acsoportokhoz is nyúlunk @@ -936,8 +987,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im 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 - 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";} + 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 + $mod_nxt_user++; } //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár @@ -949,8 +1001,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im //------------------------------------- Tankör (Csoportból) törlés -------------------------// } 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";} + 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... + $mod_nxt_user++; } } } @@ -962,6 +1015,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} } + $mod_nxt_user_all++; break; } } @@ -970,13 +1024,14 @@ 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";} - - $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); - if ($ret[0] === true && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/",$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} - if ($ret[1] > 0 && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + if ($log['verbose'] > 2 ){ echo "**-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tlétrehozva.\n"; } + $mod_nxt_user++; if($m2n['manage_groups'] === true){ + $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); + if ($ret[0] === true && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/",$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} + if ($ret[1] > 0 && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + 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); @@ -1003,7 +1058,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $params['email'] = $curr_e; // ha van a mysql-ben e-mail, akkor azt használja } user_set($curr,$params); //Alapértelmezett paraméterek érvényesítése - if ($log['verbose'] > 2 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\tNyelv: ".$params['lang']."\tE-mail: ".$params['email']."\n";} + if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\tNyelv: ".$params['lang']."\tE-mail: ".$params['email']."\n";} } unset($tankorei); @@ -1026,12 +1081,14 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if( nxt_user_lastlogin($key) == "1970-01-01T00:00:00+00:00" ){ //Még soha nem lépett be = 1970.01.01 ?? user_del($key); //Akkor törli catalog_userdel($link, $key); //A listáról is - if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\ttörölve.\n";} + if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\ttörölve.\n"; } } else { user_dis($key); //Különben csak letiltja (fájlok ne vesszenek el) catalog_userdis($link, $key); //Feljegyzi a nyilvántartásba - if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\tletiltva.\n";} + if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\tletiltva.\n"; } } + $mod_nxt_user++; + $mod_nxt_user_all++; } // döntési logika: // ha benne van a $mayor_user-ben, @@ -1059,7 +1116,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } foreach($m2n_forbidden as $key => $val){ //Szinkronizálja a $m2n['kihagy'] listát a nyilvántartással. if(!in_array($val, $m2n['kihagy'])){ - if ($log['verbose'] > 4 ){ echo "**-\tFelhasználó:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tújra engedélyezve.\n";} + if ($log['verbose'] > 4 ){ echo "**-\tFelhasználó:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tújra kezelve.\n";} catalog_userena($link,$val); user_ena($val); } @@ -1070,7 +1127,12 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im //test //script_install($link); - + if ($log['verbose'] > 0 ){ echo "\nÖsszes művelet: ".$mod_nxt_user_all+$mod_nxt_user_all."db.\n";} + if ($log['verbose'] > 0 ){ echo "Feldolgozva: ".$mod_nxt_user_all."db felhasználó\n";} + if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_user."db a Nextcloud felhasználói beállításokban.\n";} + if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_group."db a Nextcloud csoport beállításokban.\n";} + + @mysqli_close($link2); @mysqli_close($link); $t_run = round((microtime(true) - $t_start)/60, 3); -- cgit v1.2.3 From 9bfbb60898b55ba4e1bd50c052c7ec4aaafc1ff8 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 2 Sep 2020 20:59:58 +0200 Subject: M2N: Statisztika + Readme --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 27 ++++++++++++++---------- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 8 +++---- 2 files changed, 20 insertions(+), 15 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 45319ddb..31ddf942 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -385,6 +385,10 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) // ha minden tanárnak, akkor állítsuk üresre a tömböt! / = array();/ $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; //A távoktatást segítő mappák gyüjtőmappája/gyökérkönyvtára. + + $m2n['manage_groups'] = true; //Foglalkozzon-e a tankörökkel/csoportokkal? Ha true -> igen, ha false, akkor csak a felhasználókat + // egyezteti a mayorral + $m2n['manage_groupdirs'] = false; //A tankör-cspoprt mappákat kezelje-e vagy sem. $m2n['verbose'] = 3 //Log bőbeszédűség (A leg informatívabb(tömörebb), talán a 3-mas fokozat.) // 0: csak fatális hibák, 1: fontosabbak, 2: csop./felh. elvétel, 3: csop./felh. hozzáadás, @@ -421,17 +425,18 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) További Paraméterek / Kapcsolók: - --loglevel x : A scriptbőbeszédűségét, logolását tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. - - --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, - csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. - - --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, - illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre. - - - - + --help : Help kiírása. + --debug : Ugyanaz mint a "--loglevel 100" + --loglevel x : A bőbeszédűséget/logolást tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. + --config-file : Konfig fájl elérési útvonala. + --config-print : A betöltött konfig kiírása. + --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, + csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. + --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, + egyébként kapcsoló nélküli híváskor, (pl: automatikusan, a napi futásban éjjel), az összes tanárnak egyszerre. + --manage-groups <1/0> : Ha 1: A felhasználókat csoportokba rendezi a MaYor tankörök szerint, ha 0, nem foglalkozik a csoportokkal. + --manage-groupdirs <1/0> : Ha 1: tankörmappákat hoz létre a tankör-csoportokhoz, ha 0, nem foglalkozik vele. (kell hozzá a --manage-groups is!) + További Információk: diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 8160c64b..e30d0dbb 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -1126,9 +1126,9 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im //test //script_install($link); - - if ($log['verbose'] > 0 ){ echo "\nÖsszes művelet: ".$mod_nxt_user_all+$mod_nxt_user_all."db.\n";} - if ($log['verbose'] > 0 ){ echo "Feldolgozva: ".$mod_nxt_user_all."db felhasználó\n";} + if ($log['verbose'] > 0 ){ echo "\n\nStatisztikák:\n";} + if ($log['verbose'] > 0 ){ echo "Összes művelet: ".($mod_nxt_user + $mod_nxt_group)."db.\n";} + if ($log['verbose'] > 0 ){ echo "Feldolgozva: ".$mod_nxt_user_all."db felhasználó.\n";} if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_user."db a Nextcloud felhasználói beállításokban.\n";} if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_group."db a Nextcloud csoport beállításokban.\n";} @@ -1141,7 +1141,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; } - + ?> -- cgit v1.2.3 From 1886e205013283b602167e24b507c7226c3c8ba1 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 3 Sep 2020 02:01:24 +0200 Subject: M2N: MaYor export --> AD/LDAP import initial --- "egy\303\251b/nextcloud/mayor-ldap.php" | 1148 +++++++++++++++++++++++++++++++ 1 file changed, 1148 insertions(+) create mode 100644 "egy\303\251b/nextcloud/mayor-ldap.php" (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" new file mode 100644 index 00000000..e30d0dbb --- /dev/null +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -0,0 +1,1148 @@ +#!/usr/bin/php + =array(); //(legyen üres) +$m2n['mindenki_csop'] = "naplós_felhasználók"; +$m2n['mindenki_tanar'] = "naplós_tanárok"; +$m2n['mindenki_diak'] = "naplós_diákok"; +$m2n['zaras_tartas'] = "2018-06-14"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig) Ha már nem kell, akkor állítsd "1970-01-01"-ra !; +$m2n['infotxt_szöveg'] = "info.txt"; +$m2n['verbose'] = 3 ; + +$occ_path = "/var/www/nextcloud/"; +$occ_user = "www-data"; +$printhelp = false; +$printconfig = false; +$debug = false; + +$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ő. +// Le kell cserélni az ékezetes betűket, mert a Vezetéknév.Keresztnév nem POSIX kompatibilis. +$search = array( 'á', 'ä', 'é', 'í', 'ó', 'ö', 'ő', 'ú', 'ü', 'ű', 'Á', 'Ä', 'É', 'Í', 'Ó', 'Ö', 'Ő', 'Ú', 'Ü', 'Ű'); // egyelőre csak a magyar betűket ismeri +$replace = array( 'aa', 'ae', 'ee', 'ii', 'oo', 'oe', 'ooe', 'uu', 'ue', 'uue', 'Aa', 'Aae', 'Ee', 'Ii', 'Oo', 'Oe', 'Ooe', 'Uu', 'Ue', 'Uue'); + +for($i = 1; $i<$argc; $i++){ //Ha van külön config megadva, akkor először azt töltjük be. + if($argv[$i] == "--config-file" ){$cfgfile = strval($argv[$i+1]); $i++;} +} +if(file_exists($cfgfile) === TRUE){ include($cfgfile); } //Config betöltés + + +for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók + if($argv[$i] == "--help" ){$printhelp = true;} + if($argv[$i] == "--debug" ){$debug = true;} + if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$m2n['verbose'] = intval($argv[$i+1]); $i++;} + if($argv[$i] == "--set-diak-quota" ){ $m2n['always_set_diak_quota'] = true; } + if($argv[$i] == "--create-groupdir"){ $m2n['groupdir_users'] = array($argv[$i+1]); $i++;} + if($argv[$i] == "--manage-groupdirs" and is_string($argv[$i+1])){$m2n['manage_groupdirs'] = boolval($argv[$i+1]); $i++;} + if($argv[$i] == "--manage-groups" and is_string($argv[$i+1])){$m2n['manage_groups'] = boolval($argv[$i+1]); $i++;} + if($argv[$i] == "--config-print" ){ $printconfig = true; } +} + +function print_help(){ + echo "php mayor-nextcloud.php [kapcsolók] \n"; + echo "Kapcsolók: (felülbírálja a configot!)\n"; + echo " --help : Help kiírása. \n"; + echo " --debug : Ugyanaz mint a \"--loglevel 100\" \n"; + echo " --config-file : Konfig fájl elérési útvonala.\n"; + echo " --config-print : A betöltött konfig kiírása\n"; + echo " --loglevel x : A bőbeszédűséget/logolást tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. \n"; + echo " --set-diak-quota : Az összes diák qvótáját átállítja az \"\$m2n['diak_quota'] = x\" -nél megadott értékre, \n"; + echo " csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne.\n"; + echo " --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, \n"; + echo " illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre.\n"; + echo " --manage-groups <1/0> : Ha 1: A felhasználókat csoportokba rendezi a MaYor tankörök szerint, ha 0, nem foglalkozik vele.\n"; + echo " --manage-groupdirs <1/0> : Ha 1: tankörmappákat hoz létre a tankör-csoportokhoz, ha 0, nem foglalkozik vele. (kell hozzá a --manage-groups is!)\n"; + echo "\n\n"; +} + + +if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Improved) és php7 kell! + + function db_connect(array $db){ + global $log; + if ($log['verbose'] > 0 ){ echo "***\tAdatbázis kapcsolódás. (m2n_db=".$db['m2n_db'].")\n"; } + $l = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['m2n_db'],$db['port']); + if(!$l){ + if ($log['verbose'] > 0 ){echo "*\tAdatbázis kapcsolat újrapróbálása... (m2n_db=) hiba:".mysqli_connect_errno()."\n";} + $db_old = $db['m2n_db']; + $db['m2n_db'] = ""; + $l = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['m2n_db'],$db['port']); + if(!$l){ + echo "\n**** Sikertelen kapcsolódás! **** (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n"; + return null; + } else{ + if ($log['verbose'] > 4 ){ echo "*\tSikeres kapcsolódás. (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n";} + if ($log['verbose'] > 0 ){ echo "***\tAdatbázis létrehozása: ".$db_old." ...\n";} + mysqli_set_charset($l, "utf8"); + mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); + script_install($l); + return $l; + } + } else { + if ($log['verbose'] > 4 ){ echo "*\tSikeres kapcsolódás. (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n"; } + mysqli_set_charset($l, "utf8"); + mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); + if(mysqli_query($l, "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register;" ) == FALSE ){ + script_install($l); + } + return $l; + } + } +// bezár: mysqli_close($link); + + function script_install($link){ + global $db,$log; + $q = "CREATE DATABASE IF NOT EXISTS ".$db['m2n_db']." DEFAULT COLLATE 'utf8_general_ci'; "; + if ($log['verbose'] > 0 ){ echo "M2N -> \t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ + if ($log['verbose'] > 0 ){ echo "*\tAz ".$db['m2n_db']." adatbázis sikeresen létrehozva.\n"; } + } + $q = "CREATE TABLE IF NOT EXISTS ".$db['m2n_db'].".".$db['m2n_prefix']."register ( + account VARCHAR(64) NOT NULL COLLATE 'utf8_bin', + status ENUM('active','disabled','forbidden','deleted') NULL DEFAULT 'active' COLLATE 'utf8_bin', + PRIMARY KEY (account)) + COLLATE='utf8_general_ci' + ENGINE=InnoDB;"; + if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ + if ($log['verbose'] > 0 ){ echo "*\tAz ".$db['m2n_db'].".".$db['m2n_prefix']."register (script-katalógus) tábla sikeresen létrehozva.\n";} + } + } + + function rmnp($str){ //Remove non-printable + return preg_replace('/[\x00-\x1F\x7F-\xA0\xAD]/u', '', $str); + } + + function escp($str){ //Escape strings + $str = str_replace(array("\\","`", "\'", "\"" ),array("\\\\", "\`", "\\\'", "\\\""), $str); + return escapeshellarg($str); + } + + function rnescp($str){ //Escape strings + $str = rmnp($str); + $str = escapeshellarg($str); + $str = str_replace(array("\\", "`", "'", "\"", "\ ", ), array("", "", "", "", "_", ), $str); + return $str; + } + + function nxt_get_version(){ + global $occ_path,$occ_user,$m2n,$log; + // sudo -u honlap-felho php /home/honlap-felho/web/occ status --output=json + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." status --output=json \"" ; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = explode(".", json_decode(shell_exec($e),true)['version'])[0]; + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + function catalog_userlist($link){ //akiket a script hozott létre + global $db,$log,$m2n; + $ret['account'] = array(); + $ret['status'] = array(); + $q = "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE STATUS != 'forbidden'; "; + if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + if(!in_array($row['account'], $m2n['kihagy'])){ + $ret['account'][] = $row['account']; + $ret['status'][] = $row['status']; + } + } + mysqli_free_result($r); + if ($log['verbose'] > 4 ){ echo "*\tFelhasználó m2n nyilvántartás lekérdezése.\n"; } + return $ret; + if ($log['verbose'] > 10 ){ print_r($ret); } + } else { + echo "\nM2N -> \t**** Adatbázislekérdezési hiba! ****\n"; + } + } + + function catalog_forbiddenlist($link){ //akiket a rendszergazda kitiltott + global $log,$db,$m2n; + $q = "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE STATUS = 'forbidden'; "; + if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ + $ret = array(); + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + $ret[] = $row['account']; + } + mysqli_free_result($r); + $ret = array_merge($ret, $m2n['kihagy']); + if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-letiltások m2n nyilvántartás lekérdezése.\n"; } + return $ret; + } else { + echo "\nM2N ->\t**** Adatbázislekérdezési hiba! ****\n"; + } + } + + function catalog_useradd($link, $account){ // feljegyzi az általa létrehozott felhasználókat + global $log,$db; + $q = "INSERT INTO ".$db['m2n_db'].".".$db['m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; + if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n"; } + if(( mysqli_query($link, $q)) !== FALSE ){ + if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-hozzáadás, m2n nyilvántartásba vétele.\n"; } + } + } + + function catalog_userena($link, $account){ // az engedélyezetteket + global $db,$log; + $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; + if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if(( mysqli_query($link, $q)) !== FALSE ){ + if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-engedélyezés, m2n nyilvántartásba vétele.\n" ;} + } + } + + function catalog_userdel($link, $account){ // a törölteket + global $db,$log; + $q = "DELETE FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; + if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if(( mysqli_query($link, $q)) !== FALSE ){ + if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-törlés, m2n nyilvántartásba vétele.\n"; } + } + } + + function catalog_userdis($link, $account){ // a letiltottakat + global $m2n,$db,$log; + $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; + if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if(( mysqli_query($link, $q)) !== FALSE ){ + if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-letiltás, m2n nyilvántartásba vétele.\n"; } + } + } + + function user_add($userAccount, $fullName){ // létrehoz egy felhasználót a Nextcloud-ban + global $occ_path,$occ_user,$m2n,$log; +// export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c 'php web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' + if(strlen($userAccount) > 64 or strlen($fullName) > 64){ + echo "\n******** Hiba: A felahsználónév, vagy a \"teljes név\" hosszabb, mint 64 karakter! NEM hozható létre!! ********\n"; + } else { + $e = "export OC_PASS=".escp($m2n['default_passw'])."; su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($m2n['mindenki_csop'])." ".escp($userAccount)." \"" ; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec($e); + } + } + + function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban + global $occ_path,$occ_user,$log; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $last_login = json_decode(shell_exec($e),true)['last_seen'] ; + if($last_login == "1970-01-01T00:00:00+00:00" ){ + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec($e); // akkor törölhető + } else { + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec($e); // különben csak letiltja + } + + } + + function user_info($userAccount){ // User állpot a Nextcloudban + global $occ_path,$occ_user,$log; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + + function user_dis($userAccount){ // letiltja a felhasználót a Nextcloud-ban + global $occ_path,$occ_user,$log; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + } + + function user_ena($userAccount){ // engedélyezi + global $occ_path,$occ_user,$log; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + } + + + function nxt_group_list() { // Csoportok listázása a Nextcloud-ból + global $occ_path,$occ_user,$log; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + function nxt_user_list() { // Felhasználók listázása a Nextcloud-ból + global $occ_path,$occ_user,$log; + // $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; + // if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + // $num = shell_exec($e); + $num = 1000000; //inkább kézi limit! + // $num = $num + 100; // Biztos-ami-biztos, a nextcloud rejtett hibái miatt... + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + function nxt_user_lastlogin($userAccount){ // legutóbbi belépés lekérdezése + global $occ_path,$occ_user,$log; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = json_decode(shell_exec($e),true)['last_seen']; + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + + function user_set($userAccount, array $params){ //beállítja az e-mailt, quota-t, nyelvet a kapott értékekre + global $occ_path,$occ_user,$log; + if(isset($params['quota'])){ + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec( $e ); + } + if(isset($params['email'])){ + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec( $e ); + } + if(isset($params['lang'])){ + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec($e); + } + } + + + + function group_add($groupName){ //Új csoport létrehozása a Nextcloud-ban + global $occ_user,$occ_path,$link,$db,$log; + $groupName = rmnp($groupName); + if(strlen($groupName) > 64){ //mivel (egyelőre) nics erre 'occ' parancs, ezért közvetlenül kell... + echo "\n****** Hiba: a csoportnév nagyobb, mint 64 karakter!! ******\n"; + } else { + if(nxt_get_version() < 14) { + $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link, $db['nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; + if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } + if(mysqli_query($link, $q) !== TRUE ) echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; + } else { + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + } + } + } + + function group_del($groupName){ // Csoport törlése a Nextcloud-ból + global $occ_user,$occ_path,$db,$link,$log,$m2n; + $grp = nxt_group_list(); + $groupName = rmnp($groupName); + if(isset($grp[$groupName])){ + if(nxt_get_version() < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... + + foreach($grp[$groupName] as $key => $user){ + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$m2n['csoportnev_hossz']+5,1)."\t csoportból.\n"; } + } + $q = "DELETE FROM ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link,$db['nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; + if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } + if(mysqli_query($link, $q) !== TRUE ) echo "\n NXT -> \t****** csoport törlési hiba. (adatbázis) ******\n"; + + } else { + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + } + } + } + + function group_user_add($groupName, $userAccount){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban + global $occ_user, $occ_path,$log; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + } + + function group_user_del($groupName, $userAccount){ // Kitöröl egy felhasználót egy Nextcoud csoportból + global $occ_user, $occ_path,$log; + $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + } + + + function create_dir($user, $path){ // Készít egy mappát a: data/$user/files/$path alá + global $occ_user, $occ_path,$log; + $ret = null; + if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még nem létezik + $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza + chown($occ_path."/data/".$user."/files/".$path, $occ_user); + chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? + } + if ($log['verbose'] > 11 ){ print_r($ret); } + return $ret; + } + + + function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát + global $occ_user, $occ_path,$log; + $ret = 0; + if( ($h = @fopen($occ_path."/data/".$user."/files/".$path, 'w+')) !== false ){ + $ret = fwrite($h, $msg ); + fclose($h); + chown($occ_path."/data/".$user."/files/".$path, $occ_user); + chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + if($log['verbose'] > 5) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + } else { + if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } + } + if ($log['verbose'] > 11 ){ print_r($ret); } + return $ret; + } + + function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx + global $occ_user, $occ_path,$log; + $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + } + + function user_notify($user, $msg, $title ){ // Nextcloud értesítés + global $occ_user, $occ_path, $log; + $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } + } + + function scan_dir($user, $path ){ // PHP mappa listázása + 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]); + } + } + if ($log['verbose'] > 11 ){ print_r($ret); } + return $ret; + } + + function clean_dir($user, $path, $tankorei){ //Tankörmappák kitisztítása (path: mappagyökér) + global $occ_user, $occ_path, $log, $m2n; + $listdir = scan_dir($user, $path); + $ret[0] = array(); + $ret[1] = array(); + $ret[2] = array(); + foreach($listdir as $key => $val) { + if((!in_array($val, $tankorei) && !in_array(basename($val,"_beadás"), $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($user, $path."/".$val))){ // Ha mappa, és üres -> törlés + rmdir($occ_path."/data/".$user."/files/".$path."/".$val); + $ret[0][] = $val; + if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } + + } else { //Nem mappa, vagy nem üres + if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él + rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); + $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; + user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".rnescp(basename($val, '.please-remove').".".time().".please-remove"), "Fájl/Mappa rossz helyen! --> ".rnescp($path."/".basename($val, '.please-remove').".".time().".please-remove" )); + if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } + } else { + // A Hanyagul otthagyottakért csak figyelmeztessen: + user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjelölve! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); + } + } + } else { + $ret[2][] = $val; + } + } + if ($log['verbose'] > 12 ){ print_r($ret); } + return $ret; + } + + + function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja $path=tankörgyökér + global $m2n, $occ_path, $occ_user,$log; + $ret = array(false, false); + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava + + if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl + rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda + echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; + user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); + files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli + } + $ret[0] = create_dir($user, rmnp($path)); // Tankörmappa gyökér létrehozása + $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // INFO.txt (Újra)Írása. + if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni + $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; + if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + shell_exec($e); + files_scan($user, $path); + } + } + if ($log['verbose'] > 12 ){ print_r($ret); } + return $ret; + } + + function groupdir_create_groupdir($user, $oktId, $path){ // $path = tankörmappa + global $m2n; + $ret = false; + if( basename($path,"_beadás") != $m2n['mindenki_tanar'] and basename($path,"_beadás") != $m2n['mindenki_diak'] and basename($path,"_beadás") != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + $ret = create_dir($user, rmnp($path)); // Tankörmappa létrehozása + if($ret === true){ + files_scan($user, $path); + } + } + if ($log['verbose'] > 12 ){ print_r($ret); } + return $ret; + } + } + + function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path=tankörgyökér + global $m2n; + $ret = array(array(),array(),array(),false,false); //return sekelton + if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + if(isset($tankorei)) { + $ret = clean_dir($user, $path, $tankorei); + $ret[3] = false; //mert felülírja a skeleton-t + } + if(!empty($ret[0]) or !empty($ret[1]) ){ + files_scan($user, $path); // Nextcloud értesítése + $ret[3] = true; + } + files_scan($user, $path."/INFO.txt"); + } + if ($log['verbose'] > 12 ){ print_r($ret); } + return $ret; + } + + + + + function add_tk_to_users($list, $user, $tankorname){ //Naplón kívüli csoportokat adhatunk a felhasználókhoz + global $log; + $curr = ""; + foreach($list as $key => $val){ // Csak rendezett tömbökön! + if($curr != $val['userAccount'] && ($user === null or ($user !== null && $val['userAccount'] == $user ))){ //Vagy mindenki vagy adott user + rendezett lista + + if(!isset($val['tanarId'])){ //workaround + $val['tanarId'] = 0; + } + if(!isset($val['diakId'])){ //workaround + $val['diakId'] = 0; + } + $list = array_merge($list, array( + array( 'userAccount' => $val['userAccount'], + 'email' => $val['email'], + 'tanarId' => $val['tanarId'], + 'diakId' => $val['diakId'], + 'tankorId' => 0, + 'fullName' => $val['fullName'], + 'tankorNev' => $tankorname, + ))); + + if($user !== null && $val['userAccount'] == $user ){ // Null -> mindenkihez, "user" -> csak neki + break; + } + $curr = $val['userAccount']; + } + } + if ($log['verbose'] > 15 ){ print_r($list); } + return $list; + } + + function set_param_to_user($list, $user, $paramname, $param){ // Paramétert állít be a felhasználónak. + global $log; + foreach($list as $key => $val){ // Csak rendezett tömbökön! (vagy mégsem?) + if($user === null or ($user !== null && $val['userAccount'] == $user )){ //Vagy mindenki vagy adott user + + $list[$key][$paramname] = $param; // A paraméter + } + } + if ($log['verbose'] > 15 ){ print_r($list); } + return $list; + } + + function mayor_userlistcmp($a, $b){ + return strcmp($a['userAccount'], $b['userAccount']); + } + + function po($inp,$ll,$dir){ // Szép kimenetet gyárt + while(grapheme_strlen($inp) < $ll){ + if($dir == 0){ + $inp = " ".$inp." "; + } else if($dir == 1){ + $inp = $inp." "; + } else if ($dir == -1){ + $inp = " ".$inp; + } + } + return $inp; + } + + + function get_mayor_tankor($link){ // A tankörök neveinek lekérdezése a mayorból + global $m2n,$log; + $ret = array(); + $req_oszt = "'#'"; + foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra + $req_oszt .= ",'$val'"; + } +//Létező összes tankör: +/* $q = "SELECT tankorId, TRIM(BOTH ' ' + FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + WHERE tanev = ( + SELECT tanev + FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE statusz = 'aktív' + GROUP BY tanev) AND szemeszter = ( + SELECT szemeszter + FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )); "; +*/ +//csak a megadott évfeolyamokhoz kötődő tankörök: + $qq = "SELECT tanev FROM intezmeny_".mysqli_real_escape_string($link, $m2n['isk_rovidnev']).".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; + if ($log['verbose'] > 5 ){ echo "MAY ->\t".$qq."\n"; } + if( ($r = mysqli_query($link, $qq)) !== FALSE ){ + $ev = mysqli_fetch_array($r, MYSQLI_ASSOC); + $q = "SELECT tankorId, TRIM(BOTH ' ' + FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + WHERE tanev = ( + SELECT tanev + FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE statusz = 'aktív' + GROUP BY tanev) AND szemeszter = ( + SELECT szemeszter + FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."')) AND tankorId IN( + SELECT tankorId + FROM intezmeny_".$m2n['isk_rovidnev'].".tankorOsztaly + WHERE osztalyId IN ( + SELECT osztalyId + FROM naplo_".$m2n['isk_rovidnev']."_".$ev['tanev'].".osztalyNaplo + WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") + ORDER BY osztalyId) + ORDER BY tankorId ) ORDER BY tankorNev; + "; + if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + $ret[] = $row; + } + mysqli_free_result($r); + } else { + echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; + } + } + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + + function get_mayor_tanar($link){ // A tanárok lekérdezése a mayorból + global $m2n,$log; + $ret = array(); + $q = "SELECT userAccount, email, tanar.tanarId, tankorTanar.tankorId, TRIM(BOTH ' ' + FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, TRIM(BOTH ' ' + FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$m2n['isk_rovidnev'].".tanar, mayor_private.accounts, intezmeny_".$m2n['isk_rovidnev'].".tankorTanar, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' AND tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt + OR tanar.kiDt IS NULL) AND tanar.tanarId = tankorTanar.tanarId AND tankorTanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tankorTanar.kiDt OR tankorTanar.kiDt = '".$m2n['zaras_tartas']."' ) + AND tankorTanar.tankorId = tankorSzemeszter.tankorId AND tankorSzemeszter.tanev = ( + SELECT tanev + FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE statusz = 'aktív' + GROUP BY tanev) AND szemeszter = ( + SELECT szemeszter + FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDT = '".$m2n['zaras_tartas']."' )) + ORDER BY userAccount ; + "; + if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + $ret[] = $row; + } + mysqli_free_result($r); + } else { + echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (adatbázis) ********\n"; + } + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + + function get_mayor_diak($link){ // diákok lekérdezése + global $m2n,$log; + $ret = array(); + $req_oszt = "'#'"; + foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra + $req_oszt .= ",'$val'"; + } + $q = "SELECT tanev FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; + if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if( ($r = mysqli_query($link, $q)) !== FALSE ){ + $ev = mysqli_fetch_array($r, MYSQLI_ASSOC); + $q = "SELECT userAccount, email, diak.diakId, tankorDiak.tankorId, TRIM(BOTH ' ' + FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, TRIM(BOTH ' ' + FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$m2n['isk_rovidnev'].".diak, mayor_private.accounts,intezmeny_".$m2n['isk_rovidnev'].".tankorDiak, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + WHERE diak.diakId IN ( + SELECT diakId + FROM intezmeny_".$m2n['isk_rovidnev'].".osztalyDiak + WHERE osztalyId IN ( + SELECT osztalyId + FROM naplo_".$m2n['isk_rovidnev']."_".$ev['tanev'].".osztalyNaplo + WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") + ORDER BY osztalyId) + ORDER BY diakId) AND diak.statusz != 'jogviszonya lezárva' AND diak.statusz != 'felvételt nyert' AND diak.oId = accounts.studyId + AND tankorDiak.diakId = diak.diakId AND tankorDiak.beDt <= CURRENT_DATE() AND (tankorDiak.kiDt >= CURRENT_DATE() OR tankorDiak.kiDt IS NULL OR tankorDiak.kiDt = '".$m2n['zaras_tartas']."' ) + AND tankorSzemeszter.tankorId = tankorDiak.tankorId AND tankorSzemeszter.tanev = ( + SELECT tanev + FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE statusz = 'aktív' + GROUP BY tanev) AND tankorSzemeszter.szemeszter = ( + SELECT szemeszter + FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )) + ORDER BY userAccount; + "; + if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ +// mysqli_fetch_array($r, MYSQLI_ASSOC); + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + $ret[] = $row; + } + mysqli_free_result($r); + } else { + echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; + } + } else { + echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; + } + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + + +//--------------------------------------------------------------------------------------------------------------------------------------------// +// RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN // +//--------------------------------------------------------------------------------------------------------------------------------------------// + + + if(nxt_get_version() < 13){ //Nextcloud 13-tól támogatott + echo "\n\n******** Legalább Nextcloud 13-mas verzió szükséges! ********\n\n"; + die(); + } + if($printhelp === true){ + print_help(); + die(); + } + if ($m2n['manage_groupdirs'] === true && $m2n['manage_groups'] === false){ + print_help(); + die(); + } +//------------------------------------------------------------------------------------------------------------------------------- + + if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n\n"; $t_start = microtime(true); } + if(true) { echo "*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } + + if($printconfig === true){ + echo "\n Betöltött Konfig:\n"; + $m2l = $m2n; + $m2l['infotxt_szöveg'] = "<-- TEXT -->"; //Túl hosszú lenne kiprintelni + var_export($m2l); + echo "\n"; + } + $log['verbose'] = $m2n['verbose']; + if($debug === true) {$log['verbose'] = 100;} + if( $m2n['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } + + if(($link = db_connect($db)) == FALSE){ //csatlakozás + echo "\n******** MySQL (general) kapcsolat hiba. ********\n"; + echo "\n******** Script leáll... ********\n"; + die(); + } + $link2 = $link; + + // group_add($m2n['mindenki_csop']); // A "mindenki" csoport hozzáadása + // group_add($m2n['mindenki_tanar']); // A "mindenki"/tanár csoport hozzáadása + // group_add($m2n['mindenki_diak']); // A "mindenki"/diák csoport hozzáadása + + if(isset($db['mayor_user']) and isset($db['mayor_pass']) and isset($db['mayor_host']) or isset($db['mayor_port'])) + { + $db['user'] = $db['mayor_user']; //ha a mayor egy másik szerveren lenne + $db['pass'] = $db['mayor_pass']; + $db['host'] = $db['mayor_host']; + $db['port'] = $db['mayor_port']; + if(($link2 = db_connect($db)) == FALSE){ + echo "\n******** MySQL (mayor) kapcsolat hiba. ********\n"; + echo "\n******** Script leáll... ********\n"; + die(); + } else { + if ($log['verbose'] > 0 ){ echo "***\tMayor DB connect.\n"; } + } + } + + +//------------------------------------------------------------------------------------------------------------------------------ + +// Létrehozza az új coportokat a Mayor tankörök szerint + if ($log['verbose'] > 0 ){ echo "\n***\tCsoportok egyeztetése.\n";} + $tankorok = get_mayor_tankor($link2); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_csop'] ))); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_tanar'] ))); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_diak'] ))); + $nxt_csop = nxt_group_list(); + $elozo_tcsop = ""; + $mod_nxt_group = 0; + if($m2n['manage_groups'] === true){ + foreach($tankorok as $key => $val){ //Végignézi a tankörök szerint + foreach($nxt_csop as $key2 => $val2){ + if($key2 == $val['tankorNev']){ //Már van ilyen (tankör)nevű csoport + if ($log['verbose'] > 3 ){ echo " -\t Csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\tok.\n";} + $elozo_tcsop = $val['tankorNev']; + break; + } + } + unset($nxt_csop[$val['tankorNev']]); //Megvizsgálva, többször már nem kell dönteni róla. + if( $val['tankorNev'] == $elozo_tcsop and $key2 != $val['tankorNev'] ){ //Duplikált tankör(név) a Mayorban + if($log['verbose'] > 2 ){ echo "* -\t Dupla tankör:".po("\t".$val['tankorNev'], $m2n['csoportnev_hossz'],1)."-\tmayor.\n";} + } + else if($key2 != $val['tankorNev']){ //Ha nincs ilyen (tankör)nevű csoport + group_add($val['tankorNev']); //Akkor létrehozza + $mod_nxt_group++; + if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\thozzáadva.\n";} + } + } + + // A megszűnt tanköröket-csoportokat kitörli + foreach($nxt_csop as $key => $val){ + if(substr($key, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. + group_del($key); //elvégzi a törlést + $mod_nxt_group++; + if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t eltávolítva.\n";} + } else { + if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t békén hagyva.\n";} + } // Figyelem! A csoport prefix-szel: "(tk) " kezdődő csoportokat magáénak tekinti, automatikusan töröli! + } // Akkor is, ha az külön, kézzel lett létrehozva. + } + + + +//------------------------------------------------------------------------------------------------------------------------------- +// Felhasználónevek egyeztetése + if ($log['verbose'] > 0 ){ echo "\n***\tFelhasználók egyeztetése.\n";} + + $mayor_tanar = get_mayor_tanar($link2); //Rendezve jön + $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $m2n['mindenki_tanar']); //csak rendezett tömbökön! + $mayor_tanar = set_param_to_user($mayor_tanar, null, 'quota', $m2n['default_quota']); + $mayor_tanar = set_param_to_user($mayor_tanar, null, 'diakId', -1 ); + usort($mayor_tanar, "mayor_userlistcmp"); + + $mayor_diak = get_mayor_diak($link2); //mysql rendezi + $mayor_diak = add_tk_to_users( $mayor_diak, null, $m2n['mindenki_diak']); //csak rendezett tömbökön! + $mayor_diak = set_param_to_user($mayor_diak, null, 'quota', $m2n['diak_quota']); + $mayor_diak = set_param_to_user($mayor_diak, null, 'tanarId', -1 ); + usort($mayor_diak, "mayor_userlistcmp"); + + $mayor_user = array(); + $mayor_user = array_merge($mayor_tanar, $mayor_diak); //Tanár, és diák lista együtt + if(isset($m2n['megfigyelo_user']) && $m2n['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére + $mayor_user = array_merge($mayor_user, array( + array( 'userAccount' => $m2n['megfigyelo_user'], //A megfigyelő user legyen egyben virtuális tanár is + 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin Megfigyelő", + 'email' => $m2n['default_email'], + 'tankorNev' => $m2n['mindenki_tanar'], + ))); + foreach(get_mayor_tankor($link2) as $key => $val){ + $mayor_user = array_merge($mayor_user, array( + array( 'userAccount' => $m2n['megfigyelo_user'], + 'email' => $m2n['default_email'], + 'tanarId' => 1, + 'diakId' => 0, + 'tankorId' => $val['tankorId'], + 'fullName' => "Napló Admin Megfigyelő", + 'tankorNev' => $val['tankorNev'], + ))); + //if($val['tankorNev'] == "(tk) 10.b kémia" ){ break; } + + } + } + usort($mayor_user, "mayor_userlistcmp"); //rendezés + $mayor_user = add_tk_to_users( $mayor_user, null, $m2n['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport + usort($mayor_user, "mayor_userlistcmp"); //Végén ismét rendezzük az egészet + $mayor_user = array_merge($mayor_user, array(array('userAccount' => null, 'fullName' => null, 'tankorNev' => null, 'diakId' => 0, 'tanarId' => 0,)) ); //strázsa a lista végére + + $nxt_user = nxt_user_list(); + $nxt_group = nxt_group_list(); + $m2n_catalog = catalog_userlist($link); + $m2n_forbidden = catalog_forbiddenlist($link); + + if ($log['verbose'] > 3 ){ echo "\n";} + + foreach($mayor_user as $key => $val){ + //Lecseréli az ékezetes betűket a felhasználónévből + $mayor_user[$key]['userAccount'] = str_replace($search, $replace, $val['userAccount']); // (pl: Á->Aa, á->aa, ...) + if(in_array($mayor_user[$key]['userAccount'], $m2n_forbidden) ){ //És, ha a nyilvántartásban "forbidden"-ként szerepel, + unset($mayor_user[$key]); // akkor nem foglalkozik vele tovább. + } + } + + $curr = ""; + $tankorei = array(); + $mod_nxt_user_all = 0; + $mod_nxt_user = 0; + foreach($mayor_user as $key => $val){ //Végignézi a mayorból kinyert lista alapján. + + if($curr != $val['userAccount']){ //CSAK Rendezett tömbökön !! + foreach($nxt_user as $key2 => $val2){ + if($curr == $key2){ //Már létezik a felhasználó a Nextcloud-ban + $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tlétezik.\n"; + if ($log['verbose'] > 3 ){ echo " -".$log['curr']; $log['curr'] = "";} + if ( in_array($curr, $m2n_catalog['account'])){ //Benne van-e a nyilvántartásban? + if($m2n_catalog['status'][array_keys($m2n_catalog['account'], $curr)[0]] == 'disabled' ){ // Ha le lett tiltva + //if(user_info($curr)['enabled']!=true){ // Ez valós, de irtó lassú + catalog_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi, + user_ena($curr); // ha a script tiltotta le. + $mod_nxt_user++; + $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tengedélyezve.\n"; + if ($log['verbose'] > 2 ){ echo " -".$log['curr']; $log['curr'] = ""; } //Ez is változtatás + } + } else { //Nincs a katalógusban, nincs tiltva, felvesszük + 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";} + } + //--------------------------------------- QUOTA -----------------------------------// + if($m2n['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); + $mod_nxt_user++; + if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\t\n"; } + } + + if($m2n['manage_groups'] === true){ //Csak, ha a acsoportokhoz is nyúlunk + //------------------------- Tankörmappa györkér + info.txt ------------------------// + $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); + if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix'],$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} + if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + + //------------------------------------------ Tankörök egyeztetése -------------------------------------------// + 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 + 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 + $mod_nxt_user++; + } + + //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + + //------------------------------------- Tankör (Csoportból) törlés -------------------------// + } 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... + $mod_nxt_user++; + } + } + } + + //------------------------------------- Tankörmappa törlés + NXT-rescan ----------------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár + $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], $tankorei); + if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}} + if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}} + if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + } + $mod_nxt_user_all++; + break; + } + } + unset($nxt_user[$curr]); //Felhasználó Megvizsgálva, többször már nem kell dönteni róla. + if($curr != $key2 and $curr != null){ //Nincs még ilyen felhasználó + + 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"; } + $mod_nxt_user++; + + if($m2n['manage_groups'] === true){ + $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); + if ($ret[0] === true && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/",$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} + if ($ret[1] > 0 && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + + 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); + if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + } + } + $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + } + + 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 + } + $params['lang'] = $m2n['default_lang']; // Nyelv + if($curr_e == ""){ + $params['email'] = $m2n['default_email']; // e-mail beállítása + } else { + $params['email'] = $curr_e; // ha van a mysql-ben e-mail, akkor azt használja + } + user_set($curr,$params); //Alapértelmezett paraméterek érvényesítése + if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\tNyelv: ".$params['lang']."\tE-mail: ".$params['email']."\n";} + } + + unset($tankorei); + $tankorei = array(); // új ciklus kezdődik + $curr = $val['userAccount']; // + $curr_n = $val['fullName']; // + $curr_tanarId = $val['tanarId']; + $curr_diakId = $val['diakId']; + $curr_e = @$val['email']; // + } + $tankorei[] = $val['tankorNev']; // Másodszor/Egyébként a csoportok (tankörök) gyűjté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, + if(in_array($key, $m2n_catalog['account'])){ //vagyis a script adta hozzá korábban + if( nxt_user_lastlogin($key) == "1970-01-01T00:00:00+00:00" ){ //Még soha nem lépett be = 1970.01.01 ?? + user_del($key); //Akkor törli + catalog_userdel($link, $key); //A listáról is + if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\ttörölve.\n"; } + } else { + user_dis($key); //Különben csak letiltja (fájlok ne vesszenek el) + catalog_userdis($link, $key); //Feljegyzi a nyilvántartásba + if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\tletiltva.\n"; } + } + $mod_nxt_user++; + $mod_nxt_user_all++; + } + // döntési logika: + // ha benne van a $mayor_user-ben, + // - 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 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) + // (hiszen, ha aktív lenne, rajta lenne a $mayor_user listán, és kihúzta volna a $nxt_user-ből) + } + +// Végül a nyilvántartás kipucolása + if ($log['verbose'] > 0 ){ echo "\n***\tNyilvántartás ellenőrzése.\n";} + $nxt_user = nxt_user_list(); + $m2n_catalog = catalog_userlist($link); + $m2n_forbidden = catalog_forbiddenlist($link); + + foreach($m2n_catalog['account'] as $key => $val){ + if(@$nxt_user[$val] === null ){ //Erre a nextcloud "occ" parancs hibakezelése miatt van szükség + if ($log['verbose'] > 4 ){ echo "**-\tFelhasználónév:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tkivéve a nyilvántartásból.\n";} + catalog_userdel($link, $val); + } + } + foreach($m2n_forbidden as $key => $val){ //Szinkronizálja a $m2n['kihagy'] listát a nyilvántartással. + if(!in_array($val, $m2n['kihagy'])){ + if ($log['verbose'] > 4 ){ echo "**-\tFelhasználó:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tújra kezelve.\n";} + catalog_userena($link,$val); + user_ena($val); + } + } + +//------------------------------------------------------------------------------------------------------------------------------- + +//test +//script_install($link); + if ($log['verbose'] > 0 ){ echo "\n\nStatisztikák:\n";} + if ($log['verbose'] > 0 ){ echo "Összes művelet: ".($mod_nxt_user + $mod_nxt_group)."db.\n";} + if ($log['verbose'] > 0 ){ echo "Feldolgozva: ".$mod_nxt_user_all."db felhasználó.\n";} + if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_user."db a Nextcloud felhasználói beállításokban.\n";} + if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_group."db a Nextcloud csoport beállításokban.\n";} + + + @mysqli_close($link2); + @mysqli_close($link); + $t_run = round((microtime(true) - $t_start)/60, 3); + if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run." min.)\nkész.\n";} //endline + +} else { + echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; +} + + + +?> + -- cgit v1.2.3 From 70367949604db96e10ebd772f05b9d9b59809c5c Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 6 Sep 2020 12:06:40 +0200 Subject: M2N: Leírás --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 181 ++++++++++++----------- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 11 +- 2 files changed, 105 insertions(+), 87 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 31ddf942..48cbffcc 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -270,24 +270,117 @@ Támogatja a külön, illetve az egy, közös szerverre történő telepítésé A Nextcloud 13-mas és újabb verzióival használható. FONTOS! - Legalább "php7.0" és "Apache 2.4" kell hozzá! + Legalább "php7.0" és "Apache 2.4" kell hozzá! Beállítása az alábbiak szerint: (egy lehetséges elrendezés) -(I.) Először telepítsünk föl egy Nextcloud(legalább 13-mas verzió) szervert egy Debian (9-es vagy magasabb verzió) szerverre, - a Nextcloudnek szüksége van e-mail küldés (smtp) szolgáltatásra is. (ez lehet külső, pl.: google) - Bővebb leírást a telepítésről a "Nextcloud Admin Manual" oldalon találunk. + a Nextcloudnak szüksége van e-mail küldés (smtp) szolgáltatásra is. (ez lehet külső, pl.: google) + Bővebb leírást a telepítésről az interneten "Nextcloud Admin Manual"-ra keresve találunk. -(II.) Helyezzük el a "mayor-nextcloud.php"-t biztos, védett helyre,a nextcloud szerveren, akár a /etc/ mappába, akár a /root könyvtárba, ezt később "root"-ként kell majd futtatnunk, és mysql jelszó is lehet/van benne, ezért ennek megfelelően védeni kell. Állítsuk be a tulajdonost, és korlátozzuk a jogosultságokat! (chown root; chmod 600) - Majd töltsük ki a konfigurációs fájlt az alább felsorolt beállítások szerint! +-(III.) Majd töltsük ki a konfigurációs fájlt (mayor-nextcloud.cfg.php) az alább felsorolt beállítások szerint! + (Ennek is állísunk (ugyanolyan)szigorú jogosultságokat, mint a fenti esetben! ) +-(IV.) Ezután, a script, az első futtatásnál automatikusan telepíti magát. + Ez azt jelenti, hogy létrehoz egy mysql adatbázist saját magának, ahol később nyilvántartja, hogy melyek azoka felhasználók, amelyeket ő hozott létre. + Így később, a folyamatos nyilvántartás révén a script a saját maga által létrehozott felhasználókat veszi csak figyelembe, + a többi, a más által létrehozott Nextcloud felhasználókhoz alapvetően nem nyúl. + Ez később felülbírálható, ha a script nyilvántartási adatbázisába kézzel felvesszük az adott felhasználó nevét. --(III.) A "mayor-nextcloud.cfg.php" fajl elején találhatóak a konfigurációs adatok, ezeket a következőképpen módosíthatjuk: + + + +-(V.) A mayor-nextcloud script működése néhány mondatban: + + Első lépésben lekérdezi a feltételeknek megfelelő tanköröket a mayorból, (tankör-osztály évfolyama, tankör aktív-e a dátumok apaján) + majd ez alapján ellenőrzi, hogy a Nextcloud-ban már szerepelnek-e ezen tankörneveknek megfelelő csoportok. + Ha új tankör van a mayorban, akkor azt a Nextcloud-ban is létrehozza, ha egy tankört töröltek a mayorból, akkor azt a csoportot Nextcloud-ból is törli. + Fontos! + A csoport prefix-szel, például: "(tk) "-val kezdődő csoportokat magáénak tekinti, és ha nem találja a mayorban, akkor automatikusan töröli! + + Második lépésben lekérdezi a felhasználókat a mayorból, (jogviszony státusz, évfolyam, kapcsolódó tankörök) + csak azokat a tanárokat, illetve diákokat veszi figyelembe, akinek a státusza nem "jogviszonya lezárva", vagy nem "felvételt nyert". + Ha az illető még nem rendelkezik felhasználónévvel a Nextcloud-ban, akkor létrehozza, + - ha a mayorban, az "intezmeny_xxx.diak", illetve az "intezmeny_xxx.tanar" táblákon van beállított e-mail címe, akkor azt használja, + - ha nincs, akkor az alapértelmezettet állítja be a Nextcloud-ba, valamint ekkor állítódik be az alapértelmezett qvóta, és a felhasználó valódi neve is. + (Ezeket később Rendszergazdai, és Felhasználói oldalról változtatni lehet, értelemszerűen.) + Ha az illető már rendelkezik felhasználónévvel, de az le volt tiltva, akkor újra engedélyezi. + + Ezután egyezteti a tankör-csoport összerendeléseket, ha az illető új tankörbe került be, akkor belépteti a megfelelő csportba, + ha kikerült egy tankörből, akkor a csoportból is kilépteti. + + Végül ellenőrzi a kiléptetndő felhasználókat. + Ha velekinek a státusza a mayorban "jogviszonya lezárva"-ra változott, vagy a felhasználónevét a mayorból törölték, akkor + - ha még nem lépett be soha a Nextcloudba, akkor a felhasználót fizikailag törli. + - ha már használta a fiókját, akkor csak letiltja, azért, hogy a fájljai ne vesszenek el automatikusan. + (Ez, utóbbi esetben a Rendszergazdának kell külön elvégezni a törlést.) + + + + +- (VI.) További Információk: + + Esetleg érdemes lehet a scriptet betenni a "cron"-ba (éjszakára), így naponta lefut, és követi napló változásait. + (Ez esetben figyelni kell arra, hogy mayorban a tankör-diák, tankör-tanár összerendelések az év végén lejárhatnak, (pl. júni. 15-én) + így a script futtatása júni. 16-án kitörli, letiltja az összes létrehozott mayor-os csoportot, és felhasználót a nextcloud-ból, + amely csak a script szept. 1-je után történő futtatásával hozható vissza, + ezért érdemes lehet a script automatikus futtatását átmenetileg júni. 15. és szept. 1. között felfüggeszteni. ) + (pl: /etc/crontab -ban + 01 3 * * * root php -f /root/mayor-nextcloud.php ) + + + A mayor által ajánlott "Vezetéknév.Keresztnév" típusú felhasználónév formátum, bár hasznos, mert könnyen megjegyezhető, + viszont (sajnos) egyáltalán nem POSIX kompatibilis (amely csak az angol ABC betűit +pár kiegészítő karaktert engedélyez) + így a legtöbb rendszerrel nem hozható összhangba, ezért szükség van az ékezetes karakterek lecserélésére. + + A karakterek cseréje az alábbi módon történik: + + á --> aa Á --> Aa + ä --> ae Ä --> Aae + é --> ee É --> Ee Például: + í --> ii Í --> Ii Vezetéknév.Keresztnév --> Vezeteekneev.Keresztneev + ó --> oo Ó --> Oo Bőrönd.Ödön --> Booeroend.Oedoen + ö --> oe Ö --> Oe + ő --> ooe Ő --> Ooe Ha a mayor felhasználónév nem tartalmaz ékezetes betűt, + ú --> uu Ú --> Uu akkor nem történik csere, a felhasználónév marad az eredeti. + ü --> ue Ü --> Ue + ű --> uue Ű --> Uue + + Ezeket a karakter cseréket maga a script végzi, futás közben, a mayor felhasználónevekből, + a létrejövő Nextcloud felhasználónév már a lecserélt változat lesz. + + + + +-(VII.) További Paraméterek / Kapcsolók: + + --help : Help kiírása. + --debug : Ugyanaz mint a "--loglevel 100" + --loglevel x : A bőbeszédűséget/logolást tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. + --config-file : Konfig fájl elérési útvonala. + --config-print : A betöltött konfig kiírása. + --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, + csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. + --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, + egyébként kapcsoló nélküli híváskor, (pl: automatikusan, a napi futásban éjjel), az összes tanárnak egyszerre. + --manage-groups <1/0> : Ha 1: A felhasználókat csoportokba rendezi a MaYor tankörök szerint, ha 0, nem foglalkozik a csoportokkal. + --manage-groupdirs <1/0> : Ha 1: tankörmappákat hoz létre a tankör-csoportokhoz, ha 0, nem foglalkozik vele. (kell hozzá a --manage-groups is!) + + + FONTOS!! + A Nextcloud szerver "occ" parancsa elérhető kell legyen a script számára! + Az "occ" parancs működését pl. az: (>>> sudo -u www-data php /var/www/nextcloud/occ ) kiadásával ellenőrizzük! + + + + +-(VIII.) A "mayor-nextcloud.cfg.php" fajl elején találhatóak a konfigurációs adatok, ezeket a következőképpen módosíthatjuk: $db['host'] = "localhost"; //Ez a nextcloud alatt futó mysql elérhetősége. @@ -417,86 +510,8 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) - FONTOS!! - A Nextcloud szerver "occ" parancsa elérhető kell legyen a script számára! - Az "occ" parancs működését pl. az: (>>> sudo -u www-data php /var/www/nextcloud/occ ) kiadásával ellenőrizzük! - - - - További Paraméterek / Kapcsolók: - - --help : Help kiírása. - --debug : Ugyanaz mint a "--loglevel 100" - --loglevel x : A bőbeszédűséget/logolást tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. - --config-file : Konfig fájl elérési útvonala. - --config-print : A betöltött konfig kiírása. - --set-diak-quota : Az összes diák qvótáját átállítja az "$m2n['diak_quota'] = x" -nél megadott értékre, - csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne. - --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, - egyébként kapcsoló nélküli híváskor, (pl: automatikusan, a napi futásban éjjel), az összes tanárnak egyszerre. - --manage-groups <1/0> : Ha 1: A felhasználókat csoportokba rendezi a MaYor tankörök szerint, ha 0, nem foglalkozik a csoportokkal. - --manage-groupdirs <1/0> : Ha 1: tankörmappákat hoz létre a tankör-csoportokhoz, ha 0, nem foglalkozik vele. (kell hozzá a --manage-groups is!) - - - - További Információk: - - Esetleg érdemes lehet a scriptet betenni a "cron"-ba (éjszakára), így naponta lefut, és követi napló változásait. - (Ez esetben figyelni kell arra, hogy mayorban a tankör-diák, tankör-tanár összerendelések az év végén lejárhatnak, (pl. júni. 15-én) - így a script futtatása júni. 16-án kitörli, letiltja az összes létrehozott mayor-os csoportot, és felhasználót a nextcloud-ból, - amely csak a script szept. 1-je után történő futtatásával hozható vissza, - ezért érdemes lehet a script automatikus futtatását átmenetileg júni. 15. és szept. 1. között felfüggeszteni. ) - (pl: /etc/crontab -ban - 01 3 * * * root php -f /root/mayor-nextcloud.php ) - - - A mayor által ajánlott "Vezetéknév.Keresztnév" típusú felhasználónév formátum, bár hasznos, mert könnyen megjegyezhető, - viszont (sajnos) egyáltalán nem POSIX kompatibilis (amely csak az angol ABC betűit +pár kiegészítő karaktert engedélyez) - így a legtöbb rendszerrel nem hozható összhangba, ezért szükség van az ékezetes karakterek lecserélésére. - - A karakterek cseréje az alábbi módon történik: - - á --> aa Á --> Aa - ä --> ae Ä --> Aae - é --> ee É --> Ee Például: - í --> ii Í --> Ii Vezetéknév.Keresztnév --> Vezeteekneev.Keresztneev - ó --> oo Ó --> Oo Bőrönd.Ödön --> Booeroend.Oedoen - ö --> oe Ö --> Oe - ő --> ooe Ő --> Ooe Ha a mayor felhasználónév nem tartalmaz ékezetes betűt, - ú --> uu Ú --> Uu akkor nem történik csere, a felhasználónév marad az eredeti. - ü --> ue Ü --> Ue - ű --> uue Ű --> Uue - - Ezeket a karakter cseréket maga a script végzi, futás közben, a mayor felhasználónevekből, - a létrejövő Nextcloud felhasználónév már a lecserélt változat lesz. - - A mayor-nextcloud script működése néhány mondatban: - - Első lépésben lekérdezi a feltételeknek megfelelő tanköröket a mayorból, (tankör-osztály évfolyama, tankör aktív-e a dátumok apaján) - majd ez alapján ellenőrzi, hogy a Nextcloud-ban már szerepelnek-e ezen tankörneveknek megfelelő csoportok. - Ha új tankör van a mayorban, akkor azt a Nextcloud-ban is létrehozza, ha egy tankört töröltek a mayorból, akkor azt a csoportot Nextcloud-ból is törli. - Fontos! - A csoport prefix-szel, például: "(tk) "-val kezdődő csoportokat magáénak tekinti, és ha nem találja a mayorban, akkor automatikusan töröli! - - Második lépésben lekérdezi a felhasználókat a mayorból, (jogviszony státusz, évfolyam, kapcsolódó tankörök) - csak azokat a tanárokat, illetve diákokat veszi figyelembe, akinek a státusza nem "jogviszonya lezárva", vagy nem "felvételt nyert". - Ha az illető még nem rendelkezik felhasználónévvel a Nextcloud-ban, akkor létrehozza, - - ha a mayorban, az "intezmeny_xxx.diak", illetve az "intezmeny_xxx.tanar" táblákon van beállított e-mail címe, akkor azt használja, - - ha nincs, akkor az alapértelmezettet állítja be a Nextcloud-ba, valamint ekkor állítódik be az alapértelmezett qvóta, és a felhasználó valódi neve is. - (Ezeket később Rendszergazdai, és Felhasználói oldalról változtatni lehet, értelemszerűen.) - Ha az illető már rendelkezik felhasználónévvel, de az le volt tiltva, akkor újra engedélyezi. - - Ezután egyezteti a tankör-csoport összerendeléseket, ha az illető új tankörbe került be, akkor belépteti a megfelelő csportba, - ha kikerült egy tankörből, akkor a csoportból is kilépteti. - - Végül ellenőrzi a kiléptetndő felhasználókat. - Ha velekinek a státusza a mayorban "jogviszonya lezárva"-ra változott, vagy a felhasználónevét a mayorból törölték, akkor - - ha még nem lépett be soha a Nextcloudba, akkor a felhasználót fizikailag törli. - - ha már használta a fiókját, akkor csak letiltja, azért, hogy a fájljai ne vesszenek el automatikusan. - (Ez, utóbbi esetben a Rendszergazdának kell külön elvégezni a törlést.) - diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index e30d0dbb..19fbfe14 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -113,7 +113,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 4 ){ echo "*\tSikeres kapcsolódás. (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n"; } mysqli_set_charset($l, "utf8"); mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); - if(mysqli_query($l, "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register;" ) == FALSE ){ + if(mysqli_query($l, "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register LIMIT 10;" ) == FALSE ){ script_install($l); } return $l; @@ -250,7 +250,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { $e = "export OC_PASS=".escp($m2n['default_passw'])."; su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($m2n['mindenki_csop'])." ".escp($userAccount)." \"" ; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $ret = shell_exec($e); + if ($log['verbose'] > 11 ){ print_r($ret); } } } @@ -262,11 +263,13 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if($last_login == "1970-01-01T00:00:00+00:00" ){ $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); // akkor törölhető + $ret = shell_exec($e); // akkor törölhető + if ($log['verbose'] > 11 ){ print_r($ret); } } else { $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); // különben csak letiltja + $ret = shell_exec($e); // különben csak letiltja + if ($log['verbose'] > 11 ){ print_r($ret); } } } -- cgit v1.2.3 From 01cc685366173b7bccb0fdf037c9bbd948910faa Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 20 Feb 2021 03:03:31 +0100 Subject: M2N -> Zárás tartás -> javítva --- "egy\303\251b/nextcloud/README" | 2 +- "egy\303\251b/nextcloud/mayor-ldap.php" | 61 +++++++++- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 160 +++++++++++++-------------- 3 files changed, 138 insertions(+), 85 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/README" "b/egy\303\251b/nextcloud/README" index 85eb8da5..cac6a972 100644 --- "a/egy\303\251b/nextcloud/README" +++ "b/egy\303\251b/nextcloud/README" @@ -1,4 +1,4 @@ - + Nextcloud(13) - Mayor script Ezen script segítségével a Mayor-naplóból tudunk felhasználókat és csoportokat importálni a Nextcloud felhőbe, diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index e30d0dbb..b811612e 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -87,7 +87,7 @@ function print_help(){ } -if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Improved) és php7 kell! +if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', '>=')) { //MySQLi (Improved) és php7 kell! function db_connect(array $db){ global $log; @@ -777,6 +777,63 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im return $ret; } +//----------------------------------------------------------------------------------------------------------------------------------------------------- + +var_dump( version_compare(phpversion(), '7.0', '<=')); +echo "\n\n".phpversion()."\n\n"; + +die(); +$server = "10.100.3.3"; //this is the LDAP server you're connecting with +$port = "636"; +$ld = ldap_connect("ldaps://$server:$port"); //always connect securely via LDAPS when possible + +ldap_set_option($ld, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER); +// LDAP_OPT_X_TLS_NEVER, LDAP_OPT_X_TLS_HARD, LDAP_OPT_X_TLS_DEMAND, LDAP_OPT_X_TLS_ALLOW, LDAP_OPT_X_TLS_TRY +ldap_set_option($ld, LDAP_OPT_NETWORK_TIMEOUT, 10); +ldap_set_option($ld, LDAP_OPT_PROTOCOL_VERSION, 3); +ldap_set_option($ld, LDAP_OPT_REFERRALS, 0); + + + +$basedn = "DC=ad,DC=bmrg,DC=lan"; +ldap_set_option($ld, LDAP_OPT_MATCHED_DN, $basedn); + + +$ldapbind = ldap_bind($ld, $dn, $pass); //this is the point we are authenticating + + + + +print_r($ldapbind); +echo "\n---\n"; + +$dn = "dc=ad,dc=bmrg,dc=lan"; //very important: in which part of your database are you looking +$filter = "(objectclass=*)"; //don't filter anyone out (every user has a uid) +$sr = ldap_search($ld, $dn, $filter) or die ("bummer"); //define your search scope + +$results = ldap_get_entries($ld, $sr); //here we are pulling the actual entries from the search we just defined +print_r($results); //will give you all results is array form. +echo "\n--\n"; + +//did the connecting and binding +$dn = "cn=bikeowners,cn=groups,dc=server,dc=example,dc=com"; //note the extra "cn=groups" for looking in a group that is not "users" +$filter = "email=*"; //email address must be set but can be anything +$sr = ldap_search($ld, $dn, $filter) or die ("bummer"); //define your search scope + + +ldap_close($ld); + + + + + + + + + + + + //--------------------------------------------------------------------------------------------------------------------------------------------// @@ -816,7 +873,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im echo "\n******** MySQL (general) kapcsolat hiba. ********\n"; echo "\n******** Script leáll... ********\n"; die(); - } + } $link2 = $link; // group_add($m2n['mindenki_csop']); // A "mindenki" csoport hozzáadása diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 19fbfe14..e95270b5 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -87,7 +87,7 @@ function print_help(){ } -if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Improved) és php7 kell! +if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', '>=')) { //MySQLi (Improved) és php7 kell! function db_connect(array $db){ global $log; @@ -538,7 +538,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } function groupdir_create_groupdir($user, $oktId, $path){ // $path = tankörmappa - global $m2n; + global $m2n,$log; $ret = false; if( basename($path,"_beadás") != $m2n['mindenki_tanar'] and basename($path,"_beadás") != $m2n['mindenki_diak'] and basename($path,"_beadás") != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ @@ -553,7 +553,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path=tankörgyökér - global $m2n; + global $m2n,$log; $ret = array(array(),array(),array(),false,false); //return sekelton if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ if(isset($tankorei)) { @@ -634,6 +634,26 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im return $inp; } + function get_mayor_szemeszter($link) { + global $m2n,$log; + $ret = array(); + $q = "SELECT * FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter + WHERE ((statusz = 'aktív' OR statusz = 'lezárt') AND zarasDt = '".$m2n['zaras_tartas']."') + OR (statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND CURRENT_DATE() <= zarasDt) ; + "; + if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if( ($r = mysqli_query($link, $q)) !== FALSE ){ + $ret = mysqli_fetch_array($r, MYSQLI_ASSOC); + mysqli_free_result($r); + } else { + echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; + } + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } + + + function get_mayor_tankor($link){ // A tankörök neveinek lekérdezése a mayorból global $m2n,$log; @@ -642,35 +662,18 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra $req_oszt .= ",'$val'"; } -//Létező összes tankör: -/* $q = "SELECT tankorId, TRIM(BOTH ' ' - FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE tanev = ( - SELECT tanev - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' - GROUP BY tanev) AND szemeszter = ( - SELECT szemeszter - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )); "; -*/ -//csak a megadott évfeolyamokhoz kötődő tankörök: - $qq = "SELECT tanev FROM intezmeny_".mysqli_real_escape_string($link, $m2n['isk_rovidnev']).".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$qq."\n"; } - if( ($r = mysqli_query($link, $qq)) !== FALSE ){ - $ev = mysqli_fetch_array($r, MYSQLI_ASSOC); - $q = "SELECT tankorId, TRIM(BOTH ' ' - FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + $ev = get_mayor_szemeszter($link); + if(!empty($ev)){ + //Létező összes tankör: + /* $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + WHERE tanev = '".$ev['tanev']."' AND szemeszter = '".$ev['szemeszter']."'; + "; + */ + //csak a megadott évfeolyamokhoz kötődő tankörök: + $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE tanev = ( - SELECT tanev - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' - GROUP BY tanev) AND szemeszter = ( - SELECT szemeszter - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."')) AND tankorId IN( + WHERE tanev = '".$ev['tanev']."' AND szemeszter = '".$ev['szemeszter']."' AND tankorId IN( SELECT tankorId FROM intezmeny_".$m2n['isk_rovidnev'].".tankorOsztaly WHERE osztalyId IN ( @@ -689,6 +692,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } else { echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; } + } else { + echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -698,28 +703,27 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im function get_mayor_tanar($link){ // A tanárok lekérdezése a mayorból global $m2n,$log; $ret = array(); - $q = "SELECT userAccount, email, tanar.tanarId, tankorTanar.tankorId, TRIM(BOTH ' ' - FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, TRIM(BOTH ' ' - FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".tanar, mayor_private.accounts, intezmeny_".$m2n['isk_rovidnev'].".tankorTanar, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' AND tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt - OR tanar.kiDt IS NULL) AND tanar.tanarId = tankorTanar.tanarId AND tankorTanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tankorTanar.kiDt OR tankorTanar.kiDt = '".$m2n['zaras_tartas']."' ) - AND tankorTanar.tankorId = tankorSzemeszter.tankorId AND tankorSzemeszter.tanev = ( - SELECT tanev - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' - GROUP BY tanev) AND szemeszter = ( - SELECT szemeszter - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDT = '".$m2n['zaras_tartas']."' )) - ORDER BY userAccount ; - "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } - if(( $r = mysqli_query($link, $q)) !== FALSE ){ - while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { - $ret[] = $row; + $ev = get_mayor_szemeszter($link); + if(!empty($ev)){ + $q = "SELECT userAccount, email, tanar.tanarId, tankorTanar.tankorId, + TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, + TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$m2n['isk_rovidnev'].".tanar, mayor_private.accounts, intezmeny_".$m2n['isk_rovidnev'].".tankorTanar, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' AND tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt OR tanar.kiDt IS NULL) + AND tanar.tanarId = tankorTanar.tanarId AND tankorTanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tankorTanar.kiDt OR tankorTanar.kiDt = '".$m2n['zaras_tartas']."' ) + AND tankorTanar.tankorId = tankorSzemeszter.tankorId + AND tankorSzemeszter.tanev = '".$ev['tanev']."' AND szemeszter = '".$ev['szemeszter']."' + ORDER BY userAccount ; + "; + if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + $ret[] = $row; + } + mysqli_free_result($r); + } else { + echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (adatbázis) ********\n"; } - mysqli_free_result($r); } else { echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (adatbázis) ********\n"; } @@ -735,37 +739,29 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra $req_oszt .= ",'$val'"; } - $q = "SELECT tanev FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } - if( ($r = mysqli_query($link, $q)) !== FALSE ){ - $ev = mysqli_fetch_array($r, MYSQLI_ASSOC); - $q = "SELECT userAccount, email, diak.diakId, tankorDiak.tankorId, TRIM(BOTH ' ' - FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, TRIM(BOTH ' ' - FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".diak, mayor_private.accounts,intezmeny_".$m2n['isk_rovidnev'].".tankorDiak, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE diak.diakId IN ( - SELECT diakId - FROM intezmeny_".$m2n['isk_rovidnev'].".osztalyDiak - WHERE osztalyId IN ( - SELECT osztalyId - FROM naplo_".$m2n['isk_rovidnev']."_".$ev['tanev'].".osztalyNaplo - WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") - ORDER BY osztalyId) - ORDER BY diakId) AND diak.statusz != 'jogviszonya lezárva' AND diak.statusz != 'felvételt nyert' AND diak.oId = accounts.studyId - AND tankorDiak.diakId = diak.diakId AND tankorDiak.beDt <= CURRENT_DATE() AND (tankorDiak.kiDt >= CURRENT_DATE() OR tankorDiak.kiDt IS NULL OR tankorDiak.kiDt = '".$m2n['zaras_tartas']."' ) - AND tankorSzemeszter.tankorId = tankorDiak.tankorId AND tankorSzemeszter.tanev = ( - SELECT tanev - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' - GROUP BY tanev) AND tankorSzemeszter.szemeszter = ( - SELECT szemeszter - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )) - ORDER BY userAccount; + $ev = get_mayor_szemeszter($link); + if(!empty($ev)){ + $q = "SELECT userAccount, email, diak.diakId, tankorDiak.tankorId, + TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, + TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$m2n['isk_rovidnev'].".diak, mayor_private.accounts,intezmeny_".$m2n['isk_rovidnev'].".tankorDiak, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + WHERE diak.diakId IN ( + SELECT diakId + FROM intezmeny_".$m2n['isk_rovidnev'].".osztalyDiak + WHERE osztalyId IN ( + SELECT osztalyId + FROM naplo_".$m2n['isk_rovidnev']."_".$ev['tanev'].".osztalyNaplo + WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") + ORDER BY osztalyId) + ORDER BY diakId) + AND diak.statusz != 'jogviszonya lezárva' AND diak.statusz != 'felvételt nyert' AND diak.oId = accounts.studyId + AND tankorDiak.diakId = diak.diakId AND tankorDiak.beDt <= CURRENT_DATE() AND (tankorDiak.kiDt >= CURRENT_DATE() OR tankorDiak.kiDt IS NULL OR tankorDiak.kiDt = '".$m2n['zaras_tartas']."' ) + AND tankorSzemeszter.tankorId = tankorDiak.tankorId + AND tankorSzemeszter.tanev = '".$ev['tanev']."' AND tankorSzemeszter.szemeszter = '".$ev['szemeszter']."' + ORDER BY userAccount; "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ -// mysqli_fetch_array($r, MYSQLI_ASSOC); while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $ret[] = $row; } @@ -774,8 +770,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; } } else { - echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; - } + echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; + } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; } -- cgit v1.2.3 From 34ddfeaa047c1e92c3eaf013c4169ff7b25c4020 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sat, 20 Feb 2021 03:21:57 +0100 Subject: M2N: Zárás tartás lekérdezés jav. --- "egy\303\251b/nextcloud/mayor-ldap.php" | 4 ++-- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index b811612e..96648202 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -794,8 +794,8 @@ ldap_set_option($ld, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ld, LDAP_OPT_REFERRALS, 0); - -$basedn = "DC=ad,DC=bmrg,DC=lan"; + +$basedn = "DC=ad,DC=bmrg,DC=lan"; ldap_set_option($ld, LDAP_OPT_MATCHED_DN, $basedn); diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index e95270b5..3dbf0323 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -646,7 +646,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' $ret = mysqli_fetch_array($r, MYSQLI_ASSOC); mysqli_free_result($r); } else { - echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; + echo "\nMAY ->\t ******** Mayor_napló (szemeszter)lekérdezési hiba. (adatbázis) ********\n"; } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -712,7 +712,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' AND tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt OR tanar.kiDt IS NULL) AND tanar.tanarId = tankorTanar.tanarId AND tankorTanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tankorTanar.kiDt OR tankorTanar.kiDt = '".$m2n['zaras_tartas']."' ) AND tankorTanar.tankorId = tankorSzemeszter.tankorId - AND tankorSzemeszter.tanev = '".$ev['tanev']."' AND szemeszter = '".$ev['szemeszter']."' + AND tankorSzemeszter.tanev = '".$ev['tanev']."' AND tankorSzemeszter.szemeszter = '".$ev['szemeszter']."' ORDER BY userAccount ; "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } -- cgit v1.2.3 From bec6f8a76f979c403b0c358d3aa6fa4df5a947e6 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 21 Feb 2021 05:08:26 +0100 Subject: M2N: Dátumtartás jó --- "egy\303\251b/nextcloud/mayor-ldap.php" | 2 +- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 100 +++++++++++++++++---------- 2 files changed, 65 insertions(+), 37 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index 96648202..c51e18bf 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -799,7 +799,7 @@ $basedn = "DC=ad,DC=bmrg,DC=lan"; ldap_set_option($ld, LDAP_OPT_MATCHED_DN, $basedn); -$ldapbind = ldap_bind($ld, $dn, $pass); //this is the point we are authenticating +$ldapbind = ldap_bind($ld, $cfg['rootBindDn'], $cfg['rootBindPass']); //this is the point we are authenticating diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 3dbf0323..9c14d88b 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -585,6 +585,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' if(!isset($val['diakId'])){ //workaround $val['diakId'] = 0; } + /* $list = array_merge($list, array( array( 'userAccount' => $val['userAccount'], 'email' => $val['email'], @@ -593,8 +594,17 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' 'tankorId' => 0, 'fullName' => $val['fullName'], 'tankorNev' => $tankorname, - ))); + ) + ) + ); + */ + $list = array_merge($list, array( $val)); + + $list[$key]['tankorNev'] = $tankorname; + $list[$key]['tankorId'] = 0; + + if($user !== null && $val['userAccount'] == $user ){ // Null -> mindenkihez, "user" -> csak neki break; } @@ -634,16 +644,14 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' return $inp; } - function get_mayor_szemeszter($link) { + function get_mayor_szemeszter($link, $date) { global $m2n,$log; $ret = array(); - $q = "SELECT * FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE ((statusz = 'aktív' OR statusz = 'lezárt') AND zarasDt = '".$m2n['zaras_tartas']."') - OR (statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND CURRENT_DATE() <= zarasDt) ; - "; + $q = "SELECT * FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter WHERE (statusz = 'aktív' OR statusz = 'lezárt') AND kezdesDt <= '".$date."' ORDER BY zarasDt DESC LIMIT 1; "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } if( ($r = mysqli_query($link, $q)) !== FALSE ){ $ret = mysqli_fetch_array($r, MYSQLI_ASSOC); + $ret["reqDt"] = $date; //szükség lehet a megkérdezett dt-re is mysqli_free_result($r); } else { echo "\nMAY ->\t ******** Mayor_napló (szemeszter)lekérdezési hiba. (adatbázis) ********\n"; @@ -662,23 +670,23 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra $req_oszt .= ",'$val'"; } - $ev = get_mayor_szemeszter($link); - if(!empty($ev)){ + $szm = get_mayor_szemeszter($link, $m2n['zaras_tartas']); + if(!empty($szm)){ //Létező összes tankör: /* $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE tanev = '".$ev['tanev']."' AND szemeszter = '".$ev['szemeszter']."'; + WHERE tanev = '".$szm['tanev']."' AND szemeszter = '".$szm['szemeszter']."'; "; */ //csak a megadott évfeolyamokhoz kötődő tankörök: $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE tanev = '".$ev['tanev']."' AND szemeszter = '".$ev['szemeszter']."' AND tankorId IN( + WHERE tanev = '".$szm['tanev']."' AND szemeszter = '".$szm['szemeszter']."' AND tankorId IN( SELECT tankorId FROM intezmeny_".$m2n['isk_rovidnev'].".tankorOsztaly WHERE osztalyId IN ( SELECT osztalyId - FROM naplo_".$m2n['isk_rovidnev']."_".$ev['tanev'].".osztalyNaplo + FROM naplo_".$m2n['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") ORDER BY osztalyId) ORDER BY tankorId ) ORDER BY tankorNev; @@ -703,18 +711,26 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function get_mayor_tanar($link){ // A tanárok lekérdezése a mayorból global $m2n,$log; $ret = array(); - $ev = get_mayor_szemeszter($link); - if(!empty($ev)){ - $q = "SELECT userAccount, email, tanar.tanarId, tankorTanar.tankorId, - TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, - TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + $szm = get_mayor_szemeszter($link, $m2n['zaras_tartas']); + if(!empty($szm)){ + $q = "SELECT accounts.userAccount, accounts.mail, tanar.email, tanar.tanarId, tankorTanar.tankorId, tanar.oId, '' AS employeeId, + tanar.beDt, tanar.kiDt, '' AS kezdoTanev, '' AS vegzoTanev, '' AS jel, '' AS beEv, '' AS osztalyJel, + tanar.viseltNevElotag, tanar.viseltCsaladinev, tanar.viseltUtonev, + tanar.szuletesiHely,tanar.szuletesiIdo, '' as lakhelyOrszag, '' as lakhelyHelyseg, '' as lakhelyIrsz, + '' AS lakHely, '' AS telefon, '' AS mobil, tanar.statusz, 'Tanár' AS beoszt, + TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, + TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev FROM intezmeny_".$m2n['isk_rovidnev'].".tanar, mayor_private.accounts, intezmeny_".$m2n['isk_rovidnev'].".tankorTanar, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' AND tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt OR tanar.kiDt IS NULL) - AND tanar.tanarId = tankorTanar.tanarId AND tankorTanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tankorTanar.kiDt OR tankorTanar.kiDt = '".$m2n['zaras_tartas']."' ) + WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' + AND ( (tanar.beDt <= '".$szm['reqDt']."' AND ( tanar.kiDt >= '".$szm['reqDt']."' OR tanar.kiDt IS NULL)) + /*OR (tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt OR tanar.kiDt IS NULL))*/ ) + AND tanar.tanarId = tankorTanar.tanarId + AND ((tankorTanar.beDt <= '".$szm['reqDt']."' AND tankorTanar.kiDt >= '".$szm['reqDt']."' ) + /*OR (tankorTanar.beDt <= CURRENT_DATE() AND CURRENT_DATE() <= tankorTanar.kiDt )*/ ) AND tankorTanar.tankorId = tankorSzemeszter.tankorId - AND tankorSzemeszter.tanev = '".$ev['tanev']."' AND tankorSzemeszter.szemeszter = '".$ev['szemeszter']."' - ORDER BY userAccount ; - "; + AND tankorSzemeszter.tanev = '".$szm['tanev']."' AND tankorSzemeszter.szemeszter = '".$szm['szemeszter']."' + ORDER BY fullName ; + "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { @@ -739,27 +755,39 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra $req_oszt .= ",'$val'"; } - $ev = get_mayor_szemeszter($link); - if(!empty($ev)){ - $q = "SELECT userAccount, email, diak.diakId, tankorDiak.tankorId, - TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, - TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".diak, mayor_private.accounts,intezmeny_".$m2n['isk_rovidnev'].".tankorDiak, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + $szm = get_mayor_szemeszter($link, $m2n['zaras_tartas']); + if(!empty($szm)){ + $q = "SELECT accounts.userAccount, accounts.mail, diak.email, diak.diakId, tankorDiak.tankorId, diak.oId, diak.diakigazolvanySzam AS employeeId, + diak.jogviszonyKezdete AS beDt, diak.jogviszonyVege AS kiDt, osztaly.kezdoTanev, osztaly.vegzoTanev, osztaly.jel, diak.kezdoTanev AS beEv, + osztalyNaplo.osztalyJel, diak.viseltNevElotag, diak.viseltCsaladinev, diak.viseltUtonev, + diak.szuletesiHely, diak.szuletesiIdo, diak.lakhelyOrszag, diak.lakhelyHelyseg, diak.lakhelyIrsz, + TRIM(BOTH ' ' FROM CONCAT_WS(' ',diak.lakhelyKozteruletNev, diak.lakhelyKozteruletJelleg, diak.lakhelyHazszam, diak.lakhelyEmelet, diak.lakhelyAjto)) AS lakHely, + diak.telefon, diak.mobil, diak.statusz, + TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, + TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$m2n['isk_rovidnev'].".diak, mayor_private.accounts, intezmeny_".$m2n['isk_rovidnev'].".tankorDiak, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter, + intezmeny_".$m2n['isk_rovidnev'].".osztalyDiak, intezmeny_".$m2n['isk_rovidnev'].".osztaly, naplo_".$m2n['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo WHERE diak.diakId IN ( SELECT diakId FROM intezmeny_".$m2n['isk_rovidnev'].".osztalyDiak WHERE osztalyId IN ( SELECT osztalyId - FROM naplo_".$m2n['isk_rovidnev']."_".$ev['tanev'].".osztalyNaplo + FROM naplo_".$m2n['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") ORDER BY osztalyId) ORDER BY diakId) AND diak.statusz != 'jogviszonya lezárva' AND diak.statusz != 'felvételt nyert' AND diak.oId = accounts.studyId - AND tankorDiak.diakId = diak.diakId AND tankorDiak.beDt <= CURRENT_DATE() AND (tankorDiak.kiDt >= CURRENT_DATE() OR tankorDiak.kiDt IS NULL OR tankorDiak.kiDt = '".$m2n['zaras_tartas']."' ) + AND tankorDiak.diakId = diak.diakId + AND ((tankorDiak.beDt <= '".$szm['reqDt']."' AND (tankorDiak.kiDt IS NULL OR tankorDiak.kiDt >= '".$szm['reqDt']."' )) + /*OR (tankorDiak.beDt <= CURRENT_DATE() AND (tankorDiak.kiDt IS NULL OR tankorDiak.kiDt >= CURRENT_DATE() ))*/ ) AND tankorSzemeszter.tankorId = tankorDiak.tankorId - AND tankorSzemeszter.tanev = '".$ev['tanev']."' AND tankorSzemeszter.szemeszter = '".$ev['szemeszter']."' - ORDER BY userAccount; - "; + AND tankorSzemeszter.tanev = '".$szm['tanev']."' AND tankorSzemeszter.szemeszter = '".$szm['szemeszter']."' + AND osztalyDiak.diakId = diak.diakId + AND (osztalyDiak.beDt <= '".$szm['reqDt']."' AND (osztalyDiak.kiDt >= '".$szm['reqDt']."' OR osztalyDiak.kiDt IS NULL)) + AND osztaly.osztalyId = osztalyDiak.osztalyId + AND osztalyDiak.osztalyId = osztalyNaplo.osztalyId + ORDER BY fullName ; + "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { @@ -941,7 +969,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' unset($mayor_user[$key]); // akkor nem foglalkozik vele tovább. } } - +die(); $curr = ""; $tankorei = array(); $mod_nxt_user_all = 0; @@ -1094,10 +1122,10 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' // - 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 törli, ha kellene - // - vagy megszűnő, korábbi mayor_napló-s user --> törli (vagy letiltja) + // - vagy más, mayor_naplón kívüli user (rendszergazda vette föl) --> nem törli + // - 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) + // - akkor őt a script hozta létre régen --> megszűnő, törli, vagy letiltja // (hiszen, ha aktív lenne, rajta lenne a $mayor_user listán, és kihúzta volna a $nxt_user-ből) } -- cgit v1.2.3 From 10f33eff313eb890c0cc9415842b0e03c190688f Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 21 Feb 2021 16:28:07 +0100 Subject: M2N: Aatbázis kapcsolat újragondolása --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 158 +++--- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 614 +++++++++++------------ 2 files changed, 387 insertions(+), 385 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 48cbffcc..460b23c9 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -1,55 +1,57 @@ "; -$db = array(); -$m2n = array(); - -$db['host'] = "localhost"; -$db['port'] = "3306"; -$db['user'] = "root"; -$db['pass'] = ""; -$db['m2n_db'] = "mayor_to_nextcloud"; -$db['m2n_prefix'] = "m2n_"; -$db['nxt_dbname'] = "Nextcloud"; -$db['nxt_prefix'] = "oc_"; -//$db['mayor_host'] = ""; -//$db['mayor_port'] = ""; -//$db['mayor_user'] = ""; -//$db['mayor_pass'] = ""; - -$m2n['min_evfolyam'] = 7; -$m2n['isk_rovidnev'] = "rovid"; -$m2n['csoport_prefix'] = "(tk) "; -$m2n['default_email'] = "indulo@iskola.hu"; -$m2n['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; -$m2n['always_set_diak_quota'] = false; -$m2n['default_quota'] = "10GB"; -$m2n['diak_quota'] = "2GB"; -$m2n['min_osztalyok'] = array(); //pl: array('9.a','11.a'); -$m2n['csoportnev_hossz'] = 40; -$m2n['felhasznalo_hossz'] = 45; -$m2n['default_lang'] = "hu"; -$m2n['manage_groups'] = false; -$m2n['manage_groupdirs'] = false; //Foglalkozzon-e a script a tankörmappákkal -$m2n['groupdir_users'] = array("naplo_robot","123abcd"); //Ha a tömb üres, akkor az összes tanárral dolgozik. -$m2n['groupdir_prefix'] = "Iskolai Távoktatás"; -$m2n['mindenki_csop'] = "naplós_felhasználók"; -$m2n['mindenki_tanar'] = "naplós_tanárok"; -$m2n['mindenki_diak'] = "naplós_diákok"; -$m2n['zaras_tartas'] = "2018-06-14"; // Ha nem kell, akkor állítsd át "1970-01-01"-re. -$m2n['megfigyelo_user'] = "naplo_robot"; -$m2n['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') -$m2n['verbose'] = 3 ; - $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; -$m2n['infotxt_szöveg'] = <<: A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, egyébként kapcsoló nélküli híváskor, (pl: automatikusan, a napi futásban éjjel), az összes tanárnak egyszerre. @@ -383,107 +385,107 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) -(VIII.) A "mayor-nextcloud.cfg.php" fajl elején találhatóak a konfigurációs adatok, ezeket a következőképpen módosíthatjuk: - $db['host'] = "localhost"; //Ez a nextcloud alatt futó mysql elérhetősége. + $cfg['db_host'] = "localhost"; //Ez a nextcloud alatt futó mysql elérhetősége. // (Csak localhost lehet, a scriptet a nextcloud-szerveren kell futtatnunk.) - $db['port'] = "3306"; //nextcloud-mysql port + $cfg['db_port'] = "3306"; //nextcloud-mysql port - $db['user'] = "root"; //nextcloud-mysql felhasználónév + $cfg['db_user'] = "root"; //nextcloud-mysql felhasználónév // HA nem a root-ot használjuk, akkor, saját kezűleg kell létrehozni a script saját, nyilvántartó adatbázisát, és a fenti jogokat beállítani rá, // valamint Ha a Nextcloud verziószáma kisebb 14-nél, akkor a használt felhasználónak írási-olvasási-törlési // (insert,select,update,delete) joggal kell rendelkeznie a nextcloud adatbázis "..groups" tábláján. // Ha a Debian-on alapértelmezett root-ot használjuk, akkor mindez automatikusan történik. - $db['pass'] = ""; //A nextcloud-mysql jelszó (A fenti felhasználónévhez tartozó) + $cfg['db_pass'] = ""; //A nextcloud-mysql jelszó (A fenti felhasználónévhez tartozó) // érdemes a debian 9.x-en, a root-hoz alapértelmezett "unix_socket" bejelentkezési módot // használnunk, ez biztonságosabb, mert ekkor nem kell jelszó, más módon hitelesít, így biztonságosabb. - $db['nxt_dbname'] = "nextcloud"; //A Nextcloud által használt adatbázis neve. - $db['nxt_prefix'] = "oc_"; //A Nextcloud által használt adatbázisban a táblák prefix-je. (ha van) + $cfg['db_nxt_dbname'] = "nextcloud"; //A Nextcloud által használt adatbázis neve. + $cfg['db_nxt_prefix'] = "oc_"; //A Nextcloud által használt adatbázisban a táblák prefix-je. (ha van) - $db['m2n_db'] = "mayor_to_nextcloud"; //A mayor->nextcloud script adatbázisa (nyilvántartás). + $cfg['db_m2n_db'] = "mayor_to_nextcloud"; //A mayor->nextcloud script adatbázisa (nyilvántartás). // Ennek az adatbázisnak a Nextcloud mysql szerverén kell lennie! // // Ebben az adatbázisban könyveli le a script által létrehozott felhasználókat, azért, // hogy így meg tudja különböztetni, a saját maga által létrehozottakat, az Adminisztrátor // által, kézzel létrehozott felhasználóktól, hogy azokat ne birizgálja. - $db['m2n_prefix'] = "m2n_"; //A nyilvántartó adatbázisban használt prefix, ha van. (ha nincs, akkor "üres string"-re kell állítani ($db['m2n_prefix'] = "";)) + $cfg['db_m2n_prefix'] = "m2n_"; //A nyilvántartó adatbázisban használt prefix, ha van. (ha nincs, akkor "üres string"-re kell állítani ($cfg['db_m2n_prefix'] = "";)) - //$db['mayor_host'] = ""; //Akkor használatos, ha a mayor alatti mysql szerver egy másik szerveren van, mint a Nextcloud által használt. - //$db['mayor_port'] = ""; // ekkor ki kell venni kommentből, és ki kell tölteni a mayor-mysql serverre érvényes adatokkal. - //$db['mayor_user'] = ""; - //$db['mayor_pass'] = ""; //A kiválasztott felhaználónak olvasnia (GRANT SELECT) kell tudnia a mayor-mysql serveren a(z): + //$cfg['db_mayor_host'] = ""; //Akkor használatos, ha a mayor alatti mysql szerver egy másik szerveren van, mint a Nextcloud által használt. + //$cfg['db_mayor_port'] = ""; // ekkor ki kell venni kommentből, és ki kell tölteni a mayor-mysql serverre érvényes adatokkal. + //$cfg['db_mayor_user'] = ""; + //$cfg['db_mayor_pass'] = ""; //A kiválasztott felhaználónak olvasnia (GRANT SELECT) kell tudnia a mayor-mysql serveren a(z): // intezmeny_xxx, mayor_parent, naplo_xxx_yyyy adatbázisokból. //Ha a mayor-mysql sezvere fizikailag (vagy virtuálisan) másik szerveren van, akkor érdemes egy "ssh-tunnel"-lel // áthozni a portját a nextcloud-serverre. (ez a legbiztonságossabb) - $m2n['isk_rovidnev'] = "rovid"; //A mayor-ban használt "iskola rövidneve" megnevezés. + $cfg['isk_rovidnev'] = "rovid"; //A mayor-ban használt "iskola rövidneve" megnevezés. - $m2n['min_evfolyam'] = 10; //A minimális évfolyam, amelytől fölfelé engedélyezzük a felhő használatát a diákoknak. + $cfg['min_evfolyam'] = 10; //A minimális évfolyam, amelytől fölfelé engedélyezzük a felhő használatát a diákoknak. - $m2n['csoport_prefix'] = "(tk) "; //A Nextcloud-ban ezzel az előtaggal jelennek majd meg mayor-ból importált csoportok, a jobb átláthatóság érdekében. + $cfg['csoport_prefix'] = "(tk) "; //A Nextcloud-ban ezzel az előtaggal jelennek majd meg mayor-ból importált csoportok, a jobb átláthatóság érdekében. - $m2n['default_email'] = "rendszergazda@iskola.hu"; //Ha a mayor napló "intezmeny_xxx.diak", vagy az "intezmeny_xxx.tanar" táblákban nincs kitöltve az + $cfg['default_email'] = "rendszergazda@iskola.hu"; //Ha a mayor napló "intezmeny_xxx.diak", vagy az "intezmeny_xxx.tanar" táblákban nincs kitöltve az // e-mail, akkor ezt használja alapértelmezetten. // (ide megy a jelszó-emlékeztető, amíg a felhasználó birtokba nem veszi a Nextcloud fiókját, és ben nem állít sajátot) - $m2n['default_passw'] = "EHYmGktzrdfS7wxJR6DF11jJ"; //Az induló jelszó a Nextcloud-ban a felhasználóknak. (érdemes erőset/hosszút megadni, a botnet-ek/hackerek miatt) + $cfg['default_passw'] = "EHYmGktzrdfS7wxJR6DF11jJ"; //Az induló jelszó a Nextcloud-ban a felhasználóknak. (érdemes erőset/hosszút megadni, a botnet-ek/hackerek miatt) - $m2n['default_quota'] = "10GB"; //Az általános indulási fájl-kvóta a Nextcloud-ban. (A wbes felületen később módosítható.) + $cfg['default_quota'] = "10GB"; //Az általános indulási fájl-kvóta a Nextcloud-ban. (A wbes felületen később módosítható.) // Amikor új felhasználót ad hozzá, akkor az itt megadott méretre állítja a qvótáját. // Midel a diákoknak külön qvótát lehet beállítani, ezért ez értelemszerűen már csak a tanárokra vonatkozik. - $m2n['diak_quota'] = "2GB"; //A diákok! indulási kvótája + $cfg['diak_quota'] = "2GB"; //A diákok! indulási kvótája // amikor új diákot ad hozzá, ezt a qvótát állítja be a számára. //Lehetőség van az összes diák kvótáját egyszerre, az itt beállított értékre állítani, // de ez nem fut automatikusan éjjelente, ezt kézzel kell, --set-diak-qupta kapcsoló kiadásával. - $m2n['default_lang'] = "hu"; //Az alapértelmezett nyelv (később minden felhasználó átállíthatja magának) + $cfg['default_lang'] = "hu"; //Az alapértelmezett nyelv (később minden felhasználó átállíthatja magának) - $m2n['min_osztalyok'] = array( ); //Ide lehet felsorolni az osztályokat, ha konkrét osztályokat akaruni importálni, - // ez logikai (megengedő) VAGY kapcsolatban van a $m2n['min_evfolyam'] -mal. + $cfg['min_osztalyok'] = array( ); //Ide lehet felsorolni az osztályokat, ha konkrét osztályokat akaruni importálni, + // ez logikai (megengedő) VAGY kapcsolatban van a $cfg['min_evfolyam'] -mal. // Tehát ha beállítunk egy minimális évfolyamot, a listában felsorolt osztályok akkor is importálódnak, // ha a min_évfolyam-nál kisebbek. //pl: array('9.a','11.a'); - $m2n['csoportnev_hossz'] = 40; //Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a csoport neve. + $cfg['csoportnev_hossz'] = 40; //Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a csoport neve. // (csak a script kinézete/átláthatósága végett) - $m2n['felhasznalo_hossz'] = 45; //Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a felhasználó valódi neve. + $cfg['felhasznalo_hossz'] = 45; //Formázott kimenet: Kiegészíti "space"-kkel a kimenetet, ha rövidebb lenne a felhasználó valódi neve. // (Ssak a script szép kinézete, átláthatósága végett.) - $m2n['mindenki_csop'] = "naplós_felhasználók"; //Legyen egy olyan csoport, amiben "mindenki benne van". + $cfg['mindenki_csop'] = "naplós_felhasználók"; //Legyen egy olyan csoport, amiben "mindenki benne van". // ebbe a "mindenki" csoportba minden, a script által létrehozott felhasználó bekerül. - $m2n['mindenki_tanar'] = "naplós_tanárok"; //Legyen egy olyan csoport, amiben minden tanár benne van + $cfg['mindenki_tanar'] = "naplós_tanárok"; //Legyen egy olyan csoport, amiben minden tanár benne van // ebbe a "minden_tanár" csoportba a naplóbeli tanárok kerülnek. - $m2n['mindenki_diak'] = "naplós_diákok"; //Legyen egy olyan csoport, amiben "minden diák" benne van. + $cfg['mindenki_diak'] = "naplós_diákok"; //Legyen egy olyan csoport, amiben "minden diák" benne van. // ebbe a "minden_diák" csoportba a naplóbeli diákok kerülnek. - $m2n['zaras_tartas'] = "2018-06-19"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig) + $cfg['zaras_tartas'] = "2018-06-19"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig) // Ha már nem kell, akkor állítsd "1970-01-01"-ra !; - $m2n['manage_groupdirs'] = false; //Ha szerenénk, hogy a script létrehozza a távoktatást segítő tankörmappákat, állítsuk "true"-re! + $cfg['manage_groupdirs'] = false; //Ha szerenénk, hogy a script létrehozza a távoktatást segítő tankörmappákat, állítsuk "true"-re! - $m2n['groupdir_users'] = array("123abcd", ); //Ha csak egyes tanároknak szeretnénk bekapcsolni a tankörmappákat, + $cfg['groupdir_users'] = array("123abcd", ); //Ha csak egyes tanároknak szeretnénk bekapcsolni a tankörmappákat, // ha minden tanárnak, akkor állítsuk üresre a tömböt! / = array();/ - $m2n['groupdir_prefix'] = "Iskolai Távoktatás"; //A távoktatást segítő mappák gyüjtőmappája/gyökérkönyvtára. + $cfg['groupdir_prefix'] = "Iskolai Távoktatás"; //A távoktatást segítő mappák gyüjtőmappája/gyökérkönyvtára. - $m2n['manage_groups'] = true; //Foglalkozzon-e a tankörökkel/csoportokkal? Ha true -> igen, ha false, akkor csak a felhasználókat + $cfg['manage_groups'] = true; //Foglalkozzon-e a tankörökkel/csoportokkal? Ha true -> igen, ha false, akkor csak a felhasználókat // egyezteti a mayorral - $m2n['manage_groupdirs'] = false; //A tankör-cspoprt mappákat kezelje-e vagy sem. + $cfg['manage_groupdirs'] = false; //A tankör-cspoprt mappákat kezelje-e vagy sem. - $m2n['verbose'] = 3 //Log bőbeszédűség (A leg informatívabb(tömörebb), talán a 3-mas fokozat.) + $cfg['verbose'] = 3 //Log bőbeszédűség (A leg informatívabb(tömörebb), talán a 3-mas fokozat.) // 0: csak fatális hibák, 1: fontosabbak, 2: csop./felh. elvétel, 3: csop./felh. hozzáadás, // 4: csop./felh. állapot, 5: részletesebben, 6: sql query + bash parancsok kiírása is @@ -493,11 +495,11 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $occ_user = "www-data"; //A Nextcloud-servert futtató (Apache által használt) felhasználónév - $m2n['kihagy'] = array(); //Lehetőség van egy-egy felhasználó kezelésének letiltására, ezt felsorolásként tehetjük meg. + $cfg['kihagy'] = array(); //Lehetőség van egy-egy felhasználó kezelésének letiltására, ezt felsorolásként tehetjük meg. // Ekkor a script nem fog foglalkozni, az adott felhasználóval a továbbiakban. //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') - $m2n['megfigyelo_user'] = "naplo_robot"; //Lehetőség van egy úgymond "megfigyelő" felhasználó létrehozására. + $cfg['megfigyelo_user'] = "naplo_robot"; //Lehetőség van egy úgymond "megfigyelő" felhasználó létrehozására. // ez a felhasználó be lesz léptetve az összes csoportba, így az összes üzenetet megkapja, // és az összes tankörben megosztott fájlt látja, amit a csoportokkal/tankörökkel megosztottak. //EZ a felhasználó nem egyezik meg a MaYor "mayoradmin" felhasználójával (nem lesz automatikusan rendszergazda)! diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 9c14d88b..f68e83f4 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -1,83 +1,87 @@ #!/usr/bin/php =array(); //(legyen üres) -$m2n['mindenki_csop'] = "naplós_felhasználók"; -$m2n['mindenki_tanar'] = "naplós_tanárok"; -$m2n['mindenki_diak'] = "naplós_diákok"; -$m2n['zaras_tartas'] = "2018-06-14"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig) Ha már nem kell, akkor állítsd "1970-01-01"-ra !; -$m2n['infotxt_szöveg'] = "info.txt"; -$m2n['verbose'] = 3 ; +$cfg['min_evfolyam'] = 1; +$cfg['isk_rovidnev'] = "rovid"; +$cfg['csoport_prefix'] = "(tk) "; +$cfg['default_email'] = "indulo@iskola.hu"; +//$cfg['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; //Helyette random jelszót generál +$cfg['always_set_diak_quota'] = false; +$cfg['default_quota'] = "10GB"; +$cfg['diak_quota'] = "2GB"; +$cfg['min_osztalyok'] = array(); //pl: array('9.a','11.a'); +$cfg['csoportnev_hossz'] = 40; +$cfg['felhasznalo_hossz'] = 45; +$cfg['megfigyelo_user'] = "naplo_robot"; //ha nem kell, akkor állítsd üres stringre. +$cfg['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') +$cfg['default_lang'] = "hu"; +$cfg['manage_groups'] = false; +$cfg['manage_groupdirs'] = false; // Foglalkozzon-e a script a tankörmappákkal +$cfg['groupdir_prefix'] = "tavsuli"; +$cfg['groupdir_users'] = array("naplo_robot","123abcd"); //Ha mindenkire -> =array(); //(legyen üres) +$cfg['mindenki_csop'] = "naplós_felhasználók"; +$cfg['mindenki_tanar'] = "naplós_tanárok"; +$cfg['mindenki_diak'] = "naplós_diákok"; +$cfg['allapot_tartas'] = "2018-06-14"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig) Ha már nem kell, akkor állítsd "1970-01-01"-ra !; +$cfg['infotxt_szöveg'] = "info.txt"; +$cfg['verbose'] = 3 ; $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; $printhelp = false; $printconfig = false; +$printpassw = false; $debug = false; $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ő. // Le kell cserélni az ékezetes betűket, mert a Vezetéknév.Keresztnév nem POSIX kompatibilis. $search = array( 'á', 'ä', 'é', 'í', 'ó', 'ö', 'ő', 'ú', 'ü', 'ű', 'Á', 'Ä', 'É', 'Í', 'Ó', 'Ö', 'Ő', 'Ú', 'Ü', 'Ű'); // egyelőre csak a magyar betűket ismeri $replace = array( 'aa', 'ae', 'ee', 'ii', 'oo', 'oe', 'ooe', 'uu', 'ue', 'uue', 'Aa', 'Aae', 'Ee', 'Ii', 'Oo', 'Oe', 'Ooe', 'Uu', 'Ue', 'Uue'); +$pwchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_?"; for($i = 1; $i<$argc; $i++){ //Ha van külön config megadva, akkor először azt töltjük be. if($argv[$i] == "--config-file" ){$cfgfile = strval($argv[$i+1]); $i++;} } if(file_exists($cfgfile) === TRUE){ include($cfgfile); } //Config betöltés - +if(!empty($m2n)){ $cfg_o = $cfg; $cfg = $m2n; $cfg = array_merge($cfg, $cfg_o); } for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--help" ){$printhelp = true;} if($argv[$i] == "--debug" ){$debug = true;} - if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$m2n['verbose'] = intval($argv[$i+1]); $i++;} - if($argv[$i] == "--set-diak-quota" ){ $m2n['always_set_diak_quota'] = true; } - if($argv[$i] == "--create-groupdir"){ $m2n['groupdir_users'] = array($argv[$i+1]); $i++;} - if($argv[$i] == "--manage-groupdirs" and is_string($argv[$i+1])){$m2n['manage_groupdirs'] = boolval($argv[$i+1]); $i++;} - if($argv[$i] == "--manage-groups" and is_string($argv[$i+1])){$m2n['manage_groups'] = boolval($argv[$i+1]); $i++;} - if($argv[$i] == "--config-print" ){ $printconfig = true; } + if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$cfg['verbose'] = intval($argv[$i+1]); $i++;} + if($argv[$i] == "--set-diak-quota" ){ $cfg['always_set_diak_quota'] = true; } + if($argv[$i] == "--create-groupdir"){ $cfg['groupdir_users'] = array($argv[$i+1]); $i++;} + if($argv[$i] == "--manage-groupdirs" and is_string($argv[$i+1])){$cfg['manage_groupdirs'] = boolval($argv[$i+1]); $i++;} + if($argv[$i] == "--manage-groups" and is_string($argv[$i+1])){$cfg['manage_groups'] = boolval($argv[$i+1]); $i++;} + if($argv[$i] == "--allapot-tartas" and is_string($argv[$i+1])){$cfg['allapot_tartas'] = strval($argv[$i+1]); $i++;} + if($argv[$i] == "--print-passwords" ){ $printpassw = true; } + if($argv[$i] == "--print-config" ){ $printconfig = true; } } function print_help(){ - echo "php mayor-nextcloud.php [kapcsolók] \n"; + echo "".phpv()." mayor-nextcloud.php [kapcsolók] \n"; echo "Kapcsolók: (felülbírálja a configot!)\n"; echo " --help : Help kiírása. \n"; echo " --debug : Ugyanaz mint a \"--loglevel 100\" \n"; echo " --config-file : Konfig fájl elérési útvonala.\n"; echo " --config-print : A betöltött konfig kiírása\n"; echo " --loglevel x : A bőbeszédűséget/logolást tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. \n"; - echo " --set-diak-quota : Az összes diák qvótáját átállítja az \"\$m2n['diak_quota'] = x\" -nél megadott értékre, \n"; + echo " --set-diak-quota : Az összes diák qvótáját átállítja az \"\$cfg['diak_quota'] = x\" -nél megadott értékre, \n"; echo " csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne.\n"; echo " --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, \n"; echo " illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre.\n"; @@ -86,57 +90,57 @@ function print_help(){ echo "\n\n"; } + +function phpv() { //Az aktuális php verzió lekérdezése + $v = explode('.', phpversion()); + return "php".$v[0].".".$v[1]; +} + +function rndstr($l, $chs) { //Ál-Véletlen stringet generál + return substr(str_shuffle($chs), 0, $l); +} -if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', '>=')) { //MySQLi (Improved) és php7 kell! - function db_connect(array $db){ - global $log; - if ($log['verbose'] > 0 ){ echo "***\tAdatbázis kapcsolódás. (m2n_db=".$db['m2n_db'].")\n"; } - $l = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['m2n_db'],$db['port']); +if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', '>=')) { //MySQLi (Improved) és php7 kell! + + function db_connect($db = ""){ + global $log,$cfg; + if ($log['verbose'] > 0 ){ echo "***\tAdatbázis kapcsolódás. (db='".$db."')\n"; } + $l = mysqli_connect($cfg['db_host'], $cfg['db_user'], $cfg['db_pass'], $db, $cfg['db_port']); if(!$l){ - if ($log['verbose'] > 0 ){echo "*\tAdatbázis kapcsolat újrapróbálása... (m2n_db=) hiba:".mysqli_connect_errno()."\n";} - $db_old = $db['m2n_db']; - $db['m2n_db'] = ""; - $l = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['m2n_db'],$db['port']); + if ($log['verbose'] > 0 ){ echo "*\tAdatbázis kapcsolat újrapróbálása... (db=''), info:".mysqli_connect_errno()."\n\n"; } + $db = ""; + $l = mysqli_connect($cfg['db_host'], $cfg['db_user'], $cfg['db_pass'], $db, $cfg['db_port']); if(!$l){ - echo "\n**** Sikertelen kapcsolódás! **** (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n"; - return null; - } else{ - if ($log['verbose'] > 4 ){ echo "*\tSikeres kapcsolódás. (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n";} - if ($log['verbose'] > 0 ){ echo "***\tAdatbázis létrehozása: ".$db_old." ...\n";} - mysqli_set_charset($l, "utf8"); - mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); - script_install($l); - return $l; - } - } else { - if ($log['verbose'] > 4 ){ echo "*\tSikeres kapcsolódás. (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n"; } - mysqli_set_charset($l, "utf8"); - mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); - if(mysqli_query($l, "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register LIMIT 10;" ) == FALSE ){ - script_install($l); + echo "\n**** Sikertelen kapcsolódás! **** (db='".$db."') info:".mysqli_get_host_info($l)."\n\n"; + return null; //Hiba esetén visszatér } - return $l; } + if ($log['verbose'] > 0 ){ echo "*\tSikeres kapcsolódás. (db='".$db."') info:".mysqli_get_host_info($l)."\n\n"; } + mysqli_set_charset($l, "utf8"); + mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); + return $l; //Egyébként a sikeressel tér vissza } -// bezár: mysqli_close($link); - - function script_install($link){ - global $db,$log; - $q = "CREATE DATABASE IF NOT EXISTS ".$db['m2n_db']." DEFAULT COLLATE 'utf8_general_ci'; "; - if ($log['verbose'] > 0 ){ echo "M2N -> \t".$q."\n"; } - if(( $r = mysqli_query($link, $q)) !== FALSE ){ - if ($log['verbose'] > 0 ){ echo "*\tAz ".$db['m2n_db']." adatbázis sikeresen létrehozva.\n"; } - } - $q = "CREATE TABLE IF NOT EXISTS ".$db['m2n_db'].".".$db['m2n_prefix']."register ( - account VARCHAR(64) NOT NULL COLLATE 'utf8_bin', - status ENUM('active','disabled','forbidden','deleted') NULL DEFAULT 'active' COLLATE 'utf8_bin', - PRIMARY KEY (account)) - COLLATE='utf8_general_ci' - ENGINE=InnoDB;"; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } - if(( $r = mysqli_query($link, $q)) !== FALSE ){ - if ($log['verbose'] > 0 ){ echo "*\tAz ".$db['m2n_db'].".".$db['m2n_prefix']."register (script-katalógus) tábla sikeresen létrehozva.\n";} + // bezár: mysqli_close($link); + + function script_install($l){ + global $cfg,$log; + if(mysqli_query($l, "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register LIMIT 10;" ) == FALSE ){ //nincs nyilvántartás + $q = "CREATE DATABASE IF NOT EXISTS ".$cfg['db_m2n_db']." DEFAULT COLLATE 'utf8_general_ci'; "; + if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n\n"; } + if(( $r = mysqli_query($l, $q)) !== FALSE ){ + if ($log['verbose'] > 0 ){ echo "*\tAz ".$cfg['db_m2n_db']." adatbázis sikeresen létrehozva.\n"; } + } + $q = "CREATE TABLE IF NOT EXISTS ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register ( + account VARCHAR(64) NOT NULL COLLATE 'utf8_bin', + status ENUM('active','disabled','forbidden','deleted') NULL DEFAULT 'active' COLLATE 'utf8_bin', + PRIMARY KEY (account)) + COLLATE='utf8_general_ci' + ENGINE=InnoDB;"; + if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if(( $r = mysqli_query($l, $q)) !== FALSE ){ + if ($log['verbose'] > 0 ){ echo "*\tAz ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register (script-katalógus) tábla sikeresen létrehozva.\n\n";} + } } } @@ -157,24 +161,26 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function nxt_get_version(){ - global $occ_path,$occ_user,$m2n,$log; - // sudo -u honlap-felho php /home/honlap-felho/web/occ status --output=json - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." status --output=json \"" ; + global $occ_path,$occ_user,$cfg,$log; + $ret = array(); + // sudo -u honlap-felho ".phpv()." /home/honlap-felho/web/occ status --output=json + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." status --output=json \"" ; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = explode(".", json_decode(shell_exec($e),true)['version'])[0]; - if ($log['verbose'] > 10 ){ print_r($ret); } + $ret[0] = shell_exec($e); + $ret[1] = intval(explode(".", json_decode($ret[0],true)['version'])[0]); + if ($log['verbose'] > 10 ){ print_r($ret); echo "\n\n"; } return $ret; } function catalog_userlist($link){ //akiket a script hozott létre - global $db,$log,$m2n; + global $cfg,$log,$cfg; $ret['account'] = array(); $ret['status'] = array(); - $q = "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE STATUS != 'forbidden'; "; + $q = "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE STATUS != 'forbidden'; "; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { - if(!in_array($row['account'], $m2n['kihagy'])){ + if(!in_array($row['account'], $cfg['kihagy'])){ $ret['account'][] = $row['account']; $ret['status'][] = $row['status']; } @@ -189,8 +195,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function catalog_forbiddenlist($link){ //akiket a rendszergazda kitiltott - global $log,$db,$m2n; - $q = "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE STATUS = 'forbidden'; "; + global $log,$cfg,$cfg; + $q = "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE STATUS = 'forbidden'; "; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ $ret = array(); @@ -198,7 +204,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' $ret[] = $row['account']; } mysqli_free_result($r); - $ret = array_merge($ret, $m2n['kihagy']); + $ret = array_merge($ret, $cfg['kihagy']); if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-letiltások m2n nyilvántartás lekérdezése.\n"; } return $ret; } else { @@ -207,8 +213,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function catalog_useradd($link, $account){ // feljegyzi az általa létrehozott felhasználókat - global $log,$db; - $q = "INSERT INTO ".$db['m2n_db'].".".$db['m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; + global $log,$cfg; + $q = "INSERT INTO ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-hozzáadás, m2n nyilvántartásba vétele.\n"; } @@ -216,8 +222,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function catalog_userena($link, $account){ // az engedélyezetteket - global $db,$log; - $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; + global $cfg,$log; + $q = "UPDATE ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-engedélyezés, m2n nyilvántartásba vétele.\n" ;} @@ -225,8 +231,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function catalog_userdel($link, $account){ // a törölteket - global $db,$log; - $q = "DELETE FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; + global $cfg,$log; + $q = "DELETE FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-törlés, m2n nyilvántartásba vétele.\n"; } @@ -234,8 +240,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function catalog_userdis($link, $account){ // a letiltottakat - global $m2n,$db,$log; - $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; + global $cfg,$cfg,$log; + $q = "UPDATE ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-letiltás, m2n nyilvántartásba vétele.\n"; } @@ -243,12 +249,12 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function user_add($userAccount, $fullName){ // létrehoz egy felhasználót a Nextcloud-ban - global $occ_path,$occ_user,$m2n,$log; -// export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c 'php web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' + global $occ_path,$occ_user,$cfg,$log; +// export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c '".phpv()." web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' if(strlen($userAccount) > 64 or strlen($fullName) > 64){ echo "\n******** Hiba: A felahsználónév, vagy a \"teljes név\" hosszabb, mint 64 karakter! NEM hozható létre!! ********\n"; } else { - $e = "export OC_PASS=".escp($m2n['default_passw'])."; su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($m2n['mindenki_csop'])." ".escp($userAccount)." \"" ; + $e = "export OC_PASS=".escp(rndstr(20, $pwchars))."; su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($cfg['mindenki_csop'])." ".escp($userAccount)." \"" ; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -257,16 +263,16 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $last_login = json_decode(shell_exec($e),true)['last_seen'] ; if($last_login == "1970-01-01T00:00:00+00:00" ){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); // akkor törölhető if ($log['verbose'] > 11 ){ print_r($ret); } } else { - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); // különben csak letiltja if ($log['verbose'] > 11 ){ print_r($ret); } @@ -276,7 +282,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function user_info($userAccount){ // User állpot a Nextcloudban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } @@ -286,7 +292,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function user_dis($userAccount){ // letiltja a felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -294,7 +300,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function user_ena($userAccount){ // engedélyezi global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -303,7 +309,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function nxt_group_list() { // Csoportok listázása a Nextcloud-ból global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } @@ -312,12 +318,12 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function nxt_user_list() { // Felhasználók listázása a Nextcloud-ból global $occ_path,$occ_user,$log; - // $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; + // $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; // if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } // $num = shell_exec($e); $num = 1000000; //inkább kézi limit! // $num = $num + 100; // Biztos-ami-biztos, a nextcloud rejtett hibái miatt... - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } @@ -326,7 +332,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function nxt_user_lastlogin($userAccount){ // legutóbbi belépés lekérdezése global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = json_decode(shell_exec($e),true)['last_seen']; if ($log['verbose'] > 10 ){ print_r($ret); } @@ -337,17 +343,17 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function user_set($userAccount, array $params){ //beállítja az e-mailt, quota-t, nyelvet a kapott értékekre global $occ_path,$occ_user,$log; if(isset($params['quota'])){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec( $e ); } if(isset($params['email'])){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec( $e ); } if(isset($params['lang'])){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } shell_exec($e); } @@ -356,17 +362,17 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function group_add($groupName){ //Új csoport létrehozása a Nextcloud-ban - global $occ_user,$occ_path,$link,$db,$log; + global $occ_user,$occ_path,$link,$cfg,$log; $groupName = rmnp($groupName); if(strlen($groupName) > 64){ //mivel (egyelőre) nics erre 'occ' parancs, ezért közvetlenül kell... echo "\n****** Hiba: a csoportnév nagyobb, mint 64 karakter!! ******\n"; } else { - if(nxt_get_version() < 14) { - $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link, $db['nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; + if(nxt_get_version()[1] < 14) { + $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $cfg['db_nxt_dbname']).".".mysqli_real_escape_string($link, $cfg['db_nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; } else { - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -375,25 +381,25 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function group_del($groupName){ // Csoport törlése a Nextcloud-ból - global $occ_user,$occ_path,$db,$link,$log,$m2n; + global $occ_user,$occ_path,$cfg,$link,$log,$cfg; $grp = nxt_group_list(); $groupName = rmnp($groupName); if(isset($grp[$groupName])){ - if(nxt_get_version() < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... + if(nxt_get_version()[1] < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... foreach($grp[$groupName] as $key => $user){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } - if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$m2n['csoportnev_hossz']+5,1)."\t csoportból.\n"; } + if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$cfg['csoportnev_hossz']+5,1)."\t csoportból.\n"; } } - $q = "DELETE FROM ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link,$db['nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; + $q = "DELETE FROM ".mysqli_real_escape_string($link, $cfg['db_nxt_dbname']).".".mysqli_real_escape_string($link,$cfg['db_nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\n NXT -> \t****** csoport törlési hiba. (adatbázis) ******\n"; } else { - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -403,7 +409,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function group_user_add($groupName, $userAccount){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -411,7 +417,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function group_user_del($groupName, $userAccount){ // Kitöröl egy felhasználót egy Nextcoud csoportból global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -425,8 +431,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } - if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? + if($ret === true && $log['verbose'] > 5) { echo "".phpv()." ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($ret === false && $log['verbose'] > -1) { echo "".phpv()." ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? } if ($log['verbose'] > 11 ){ print_r($ret); } return $ret; @@ -441,9 +447,9 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' fclose($h); chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($log['verbose'] > 5) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($log['verbose'] > 5) { echo "".phpv()." ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } else { - if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } + if($log['verbose'] > 5) { echo "".phpv()." ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } } if ($log['verbose'] > 11 ){ print_r($ret); } return $ret; @@ -451,7 +457,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v + $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -459,7 +465,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function user_notify($user, $msg, $title ){ // Nextcloud értesítés global $occ_user, $occ_path, $log; - $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } @@ -480,7 +486,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function clean_dir($user, $path, $tankorei){ //Tankörmappák kitisztítása (path: mappagyökér) - global $occ_user, $occ_path, $log, $m2n; + global $occ_user, $occ_path, $log, $cfg; $listdir = scan_dir($user, $path); $ret[0] = array(); $ret[1] = array(); @@ -491,14 +497,14 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' if(is_dir($occ_path."/data/".$user."/files/".$path."/".$val) && empty(scan_dir($user, $path."/".$val))){ // Ha mappa, és üres -> törlés rmdir($occ_path."/data/".$user."/files/".$path."/".$val); $ret[0][] = $val; - if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } + if($log['verbose'] > 5) { echo "".phpv()." ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } } else { //Nem mappa, vagy nem üres if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".rnescp(basename($val, '.please-remove').".".time().".please-remove"), "Fájl/Mappa rossz helyen! --> ".rnescp($path."/".basename($val, '.please-remove').".".time().".please-remove" )); - if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } + if($log['verbose'] > 5) { echo "".phpv()." ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } } else { // A Hanyagul otthagyottakért csak figyelmeztessen: user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjelölve! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); @@ -514,18 +520,18 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja $path=tankörgyökér - global $m2n, $occ_path, $occ_user,$log; + global $cfg, $occ_path, $occ_user,$log; $ret = array(false, false); - if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava + if((empty($cfg['groupdir_users']) || in_array($user, $cfg['groupdir_users'])) && $oktId > 0 && $cfg['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda - echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; + echo "".phpv()." ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli } $ret[0] = create_dir($user, rmnp($path)); // Tankörmappa gyökér létrehozása - $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // INFO.txt (Újra)Írása. + $ret[1] = write_tofile($user, $path."/"."INFO.txt", $cfg['infotxt_szöveg']); // INFO.txt (Újra)Írása. if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } @@ -538,10 +544,10 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function groupdir_create_groupdir($user, $oktId, $path){ // $path = tankörmappa - global $m2n,$log; + global $cfg,$log; $ret = false; - if( basename($path,"_beadás") != $m2n['mindenki_tanar'] and basename($path,"_beadás") != $m2n['mindenki_diak'] and basename($path,"_beadás") != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? - if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + if( basename($path,"_beadás") != $cfg['mindenki_tanar'] and basename($path,"_beadás") != $cfg['mindenki_diak'] and basename($path,"_beadás") != $cfg['mindenki_csop']){ //Ezekre a csoportokra minek? + if((empty($cfg['groupdir_users']) || in_array($user, $cfg['groupdir_users'])) && $oktId > 0 && $cfg['manage_groupdirs'] === true){ $ret = create_dir($user, rmnp($path)); // Tankörmappa létrehozása if($ret === true){ files_scan($user, $path); @@ -553,9 +559,9 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path=tankörgyökér - global $m2n,$log; + global $cfg,$log; $ret = array(array(),array(),array(),false,false); //return sekelton - if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + if((empty($cfg['groupdir_users']) || in_array($user, $cfg['groupdir_users'])) && $oktId > 0 && $cfg['manage_groupdirs'] === true){ if(isset($tankorei)) { $ret = clean_dir($user, $path, $tankorei); $ret[3] = false; //mert felülírja a skeleton-t @@ -585,25 +591,9 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' if(!isset($val['diakId'])){ //workaround $val['diakId'] = 0; } - /* - $list = array_merge($list, array( - array( 'userAccount' => $val['userAccount'], - 'email' => $val['email'], - 'tanarId' => $val['tanarId'], - 'diakId' => $val['diakId'], - 'tankorId' => 0, - 'fullName' => $val['fullName'], - 'tankorNev' => $tankorname, - ) - ) - ); - */ - $list = array_merge($list, array( $val)); - $list[$key]['tankorNev'] = $tankorname; $list[$key]['tankorId'] = 0; - if($user !== null && $val['userAccount'] == $user ){ // Null -> mindenkihez, "user" -> csak neki break; @@ -645,9 +635,9 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function get_mayor_szemeszter($link, $date) { - global $m2n,$log; + global $cfg,$log; $ret = array(); - $q = "SELECT * FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter WHERE (statusz = 'aktív' OR statusz = 'lezárt') AND kezdesDt <= '".$date."' ORDER BY zarasDt DESC LIMIT 1; "; + $q = "SELECT * FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter WHERE (statusz = 'aktív' OR statusz = 'lezárt') AND kezdesDt <= '".$date."' ORDER BY zarasDt DESC LIMIT 1; "; if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } if( ($r = mysqli_query($link, $q)) !== FALSE ){ $ret = mysqli_fetch_array($r, MYSQLI_ASSOC); @@ -663,31 +653,31 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' - function get_mayor_tankor($link){ // A tankörök neveinek lekérdezése a mayorból - global $m2n,$log; + function get_mayor_tankor($link, $date){ // A tankörök neveinek lekérdezése a mayorból + global $cfg,$log; $ret = array(); $req_oszt = "'#'"; - foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra + foreach($cfg['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra $req_oszt .= ",'$val'"; } - $szm = get_mayor_szemeszter($link, $m2n['zaras_tartas']); + $szm = get_mayor_szemeszter($link, $date); if(!empty($szm)){ //Létező összes tankör: - /* $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + /* $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter WHERE tanev = '".$szm['tanev']."' AND szemeszter = '".$szm['szemeszter']."'; "; */ //csak a megadott évfeolyamokhoz kötődő tankörök: - $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter WHERE tanev = '".$szm['tanev']."' AND szemeszter = '".$szm['szemeszter']."' AND tankorId IN( SELECT tankorId - FROM intezmeny_".$m2n['isk_rovidnev'].".tankorOsztaly + FROM intezmeny_".$cfg['isk_rovidnev'].".tankorOsztaly WHERE osztalyId IN ( SELECT osztalyId - FROM naplo_".$m2n['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo - WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") + FROM naplo_".$cfg['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo + WHERE evfolyamJel >= ".$cfg['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") ORDER BY osztalyId) ORDER BY tankorId ) ORDER BY tankorNev; "; @@ -708,10 +698,10 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } - function get_mayor_tanar($link){ // A tanárok lekérdezése a mayorból - global $m2n,$log; + function get_mayor_tanar($link, $date){ // A tanárok lekérdezése a mayorból + global $cfg,$log; $ret = array(); - $szm = get_mayor_szemeszter($link, $m2n['zaras_tartas']); + $szm = get_mayor_szemeszter($link, $date); if(!empty($szm)){ $q = "SELECT accounts.userAccount, accounts.mail, tanar.email, tanar.tanarId, tankorTanar.tankorId, tanar.oId, '' AS employeeId, tanar.beDt, tanar.kiDt, '' AS kezdoTanev, '' AS vegzoTanev, '' AS jel, '' AS beEv, '' AS osztalyJel, @@ -719,8 +709,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' tanar.szuletesiHely,tanar.szuletesiIdo, '' as lakhelyOrszag, '' as lakhelyHelyseg, '' as lakhelyIrsz, '' AS lakHely, '' AS telefon, '' AS mobil, tanar.statusz, 'Tanár' AS beoszt, TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, - TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".tanar, mayor_private.accounts, intezmeny_".$m2n['isk_rovidnev'].".tankorTanar, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter + TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".tanar, mayor_private.accounts, intezmeny_".$cfg['isk_rovidnev'].".tankorTanar, intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' AND ( (tanar.beDt <= '".$szm['reqDt']."' AND ( tanar.kiDt >= '".$szm['reqDt']."' OR tanar.kiDt IS NULL)) /*OR (tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt OR tanar.kiDt IS NULL))*/ ) @@ -748,14 +738,14 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } - function get_mayor_diak($link){ // diákok lekérdezése - global $m2n,$log; + function get_mayor_diak($link, $date){ // diákok lekérdezése + global $cfg,$log; $ret = array(); $req_oszt = "'#'"; - foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra + foreach($cfg['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra $req_oszt .= ",'$val'"; } - $szm = get_mayor_szemeszter($link, $m2n['zaras_tartas']); + $szm = get_mayor_szemeszter($link, $date); if(!empty($szm)){ $q = "SELECT accounts.userAccount, accounts.mail, diak.email, diak.diakId, tankorDiak.tankorId, diak.oId, diak.diakigazolvanySzam AS employeeId, diak.jogviszonyKezdete AS beDt, diak.jogviszonyVege AS kiDt, osztaly.kezdoTanev, osztaly.vegzoTanev, osztaly.jel, diak.kezdoTanev AS beEv, @@ -764,16 +754,16 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' TRIM(BOTH ' ' FROM CONCAT_WS(' ',diak.lakhelyKozteruletNev, diak.lakhelyKozteruletJelleg, diak.lakhelyHazszam, diak.lakhelyEmelet, diak.lakhelyAjto)) AS lakHely, diak.telefon, diak.mobil, diak.statusz, TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, - TRIM(BOTH ' ' FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".diak, mayor_private.accounts, intezmeny_".$m2n['isk_rovidnev'].".tankorDiak, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter, - intezmeny_".$m2n['isk_rovidnev'].".osztalyDiak, intezmeny_".$m2n['isk_rovidnev'].".osztaly, naplo_".$m2n['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo + TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".diak, mayor_private.accounts, intezmeny_".$cfg['isk_rovidnev'].".tankorDiak, intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter, + intezmeny_".$cfg['isk_rovidnev'].".osztalyDiak, intezmeny_".$cfg['isk_rovidnev'].".osztaly, naplo_".$cfg['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo WHERE diak.diakId IN ( SELECT diakId - FROM intezmeny_".$m2n['isk_rovidnev'].".osztalyDiak + FROM intezmeny_".$cfg['isk_rovidnev'].".osztalyDiak WHERE osztalyId IN ( SELECT osztalyId - FROM naplo_".$m2n['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo - WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") + FROM naplo_".$cfg['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo + WHERE evfolyamJel >= ".$cfg['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") ORDER BY osztalyId) ORDER BY diakId) AND diak.statusz != 'jogviszonya lezárva' AND diak.statusz != 'felvételt nyert' AND diak.oId = accounts.studyId @@ -811,100 +801,110 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' //--------------------------------------------------------------------------------------------------------------------------------------------// - if(nxt_get_version() < 13){ //Nextcloud 13-tól támogatott + + if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n\n"; $t_start = microtime(true); } + if(true) { echo "*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } + + if(!isset($cfg['allapot_tartas']) or empty($cfg['allapot_tartas']) or $cfg['allapot_tartas'] == "1970-01-01"){ //A jelölt nap állapotának betöltése + $cfg['allapot_tartas'] = date("Y-m-d"); + } + + if($printconfig === true or $debug === true){ + echo "\n Betöltött Konfig:\n"; + $m2l = $cfg; + $m2l['infotxt_szöveg'] = "<-- TEXT -->"; //Túl hosszú lenne kiprintelni + var_export($m2l); + echo "\n"; + } + $log['verbose'] = $cfg['verbose']; + if($debug === true) {$log['verbose'] = 100;} + if( $cfg['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } + + + + +//------------------------------------------------------------------------------------------------------------------------------- + $ret = nxt_get_version(); + if($ret[1] < 13){ //Nextcloud 13-tól támogatott echo "\n\n******** Legalább Nextcloud 13-mas verzió szükséges! ********\n\n"; + echo $ret[0]."\n\n"; die(); } if($printhelp === true){ print_help(); die(); } - if ($m2n['manage_groupdirs'] === true && $m2n['manage_groups'] === false){ + if ($cfg['manage_groupdirs'] === true && $cfg['manage_groups'] === false){ print_help(); die(); } -//------------------------------------------------------------------------------------------------------------------------------- - if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n\n"; $t_start = microtime(true); } - if(true) { echo "*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } - if($printconfig === true){ - echo "\n Betöltött Konfig:\n"; - $m2l = $m2n; - $m2l['infotxt_szöveg'] = "<-- TEXT -->"; //Túl hosszú lenne kiprintelni - var_export($m2l); - echo "\n"; + if(($link = db_connect($cfg['db_m2n_db'])) == FALSE){ //csatlakozás + echo "\n******** MySQL (general) kapcsolat hiba. ********\n"; + echo "\n******** Script leáll... ********\n"; + die(); } - $log['verbose'] = $m2n['verbose']; - if($debug === true) {$log['verbose'] = 100;} - if( $m2n['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } + script_install($link); // $link -> script, $link2 -> mayor - if(($link = db_connect($db)) == FALSE){ //csatlakozás - echo "\n******** MySQL (general) kapcsolat hiba. ********\n"; + + //ha a mayor egy másik szerveren lenne + if(!empty($cfg['db_mayor_user'])){ $cfg['db_user'] = $cfg['db_mayor_user']; } + if(!empty($cfg['db_mayor_pass'])){ $cfg['db_pass'] = $cfg['db_mayor_pass']; } + if(!empty($cfg['db_mayor_host'])){ $cfg['db_host'] = $cfg['db_mayor_host']; } + if(!empty($cfg['db_mayor_port'])){ $cfg['db_port'] = $cfg['db_mayor_port']; } + + if(($link2 = db_connect()) == FALSE){ + echo "\n******** MySQL (mayor) kapcsolat hiba. ********\n"; echo "\n******** Script leáll... ********\n"; die(); - } - $link2 = $link; - - // group_add($m2n['mindenki_csop']); // A "mindenki" csoport hozzáadása - // group_add($m2n['mindenki_tanar']); // A "mindenki"/tanár csoport hozzáadása - // group_add($m2n['mindenki_diak']); // A "mindenki"/diák csoport hozzáadása - - if(isset($db['mayor_user']) and isset($db['mayor_pass']) and isset($db['mayor_host']) or isset($db['mayor_port'])) - { - $db['user'] = $db['mayor_user']; //ha a mayor egy másik szerveren lenne - $db['pass'] = $db['mayor_pass']; - $db['host'] = $db['mayor_host']; - $db['port'] = $db['mayor_port']; - if(($link2 = db_connect($db)) == FALSE){ - echo "\n******** MySQL (mayor) kapcsolat hiba. ********\n"; - echo "\n******** Script leáll... ********\n"; - die(); - } else { - if ($log['verbose'] > 0 ){ echo "***\tMayor DB connect.\n"; } - } + } else { + if ($log['verbose'] > 0 ){ echo "***\tMayor DB connected.\n"; } } + // group_add($cfg['mindenki_csop']); // A "mindenki" csoport hozzáadása (később adjuk hozzá) + // group_add($cfg['mindenki_tanar']); // A "mindenki"/tanár csoport hozzáadása + // group_add($cfg['mindenki_diak']); // A "mindenki"/diák csoport hozzáadása //------------------------------------------------------------------------------------------------------------------------------ // Létrehozza az új coportokat a Mayor tankörök szerint if ($log['verbose'] > 0 ){ echo "\n***\tCsoportok egyeztetése.\n";} - $tankorok = get_mayor_tankor($link2); - $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_csop'] ))); - $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_tanar'] ))); - $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_diak'] ))); + $tankorok = get_mayor_tankor($link2, $cfg['allapot_tartas']); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $cfg['mindenki_csop'] ))); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $cfg['mindenki_tanar'] ))); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $cfg['mindenki_diak'] ))); $nxt_csop = nxt_group_list(); $elozo_tcsop = ""; $mod_nxt_group = 0; - if($m2n['manage_groups'] === true){ + if($cfg['manage_groups'] === true){ foreach($tankorok as $key => $val){ //Végignézi a tankörök szerint foreach($nxt_csop as $key2 => $val2){ if($key2 == $val['tankorNev']){ //Már van ilyen (tankör)nevű csoport - if ($log['verbose'] > 3 ){ echo " -\t Csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\tok.\n";} + if ($log['verbose'] > 3 ){ echo " -\t Csoport:".po("\t".$val['tankorNev'],$cfg['csoportnev_hossz'],1)."-\tok.\n";} $elozo_tcsop = $val['tankorNev']; break; } } unset($nxt_csop[$val['tankorNev']]); //Megvizsgálva, többször már nem kell dönteni róla. if( $val['tankorNev'] == $elozo_tcsop and $key2 != $val['tankorNev'] ){ //Duplikált tankör(név) a Mayorban - if($log['verbose'] > 2 ){ echo "* -\t Dupla tankör:".po("\t".$val['tankorNev'], $m2n['csoportnev_hossz'],1)."-\tmayor.\n";} + if($log['verbose'] > 2 ){ echo "* -\t Dupla tankör:".po("\t".$val['tankorNev'], $cfg['csoportnev_hossz'],1)."-\tmayor.\n";} } else if($key2 != $val['tankorNev']){ //Ha nincs ilyen (tankör)nevű csoport group_add($val['tankorNev']); //Akkor létrehozza $mod_nxt_group++; - if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\thozzáadva.\n";} + if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$cfg['csoportnev_hossz'],1)."-\thozzáadva.\n";} } } // A megszűnt tanköröket-csoportokat kitörli foreach($nxt_csop as $key => $val){ - if(substr($key, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. + if(substr($key, 0, strlen($cfg['csoport_prefix'])) === $cfg['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. group_del($key); //elvégzi a törlést $mod_nxt_group++; - if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t eltávolítva.\n";} + if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$cfg['csoportnev_hossz'],1)."-\t eltávolítva.\n";} } else { - if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t békén hagyva.\n";} + if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$cfg['csoportnev_hossz'],1)."-\t békén hagyva.\n";} } // Figyelem! A csoport prefix-szel: "(tk) " kezdődő csoportokat magáénak tekinti, automatikusan töröli! } // Akkor is, ha az külön, kézzel lett létrehozva. } @@ -915,31 +915,31 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' // Felhasználónevek egyeztetése if ($log['verbose'] > 0 ){ echo "\n***\tFelhasználók egyeztetése.\n";} - $mayor_tanar = get_mayor_tanar($link2); //Rendezve jön - $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $m2n['mindenki_tanar']); //csak rendezett tömbökön! - $mayor_tanar = set_param_to_user($mayor_tanar, null, 'quota', $m2n['default_quota']); + $mayor_tanar = get_mayor_tanar($link2, $cfg['allapot_tartas']); //Rendezve jön + $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $cfg['mindenki_tanar']); //csak rendezett tömbökön! + $mayor_tanar = set_param_to_user($mayor_tanar, null, 'quota', $cfg['default_quota']); $mayor_tanar = set_param_to_user($mayor_tanar, null, 'diakId', -1 ); usort($mayor_tanar, "mayor_userlistcmp"); - $mayor_diak = get_mayor_diak($link2); //mysql rendezi - $mayor_diak = add_tk_to_users( $mayor_diak, null, $m2n['mindenki_diak']); //csak rendezett tömbökön! - $mayor_diak = set_param_to_user($mayor_diak, null, 'quota', $m2n['diak_quota']); + $mayor_diak = get_mayor_diak($link2, $cfg['allapot_tartas']); //mysql rendezi + $mayor_diak = add_tk_to_users( $mayor_diak, null, $cfg['mindenki_diak']); //csak rendezett tömbökön! + $mayor_diak = set_param_to_user($mayor_diak, null, 'quota', $cfg['diak_quota']); $mayor_diak = set_param_to_user($mayor_diak, null, 'tanarId', -1 ); usort($mayor_diak, "mayor_userlistcmp"); $mayor_user = array(); $mayor_user = array_merge($mayor_tanar, $mayor_diak); //Tanár, és diák lista együtt - if(isset($m2n['megfigyelo_user']) && $m2n['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére + if(isset($cfg['megfigyelo_user']) && $cfg['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére $mayor_user = array_merge($mayor_user, array( - array( 'userAccount' => $m2n['megfigyelo_user'], //A megfigyelő user legyen egyben virtuális tanár is + array( 'userAccount' => $cfg['megfigyelo_user'], //A megfigyelő user legyen egyben virtuális tanár is 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin Megfigyelő", - 'email' => $m2n['default_email'], - 'tankorNev' => $m2n['mindenki_tanar'], + 'email' => $cfg['default_email'], + 'tankorNev' => $cfg['mindenki_tanar'], ))); - foreach(get_mayor_tankor($link2) as $key => $val){ + foreach(get_mayor_tankor($link2, $cfg['allapot_tartas']) as $key => $val){ $mayor_user = array_merge($mayor_user, array( - array( 'userAccount' => $m2n['megfigyelo_user'], - 'email' => $m2n['default_email'], + array( 'userAccount' => $cfg['megfigyelo_user'], + 'email' => $cfg['default_email'], 'tanarId' => 1, 'diakId' => 0, 'tankorId' => $val['tankorId'], @@ -951,7 +951,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } } usort($mayor_user, "mayor_userlistcmp"); //rendezés - $mayor_user = add_tk_to_users( $mayor_user, null, $m2n['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport + $mayor_user = add_tk_to_users( $mayor_user, null, $cfg['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport usort($mayor_user, "mayor_userlistcmp"); //Végén ismét rendezzük az egészet $mayor_user = array_merge($mayor_user, array(array('userAccount' => null, 'fullName' => null, 'tankorNev' => null, 'diakId' => 0, 'tanarId' => 0,)) ); //strázsa a lista végére @@ -979,7 +979,7 @@ die(); if($curr != $val['userAccount']){ //CSAK Rendezett tömbökön !! foreach($nxt_user as $key2 => $val2){ if($curr == $key2){ //Már létezik a felhasználó a Nextcloud-ban - $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tlétezik.\n"; + $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tlétezik.\n"; if ($log['verbose'] > 3 ){ echo " -".$log['curr']; $log['curr'] = "";} if ( in_array($curr, $m2n_catalog['account'])){ //Benne van-e a nyilvántartásban? if($m2n_catalog['status'][array_keys($m2n_catalog['account'], $curr)[0]] == 'disabled' ){ // Ha le lett tiltva @@ -987,48 +987,48 @@ die(); catalog_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi, user_ena($curr); // ha a script tiltotta le. $mod_nxt_user++; - $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tengedélyezve.\n"; + $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tengedélyezve.\n"; if ($log['verbose'] > 2 ){ echo " -".$log['curr']; $log['curr'] = ""; } //Ez is változtatás } } else { //Nincs a katalógusban, nincs tiltva, felvesszük 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 ($log['verbose'] > 1 ){ echo "-\t\tA felhasználó:".po("\t$curr",$cfg['felhasznalo_hossz'],1)."-\tnyilvántartásba véve.\n";} } //--------------------------------------- QUOTA -----------------------------------// - if($m2n['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 + if($cfg['always_set_diak_quota'] === true && $curr_tanarId < 0 && $curr_diakId > 0 ){ //Állítsunk-e erőből (diák) qvótát? + $params['quota'] = $cfg['diak_quota']; // Alapértelmezett diák kvóta user_set($curr,$params); $mod_nxt_user++; if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\t\n"; } } - if($m2n['manage_groups'] === true){ //Csak, ha a acsoportokhoz is nyúlunk + if($cfg['manage_groups'] === true){ //Csak, ha a acsoportokhoz is nyúlunk //------------------------- Tankörmappa györkér + info.txt ------------------------// - $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); - if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix'],$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} - if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + $ret = groupdir_create_root($curr, $curr_tanarId, $cfg['groupdir_prefix']); + if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$cfg['groupdir_prefix'],$cfg['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} + if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/". $cfg['groupdir_prefix']."/INFO.txt",$cfg['csoportnev_hossz'],1)."\tfájl.\n";} //------------------------------------------ Tankörök egyeztetése -------------------------------------------// 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($key3, $tankorei) /*or $key3 == $cfg['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";} + if ($log['verbose'] > 3 ){ echo " -\t\tBenne van a:".po("\t$key3",$cfg['csoportnev_hossz'],1)."\tcsoportban.\n";} } 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"; } + if ($log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tHozzáadva a:".po("\t$key3",$cfg['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } group_user_add($key3, $curr); //A "mindenki csoportot is ellenőrzi $mod_nxt_user++; } //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $cfg['groupdir_prefix']."/".$key3); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $cfg['groupdir_prefix']."/".$key3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappába\n";} //------------------------------------- Tankör (Csoportból) törlés -------------------------// } 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"; } + if(in_array($curr, $val3) and (substr($key3, 0, strlen($cfg['csoport_prefix'])) === $cfg['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",$cfg['csoportnev_hossz'],1)."\tcsoportból.\n"; } group_user_del($key3, $curr); //egy korábbi tankör lehetett... $mod_nxt_user++; } @@ -1036,11 +1036,11 @@ die(); } //------------------------------------- Tankörmappa törlés + NXT-rescan ----------------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], $tankorei); - if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}} - if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}} - if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} - if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + $ret = groupdir_finish($curr, $curr_tanarId, $cfg['groupdir_prefix'], $tankorei); + if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappából törölve.\n";}} + if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappában.\n";}} + if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappában békén hagyva.\n";}} + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$cfg['groupdir_prefix']."/", $cfg['csoportnev_hossz'],1)."\t mappán.\n";} } $mod_nxt_user_all++; break; @@ -1051,36 +1051,36 @@ die(); 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 ($log['verbose'] > 2 ){ echo "**-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tlétrehozva.\n"; } $mod_nxt_user++; - if($m2n['manage_groups'] === true){ - $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); - if ($ret[0] === true && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/",$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} - if ($ret[1] > 0 && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + if($cfg['manage_groups'] === true){ + $ret = groupdir_create_root($curr, $curr_tanarId, $cfg['groupdir_prefix']); + if ($ret[0] === true && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$cfg['groupdir_prefix']."/",$cfg['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} + if ($ret[1] > 0 && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$cfg['groupdir_prefix']."/INFO.txt",$cfg['csoportnev_hossz'],1)."\tfájl.\n";} 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); - if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$cfg['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $cfg['groupdir_prefix']."/".$val3); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappa\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $cfg['groupdir_prefix']."/".$val3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappa\n";} } } - $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); - if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + $ret = groupdir_finish($curr, $curr_tanarId, $cfg['groupdir_prefix'], null); + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$cfg['groupdir_prefix']."/", $cfg['csoportnev_hossz'],1)."\t mappán.\n";} } 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 + $params['quota'] = $cfg['diak_quota']; // Alapértelmezett kvóta } else { - $params['quota'] = $m2n['default_quota']; // Alapértelmezett kvóta + $params['quota'] = $cfg['default_quota']; // Alapértelmezett kvóta } - $params['lang'] = $m2n['default_lang']; // Nyelv + $params['lang'] = $cfg['default_lang']; // Nyelv if($curr_e == ""){ - $params['email'] = $m2n['default_email']; // e-mail beállítása + $params['email'] = $cfg['default_email']; // e-mail beállítása } else { $params['email'] = $curr_e; // ha van a mysql-ben e-mail, akkor azt használja } @@ -1108,11 +1108,11 @@ die(); if( nxt_user_lastlogin($key) == "1970-01-01T00:00:00+00:00" ){ //Még soha nem lépett be = 1970.01.01 ?? user_del($key); //Akkor törli catalog_userdel($link, $key); //A listáról is - if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\ttörölve.\n"; } + if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$cfg['felhasznalo_hossz'],1)."--\ttörölve.\n"; } } else { user_dis($key); //Különben csak letiltja (fájlok ne vesszenek el) catalog_userdis($link, $key); //Feljegyzi a nyilvántartásba - if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\tletiltva.\n"; } + if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$cfg['felhasznalo_hossz'],1)."--\tletiltva.\n"; } } $mod_nxt_user++; $mod_nxt_user_all++; @@ -1137,13 +1137,13 @@ die(); foreach($m2n_catalog['account'] as $key => $val){ if(@$nxt_user[$val] === null ){ //Erre a nextcloud "occ" parancs hibakezelése miatt van szükség - if ($log['verbose'] > 4 ){ echo "**-\tFelhasználónév:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tkivéve a nyilvántartásból.\n";} + if ($log['verbose'] > 4 ){ echo "**-\tFelhasználónév:".po("\t($val)",$cfg['felhasznalo_hossz'],1)."--\tkivéve a nyilvántartásból.\n";} catalog_userdel($link, $val); } } - foreach($m2n_forbidden as $key => $val){ //Szinkronizálja a $m2n['kihagy'] listát a nyilvántartással. - if(!in_array($val, $m2n['kihagy'])){ - if ($log['verbose'] > 4 ){ echo "**-\tFelhasználó:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tújra kezelve.\n";} + foreach($m2n_forbidden as $key => $val){ //Szinkronizálja a $cfg['kihagy'] listát a nyilvántartással. + if(!in_array($val, $cfg['kihagy'])){ + if ($log['verbose'] > 4 ){ echo "**-\tFelhasználó:".po("\t($val)",$cfg['felhasznalo_hossz'],1)."--\tújra kezelve.\n";} catalog_userena($link,$val); user_ena($val); } @@ -1166,7 +1166,7 @@ die(); if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run." min.)\nkész.\n";} //endline } else { - echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; + echo "\n\n******** Legalább PHP5 és mysqli szükséges! ********\n\n"; } -- cgit v1.2.3 From 81c27761e8e171054792672b2011a0335655518a Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 21 Feb 2021 18:38:14 +0100 Subject: M2N: Jelszó-generátor --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 6 +- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 181 +++++++++++++---------- 2 files changed, 108 insertions(+), 79 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 460b23c9..e38be6ba 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -35,14 +35,14 @@ $cfg['groupdir_prefix'] = "Iskolai Távoktatás"; $cfg['mindenki_csop'] = "naplós_felhasználók"; $cfg['mindenki_tanar'] = "naplós_tanárok"; $cfg['mindenki_diak'] = "naplós_diákok"; -$cfg['zaras_tartas'] = "2018-06-14"; // Ha nem kell, akkor állítsd át "1970-01-01"-re. +$cfg['allapot_tartas'] = "2018-06-14"; // Ha nem kell, akkor állítsd át "1970-01-01"-re. $cfg['megfigyelo_user'] = "naplo_robot"; $cfg['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') $cfg['verbose'] = 3 ; -$cfg['rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=hu"; -$cfg['rootBindPass'] = ""; +$cfg['ad_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=hu"; +$cfg['ad_rootBindPass'] = ""; $occ_path = "/var/www/nextcloud/"; diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index f68e83f4..34980d97 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -45,7 +45,7 @@ $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; $printhelp = false; $printconfig = false; -$printpassw = false; +$printpasswds = false; $debug = false; $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ő. @@ -58,7 +58,7 @@ for($i = 1; $i<$argc; $i++){ //Ha van külön config megadva, akkor először a if($argv[$i] == "--config-file" ){$cfgfile = strval($argv[$i+1]); $i++;} } if(file_exists($cfgfile) === TRUE){ include($cfgfile); } //Config betöltés -if(!empty($m2n)){ $cfg_o = $cfg; $cfg = $m2n; $cfg = array_merge($cfg, $cfg_o); } +if(!empty($m2n)){ $cfg_o = $cfg; $cfg = $m2n; $cfg = array_merge($cfg, $cfg_o); } //Ha valahol még a régi config lenne for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--help" ){$printhelp = true;} @@ -69,7 +69,7 @@ for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--manage-groupdirs" and is_string($argv[$i+1])){$cfg['manage_groupdirs'] = boolval($argv[$i+1]); $i++;} if($argv[$i] == "--manage-groups" and is_string($argv[$i+1])){$cfg['manage_groups'] = boolval($argv[$i+1]); $i++;} if($argv[$i] == "--allapot-tartas" and is_string($argv[$i+1])){$cfg['allapot_tartas'] = strval($argv[$i+1]); $i++;} - if($argv[$i] == "--print-passwords" ){ $printpassw = true; } + if($argv[$i] == "--print-passwords" ){ $printpasswds = true; } if($argv[$i] == "--print-config" ){ $printconfig = true; } } @@ -79,7 +79,6 @@ function print_help(){ echo " --help : Help kiírása. \n"; echo " --debug : Ugyanaz mint a \"--loglevel 100\" \n"; echo " --config-file : Konfig fájl elérési útvonala.\n"; - echo " --config-print : A betöltött konfig kiírása\n"; echo " --loglevel x : A bőbeszédűséget/logolást tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. \n"; echo " --set-diak-quota : Az összes diák qvótáját átállítja az \"\$cfg['diak_quota'] = x\" -nél megadott értékre, \n"; echo " csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne.\n"; @@ -87,6 +86,8 @@ function print_help(){ echo " illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre.\n"; echo " --manage-groups <1/0> : Ha 1: A felhasználókat csoportokba rendezi a MaYor tankörök szerint, ha 0, nem foglalkozik vele.\n"; echo " --manage-groupdirs <1/0> : Ha 1: tankörmappákat hoz létre a tankör-csoportokhoz, ha 0, nem foglalkozik vele. (kell hozzá a --manage-groups is!)\n"; + echo " --print-config : A betöltött konfig kiírása a konzolra.\n"; + echo " --print-passwords : A létrehozott felhasználóknál a jelszavakat is megjeleníti a konzolon.\n"; echo "\n\n"; } @@ -99,7 +100,18 @@ function phpv() { //Az aktuális php verzió lekérdezése function rndstr($l, $chs) { //Ál-Véletlen stringet generál return substr(str_shuffle($chs), 0, $l); } + +function gen_password($l = 12, $inp = array()){ + global $pwchars; + return rndstr(16, $pwchars); +} +function gen_username($inp){ //Felhasználónevet generál + global $search, $replace; + $ret = str_replace($search, $replace, $inp['userAccount']); // (pl: Á->Aa, á->aa, ...) + return $ret; +} + if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', '>=')) { //MySQLi (Improved) és php7 kell! @@ -127,7 +139,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $cfg,$log; if(mysqli_query($l, "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register LIMIT 10;" ) == FALSE ){ //nincs nyilvántartás $q = "CREATE DATABASE IF NOT EXISTS ".$cfg['db_m2n_db']." DEFAULT COLLATE 'utf8_general_ci'; "; - if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n\n"; } + if ($log['verbose'] > 7 ){ echo "M2N -> \t".$q."\n\n"; } if(( $r = mysqli_query($l, $q)) !== FALSE ){ if ($log['verbose'] > 0 ){ echo "*\tAz ".$cfg['db_m2n_db']." adatbázis sikeresen létrehozva.\n"; } } @@ -137,7 +149,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' PRIMARY KEY (account)) COLLATE='utf8_general_ci' ENGINE=InnoDB;"; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } if(( $r = mysqli_query($l, $q)) !== FALSE ){ if ($log['verbose'] > 0 ){ echo "*\tAz ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register (script-katalógus) tábla sikeresen létrehozva.\n\n";} } @@ -165,7 +177,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $ret = array(); // sudo -u honlap-felho ".phpv()." /home/honlap-felho/web/occ status --output=json $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." status --output=json \"" ; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret[0] = shell_exec($e); $ret[1] = intval(explode(".", json_decode($ret[0],true)['version'])[0]); if ($log['verbose'] > 10 ){ print_r($ret); echo "\n\n"; } @@ -177,7 +189,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $ret['account'] = array(); $ret['status'] = array(); $q = "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE STATUS != 'forbidden'; "; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { if(!in_array($row['account'], $cfg['kihagy'])){ @@ -197,7 +209,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function catalog_forbiddenlist($link){ //akiket a rendszergazda kitiltott global $log,$cfg,$cfg; $q = "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE STATUS = 'forbidden'; "; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ $ret = array(); while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { @@ -215,7 +227,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function catalog_useradd($link, $account){ // feljegyzi az általa létrehozott felhasználókat global $log,$cfg; $q = "INSERT INTO ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; - if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "M2N -> \t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-hozzáadás, m2n nyilvántartásba vétele.\n"; } } @@ -224,7 +236,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function catalog_userena($link, $account){ // az engedélyezetteket global $cfg,$log; $q = "UPDATE ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-engedélyezés, m2n nyilvántartásba vétele.\n" ;} } @@ -233,7 +245,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function catalog_userdel($link, $account){ // a törölteket global $cfg,$log; $q = "DELETE FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-törlés, m2n nyilvántartásba vétele.\n"; } } @@ -242,7 +254,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function catalog_userdis($link, $account){ // a letiltottakat global $cfg,$cfg,$log; $q = "UPDATE ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } if(( mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-letiltás, m2n nyilvántartásba vétele.\n"; } } @@ -250,30 +262,34 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function user_add($userAccount, $fullName){ // létrehoz egy felhasználót a Nextcloud-ban global $occ_path,$occ_user,$cfg,$log; + $ret = array(); // export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c '".phpv()." web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' if(strlen($userAccount) > 64 or strlen($fullName) > 64){ echo "\n******** Hiba: A felahsználónév, vagy a \"teljes név\" hosszabb, mint 64 karakter! NEM hozható létre!! ********\n"; } else { - $e = "export OC_PASS=".escp(rndstr(20, $pwchars))."; su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($cfg['mindenki_csop'])." ".escp($userAccount)." \"" ; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + $pw = gen_password(16); + $ret[1] = $pw; + $e = "export OC_PASS=".escp($pw)."; su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($cfg['mindenki_csop'])." ".escp($userAccount)." \"" ; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + $ret[0] = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } + return $ret; } function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $last_login = json_decode(shell_exec($e),true)['last_seen'] ; if($last_login == "1970-01-01T00:00:00+00:00" ){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); // akkor törölhető if ($log['verbose'] > 11 ){ print_r($ret); } } else { $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); // különben csak letiltja if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -283,7 +299,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function user_info($userAccount){ // User állpot a Nextcloudban global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -293,7 +309,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function user_dis($userAccount){ // letiltja a felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -301,7 +317,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function user_ena($userAccount){ // engedélyezi global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -310,7 +326,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function nxt_group_list() { // Csoportok listázása a Nextcloud-ból global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -319,12 +335,12 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function nxt_user_list() { // Felhasználók listázása a Nextcloud-ból global $occ_path,$occ_user,$log; // $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; - // if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + // if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } // $num = shell_exec($e); $num = 1000000; //inkább kézi limit! // $num = $num + 100; // Biztos-ami-biztos, a nextcloud rejtett hibái miatt... $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -333,7 +349,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function nxt_user_lastlogin($userAccount){ // legutóbbi belépés lekérdezése global $occ_path,$occ_user,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = json_decode(shell_exec($e),true)['last_seen']; if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -344,17 +360,17 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $occ_path,$occ_user,$log; if(isset($params['quota'])){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } shell_exec( $e ); } if(isset($params['email'])){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } shell_exec( $e ); } if(isset($params['lang'])){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } shell_exec($e); } } @@ -369,11 +385,11 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } else { if(nxt_get_version()[1] < 14) { $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $cfg['db_nxt_dbname']).".".mysqli_real_escape_string($link, $cfg['db_nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; - if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; } else { $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -389,18 +405,18 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' foreach($grp[$groupName] as $key => $user){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$cfg['csoportnev_hossz']+5,1)."\t csoportból.\n"; } } $q = "DELETE FROM ".mysqli_real_escape_string($link, $cfg['db_nxt_dbname']).".".mysqli_real_escape_string($link,$cfg['db_nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; - if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\n NXT -> \t****** csoport törlési hiba. (adatbázis) ******\n"; } else { $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -410,7 +426,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function group_user_add($groupName, $userAccount){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban global $occ_user, $occ_path,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -418,7 +434,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function group_user_del($groupName, $userAccount){ // Kitöröl egy felhasználót egy Nextcoud csoportból global $occ_user, $occ_path,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -431,8 +447,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($ret === true && $log['verbose'] > 5) { echo "".phpv()." ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } - if($ret === false && $log['verbose'] > -1) { echo "".phpv()." ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? + if($ret === true && $log['verbose'] > 7) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? } if ($log['verbose'] > 11 ){ print_r($ret); } return $ret; @@ -447,9 +463,9 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' fclose($h); chown($occ_path."/data/".$user."/files/".$path, $occ_user); chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($log['verbose'] > 5) { echo "".phpv()." ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if($log['verbose'] > 7) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } else { - if($log['verbose'] > 5) { echo "".phpv()." ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } + if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } } if ($log['verbose'] > 11 ){ print_r($ret); } return $ret; @@ -458,7 +474,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx global $occ_user, $occ_path,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -466,7 +482,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function user_notify($user, $msg, $title ){ // Nextcloud értesítés global $occ_user, $occ_path, $log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -497,14 +513,14 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if(is_dir($occ_path."/data/".$user."/files/".$path."/".$val) && empty(scan_dir($user, $path."/".$val))){ // Ha mappa, és üres -> törlés rmdir($occ_path."/data/".$user."/files/".$path."/".$val); $ret[0][] = $val; - if($log['verbose'] > 5) { echo "".phpv()." ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } + if($log['verbose'] > 7) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } } else { //Nem mappa, vagy nem üres if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".rnescp(basename($val, '.please-remove').".".time().".please-remove"), "Fájl/Mappa rossz helyen! --> ".rnescp($path."/".basename($val, '.please-remove').".".time().".please-remove" )); - if($log['verbose'] > 5) { echo "".phpv()." ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } + if($log['verbose'] > 7) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } } else { // A Hanyagul otthagyottakért csak figyelmeztessen: user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjelölve! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); @@ -526,7 +542,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda - echo "".phpv()." ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; + echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli } @@ -534,7 +550,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $ret[1] = write_tofile($user, $path."/"."INFO.txt", $cfg['infotxt_szöveg']); // INFO.txt (Újra)Írása. if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } shell_exec($e); files_scan($user, $path); } @@ -618,7 +634,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } function mayor_userlistcmp($a, $b){ - return strcmp($a['userAccount'], $b['userAccount']); + return strcmp($a['fullName'], $b['fullName']); } function po($inp,$ll,$dir){ // Szép kimenetet gyárt @@ -638,10 +654,10 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $cfg,$log; $ret = array(); $q = "SELECT * FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter WHERE (statusz = 'aktív' OR statusz = 'lezárt') AND kezdesDt <= '".$date."' ORDER BY zarasDt DESC LIMIT 1; "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if( ($r = mysqli_query($link, $q)) !== FALSE ){ $ret = mysqli_fetch_array($r, MYSQLI_ASSOC); - $ret["reqDt"] = $date; //szükség lehet a megkérdezett dt-re is + if(!empty($ret)){ $ret["reqDt"] = $date; } //szükség lehet a megkérdezett dt-re is mysqli_free_result($r); } else { echo "\nMAY ->\t ******** Mayor_napló (szemeszter)lekérdezési hiba. (adatbázis) ********\n"; @@ -681,7 +697,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' ORDER BY osztalyId) ORDER BY tankorId ) ORDER BY tankorNev; "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $ret[] = $row; @@ -691,7 +707,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; } } else { - echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; + echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (Nincs ilyen Szemeszter: ".$date."!) ********\n"; } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -721,7 +737,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' AND tankorSzemeszter.tanev = '".$szm['tanev']."' AND tankorSzemeszter.szemeszter = '".$szm['szemeszter']."' ORDER BY fullName ; "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $ret[] = $row; @@ -731,7 +747,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (adatbázis) ********\n"; } } else { - echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (adatbázis) ********\n"; + echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (Nincs ilyen Szemeszter: ".$date."!) ********\n"; } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -778,7 +794,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' AND osztalyDiak.osztalyId = osztalyNaplo.osztalyId ORDER BY fullName ; "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $ret[] = $row; @@ -788,7 +804,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; } } else { - echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; + echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (Nincs ilyen Szemeszter: ".$date."!) ********"; } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -802,13 +818,15 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' - if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n\n"; $t_start = microtime(true); } - if(true) { echo "*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } - + if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n"; } + $t_start = microtime(true); + if(!isset($cfg['allapot_tartas']) or empty($cfg['allapot_tartas']) or $cfg['allapot_tartas'] == "1970-01-01"){ //A jelölt nap állapotának betöltése $cfg['allapot_tartas'] = date("Y-m-d"); } + if(true) { echo "######## Szinkron: (".$cfg['allapot_tartas'].")-hoz. ########\n"; } + if(true) { echo "\n*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } if($printconfig === true or $debug === true){ echo "\n Betöltött Konfig:\n"; $m2l = $cfg; @@ -817,7 +835,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' echo "\n"; } $log['verbose'] = $cfg['verbose']; - if($debug === true) {$log['verbose'] = 100;} + if($debug === true) {$log['verbose'] = 1000; $printpasswds = true;} if( $cfg['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } @@ -929,7 +947,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $mayor_user = array(); $mayor_user = array_merge($mayor_tanar, $mayor_diak); //Tanár, és diák lista együtt - if(isset($cfg['megfigyelo_user']) && $cfg['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére + + if(!empty($cfg['megfigyelo_user'])){ //A megfigyelő user felvétele a lista végére $mayor_user = array_merge($mayor_user, array( array( 'userAccount' => $cfg['megfigyelo_user'], //A megfigyelő user legyen egyben virtuális tanár is 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin Megfigyelő", @@ -940,19 +959,20 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $mayor_user = array_merge($mayor_user, array( array( 'userAccount' => $cfg['megfigyelo_user'], 'email' => $cfg['default_email'], - 'tanarId' => 1, + 'tanarId' => 70000000000, 'diakId' => 0, 'tankorId' => $val['tankorId'], 'fullName' => "Napló Admin Megfigyelő", 'tankorNev' => $val['tankorNev'], - ))); - //if($val['tankorNev'] == "(tk) 10.b kémia" ){ break; } - + ) + ) + ); + //if($val['tankorNev'] == "(tk) 10.b kémia" ){ break; } } } - usort($mayor_user, "mayor_userlistcmp"); //rendezés + usort($mayor_user, "mayor_userlistcmp"); //rendezés $mayor_user = add_tk_to_users( $mayor_user, null, $cfg['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport - usort($mayor_user, "mayor_userlistcmp"); //Végén ismét rendezzük az egészet + usort($mayor_user, "mayor_userlistcmp"); //Végén ismét rendezzük az egészet $mayor_user = array_merge($mayor_user, array(array('userAccount' => null, 'fullName' => null, 'tankorNev' => null, 'diakId' => 0, 'tanarId' => 0,)) ); //strázsa a lista végére $nxt_user = nxt_user_list(); @@ -962,14 +982,13 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if ($log['verbose'] > 3 ){ echo "\n";} - foreach($mayor_user as $key => $val){ - //Lecseréli az ékezetes betűket a felhasználónévből - $mayor_user[$key]['userAccount'] = str_replace($search, $replace, $val['userAccount']); // (pl: Á->Aa, á->aa, ...) - if(in_array($mayor_user[$key]['userAccount'], $m2n_forbidden) ){ //És, ha a nyilvántartásban "forbidden"-ként szerepel, + foreach($mayor_user as $key => $val){ //Lecseréli az ékezetes betűket a felhasználónévből + $mayor_user[$key]['userAccount'] = gen_username($val); // lehet saját függvény is + if(in_array($mayor_user[$key]['userAccount'], $m2n_forbidden) ){ //És, ha a nyilvántartásban "forbidden"-ként szerepel, unset($mayor_user[$key]); // akkor nem foglalkozik vele tovább. } } -die(); + $curr = ""; $tankorei = array(); $mod_nxt_user_all = 0; @@ -1049,9 +1068,10 @@ die(); unset($nxt_user[$curr]); //Felhasználó Megvizsgálva, többször már nem kell dönteni róla. if($curr != $key2 and $curr != null){ //Nincs még ilyen felhasználó - user_add($curr, $curr_n); //Akkor hozzá kell adni + $ret = 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)",$cfg['felhasznalo_hossz'],1)."--\tlétrehozva.\n"; } + if ($printpasswds === true ){ $pw = $ret[1]; } else { $pw = ""; } + if ($log['verbose'] > 2 ){ echo "**-\tFelhasználó:".po("\t".po($curr_n, 20, 1)." ($curr/$pw)",$cfg['felhasznalo_hossz'],1)." --\tlétrehozva.\n"; } $mod_nxt_user++; if($cfg['manage_groups'] === true){ @@ -1079,11 +1099,14 @@ die(); $params['quota'] = $cfg['default_quota']; // Alapértelmezett kvóta } $params['lang'] = $cfg['default_lang']; // Nyelv - if($curr_e == ""){ + /* + if($curr_email == ""){ $params['email'] = $cfg['default_email']; // e-mail beállítása } else { - $params['email'] = $curr_e; // ha van a mysql-ben e-mail, akkor azt használja + $params['email'] = $curr_email; // ha van a mysql-ben e-mail, akkor azt használja } + */ + $params['email'] = $curr_email; user_set($curr,$params); //Alapértelmezett paraméterek érvényesítése if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\tNyelv: ".$params['lang']."\tE-mail: ".$params['email']."\n";} } @@ -1094,7 +1117,13 @@ die(); $curr_n = $val['fullName']; // $curr_tanarId = $val['tanarId']; $curr_diakId = $val['diakId']; - $curr_e = @$val['email']; // + if(!empty($val['email'])) { + $curr_email = $val['email']; + } else if(!empty($val['mail'])){ + $curr_email = $val['mail']; + } else { + $curr_email = $cfg['default_email']; // e-mail beállítása + } } $tankorei[] = $val['tankorNev']; // Másodszor/Egyébként a csoportok (tankörök) gyűjtése } -- cgit v1.2.3 From 31e2a80e0f4ec0c59a09620ed66264f3c81209ca Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 21 Feb 2021 20:24:30 +0100 Subject: M2N: Új kapcsoló: --dry-run --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 191 +++++++++++++++------------ 1 file changed, 106 insertions(+), 85 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 34980d97..19ffdaad 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -43,9 +43,11 @@ $cfg['verbose'] = 3 ; $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; +$nxt_version = 0; $printhelp = false; $printconfig = false; $printpasswds = false; +$dryrun = false; $debug = false; $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ő. @@ -71,6 +73,7 @@ for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--allapot-tartas" and is_string($argv[$i+1])){$cfg['allapot_tartas'] = strval($argv[$i+1]); $i++;} if($argv[$i] == "--print-passwords" ){ $printpasswds = true; } if($argv[$i] == "--print-config" ){ $printconfig = true; } + if($argv[$i] == "--dry-run" ){ $dryrun = true; } } function print_help(){ @@ -88,6 +91,7 @@ function print_help(){ echo " --manage-groupdirs <1/0> : Ha 1: tankörmappákat hoz létre a tankör-csoportokhoz, ha 0, nem foglalkozik vele. (kell hozzá a --manage-groups is!)\n"; echo " --print-config : A betöltött konfig kiírása a konzolra.\n"; echo " --print-passwords : A létrehozott felhasználóknál a jelszavakat is megjeleníti a konzolon.\n"; + echo " --dry-run : Csak megmutatja, de nem végzi el a változtatásokat.\n"; echo "\n\n"; } @@ -112,6 +116,22 @@ function gen_username($inp){ //Felhasználónevet generál return $ret; } +function rmnp($str){ //Remove non-printable + return preg_replace('/[\x00-\x1F\x7F-\xA0\xAD]/u', '', $str); +} + +function escp($str){ //Escape strings + $str = str_replace(array("\\","`", "\'", "\"" ),array("\\\\", "\`", "\\\'", "\\\""), $str); + return escapeshellarg($str); +} + +function rnescp($str){ //Escape strings + $str = rmnp($str); + $str = escapeshellarg($str); + $str = str_replace(array("\\", "`", "'", "\"", "\ ", ), array("", "", "", "", "_", ), $str); + return $str; +} + if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', '>=')) { //MySQLi (Improved) és php7 kell! @@ -156,21 +176,6 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } } - function rmnp($str){ //Remove non-printable - return preg_replace('/[\x00-\x1F\x7F-\xA0\xAD]/u', '', $str); - } - - function escp($str){ //Escape strings - $str = str_replace(array("\\","`", "\'", "\"" ),array("\\\\", "\`", "\\\'", "\\\""), $str); - return escapeshellarg($str); - } - - function rnescp($str){ //Escape strings - $str = rmnp($str); - $str = escapeshellarg($str); - $str = str_replace(array("\\", "`", "'", "\"", "\ ", ), array("", "", "", "", "_", ), $str); - return $str; - } function nxt_get_version(){ global $occ_path,$occ_user,$cfg,$log; @@ -225,43 +230,43 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } function catalog_useradd($link, $account){ // feljegyzi az általa létrehozott felhasználókat - global $log,$cfg; + global $log,$cfg,$dryrun; $q = "INSERT INTO ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; if ($log['verbose'] > 7 ){ echo "M2N -> \t".$q."\n"; } - if(( mysqli_query($link, $q)) !== FALSE ){ + if( $dryrun or (mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-hozzáadás, m2n nyilvántartásba vétele.\n"; } } } function catalog_userena($link, $account){ // az engedélyezetteket - global $cfg,$log; + global $cfg,$log,$dryrun; $q = "UPDATE ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } - if(( mysqli_query($link, $q)) !== FALSE ){ + if( $dryrun or (mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-engedélyezés, m2n nyilvántartásba vétele.\n" ;} } } function catalog_userdel($link, $account){ // a törölteket - global $cfg,$log; + global $cfg,$log,$dryrun; $q = "DELETE FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } - if(( mysqli_query($link, $q)) !== FALSE ){ + if( $dryrun or (mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-törlés, m2n nyilvántartásba vétele.\n"; } } } function catalog_userdis($link, $account){ // a letiltottakat - global $cfg,$cfg,$log; + global $cfg,$cfg,$log,$dryrun; $q = "UPDATE ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } - if(( mysqli_query($link, $q)) !== FALSE ){ + if( $dryrun or (mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-letiltás, m2n nyilvántartásba vétele.\n"; } } } function user_add($userAccount, $fullName){ // létrehoz egy felhasználót a Nextcloud-ban - global $occ_path,$occ_user,$cfg,$log; + global $occ_path,$occ_user,$cfg,$log,$dryrun; $ret = array(); // export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c '".phpv()." web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' if(strlen($userAccount) > 64 or strlen($fullName) > 64){ @@ -271,26 +276,26 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $ret[1] = $pw; $e = "export OC_PASS=".escp($pw)."; su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($cfg['mindenki_csop'])." ".escp($userAccount)." \"" ; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret[0] = shell_exec($e); + if(!$dryrun){ $ret[0] = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } } return $ret; } function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban - global $occ_path,$occ_user,$log; + global $occ_path,$occ_user,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $last_login = json_decode(shell_exec($e),true)['last_seen'] ; if($last_login == "1970-01-01T00:00:00+00:00" ){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); // akkor törölhető + if(!$dryrun){ $ret = shell_exec($e); } // akkor törölhető if ($log['verbose'] > 11 ){ print_r($ret); } } else { $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); // különben csak letiltja + if(!$dryrun){ $ret = shell_exec($e); } // különben csak letiltja if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -307,18 +312,18 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function user_dis($userAccount){ // letiltja a felhasználót a Nextcloud-ban - global $occ_path,$occ_user,$log; + global $occ_path,$occ_user,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + if(!$dryrun){ $ret = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } } function user_ena($userAccount){ // engedélyezi - global $occ_path,$occ_user,$log; + global $occ_path,$occ_user,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + if(!$dryrun){ $ret = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -357,56 +362,58 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function user_set($userAccount, array $params){ //beállítja az e-mailt, quota-t, nyelvet a kapott értékekre - global $occ_path,$occ_user,$log; + global $occ_path,$occ_user,$log,$dryrun; if(isset($params['quota'])){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - shell_exec( $e ); + if(!$dryrun){ shell_exec( $e ); } } if(isset($params['email'])){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - shell_exec( $e ); + if(!$dryrun){ shell_exec( $e ); } } if(isset($params['lang'])){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + if(!$dryrun) { shell_exec($e); } } } function group_add($groupName){ //Új csoport létrehozása a Nextcloud-ban - global $occ_user,$occ_path,$link,$cfg,$log; + global $occ_user,$occ_path,$link,$cfg,$log,$nxt_version,$dryrun; $groupName = rmnp($groupName); if(strlen($groupName) > 64){ //mivel (egyelőre) nics erre 'occ' parancs, ezért közvetlenül kell... echo "\n****** Hiba: a csoportnév nagyobb, mint 64 karakter!! ******\n"; } else { - if(nxt_get_version()[1] < 14) { + if($nxt_version < 14) { $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $cfg['db_nxt_dbname']).".".mysqli_real_escape_string($link, $cfg['db_nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; if ($log['verbose'] > 7 ){ echo "NXT ->\t".$q."\n"; } - if(mysqli_query($link, $q) !== TRUE ) echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; + if(!$dryrun){ + if( mysqli_query($link, $q) !== TRUE ) { echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; } + } } else { $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + if(!$dryrun){ $ret = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } } } } function group_del($groupName){ // Csoport törlése a Nextcloud-ból - global $occ_user,$occ_path,$cfg,$link,$log,$cfg; + global $occ_user,$occ_path,$cfg,$link,$log,$cfg,$nxt_version,$dryrun; $grp = nxt_group_list(); $groupName = rmnp($groupName); if(isset($grp[$groupName])){ - if(nxt_get_version()[1] < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... + if($nxt_version < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... foreach($grp[$groupName] as $key => $user){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + if(!$dryrun){ $ret = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$cfg['csoportnev_hossz']+5,1)."\t csoportból.\n"; } } @@ -424,10 +431,10 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } function group_user_add($groupName, $userAccount){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban - global $occ_user, $occ_path,$log; + global $occ_user, $occ_path,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + if(!$dryrun){ $ret = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -435,18 +442,20 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $occ_user, $occ_path,$log; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + if(!$dryrun){ $ret = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } } function create_dir($user, $path){ // Készít egy mappát a: data/$user/files/$path alá - global $occ_user, $occ_path,$log; + global $occ_user, $occ_path,$log,$dryrun; $ret = null; if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még nem létezik - $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza - chown($occ_path."/data/".$user."/files/".$path, $occ_user); - chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + if(!$dryrun){ + $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza + chown($occ_path."/data/".$user."/files/".$path, $occ_user); + chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + } else { $ret = true; } if($ret === true && $log['verbose'] > 7) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? } @@ -456,13 +465,17 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát - global $occ_user, $occ_path,$log; + global $occ_user, $occ_path,$log,$dryrun; $ret = 0; if( ($h = @fopen($occ_path."/data/".$user."/files/".$path, 'w+')) !== false ){ - $ret = fwrite($h, $msg ); + if(!$dryrun){ + $ret = fwrite($h, $msg ); + } else { $ret = strlen($msg); } fclose($h); - chown($occ_path."/data/".$user."/files/".$path, $occ_user); - chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + if(!$dryrun){ + chown($occ_path."/data/".$user."/files/".$path, $occ_user); + chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + } if($log['verbose'] > 7) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } else { if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } @@ -472,18 +485,18 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx - global $occ_user, $occ_path,$log; + global $occ_user, $occ_path,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + if(!$dryrun){ $ret = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } } function user_notify($user, $msg, $title ){ // Nextcloud értesítés - global $occ_user, $occ_path, $log; + global $occ_user, $occ_path, $log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + if(!$dryrun){ $ret = shell_exec($e); } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -502,7 +515,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } function clean_dir($user, $path, $tankorei){ //Tankörmappák kitisztítása (path: mappagyökér) - global $occ_user, $occ_path, $log, $cfg; + global $occ_user, $occ_path, $log, $cfg, $dryrun; $listdir = scan_dir($user, $path); $ret[0] = array(); $ret[1] = array(); @@ -511,13 +524,13 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if((!in_array($val, $tankorei) && !in_array(basename($val,"_beadás"), $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($user, $path."/".$val))){ // Ha mappa, és üres -> törlés - rmdir($occ_path."/data/".$user."/files/".$path."/".$val); + if(!$dryrun){ rmdir($occ_path."/data/".$user."/files/".$path."/".$val); } $ret[0][] = $val; if($log['verbose'] > 7) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } } else { //Nem mappa, vagy nem üres if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él - rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); + if(!$dryrun){ rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); } $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".rnescp(basename($val, '.please-remove').".".time().".please-remove"), "Fájl/Mappa rossz helyen! --> ".rnescp($path."/".basename($val, '.please-remove').".".time().".please-remove" )); if($log['verbose'] > 7) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } @@ -536,12 +549,12 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja $path=tankörgyökér - global $cfg, $occ_path, $occ_user,$log; + global $cfg, $occ_path, $occ_user,$log,$dryrun; $ret = array(false, false); if((empty($cfg['groupdir_users']) || in_array($user, $cfg['groupdir_users'])) && $oktId > 0 && $cfg['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl - rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda + if(!$dryrun){ rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); } //Átnevezi, hogy azért mégse vasszen oda echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli @@ -551,7 +564,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + if(!$dryrun){ shell_exec($e); } files_scan($user, $path); } } @@ -653,7 +666,13 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' function get_mayor_szemeszter($link, $date) { global $cfg,$log; $ret = array(); - $q = "SELECT * FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter WHERE (statusz = 'aktív' OR statusz = 'lezárt') AND kezdesDt <= '".$date."' ORDER BY zarasDt DESC LIMIT 1; "; + $q = "SELECT * FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter + WHERE (statusz = 'aktív' OR statusz = 'lezárt') AND kezdesDt <= '".$date."' + AND '".$date."' <= (SELECT MAX(zarasDt) FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' OR statusz = 'lezárt' ) + AND '".$date."' >= (SELECT MIN(kezdesDt) FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' OR statusz = 'lezárt' ) + ORDER BY zarasDt DESC + LIMIT 1; + "; if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if( ($r = mysqli_query($link, $q)) !== FALSE ){ $ret = mysqli_fetch_array($r, MYSQLI_ASSOC); @@ -685,18 +704,19 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' "; */ //csak a megadott évfeolyamokhoz kötődő tankörök: - $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter - WHERE tanev = '".$szm['tanev']."' AND szemeszter = '".$szm['szemeszter']."' AND tankorId IN( - SELECT tankorId - FROM intezmeny_".$cfg['isk_rovidnev'].".tankorOsztaly - WHERE osztalyId IN ( - SELECT osztalyId - FROM naplo_".$cfg['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo - WHERE evfolyamJel >= ".$cfg['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") - ORDER BY osztalyId) - ORDER BY tankorId ) ORDER BY tankorNev; - "; + $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter + WHERE tanev = '".$szm['tanev']."' AND szemeszter = '".$szm['szemeszter']."' AND tankorId IN( + SELECT tankorId + FROM intezmeny_".$cfg['isk_rovidnev'].".tankorOsztaly + WHERE osztalyId IN ( + SELECT osztalyId + FROM naplo_".$cfg['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo + WHERE evfolyamJel >= ".$cfg['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") + ORDER BY osztalyId ) + ORDER BY tankorId ) + ORDER BY tankorNev; + "; if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { @@ -843,6 +863,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' //------------------------------------------------------------------------------------------------------------------------------- $ret = nxt_get_version(); + $nxt_version = $ret[1]; if($ret[1] < 13){ //Nextcloud 13-tól támogatott echo "\n\n******** Legalább Nextcloud 13-mas verzió szükséges! ********\n\n"; echo $ret[0]."\n\n"; @@ -983,7 +1004,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if ($log['verbose'] > 3 ){ echo "\n";} foreach($mayor_user as $key => $val){ //Lecseréli az ékezetes betűket a felhasználónévből - $mayor_user[$key]['userAccount'] = gen_username($val); // lehet saját függvény is + $mayor_user[$key]['userAccount'] = gen_username($val); // lehet saját függvény is if(in_array($mayor_user[$key]['userAccount'], $m2n_forbidden) ){ //És, ha a nyilvántartásban "forbidden"-ként szerepel, unset($mayor_user[$key]); // akkor nem foglalkozik vele tovább. } @@ -998,7 +1019,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if($curr != $val['userAccount']){ //CSAK Rendezett tömbökön !! foreach($nxt_user as $key2 => $val2){ if($curr == $key2){ //Már létezik a felhasználó a Nextcloud-ban - $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tlétezik.\n"; + $log['curr'] = "-\n-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tlétezik.\n"; if ($log['verbose'] > 3 ){ echo " -".$log['curr']; $log['curr'] = "";} if ( in_array($curr, $m2n_catalog['account'])){ //Benne van-e a nyilvántartásban? if($m2n_catalog['status'][array_keys($m2n_catalog['account'], $curr)[0]] == 'disabled' ){ // Ha le lett tiltva @@ -1006,7 +1027,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' catalog_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi, user_ena($curr); // ha a script tiltotta le. $mod_nxt_user++; - $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tengedélyezve.\n"; + $log['curr'] = "-\n-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tengedélyezve.\n"; if ($log['verbose'] > 2 ){ echo " -".$log['curr']; $log['curr'] = ""; } //Ez is változtatás } } else { //Nincs a katalógusban, nincs tiltva, felvesszük @@ -1071,7 +1092,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $ret = user_add($curr, $curr_n); //Akkor hozzá kell adni catalog_useradd($link, $curr); if ($printpasswds === true ){ $pw = $ret[1]; } else { $pw = ""; } - if ($log['verbose'] > 2 ){ echo "**-\tFelhasználó:".po("\t".po($curr_n, 20, 1)." ($curr/$pw)",$cfg['felhasznalo_hossz'],1)." --\tlétrehozva.\n"; } + if ($log['verbose'] > 2 ){ echo "-\n**-\tFelhasználó:".po("\t".po($curr_n, 20, 1)." ($curr/$pw)",$cfg['felhasznalo_hossz'],1)." --\tlétrehozva.\n"; } $mod_nxt_user++; if($cfg['manage_groups'] === true){ @@ -1137,11 +1158,11 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if( nxt_user_lastlogin($key) == "1970-01-01T00:00:00+00:00" ){ //Még soha nem lépett be = 1970.01.01 ?? user_del($key); //Akkor törli catalog_userdel($link, $key); //A listáról is - if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$cfg['felhasznalo_hossz'],1)."--\ttörölve.\n"; } + if ($log['verbose'] > 1 ){ echo "-\n**-\tFelhasználó:".po("\t$val ($key)",$cfg['felhasznalo_hossz'],1)."--\ttörölve.\n"; } } else { user_dis($key); //Különben csak letiltja (fájlok ne vesszenek el) catalog_userdis($link, $key); //Feljegyzi a nyilvántartásba - if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$cfg['felhasznalo_hossz'],1)."--\tletiltva.\n"; } + if ($log['verbose'] > 1 ){ echo "-\n**-\tFelhasználó:".po("\t$val ($key)",$cfg['felhasznalo_hossz'],1)."--\tletiltva.\n"; } } $mod_nxt_user++; $mod_nxt_user_all++; @@ -1166,13 +1187,13 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' foreach($m2n_catalog['account'] as $key => $val){ if(@$nxt_user[$val] === null ){ //Erre a nextcloud "occ" parancs hibakezelése miatt van szükség - if ($log['verbose'] > 4 ){ echo "**-\tFelhasználónév:".po("\t($val)",$cfg['felhasznalo_hossz'],1)."--\tkivéve a nyilvántartásból.\n";} + if ($log['verbose'] > 4 ){ echo "-\n**-\tFelhasználónév:".po("\t($val)",$cfg['felhasznalo_hossz'],1)."--\tkivéve a nyilvántartásból.\n";} catalog_userdel($link, $val); } } foreach($m2n_forbidden as $key => $val){ //Szinkronizálja a $cfg['kihagy'] listát a nyilvántartással. if(!in_array($val, $cfg['kihagy'])){ - if ($log['verbose'] > 4 ){ echo "**-\tFelhasználó:".po("\t($val)",$cfg['felhasznalo_hossz'],1)."--\tújra kezelve.\n";} + if ($log['verbose'] > 4 ){ echo "-\n**-\tFelhasználó:".po("\t($val)",$cfg['felhasznalo_hossz'],1)."--\tújra kezelve.\n";} catalog_userena($link,$val); user_ena($val); } -- cgit v1.2.3 From c6c4834a9e84c0664fad67a77f9f04d9686313b8 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 21 Feb 2021 23:46:55 +0100 Subject: M2N: Correct & OK :) --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 76 +++++++++++++++------------- 1 file changed, 42 insertions(+), 34 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 19ffdaad..1c20bb58 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -20,7 +20,7 @@ $cfg['min_evfolyam'] = 1; $cfg['isk_rovidnev'] = "rovid"; $cfg['csoport_prefix'] = "(tk) "; $cfg['default_email'] = "indulo@iskola.hu"; -//$cfg['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; //Helyette random jelszót generál +//$cfg['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; //Megszűnt -> Helyette random jelszót generál $cfg['always_set_diak_quota'] = false; $cfg['default_quota'] = "10GB"; $cfg['diak_quota'] = "2GB"; @@ -30,14 +30,14 @@ $cfg['felhasznalo_hossz'] = 45; $cfg['megfigyelo_user'] = "naplo_robot"; //ha nem kell, akkor állítsd üres stringre. $cfg['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') $cfg['default_lang'] = "hu"; -$cfg['manage_groups'] = false; +$cfg['manage_groups'] = true; $cfg['manage_groupdirs'] = false; // Foglalkozzon-e a script a tankörmappákkal $cfg['groupdir_prefix'] = "tavsuli"; $cfg['groupdir_users'] = array("naplo_robot","123abcd"); //Ha mindenkire -> =array(); //(legyen üres) $cfg['mindenki_csop'] = "naplós_felhasználók"; $cfg['mindenki_tanar'] = "naplós_tanárok"; $cfg['mindenki_diak'] = "naplós_diákok"; -$cfg['allapot_tartas'] = "2018-06-14"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig) Ha már nem kell, akkor állítsd "1970-01-01"-ra !; +$cfg['allapot_tartas'] = "2018-06-14"; //A jelölt napnak megfelelő állapot betöltése minden futtatáskor, ha nem kell, akkor állítsd üresre!; $cfg['infotxt_szöveg'] = "info.txt"; $cfg['verbose'] = 3 ; @@ -107,7 +107,7 @@ function rndstr($l, $chs) { //Ál-Véletlen stringet generál function gen_password($l = 12, $inp = array()){ global $pwchars; - return rndstr(16, $pwchars); + return rndstr($l, $pwchars); } function gen_username($inp){ //Felhasználónevet generál @@ -276,7 +276,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $ret[1] = $pw; $e = "export OC_PASS=".escp($pw)."; su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($cfg['mindenki_csop'])." ".escp($userAccount)." \"" ; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret[0] = shell_exec($e); } + if(!$dryrun){ $ret[0] = shell_exec($e); } else { $ret[0] = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } return $ret; @@ -290,12 +290,12 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if($last_login == "1970-01-01T00:00:00+00:00" ){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } // akkor törölhető + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } // akkor törölhető if ($log['verbose'] > 11 ){ print_r($ret); } } else { $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } // különben csak letiltja + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } // különben csak letiltja if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -315,7 +315,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $occ_path,$occ_user,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -323,7 +323,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $occ_path,$occ_user,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -397,7 +397,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } else { $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } } @@ -413,7 +413,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' foreach($grp[$groupName] as $key => $user){ $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$cfg['csoportnev_hossz']+5,1)."\t csoportból.\n"; } } @@ -434,15 +434,15 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $occ_user, $occ_path,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } function group_user_del($groupName, $userAccount){ // Kitöröl egy felhasználót egy Nextcoud csoportból - global $occ_user, $occ_path,$log; + global $occ_user, $occ_path,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -488,7 +488,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $occ_user, $occ_path,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -496,7 +496,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' global $occ_user, $occ_path, $log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -564,7 +564,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ shell_exec($e); } + if(!$dryrun){ shell_exec($e); } files_scan($user, $path); } } @@ -647,7 +647,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } function mayor_userlistcmp($a, $b){ - return strcmp($a['fullName'], $b['fullName']); + // return strcmp($a['oId'], $b['oId']); //Ez lenne a jó, de az átfedések miatt nem működik + return strcmp($a['userAccount'], $b['userAccount']); //Pillanatnyilag csak az az egyedi } function po($inp,$ll,$dir){ // Szép kimenetet gyárt @@ -755,7 +756,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' /*OR (tankorTanar.beDt <= CURRENT_DATE() AND CURRENT_DATE() <= tankorTanar.kiDt )*/ ) AND tankorTanar.tankorId = tankorSzemeszter.tankorId AND tankorSzemeszter.tanev = '".$szm['tanev']."' AND tankorSzemeszter.szemeszter = '".$szm['szemeszter']."' - ORDER BY fullName ; + /* ORDER BY oId; */ + ORDER BY userAccount ; "; if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ @@ -812,7 +814,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' AND (osztalyDiak.beDt <= '".$szm['reqDt']."' AND (osztalyDiak.kiDt >= '".$szm['reqDt']."' OR osztalyDiak.kiDt IS NULL)) AND osztaly.osztalyId = osztalyDiak.osztalyId AND osztalyDiak.osztalyId = osztalyNaplo.osztalyId - ORDER BY fullName ; + /* ORDER BY oId ; */ + ORDER BY userAccount ; "; if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ @@ -837,14 +840,16 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' //--------------------------------------------------------------------------------------------------------------------------------------------// - - if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n"; } + if(true){ echo "\n\n###################################################\n" ;} + if(true){ echo "######## Mayor-Nextcloud Script ########\n"; } + if(true){ echo "######## Start: ".date("Y-m-d H:i:s")." ########\n"; } $t_start = microtime(true); if(!isset($cfg['allapot_tartas']) or empty($cfg['allapot_tartas']) or $cfg['allapot_tartas'] == "1970-01-01"){ //A jelölt nap állapotának betöltése $cfg['allapot_tartas'] = date("Y-m-d"); } - if(true) { echo "######## Szinkron: (".$cfg['allapot_tartas'].")-hoz. ########\n"; } + if(true) { echo "######## A (".$cfg['allapot_tartas'].")-i állapot szerint. ########\n"; } + if(true){ echo "###################################################\n" ;} if(true) { echo "\n*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } if($printconfig === true or $debug === true){ @@ -954,7 +959,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' // Felhasználónevek egyeztetése if ($log['verbose'] > 0 ){ echo "\n***\tFelhasználók egyeztetése.\n";} - $mayor_tanar = get_mayor_tanar($link2, $cfg['allapot_tartas']); //Rendezve jön + $mayor_tanar = get_mayor_tanar($link2, $cfg['allapot_tartas']); //Rendezve jön $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $cfg['mindenki_tanar']); //csak rendezett tömbökön! $mayor_tanar = set_param_to_user($mayor_tanar, null, 'quota', $cfg['default_quota']); $mayor_tanar = set_param_to_user($mayor_tanar, null, 'diakId', -1 ); @@ -972,16 +977,17 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' if(!empty($cfg['megfigyelo_user'])){ //A megfigyelő user felvétele a lista végére $mayor_user = array_merge($mayor_user, array( array( 'userAccount' => $cfg['megfigyelo_user'], //A megfigyelő user legyen egyben virtuális tanár is - 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin Megfigyelő", + 'tanarId' => 1, 'oId' => 70000000000, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin Megfigyelő", 'email' => $cfg['default_email'], 'tankorNev' => $cfg['mindenki_tanar'], ))); - foreach(get_mayor_tankor($link2, $cfg['allapot_tartas']) as $key => $val){ + foreach(get_mayor_tankor($link2, $cfg['allapot_tartas']) as $key => $val){ //És beléptetve az összes létező csoportba $mayor_user = array_merge($mayor_user, array( array( 'userAccount' => $cfg['megfigyelo_user'], 'email' => $cfg['default_email'], - 'tanarId' => 70000000000, + 'tanarId' => 1, 'diakId' => 0, + 'oId' => 70000000000, 'tankorId' => $val['tankorId'], 'fullName' => "Napló Admin Megfigyelő", 'tankorNev' => $val['tankorNev'], @@ -1011,6 +1017,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } $curr = ""; + $curr_o = array(); $tankorei = array(); $mod_nxt_user_all = 0; $mod_nxt_user = 0; @@ -1091,8 +1098,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $ret = user_add($curr, $curr_n); //Akkor hozzá kell adni catalog_useradd($link, $curr); - if ($printpasswds === true ){ $pw = $ret[1]; } else { $pw = ""; } - if ($log['verbose'] > 2 ){ echo "-\n**-\tFelhasználó:".po("\t".po($curr_n, 20, 1)." ($curr/$pw)",$cfg['felhasznalo_hossz'],1)." --\tlétrehozva.\n"; } + if ($printpasswds === true ){ $pw = strval($ret[1]); } else { $pw = ""; } + if ($log['verbose'] > 2 ){ echo "-\n**-\tFelhasználó:".po("\t".po($curr_n, 25, 1)." ($curr/$pw)",$cfg['felhasznalo_hossz'],1)." --\tlétrehozva.\n"; } $mod_nxt_user++; if($cfg['manage_groups'] === true){ @@ -1203,11 +1210,12 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' //test //script_install($link); - if ($log['verbose'] > 0 ){ echo "\n\nStatisztikák:\n";} - if ($log['verbose'] > 0 ){ echo "Összes művelet: ".($mod_nxt_user + $mod_nxt_group)."db.\n";} - if ($log['verbose'] > 0 ){ echo "Feldolgozva: ".$mod_nxt_user_all."db felhasználó.\n";} - if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_user."db a Nextcloud felhasználói beállításokban.\n";} - if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_group."db a Nextcloud csoport beállításokban.\n";} + if($log['verbose'] > 0 ){ echo "\n\nStatisztikák:\n";} + if($log['verbose'] > 0 ){ echo "Összes művelet: ".($mod_nxt_user + $mod_nxt_group)."db.\n";} + if($log['verbose'] > 0 ){ echo "Feldolgozva: ".$mod_nxt_user_all."db felhasználó.\n";} + if($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_user."db a Nextcloud felhasználói beállításokban.\n";} + if($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_group."db a Nextcloud csoport beállításokban.\n";} + if($dryrun){ echo " (( !! DRY RUN !! ))\n"; } @mysqli_close($link2); -- cgit v1.2.3 From d6ce723147f5bd9abfb5bbec6751d0464dbdcc2a Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Sun, 21 Feb 2021 23:56:26 +0100 Subject: M2N: Readme --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 429 ++++++++++++----------- 1 file changed, 217 insertions(+), 212 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index e38be6ba..dc5d8c54 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -49,214 +49,6 @@ $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; - - -$cfg['infotxt_szöveg'] = << "(tk) 11.b fizika". ) - - - - - -*** Tippek/Megjegyzések: - -1) -Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, -a tanár által, az egész tankörnek küldött fájlokba véletlenül -beleszerkesszen, vagy esetleg töröljön belőlük, akkor vonjuk meg a -szerkesztési/létrehozási/törlési jogokat, és ezt ellenőrizzük is -minden megosztáskor, hogy valóban a megfelelő jogok vannak-e beállítva -a megosztott mappán! - -A szerver létrehoz egy "_beadás", végződésű mappát is, a tankörmappák -mellé, hogy ezeket használhassuk a visszaküldendő fájlok gyűjtésére, így -csak erre a "_beadás" mappára kell jogot adnunk a diáknak/tankörnek -a szerkesztésre/módosításra/törlésre/stb.. - - - -2) -Ha videó fájlokat szeretnénk feltölteni nagy mennyiségben, -akkor hozzunk létre az adott tankörhöz tartozó tankörmappában egy -"Videók" nevű mappát, és abba helyezzük el a videó fájlokat. -A könnyebb megkülönböztethetőség végett nevezzük át a videó fájlokat -dátum szerinti fájlnévre, vagy sorszámozzuk őket, -és a sorszámot tüntessük föl a fájl nevében! - - -3) A létrejövő mappák megosztási beállításait nekünk kell -finomhangolnunk, mert nem jönnek automatikusan létre a -feltöltési/szerkesztési/törlési/stb. engedélyek. -A megosztás pillanatában, a fogadó félnek, csak az olvasási -jogosultsága jön létre automatikusan. - -Tehát, minután megosztottuk egy tankörrel, kattintsunk rá a -fektetett "V" betűhöz hasonlító ikonra, és a megosztási beállításoknál, -a "..."-ra kattintva engedélyezzük a -feltöltést/szerkesztést/törlést/továbbadást/stb. a csoport tagjainak, -igényünknek megfelelően! - -(Magát a megosztást is nekünk, kézzel kell megtennünk, -mert azt sem állítja be a szerver automatikusan.) - -Alapesetben, gyakorlatilag csak annyi a dolgunk, hogy például, -a "(tk) 10.b fizika" mappát megosszuk a "(tk) 10.b fizika" tankörrel. -Ha a beadást is szeretnénk itt összegyűjteni, akkor -a "(tk) 10.b fizika_beadás" mappát is meg kell osszuk -a "(tk) 10.b fizika" tankörrel, ügyelve arra, hogy csak -a "(tk) 10.b fizika_beadás" mappára kerüljön a diákok számára -létrehozási/szerkesztési/törlési jogosultság. - - - -4) -Ha egy rossz helyen lévő fájl miatt értesítést kapunk, akkor a -legfontosabb, hogy a fájl onnan, a távoktatás gyűjtőmappájából, -elkerüljön, tehát ne másoljuk, hanem helyezzük át, a saját, egyéb -mappáinkba / egyéb fájlaink közé! - -Utána, ha ez megtörtént, nevezzük vissza, az eredeti nevére, -vagyis töröljük ki a nevéből a szerver által odarakott: -"számsorozat.please-remove" utótagot, a "Átnevezés" gomb segítségével! - - -5) -Az INFO.txt, vagyis, ez a leírás, minden éjjel frissítődik, illetve újra -létrehozódik a szerveren, hogy mindig a legfrissebb információkat -tartalmazza, tehát nem szükséges törölni. Ám erre is igaz, hogy -ha véletlenül átnevezzük, akkor már idegennek fogja tekinteni -a rendszer. Ekkor, az "idegen" változatát már törölnünk szükséges! - - -EOT; - - /* Nextcloud(13+) - Mayor script @@ -471,8 +263,11 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $cfg['mindenki_diak'] = "naplós_diákok"; //Legyen egy olyan csoport, amiben "minden diák" benne van. // ebbe a "minden_diák" csoportba a naplóbeli diákok kerülnek. - $cfg['zaras_tartas'] = "2018-06-19"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig) - // Ha már nem kell, akkor állítsd "1970-01-01"-ra !; + $cfg['allapot_tartas'] = "2018-06-19"; //A jelölt nap állapotának megtartása/betöltése minden futtatáskor. (hasznos lehet a nyári szütnetben) + // Csak az AKTÍV vagy LEZÁRT állapotú szemeszereket nézi. + //A szerveren lévő legelső, vagy legutolsó, (aktív vagy lezárt) szemeszter előtti, illetve utáni nap nem állítható be. + //Ha már nem kell, vagy, ha mindíg az aktuális (aznapi) dátumot szeretnéd használni, + // akkor állítsd üresre, vagy "1970-01-01"-ra!; $cfg['manage_groupdirs'] = false; //Ha szerenénk, hogy a script létrehozza a távoktatást segítő tankörmappákat, állítsuk "true"-re! @@ -544,10 +339,220 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) ahol a felhasználónév váltást a mod_suexec modul végzi, a php futtatását pedig a mod_fcgid. ) (Természetesen vannak még más megoldások is, mint pl. a php_fpm, de azokat nem javaslom. ) +*/ + + + + + +$cfg['infotxt_szöveg'] = << "(tk) 11.b fizika". ) + + + + + +*** Tippek/Megjegyzések: + +1) +Ha szeretnénk biztosra menni, és elkerülni, hogy a diák, +a tanár által, az egész tankörnek küldött fájlokba véletlenül +beleszerkesszen, vagy esetleg töröljön belőlük, akkor vonjuk meg a +szerkesztési/létrehozási/törlési jogokat, és ezt ellenőrizzük is +minden megosztáskor, hogy valóban a megfelelő jogok vannak-e beállítva +a megosztott mappán! + +A szerver létrehoz egy "_beadás", végződésű mappát is, a tankörmappák +mellé, hogy ezeket használhassuk a visszaküldendő fájlok gyűjtésére, így +csak erre a "_beadás" mappára kell jogot adnunk a diáknak/tankörnek +a szerkesztésre/módosításra/törlésre/stb.. + + + +2) +Ha videó fájlokat szeretnénk feltölteni nagy mennyiségben, +akkor hozzunk létre az adott tankörhöz tartozó tankörmappában egy +"Videók" nevű mappát, és abba helyezzük el a videó fájlokat. +A könnyebb megkülönböztethetőség végett nevezzük át a videó fájlokat +dátum szerinti fájlnévre, vagy sorszámozzuk őket, +és a sorszámot tüntessük föl a fájl nevében! + + +3) A létrejövő mappák megosztási beállításait nekünk kell +finomhangolnunk, mert nem jönnek automatikusan létre a +feltöltési/szerkesztési/törlési/stb. engedélyek. +A megosztás pillanatában, a fogadó félnek, csak az olvasási +jogosultsága jön létre automatikusan. + +Tehát, minután megosztottuk egy tankörrel, kattintsunk rá a +fektetett "V" betűhöz hasonlító ikonra, és a megosztási beállításoknál, +a "..."-ra kattintva engedélyezzük a +feltöltést/szerkesztést/törlést/továbbadást/stb. a csoport tagjainak, +igényünknek megfelelően! + +(Magát a megosztást is nekünk, kézzel kell megtennünk, +mert azt sem állítja be a szerver automatikusan.) + +Alapesetben, gyakorlatilag csak annyi a dolgunk, hogy például, +a "(tk) 10.b fizika" mappát megosszuk a "(tk) 10.b fizika" tankörrel. +Ha a beadást is szeretnénk itt összegyűjteni, akkor +a "(tk) 10.b fizika_beadás" mappát is meg kell osszuk +a "(tk) 10.b fizika" tankörrel, ügyelve arra, hogy csak +a "(tk) 10.b fizika_beadás" mappára kerüljön a diákok számára +létrehozási/szerkesztési/törlési jogosultság. + + + +4) +Ha egy rossz helyen lévő fájl miatt értesítést kapunk, akkor a +legfontosabb, hogy a fájl onnan, a távoktatás gyűjtőmappájából, +elkerüljön, tehát ne másoljuk, hanem helyezzük át, a saját, egyéb +mappáinkba / egyéb fájlaink közé! + +Utána, ha ez megtörtént, nevezzük vissza, az eredeti nevére, +vagyis töröljük ki a nevéből a szerver által odarakott: +"számsorozat.please-remove" utótagot, a "Átnevezés" gomb segítségével! + + +5) +Az INFO.txt, vagyis, ez a leírás, minden éjjel frissítődik, illetve újra +létrehozódik a szerveren, hogy mindig a legfrissebb információkat +tartalmazza, tehát nem szükséges törölni. Ám erre is igaz, hogy +ha véletlenül átnevezzük, akkor már idegennek fogja tekinteni +a rendszer. Ekkor, az "idegen" változatát már törölnünk szükséges! + + +EOT; + + - -*/ ?> -- cgit v1.2.3 From e282cd3940e4e5c205fe111e7f06d77455a9d68a Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 22 Feb 2021 00:05:51 +0100 Subject: M2AD: Refactoring --- "egy\303\251b/nextcloud/mayor-ldap.php" | 1055 +++++++++++++++++-------------- 1 file changed, 565 insertions(+), 490 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index c51e18bf..a4e15168 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -1,180 +1,203 @@ #!/usr/bin/php =array(); //(legyen üres) -$m2n['mindenki_csop'] = "naplós_felhasználók"; -$m2n['mindenki_tanar'] = "naplós_tanárok"; -$m2n['mindenki_diak'] = "naplós_diákok"; -$m2n['zaras_tartas'] = "2018-06-14"; //A jelölt napon befejezett, de nem lezárt tanév adatainak megtartása. (pl. szeptemberig) Ha már nem kell, akkor állítsd "1970-01-01"-ra !; -$m2n['infotxt_szöveg'] = "info.txt"; -$m2n['verbose'] = 3 ; +$cfg['min_evfolyam'] = 1; +$cfg['isk_rovidnev'] = "rovid"; +$cfg['csoport_prefix'] = "(tk) "; +$cfg['default_email'] = "indulo@iskola.hu"; +//$cfg['default_passw'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; //Megszűnt -> Helyette random jelszót generál +$cfg['always_set_diak_quota'] = false; +$cfg['default_quota'] = "10GB"; +$cfg['diak_quota'] = "2GB"; +$cfg['min_osztalyok'] = array(); //pl: array('9.a','11.a'); +$cfg['csoportnev_hossz'] = 40; +$cfg['felhasznalo_hossz'] = 45; +$cfg['megfigyelo_user'] = "naplo_robot"; //ha nem kell, akkor állítsd üres stringre. +$cfg['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') +$cfg['default_lang'] = "hu"; +$cfg['manage_groups'] = true; +$cfg['manage_groupdirs'] = false; // Foglalkozzon-e a script a tankörmappákkal +$cfg['groupdir_prefix'] = "tavsuli"; +$cfg['groupdir_users'] = array("naplo_robot","123abcd"); //Ha mindenkire -> =array(); //(legyen üres) +$cfg['mindenki_csop'] = "naplós_felhasználók"; +$cfg['mindenki_tanar'] = "naplós_tanárok"; +$cfg['mindenki_diak'] = "naplós_diákok"; +$cfg['allapot_tartas'] = "2018-06-14"; //A jelölt napnak megfelelő állapot betöltése minden futtatáskor, ha nem kell, akkor állítsd üresre!; +$cfg['infotxt_szöveg'] = "info.txt"; +$cfg['verbose'] = 3 ; $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; +$nxt_version = 0; $printhelp = false; $printconfig = false; +$printpasswds = false; +$dryrun = false; $debug = false; $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ő. // Le kell cserélni az ékezetes betűket, mert a Vezetéknév.Keresztnév nem POSIX kompatibilis. $search = array( 'á', 'ä', 'é', 'í', 'ó', 'ö', 'ő', 'ú', 'ü', 'ű', 'Á', 'Ä', 'É', 'Í', 'Ó', 'Ö', 'Ő', 'Ú', 'Ü', 'Ű'); // egyelőre csak a magyar betűket ismeri $replace = array( 'aa', 'ae', 'ee', 'ii', 'oo', 'oe', 'ooe', 'uu', 'ue', 'uue', 'Aa', 'Aae', 'Ee', 'Ii', 'Oo', 'Oe', 'Ooe', 'Uu', 'Ue', 'Uue'); +$pwchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_?"; for($i = 1; $i<$argc; $i++){ //Ha van külön config megadva, akkor először azt töltjük be. if($argv[$i] == "--config-file" ){$cfgfile = strval($argv[$i+1]); $i++;} } if(file_exists($cfgfile) === TRUE){ include($cfgfile); } //Config betöltés - +if(!empty($m2n)){ $cfg_o = $cfg; $cfg = $m2n; $cfg = array_merge($cfg, $cfg_o); } //Ha valahol még a régi config lenne for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--help" ){$printhelp = true;} if($argv[$i] == "--debug" ){$debug = true;} - if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$m2n['verbose'] = intval($argv[$i+1]); $i++;} - if($argv[$i] == "--set-diak-quota" ){ $m2n['always_set_diak_quota'] = true; } - if($argv[$i] == "--create-groupdir"){ $m2n['groupdir_users'] = array($argv[$i+1]); $i++;} - if($argv[$i] == "--manage-groupdirs" and is_string($argv[$i+1])){$m2n['manage_groupdirs'] = boolval($argv[$i+1]); $i++;} - if($argv[$i] == "--manage-groups" and is_string($argv[$i+1])){$m2n['manage_groups'] = boolval($argv[$i+1]); $i++;} - if($argv[$i] == "--config-print" ){ $printconfig = true; } + if($argv[$i] == "--loglevel" and is_numeric($argv[$i+1])){$cfg['verbose'] = intval($argv[$i+1]); $i++;} + if($argv[$i] == "--set-diak-quota" ){ $cfg['always_set_diak_quota'] = true; } + if($argv[$i] == "--create-groupdir"){ $cfg['groupdir_users'] = array($argv[$i+1]); $i++;} + if($argv[$i] == "--manage-groupdirs" and is_string($argv[$i+1])){$cfg['manage_groupdirs'] = boolval($argv[$i+1]); $i++;} + if($argv[$i] == "--manage-groups" and is_string($argv[$i+1])){$cfg['manage_groups'] = boolval($argv[$i+1]); $i++;} + if($argv[$i] == "--allapot-tartas" and is_string($argv[$i+1])){$cfg['allapot_tartas'] = strval($argv[$i+1]); $i++;} + if($argv[$i] == "--print-passwords" ){ $printpasswds = true; } + if($argv[$i] == "--print-config" ){ $printconfig = true; } + if($argv[$i] == "--dry-run" ){ $dryrun = true; } } function print_help(){ - echo "php mayor-nextcloud.php [kapcsolók] \n"; + echo "".phpv()." mayor-nextcloud.php [kapcsolók] \n"; echo "Kapcsolók: (felülbírálja a configot!)\n"; echo " --help : Help kiírása. \n"; echo " --debug : Ugyanaz mint a \"--loglevel 100\" \n"; echo " --config-file : Konfig fájl elérési útvonala.\n"; - echo " --config-print : A betöltött konfig kiírása\n"; echo " --loglevel x : A bőbeszédűséget/logolást tudjuk ezzel szabályozni, ekkor ez az érték érvényesül, nem a configban megadott. \n"; - echo " --set-diak-quota : Az összes diák qvótáját átállítja az \"\$m2n['diak_quota'] = x\" -nél megadott értékre, \n"; + echo " --set-diak-quota : Az összes diák qvótáját átállítja az \"\$cfg['diak_quota'] = x\" -nél megadott értékre, \n"; echo " csak kézzel futtatva működik, az automatikus, napi futtatásban nicns benne.\n"; echo " --create-groupdir : A távoktatást segítő könyvtárstruktúrát csak az felhasználónak hozza létre, \n"; echo " illetve kapcsoló nélküli híváskor, automatikusan, a napi futásban, esténként az összes tanárnak egyszerre.\n"; echo " --manage-groups <1/0> : Ha 1: A felhasználókat csoportokba rendezi a MaYor tankörök szerint, ha 0, nem foglalkozik vele.\n"; echo " --manage-groupdirs <1/0> : Ha 1: tankörmappákat hoz létre a tankör-csoportokhoz, ha 0, nem foglalkozik vele. (kell hozzá a --manage-groups is!)\n"; + echo " --print-config : A betöltött konfig kiírása a konzolra.\n"; + echo " --print-passwords : A létrehozott felhasználóknál a jelszavakat is megjeleníti a konzolon.\n"; + echo " --dry-run : Csak megmutatja, de nem végzi el a változtatásokat.\n"; echo "\n\n"; } + +function phpv() { //Az aktuális php verzió lekérdezése + $v = explode('.', phpversion()); + return "php".$v[0].".".$v[1]; +} + +function rndstr($l, $chs) { //Ál-Véletlen stringet generál + return substr(str_shuffle($chs), 0, $l); +} + +function gen_password($l = 12, $inp = array()){ + global $pwchars; + return rndstr($l, $pwchars); +} -if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', '>=')) { //MySQLi (Improved) és php7 kell! +function gen_username($inp){ //Felhasználónevet generál + global $search, $replace; + $ret = str_replace($search, $replace, $inp['userAccount']); // (pl: Á->Aa, á->aa, ...) + return $ret; +} - function db_connect(array $db){ - global $log; - if ($log['verbose'] > 0 ){ echo "***\tAdatbázis kapcsolódás. (m2n_db=".$db['m2n_db'].")\n"; } - $l = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['m2n_db'],$db['port']); +function rmnp($str){ //Remove non-printable + return preg_replace('/[\x00-\x1F\x7F-\xA0\xAD]/u', '', $str); +} + +function escp($str){ //Escape strings + $str = str_replace(array("\\","`", "\'", "\"" ),array("\\\\", "\`", "\\\'", "\\\""), $str); + return escapeshellarg($str); +} + +function rnescp($str){ //Escape strings + $str = rmnp($str); + $str = escapeshellarg($str); + $str = str_replace(array("\\", "`", "'", "\"", "\ ", ), array("", "", "", "", "_", ), $str); + return $str; +} + + +if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', '>=')) { //MySQLi (Improved) és php7 kell! + + function db_connect($db = ""){ + global $log,$cfg; + if ($log['verbose'] > 0 ){ echo "***\tAdatbázis kapcsolódás. (db='".$db."')\n"; } + $l = mysqli_connect($cfg['db_host'], $cfg['db_user'], $cfg['db_pass'], $db, $cfg['db_port']); if(!$l){ - if ($log['verbose'] > 0 ){echo "*\tAdatbázis kapcsolat újrapróbálása... (m2n_db=) hiba:".mysqli_connect_errno()."\n";} - $db_old = $db['m2n_db']; - $db['m2n_db'] = ""; - $l = mysqli_connect($db['host'], $db['user'], $db['pass'], $db['m2n_db'],$db['port']); + if ($log['verbose'] > 0 ){ echo "*\tAdatbázis kapcsolat újrapróbálása... (db=''), info:".mysqli_connect_errno()."\n\n"; } + $db = ""; + $l = mysqli_connect($cfg['db_host'], $cfg['db_user'], $cfg['db_pass'], $db, $cfg['db_port']); if(!$l){ - echo "\n**** Sikertelen kapcsolódás! **** (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n"; - return null; - } else{ - if ($log['verbose'] > 4 ){ echo "*\tSikeres kapcsolódás. (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n";} - if ($log['verbose'] > 0 ){ echo "***\tAdatbázis létrehozása: ".$db_old." ...\n";} - mysqli_set_charset($l, "utf8"); - mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); - script_install($l); - return $l; + echo "\n**** Sikertelen kapcsolódás! **** (db='".$db."') info:".mysqli_get_host_info($l)."\n\n"; + return null; //Hiba esetén visszatér } - } else { - if ($log['verbose'] > 4 ){ echo "*\tSikeres kapcsolódás. (m2n_db=".$db['m2n_db'].") info:".mysqli_get_host_info($l)."\n"; } - mysqli_set_charset($l, "utf8"); - mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); - if(mysqli_query($l, "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register;" ) == FALSE ){ - script_install($l); - } - return $l; } + if ($log['verbose'] > 0 ){ echo "*\tSikeres kapcsolódás. (db='".$db."') info:".mysqli_get_host_info($l)."\n\n"; } + mysqli_set_charset($l, "utf8"); + mysqli_query($l, "SET NAMES utf8 COLLATE utf8_general_ci;" ); + return $l; //Egyébként a sikeressel tér vissza } -// bezár: mysqli_close($link); - - function script_install($link){ - global $db,$log; - $q = "CREATE DATABASE IF NOT EXISTS ".$db['m2n_db']." DEFAULT COLLATE 'utf8_general_ci'; "; - if ($log['verbose'] > 0 ){ echo "M2N -> \t".$q."\n"; } - if(( $r = mysqli_query($link, $q)) !== FALSE ){ - if ($log['verbose'] > 0 ){ echo "*\tAz ".$db['m2n_db']." adatbázis sikeresen létrehozva.\n"; } - } - $q = "CREATE TABLE IF NOT EXISTS ".$db['m2n_db'].".".$db['m2n_prefix']."register ( - account VARCHAR(64) NOT NULL COLLATE 'utf8_bin', - status ENUM('active','disabled','forbidden','deleted') NULL DEFAULT 'active' COLLATE 'utf8_bin', - PRIMARY KEY (account)) - COLLATE='utf8_general_ci' - ENGINE=InnoDB;"; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } - if(( $r = mysqli_query($link, $q)) !== FALSE ){ - if ($log['verbose'] > 0 ){ echo "*\tAz ".$db['m2n_db'].".".$db['m2n_prefix']."register (script-katalógus) tábla sikeresen létrehozva.\n";} + // bezár: mysqli_close($link); + + function script_install($l){ + global $cfg,$log; + if(mysqli_query($l, "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register LIMIT 10;" ) == FALSE ){ //nincs nyilvántartás + $q = "CREATE DATABASE IF NOT EXISTS ".$cfg['db_m2n_db']." DEFAULT COLLATE 'utf8_general_ci'; "; + if ($log['verbose'] > 7 ){ echo "M2N -> \t".$q."\n\n"; } + if(( $r = mysqli_query($l, $q)) !== FALSE ){ + if ($log['verbose'] > 0 ){ echo "*\tAz ".$cfg['db_m2n_db']." adatbázis sikeresen létrehozva.\n"; } + } + $q = "CREATE TABLE IF NOT EXISTS ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register ( + account VARCHAR(64) NOT NULL COLLATE 'utf8_bin', + status ENUM('active','disabled','forbidden','deleted') NULL DEFAULT 'active' COLLATE 'utf8_bin', + PRIMARY KEY (account)) + COLLATE='utf8_general_ci' + ENGINE=InnoDB;"; + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } + if(( $r = mysqli_query($l, $q)) !== FALSE ){ + if ($log['verbose'] > 0 ){ echo "*\tAz ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register (script-katalógus) tábla sikeresen létrehozva.\n\n";} + } } } - function rmnp($str){ //Remove non-printable - return preg_replace('/[\x00-\x1F\x7F-\xA0\xAD]/u', '', $str); - } - - function escp($str){ //Escape strings - $str = str_replace(array("\\","`", "\'", "\"" ),array("\\\\", "\`", "\\\'", "\\\""), $str); - return escapeshellarg($str); - } - - function rnescp($str){ //Escape strings - $str = rmnp($str); - $str = escapeshellarg($str); - $str = str_replace(array("\\", "`", "'", "\"", "\ ", ), array("", "", "", "", "_", ), $str); - return $str; - } function nxt_get_version(){ - global $occ_path,$occ_user,$m2n,$log; - // sudo -u honlap-felho php /home/honlap-felho/web/occ status --output=json - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." status --output=json \"" ; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = explode(".", json_decode(shell_exec($e),true)['version'])[0]; - if ($log['verbose'] > 10 ){ print_r($ret); } + global $occ_path,$occ_user,$cfg,$log; + $ret = array(); + // sudo -u honlap-felho ".phpv()." /home/honlap-felho/web/occ status --output=json + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." status --output=json \"" ; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + $ret[0] = shell_exec($e); + $ret[1] = intval(explode(".", json_decode($ret[0],true)['version'])[0]); + if ($log['verbose'] > 10 ){ print_r($ret); echo "\n\n"; } return $ret; } function catalog_userlist($link){ //akiket a script hozott létre - global $db,$log,$m2n; + global $cfg,$log,$cfg; $ret['account'] = array(); $ret['status'] = array(); - $q = "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE STATUS != 'forbidden'; "; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + $q = "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE STATUS != 'forbidden'; "; + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { - if(!in_array($row['account'], $m2n['kihagy'])){ + if(!in_array($row['account'], $cfg['kihagy'])){ $ret['account'][] = $row['account']; $ret['status'][] = $row['status']; } @@ -189,16 +212,16 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function catalog_forbiddenlist($link){ //akiket a rendszergazda kitiltott - global $log,$db,$m2n; - $q = "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE STATUS = 'forbidden'; "; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } + global $log,$cfg,$cfg; + $q = "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE STATUS = 'forbidden'; "; + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ $ret = array(); while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $ret[] = $row['account']; } mysqli_free_result($r); - $ret = array_merge($ret, $m2n['kihagy']); + $ret = array_merge($ret, $cfg['kihagy']); if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-letiltások m2n nyilvántartás lekérdezése.\n"; } return $ret; } else { @@ -207,74 +230,81 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function catalog_useradd($link, $account){ // feljegyzi az általa létrehozott felhasználókat - global $log,$db; - $q = "INSERT INTO ".$db['m2n_db'].".".$db['m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; - if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n"; } - if(( mysqli_query($link, $q)) !== FALSE ){ + global $log,$cfg,$dryrun; + $q = "INSERT INTO ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register (account) VALUES ('".mysqli_real_escape_string($link, $account)."')"; + if ($log['verbose'] > 7 ){ echo "M2N -> \t".$q."\n"; } + if( $dryrun or (mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-hozzáadás, m2n nyilvántartásba vétele.\n"; } } } function catalog_userena($link, $account){ // az engedélyezetteket - global $db,$log; - $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } - if(( mysqli_query($link, $q)) !== FALSE ){ + global $cfg,$log,$dryrun; + $q = "UPDATE ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register SET status='active' WHERE account='".mysqli_real_escape_string($link, $account)."'"; + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } + if( $dryrun or (mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 4 ){ echo "*\tFelhasználó-engedélyezés, m2n nyilvántartásba vétele.\n" ;} } } function catalog_userdel($link, $account){ // a törölteket - global $db,$log; - $q = "DELETE FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } - if(( mysqli_query($link, $q)) !== FALSE ){ + global $cfg,$log,$dryrun; + $q = "DELETE FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register WHERE account='".mysqli_real_escape_string($link, $account)."' "; + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } + if( $dryrun or (mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-törlés, m2n nyilvántartásba vétele.\n"; } } } function catalog_userdis($link, $account){ // a letiltottakat - global $m2n,$db,$log; - $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; - if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } - if(( mysqli_query($link, $q)) !== FALSE ){ + global $cfg,$cfg,$log,$dryrun; + $q = "UPDATE ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register SET status='disabled' WHERE account='".mysqli_real_escape_string($link, $account)."'"; + if ($log['verbose'] > 7 ){ echo "M2N ->\t".$q."\n"; } + if( $dryrun or (mysqli_query($link, $q)) !== FALSE ){ if ($log['verbose'] > 5 ){ echo "*\tFelhasználó-letiltás, m2n nyilvántartásba vétele.\n"; } } } function user_add($userAccount, $fullName){ // létrehoz egy felhasználót a Nextcloud-ban - global $occ_path,$occ_user,$m2n,$log; -// export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c 'php web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' + global $occ_path,$occ_user,$cfg,$log,$dryrun; + $ret = array(); +// export OC_PASS=ErősJelszó123; su -s /bin/sh www-data -c '".phpv()." web/occ user:add --password-from-env --display-name="Teszt Tamás" --group="csop" t.tamas' if(strlen($userAccount) > 64 or strlen($fullName) > 64){ echo "\n******** Hiba: A felahsználónév, vagy a \"teljes név\" hosszabb, mint 64 karakter! NEM hozható létre!! ********\n"; } else { - $e = "export OC_PASS=".escp($m2n['default_passw'])."; su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($m2n['mindenki_csop'])." ".escp($userAccount)." \"" ; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $pw = gen_password(16); + $ret[1] = $pw; + $e = "export OC_PASS=".escp($pw)."; su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:add --password-from-env --display-name=".escp($fullName)." --group=".escp($cfg['mindenki_csop'])." ".escp($userAccount)." \"" ; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret[0] = shell_exec($e); } else { $ret[0] = true; } + if ($log['verbose'] > 11 ){ print_r($ret); } } + return $ret; } function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban - global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + global $occ_path,$occ_user,$log,$dryrun; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $last_login = json_decode(shell_exec($e),true)['last_seen'] ; if($last_login == "1970-01-01T00:00:00+00:00" ){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); // akkor törölhető + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } // akkor törölhető + if ($log['verbose'] > 11 ){ print_r($ret); } } else { - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); // különben csak letiltja + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } // különben csak letiltja + if ($log['verbose'] > 11 ){ print_r($ret); } } } function user_info($userAccount){ // User állpot a Nextcloudban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -282,26 +312,26 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function user_dis($userAccount){ // letiltja a felhasználót a Nextcloud-ban - global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + global $occ_path,$occ_user,$log,$dryrun; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } function user_ena($userAccount){ // engedélyezi - global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + global $occ_path,$occ_user,$log,$dryrun; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } function nxt_group_list() { // Csoportok listázása a Nextcloud-ból global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -309,13 +339,13 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function nxt_user_list() { // Felhasználók listázása a Nextcloud-ból global $occ_path,$occ_user,$log; - // $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; - // if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + // $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; + // if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } // $num = shell_exec($e); $num = 1000000; //inkább kézi limit! // $num = $num + 100; // Biztos-ami-biztos, a nextcloud rejtett hibái miatt... - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = (array)json_decode(shell_exec($e),true); if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -323,8 +353,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function nxt_user_lastlogin($userAccount){ // legutóbbi belépés lekérdezése global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = json_decode(shell_exec($e),true)['last_seen']; if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; @@ -332,66 +362,68 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function user_set($userAccount, array $params){ //beállítja az e-mailt, quota-t, nyelvet a kapott értékekre - global $occ_path,$occ_user,$log; + global $occ_path,$occ_user,$log,$dryrun; if(isset($params['quota'])){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec( $e ); + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." files quota ".escp($params['quota'])." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ shell_exec( $e ); } } if(isset($params['email'])){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec( $e ); + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." settings email ".escp($params['email'])." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ shell_exec( $e ); } } if(isset($params['lang'])){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:setting ".escp($userAccount)." core lang ".escp($params['lang'])." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun) { shell_exec($e); } } } function group_add($groupName){ //Új csoport létrehozása a Nextcloud-ban - global $occ_user,$occ_path,$link,$db,$log; + global $occ_user,$occ_path,$link,$cfg,$log,$nxt_version,$dryrun; $groupName = rmnp($groupName); if(strlen($groupName) > 64){ //mivel (egyelőre) nics erre 'occ' parancs, ezért közvetlenül kell... echo "\n****** Hiba: a csoportnév nagyobb, mint 64 karakter!! ******\n"; } else { - if(nxt_get_version() < 14) { - $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link, $db['nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; - if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } - if(mysqli_query($link, $q) !== TRUE ) echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; + if($nxt_version < 14) { + $q = "INSERT IGNORE INTO ".mysqli_real_escape_string($link, $cfg['db_nxt_dbname']).".".mysqli_real_escape_string($link, $cfg['db_nxt_prefix'])."groups (gid) VALUES ('".mysqli_real_escape_string($link,$groupName)."'); "; + if ($log['verbose'] > 7 ){ echo "NXT ->\t".$q."\n"; } + if(!$dryrun){ + if( mysqli_query($link, $q) !== TRUE ) { echo "\nNXT -> \t****** Csoport létrehozási hiba. (adatbázis) ******\n"; } + } } else { - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:add ".escp($groupName)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } } } function group_del($groupName){ // Csoport törlése a Nextcloud-ból - global $occ_user,$occ_path,$db,$link,$log,$m2n; + global $occ_user,$occ_path,$cfg,$link,$log,$cfg,$nxt_version,$dryrun; $grp = nxt_group_list(); $groupName = rmnp($groupName); if(isset($grp[$groupName])){ - if(nxt_get_version() < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... + if($nxt_version < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... foreach($grp[$groupName] as $key => $user){ - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($user)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } - if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$m2n['csoportnev_hossz']+5,1)."\t csoportból.\n"; } + if ($log['verbose'] > 1 ){ echo "*--\t\tTörölve".po(" ($user) a: $groupName",$cfg['csoportnev_hossz']+5,1)."\t csoportból.\n"; } } - $q = "DELETE FROM ".mysqli_real_escape_string($link, $db['nxt_dbname']).".".mysqli_real_escape_string($link,$db['nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; - if ($log['verbose'] > 5 ){ echo "NXT ->\t".$q."\n"; } + $q = "DELETE FROM ".mysqli_real_escape_string($link, $cfg['db_nxt_dbname']).".".mysqli_real_escape_string($link,$cfg['db_nxt_prefix'])."groups WHERE gid='".mysqli_real_escape_string($link, $groupName)."'; " ; + if ($log['verbose'] > 7 ){ echo "NXT ->\t".$q."\n"; } if(mysqli_query($link, $q) !== TRUE ) echo "\n NXT -> \t****** csoport törlési hiba. (adatbázis) ******\n"; } else { - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:delete ".escp($groupName)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $ret = shell_exec($e); if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -399,30 +431,32 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function group_user_add($groupName, $userAccount){ // Hozzáad egy felhasználót egy csoporthoz a Nextcloud-ban - global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + global $occ_user, $occ_path,$log,$dryrun; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:adduser ".escp($groupName)." ".escp($userAccount)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } function group_user_del($groupName, $userAccount){ // Kitöröl egy felhasználót egy Nextcoud csoportból - global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c \"php ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + global $occ_user, $occ_path,$log,$dryrun; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:removeuser ".escp($groupName)." ".escp($userAccount)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } function create_dir($user, $path){ // Készít egy mappát a: data/$user/files/$path alá - global $occ_user, $occ_path,$log; + global $occ_user, $occ_path,$log,$dryrun; $ret = null; if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még nem létezik - $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza - chown($occ_path."/data/".$user."/files/".$path, $occ_user); - chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($ret === true && $log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if(!$dryrun){ + $ret = @mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza + chown($occ_path."/data/".$user."/files/".$path, $occ_user); + chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + } else { $ret = true; } + if($ret === true && $log['verbose'] > 7) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } if($ret === false && $log['verbose'] > -1) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."\" \t makedir failed!!\n"; } //mondjuk ilyen egyáltalán mikor lehet? } if ($log['verbose'] > 11 ){ print_r($ret); } @@ -431,14 +465,18 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function write_tofile($user, $path, $msg ){ // Fájlba írja a $msg tartalmát - global $occ_user, $occ_path,$log; + global $occ_user, $occ_path,$log,$dryrun; $ret = 0; if( ($h = @fopen($occ_path."/data/".$user."/files/".$path, 'w+')) !== false ){ - $ret = fwrite($h, $msg ); + if(!$dryrun){ + $ret = fwrite($h, $msg ); + } else { $ret = strlen($msg); } fclose($h); - chown($occ_path."/data/".$user."/files/".$path, $occ_user); - chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); - if($log['verbose'] > 5) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } + if(!$dryrun){ + chown($occ_path."/data/".$user."/files/".$path, $occ_user); + chgrp($occ_path."/data/".$user."/files/".$path, $occ_user); + } + if($log['verbose'] > 7) { echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t created.\n"; } } else { if($log['verbose'] > 5) { echo "php ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t dir not found.\n"; } } @@ -447,18 +485,18 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function files_scan($user, $path ){ // Nextcloud files:scan --path=xxx - global $occ_user, $occ_path,$log; - $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + global $occ_user, $occ_path,$log,$dryrun; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' files:scan --path=".escp($user."/files/".$path)." \""; // -v + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } function user_notify($user, $msg, $title ){ // Nextcloud értesítés - global $occ_user, $occ_path, $log; - $e = "su -s /bin/sh $occ_user -c \"php '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - $ret = shell_exec($e); + global $occ_user, $occ_path, $log,$dryrun; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." '".$occ_path."/occ' notification:generate -l ".escp($msg)." -- ".escp($user)." ".escp($title)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } if ($log['verbose'] > 11 ){ print_r($ret); } } @@ -477,7 +515,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function clean_dir($user, $path, $tankorei){ //Tankörmappák kitisztítása (path: mappagyökér) - global $occ_user, $occ_path, $log, $m2n; + global $occ_user, $occ_path, $log, $cfg, $dryrun; $listdir = scan_dir($user, $path); $ret[0] = array(); $ret[1] = array(); @@ -486,16 +524,16 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' if((!in_array($val, $tankorei) && !in_array(basename($val,"_beadás"), $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($user, $path."/".$val))){ // Ha mappa, és üres -> törlés - rmdir($occ_path."/data/".$user."/files/".$path."/".$val); + if(!$dryrun){ rmdir($occ_path."/data/".$user."/files/".$path."/".$val); } $ret[0][] = $val; - if($log['verbose'] > 5) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } + if($log['verbose'] > 7) { echo "php ->\tDIR: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" deleted.\n"; } } else { //Nem mappa, vagy nem üres if(file_exists( $occ_path."/data/".$user."/files/".$path."/".pathinfo(basename($occ_path."/data/".$user."/files/".$path."/".$val ,".please-remove"))['basename'])){ //Ha az eredeti könyvtár vagy fájl él - rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); + if(!$dryrun){ rename($occ_path."/data/".$user."/files/".$path."/".$val, $occ_path."/data/".rnescp($user."/files/".$path."/".basename($val, '.please-remove').".".time().".please-remove")); } $ret[1][] = basename($val, '.please-remove').".".time().".please-remove"; user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjeleölve! A fájl átnevezve, új neve --> ".rnescp(basename($val, '.please-remove').".".time().".please-remove"), "Fájl/Mappa rossz helyen! --> ".rnescp($path."/".basename($val, '.please-remove').".".time().".please-remove" )); - if($log['verbose'] > 5) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } + if($log['verbose'] > 7) { echo "php ->\tF/D: \"".$occ_path."/data/".$user."/files/".$path."/".$val."\" \t renamed -> ".rnescp(basename($val, '.please-remove').".".time().".please-remove")."\n"; } } else { // A Hanyagul otthagyottakért csak figyelmeztessen: user_notify($user,"Az ön >>".$path."/<< könyvtárában tiltott helyen lévő fájl, vagy olyan (tankör)mappa található, amely tankörnek ön továbbá már nem tagja. Kérem helyezze el kívül a >>".$path."/<< mappán, vagy törölje belőle! Eltávolításra megjelölve! --> ".$val, "Fájl/Mappa rossz helyen! --> ".$path."/".$val ); @@ -511,22 +549,22 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' function groupdir_create_root($user, $oktId, $path){ //Tankörmappák gyökerét előállítja $path=tankörgyökér - global $m2n, $occ_path, $occ_user,$log; + global $cfg, $occ_path, $occ_user,$log,$dryrun; $ret = array(false, false); - if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava + if((empty($cfg['groupdir_users']) || in_array($user, $cfg['groupdir_users'])) && $oktId > 0 && $cfg['manage_groupdirs'] === true){ //Ha null -> mindenki, Ha "user" -> scak neki, && tanár && groupdir bekapcsolava if(is_file($occ_path."/data/".$user."/files/".$path) || is_link($occ_path."/data/".$user."/files/".$path)){ //Ha már vam ott valami ilyen fájl - rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); //Átnevezi, hogy azért mégse vasszen oda + if(!$dryrun){ rename($occ_path."/data/".$user."/files/".$path, $occ_path."/data/".rnescp($user."/files/".$path.".".time().".please-remove")); } //Átnevezi, hogy azért mégse vasszen oda echo "php ->\tFILE: \"".$occ_path."/data/".$user."/files/".$path."\" \t \t moved away!!!\n"; user_notify($user,"Fájl: >>".$path.".please-remove<< Illegális helyen volt. Server által eltávolítva.", "Fájl: >>".$path."<< eltávolítva!"); files_scan($user, "" ); //Ekkor az egész $user/files mappát szkenneli } $ret[0] = create_dir($user, rmnp($path)); // Tankörmappa gyökér létrehozása - $ret[1] = write_tofile($user, $path."/"."INFO.txt", $m2n['infotxt_szöveg']); // INFO.txt (Újra)Írása. + $ret[1] = write_tofile($user, $path."/"."INFO.txt", $cfg['infotxt_szöveg']); // INFO.txt (Újra)Írása. if($ret[0] === true){ // Ha frissen létrehozott mappa, akkor az egész userre kell jogot adni $e = "/bin/chown -R ".escp($occ_user.":".$occ_user)." ".escp($occ_path."/data/".$user."/")." "; - if($log['verbose'] > 5) { echo "bash ->\t".$e."\n"; } - shell_exec($e); + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ shell_exec($e); } files_scan($user, $path); } } @@ -535,10 +573,10 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function groupdir_create_groupdir($user, $oktId, $path){ // $path = tankörmappa - global $m2n; + global $cfg,$log; $ret = false; - if( basename($path,"_beadás") != $m2n['mindenki_tanar'] and basename($path,"_beadás") != $m2n['mindenki_diak'] and basename($path,"_beadás") != $m2n['mindenki_csop']){ //Ezekre a csoportokra minek? - if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + if( basename($path,"_beadás") != $cfg['mindenki_tanar'] and basename($path,"_beadás") != $cfg['mindenki_diak'] and basename($path,"_beadás") != $cfg['mindenki_csop']){ //Ezekre a csoportokra minek? + if((empty($cfg['groupdir_users']) || in_array($user, $cfg['groupdir_users'])) && $oktId > 0 && $cfg['manage_groupdirs'] === true){ $ret = create_dir($user, rmnp($path)); // Tankörmappa létrehozása if($ret === true){ files_scan($user, $path); @@ -550,9 +588,9 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function groupdir_finish($user, $oktId, $path, $tankorei ){ //$path=tankörgyökér - global $m2n; + global $cfg,$log; $ret = array(array(),array(),array(),false,false); //return sekelton - if((empty($m2n['groupdir_users']) || in_array($user, $m2n['groupdir_users'])) && $oktId > 0 && $m2n['manage_groupdirs'] === true){ + if((empty($cfg['groupdir_users']) || in_array($user, $cfg['groupdir_users'])) && $oktId > 0 && $cfg['manage_groupdirs'] === true){ if(isset($tankorei)) { $ret = clean_dir($user, $path, $tankorei); $ret[3] = false; //mert felülírja a skeleton-t @@ -582,16 +620,10 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' if(!isset($val['diakId'])){ //workaround $val['diakId'] = 0; } - $list = array_merge($list, array( - array( 'userAccount' => $val['userAccount'], - 'email' => $val['email'], - 'tanarId' => $val['tanarId'], - 'diakId' => $val['diakId'], - 'tankorId' => 0, - 'fullName' => $val['fullName'], - 'tankorNev' => $tankorname, - ))); - + $list = array_merge($list, array( $val)); + $list[$key]['tankorNev'] = $tankorname; + $list[$key]['tankorId'] = 0; + if($user !== null && $val['userAccount'] == $user ){ // Null -> mindenkihez, "user" -> csak neki break; } @@ -615,7 +647,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } function mayor_userlistcmp($a, $b){ - return strcmp($a['userAccount'], $b['userAccount']); + // return strcmp($a['oId'], $b['oId']); //Ez lenne a jó, de az átfedések miatt nem működik + return strcmp($a['userAccount'], $b['userAccount']); //Pillanatnyilag csak az az egyedi } function po($inp,$ll,$dir){ // Szép kimenetet gyárt @@ -631,53 +664,61 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' return $inp; } + function get_mayor_szemeszter($link, $date) { + global $cfg,$log; + $ret = array(); + $q = "SELECT * FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter + WHERE (statusz = 'aktív' OR statusz = 'lezárt') AND kezdesDt <= '".$date."' + AND '".$date."' <= (SELECT MAX(zarasDt) FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' OR statusz = 'lezárt' ) + AND '".$date."' >= (SELECT MIN(kezdesDt) FROM intezmeny_".$cfg['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' OR statusz = 'lezárt' ) + ORDER BY zarasDt DESC + LIMIT 1; + "; + if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } + if( ($r = mysqli_query($link, $q)) !== FALSE ){ + $ret = mysqli_fetch_array($r, MYSQLI_ASSOC); + if(!empty($ret)){ $ret["reqDt"] = $date; } //szükség lehet a megkérdezett dt-re is + mysqli_free_result($r); + } else { + echo "\nMAY ->\t ******** Mayor_napló (szemeszter)lekérdezési hiba. (adatbázis) ********\n"; + } + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; + } - function get_mayor_tankor($link){ // A tankörök neveinek lekérdezése a mayorból - global $m2n,$log; + + + + function get_mayor_tankor($link, $date){ // A tankörök neveinek lekérdezése a mayorból + global $cfg,$log; $ret = array(); $req_oszt = "'#'"; - foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra + foreach($cfg['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra $req_oszt .= ",'$val'"; } -//Létező összes tankör: -/* $q = "SELECT tankorId, TRIM(BOTH ' ' - FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE tanev = ( - SELECT tanev - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' - GROUP BY tanev) AND szemeszter = ( - SELECT szemeszter - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )); "; -*/ -//csak a megadott évfeolyamokhoz kötődő tankörök: - $qq = "SELECT tanev FROM intezmeny_".mysqli_real_escape_string($link, $m2n['isk_rovidnev']).".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$qq."\n"; } - if( ($r = mysqli_query($link, $qq)) !== FALSE ){ - $ev = mysqli_fetch_array($r, MYSQLI_ASSOC); - $q = "SELECT tankorId, TRIM(BOTH ' ' - FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE tanev = ( - SELECT tanev - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' - GROUP BY tanev) AND szemeszter = ( - SELECT szemeszter - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."')) AND tankorId IN( - SELECT tankorId - FROM intezmeny_".$m2n['isk_rovidnev'].".tankorOsztaly - WHERE osztalyId IN ( - SELECT osztalyId - FROM naplo_".$m2n['isk_rovidnev']."_".$ev['tanev'].".osztalyNaplo - WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") - ORDER BY osztalyId) - ORDER BY tankorId ) ORDER BY tankorNev; - "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + $szm = get_mayor_szemeszter($link, $date); + if(!empty($szm)){ + //Létező összes tankör: + /* $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter + WHERE tanev = '".$szm['tanev']."' AND szemeszter = '".$szm['szemeszter']."'; + "; + */ + //csak a megadott évfeolyamokhoz kötődő tankörök: + $q = "SELECT tankorId, TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter + WHERE tanev = '".$szm['tanev']."' AND szemeszter = '".$szm['szemeszter']."' AND tankorId IN( + SELECT tankorId + FROM intezmeny_".$cfg['isk_rovidnev'].".tankorOsztaly + WHERE osztalyId IN ( + SELECT osztalyId + FROM naplo_".$cfg['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo + WHERE evfolyamJel >= ".$cfg['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") + ORDER BY osztalyId ) + ORDER BY tankorId ) + ORDER BY tankorNev; + "; + if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $ret[] = $row; @@ -686,83 +727,98 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' } else { echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (adatbázis) ********\n"; } + } else { + echo "\nMAY ->\t ******** Mayor_napló (tankör)lekérdezési hiba. (Nincs ilyen Szemeszter: ".$date."!) ********\n"; } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; } - function get_mayor_tanar($link){ // A tanárok lekérdezése a mayorból - global $m2n,$log; + function get_mayor_tanar($link, $date){ // A tanárok lekérdezése a mayorból + global $cfg,$log; $ret = array(); - $q = "SELECT userAccount, email, tanar.tanarId, tankorTanar.tankorId, TRIM(BOTH ' ' - FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, TRIM(BOTH ' ' - FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".tanar, mayor_private.accounts, intezmeny_".$m2n['isk_rovidnev'].".tankorTanar, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' AND tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt - OR tanar.kiDt IS NULL) AND tanar.tanarId = tankorTanar.tanarId AND tankorTanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tankorTanar.kiDt OR tankorTanar.kiDt = '".$m2n['zaras_tartas']."' ) - AND tankorTanar.tankorId = tankorSzemeszter.tankorId AND tankorSzemeszter.tanev = ( - SELECT tanev - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' - GROUP BY tanev) AND szemeszter = ( - SELECT szemeszter - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDT = '".$m2n['zaras_tartas']."' )) - ORDER BY userAccount ; - "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } - if(( $r = mysqli_query($link, $q)) !== FALSE ){ - while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { - $ret[] = $row; + $szm = get_mayor_szemeszter($link, $date); + if(!empty($szm)){ + $q = "SELECT accounts.userAccount, accounts.mail, tanar.email, tanar.tanarId, tankorTanar.tankorId, tanar.oId, '' AS employeeId, + tanar.beDt, tanar.kiDt, '' AS kezdoTanev, '' AS vegzoTanev, '' AS jel, '' AS beEv, '' AS osztalyJel, + tanar.viseltNevElotag, tanar.viseltCsaladinev, tanar.viseltUtonev, + tanar.szuletesiHely,tanar.szuletesiIdo, '' as lakhelyOrszag, '' as lakhelyHelyseg, '' as lakhelyIrsz, + '' AS lakHely, '' AS telefon, '' AS mobil, tanar.statusz, 'Tanár' AS beoszt, + TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, + TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".tanar, mayor_private.accounts, intezmeny_".$cfg['isk_rovidnev'].".tankorTanar, intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter + WHERE accounts.studyId = tanar.oId AND statusz != 'jogviszonya lezárva' + AND ( (tanar.beDt <= '".$szm['reqDt']."' AND ( tanar.kiDt >= '".$szm['reqDt']."' OR tanar.kiDt IS NULL)) + /*OR (tanar.beDt <= CURRENT_DATE() AND (CURRENT_DATE() <= tanar.kiDt OR tanar.kiDt IS NULL))*/ ) + AND tanar.tanarId = tankorTanar.tanarId + AND ((tankorTanar.beDt <= '".$szm['reqDt']."' AND tankorTanar.kiDt >= '".$szm['reqDt']."' ) + /*OR (tankorTanar.beDt <= CURRENT_DATE() AND CURRENT_DATE() <= tankorTanar.kiDt )*/ ) + AND tankorTanar.tankorId = tankorSzemeszter.tankorId + AND tankorSzemeszter.tanev = '".$szm['tanev']."' AND tankorSzemeszter.szemeszter = '".$szm['szemeszter']."' + /* ORDER BY oId; */ + ORDER BY userAccount ; + "; + if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } + if(( $r = mysqli_query($link, $q)) !== FALSE ){ + while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { + $ret[] = $row; + } + mysqli_free_result($r); + } else { + echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (adatbázis) ********\n"; } - mysqli_free_result($r); } else { - echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (adatbázis) ********\n"; + echo "\nMAY ->\t ******** Mayor_napló (tanár)lekérdezési hiba. (Nincs ilyen Szemeszter: ".$date."!) ********\n"; } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; } - function get_mayor_diak($link){ // diákok lekérdezése - global $m2n,$log; + function get_mayor_diak($link, $date){ // diákok lekérdezése + global $cfg,$log; $ret = array(); $req_oszt = "'#'"; - foreach($m2n['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra + foreach($cfg['min_osztalyok'] as $key => $val){ //A megadott konkrét osztályokra $req_oszt .= ",'$val'"; } - $q = "SELECT tanev FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter WHERE statusz = 'aktív' GROUP BY tanev; "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } - if( ($r = mysqli_query($link, $q)) !== FALSE ){ - $ev = mysqli_fetch_array($r, MYSQLI_ASSOC); - $q = "SELECT userAccount, email, diak.diakId, tankorDiak.tankorId, TRIM(BOTH ' ' - FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, TRIM(BOTH ' ' - FROM CONCAT('".$m2n['csoport_prefix']."',tankorNev)) AS tankorNev - FROM intezmeny_".$m2n['isk_rovidnev'].".diak, mayor_private.accounts,intezmeny_".$m2n['isk_rovidnev'].".tankorDiak, intezmeny_".$m2n['isk_rovidnev'].".tankorSzemeszter - WHERE diak.diakId IN ( - SELECT diakId - FROM intezmeny_".$m2n['isk_rovidnev'].".osztalyDiak - WHERE osztalyId IN ( - SELECT osztalyId - FROM naplo_".$m2n['isk_rovidnev']."_".$ev['tanev'].".osztalyNaplo - WHERE evfolyamJel >= ".$m2n['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") - ORDER BY osztalyId) - ORDER BY diakId) AND diak.statusz != 'jogviszonya lezárva' AND diak.statusz != 'felvételt nyert' AND diak.oId = accounts.studyId - AND tankorDiak.diakId = diak.diakId AND tankorDiak.beDt <= CURRENT_DATE() AND (tankorDiak.kiDt >= CURRENT_DATE() OR tankorDiak.kiDt IS NULL OR tankorDiak.kiDt = '".$m2n['zaras_tartas']."' ) - AND tankorSzemeszter.tankorId = tankorDiak.tankorId AND tankorSzemeszter.tanev = ( - SELECT tanev - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' - GROUP BY tanev) AND tankorSzemeszter.szemeszter = ( - SELECT szemeszter - FROM intezmeny_".$m2n['isk_rovidnev'].".szemeszter - WHERE statusz = 'aktív' AND kezdesDt <= CURRENT_DATE() AND (CURRENT_DATE() <= zarasDt OR zarasDt = '".$m2n['zaras_tartas']."' )) - ORDER BY userAccount; - "; - if ($log['verbose'] > 5 ){ echo "MAY ->\t".$q."\n"; } + $szm = get_mayor_szemeszter($link, $date); + if(!empty($szm)){ + $q = "SELECT accounts.userAccount, accounts.mail, diak.email, diak.diakId, tankorDiak.tankorId, diak.oId, diak.diakigazolvanySzam AS employeeId, + diak.jogviszonyKezdete AS beDt, diak.jogviszonyVege AS kiDt, osztaly.kezdoTanev, osztaly.vegzoTanev, osztaly.jel, diak.kezdoTanev AS beEv, + osztalyNaplo.osztalyJel, diak.viseltNevElotag, diak.viseltCsaladinev, diak.viseltUtonev, + diak.szuletesiHely, diak.szuletesiIdo, diak.lakhelyOrszag, diak.lakhelyHelyseg, diak.lakhelyIrsz, + TRIM(BOTH ' ' FROM CONCAT_WS(' ',diak.lakhelyKozteruletNev, diak.lakhelyKozteruletJelleg, diak.lakhelyHazszam, diak.lakhelyEmelet, diak.lakhelyAjto)) AS lakHely, + diak.telefon, diak.mobil, diak.statusz, + TRIM(BOTH ' ' FROM CONCAT_WS(' ',viseltNevElotag, viseltCsaladinev, viseltUtonev)) AS fullName, + TRIM(BOTH ' ' FROM CONCAT('".$cfg['csoport_prefix']."',tankorNev)) AS tankorNev + FROM intezmeny_".$cfg['isk_rovidnev'].".diak, mayor_private.accounts, intezmeny_".$cfg['isk_rovidnev'].".tankorDiak, intezmeny_".$cfg['isk_rovidnev'].".tankorSzemeszter, + intezmeny_".$cfg['isk_rovidnev'].".osztalyDiak, intezmeny_".$cfg['isk_rovidnev'].".osztaly, naplo_".$cfg['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo + WHERE diak.diakId IN ( + SELECT diakId + FROM intezmeny_".$cfg['isk_rovidnev'].".osztalyDiak + WHERE osztalyId IN ( + SELECT osztalyId + FROM naplo_".$cfg['isk_rovidnev']."_".$szm['tanev'].".osztalyNaplo + WHERE evfolyamJel >= ".$cfg['min_evfolyam']." OR osztalyJel IN(".$req_oszt.") + ORDER BY osztalyId) + ORDER BY diakId) + AND diak.statusz != 'jogviszonya lezárva' AND diak.statusz != 'felvételt nyert' AND diak.oId = accounts.studyId + AND tankorDiak.diakId = diak.diakId + AND ((tankorDiak.beDt <= '".$szm['reqDt']."' AND (tankorDiak.kiDt IS NULL OR tankorDiak.kiDt >= '".$szm['reqDt']."' )) + /*OR (tankorDiak.beDt <= CURRENT_DATE() AND (tankorDiak.kiDt IS NULL OR tankorDiak.kiDt >= CURRENT_DATE() ))*/ ) + AND tankorSzemeszter.tankorId = tankorDiak.tankorId + AND tankorSzemeszter.tanev = '".$szm['tanev']."' AND tankorSzemeszter.szemeszter = '".$szm['szemeszter']."' + AND osztalyDiak.diakId = diak.diakId + AND (osztalyDiak.beDt <= '".$szm['reqDt']."' AND (osztalyDiak.kiDt >= '".$szm['reqDt']."' OR osztalyDiak.kiDt IS NULL)) + AND osztaly.osztalyId = osztalyDiak.osztalyId + AND osztalyDiak.osztalyId = osztalyNaplo.osztalyId + /* ORDER BY oId ; */ + ORDER BY userAccount ; + "; + if ($log['verbose'] > 7 ){ echo "MAY ->\t".$q."\n"; } if(( $r = mysqli_query($link, $q)) !== FALSE ){ -// mysqli_fetch_array($r, MYSQLI_ASSOC); while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $ret[] = $row; } @@ -771,8 +827,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '7.0', ' echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; } } else { - echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (adatbázis) ********"; - } + echo "\nMAY ->\t ******** Mayor_napló (diák)lekérdezési hiba. (Nincs ilyen Szemeszter: ".$date."!) ********"; + } if ($log['verbose'] > 10 ){ print_r($ret); } return $ret; } @@ -826,115 +882,120 @@ ldap_close($ld); - - - - - - - - - - //--------------------------------------------------------------------------------------------------------------------------------------------// // RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN // //--------------------------------------------------------------------------------------------------------------------------------------------// - if(nxt_get_version() < 13){ //Nextcloud 13-tól támogatott + if(true){ echo "\n\n###################################################\n" ;} + if(true){ echo "######## Mayor-Nextcloud Script ########\n"; } + if(true){ echo "######## Start: ".date("Y-m-d H:i:s")." ########\n"; } + $t_start = microtime(true); + + if(!isset($cfg['allapot_tartas']) or empty($cfg['allapot_tartas']) or $cfg['allapot_tartas'] == "1970-01-01"){ //A jelölt nap állapotának betöltése + $cfg['allapot_tartas'] = date("Y-m-d"); + } + if(true) { echo "######## A (".$cfg['allapot_tartas'].")-i állapot szerint. ########\n"; } + if(true){ echo "###################################################\n" ;} + + if(true) { echo "\n*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } + if($printconfig === true or $debug === true){ + echo "\n Betöltött Konfig:\n"; + $m2l = $cfg; + $m2l['infotxt_szöveg'] = "<-- TEXT -->"; //Túl hosszú lenne kiprintelni + var_export($m2l); + echo "\n"; + } + $log['verbose'] = $cfg['verbose']; + if($debug === true) {$log['verbose'] = 1000; $printpasswds = true;} + if( $cfg['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } + + + + +//------------------------------------------------------------------------------------------------------------------------------- + $ret = nxt_get_version(); + $nxt_version = $ret[1]; + if($ret[1] < 13){ //Nextcloud 13-tól támogatott echo "\n\n******** Legalább Nextcloud 13-mas verzió szükséges! ********\n\n"; + echo $ret[0]."\n\n"; die(); } if($printhelp === true){ print_help(); die(); } - if ($m2n['manage_groupdirs'] === true && $m2n['manage_groups'] === false){ + if ($cfg['manage_groupdirs'] === true && $cfg['manage_groups'] === false){ print_help(); die(); } -//------------------------------------------------------------------------------------------------------------------------------- - if(true) { echo "\n\n######## Mayor-Nextcloud Script ########\n"; echo "######## (".date("Y-m-d H:i:s").") ########\n\n"; $t_start = microtime(true); } - if(true) { echo "*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } - if($printconfig === true){ - echo "\n Betöltött Konfig:\n"; - $m2l = $m2n; - $m2l['infotxt_szöveg'] = "<-- TEXT -->"; //Túl hosszú lenne kiprintelni - var_export($m2l); - echo "\n"; - } - $log['verbose'] = $m2n['verbose']; - if($debug === true) {$log['verbose'] = 100;} - if( $m2n['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } - - if(($link = db_connect($db)) == FALSE){ //csatlakozás + if(($link = db_connect($cfg['db_m2n_db'])) == FALSE){ //csatlakozás echo "\n******** MySQL (general) kapcsolat hiba. ********\n"; echo "\n******** Script leáll... ********\n"; die(); } - $link2 = $link; - - // group_add($m2n['mindenki_csop']); // A "mindenki" csoport hozzáadása - // group_add($m2n['mindenki_tanar']); // A "mindenki"/tanár csoport hozzáadása - // group_add($m2n['mindenki_diak']); // A "mindenki"/diák csoport hozzáadása - - if(isset($db['mayor_user']) and isset($db['mayor_pass']) and isset($db['mayor_host']) or isset($db['mayor_port'])) - { - $db['user'] = $db['mayor_user']; //ha a mayor egy másik szerveren lenne - $db['pass'] = $db['mayor_pass']; - $db['host'] = $db['mayor_host']; - $db['port'] = $db['mayor_port']; - if(($link2 = db_connect($db)) == FALSE){ - echo "\n******** MySQL (mayor) kapcsolat hiba. ********\n"; - echo "\n******** Script leáll... ********\n"; - die(); - } else { - if ($log['verbose'] > 0 ){ echo "***\tMayor DB connect.\n"; } - } + script_install($link); // $link -> script, $link2 -> mayor + + + //ha a mayor egy másik szerveren lenne + if(!empty($cfg['db_mayor_user'])){ $cfg['db_user'] = $cfg['db_mayor_user']; } + if(!empty($cfg['db_mayor_pass'])){ $cfg['db_pass'] = $cfg['db_mayor_pass']; } + if(!empty($cfg['db_mayor_host'])){ $cfg['db_host'] = $cfg['db_mayor_host']; } + if(!empty($cfg['db_mayor_port'])){ $cfg['db_port'] = $cfg['db_mayor_port']; } + + if(($link2 = db_connect()) == FALSE){ + echo "\n******** MySQL (mayor) kapcsolat hiba. ********\n"; + echo "\n******** Script leáll... ********\n"; + die(); + } else { + if ($log['verbose'] > 0 ){ echo "***\tMayor DB connected.\n"; } } + // group_add($cfg['mindenki_csop']); // A "mindenki" csoport hozzáadása (később adjuk hozzá) + // group_add($cfg['mindenki_tanar']); // A "mindenki"/tanár csoport hozzáadása + // group_add($cfg['mindenki_diak']); // A "mindenki"/diák csoport hozzáadása //------------------------------------------------------------------------------------------------------------------------------ // Létrehozza az új coportokat a Mayor tankörök szerint if ($log['verbose'] > 0 ){ echo "\n***\tCsoportok egyeztetése.\n";} - $tankorok = get_mayor_tankor($link2); - $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_csop'] ))); - $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_tanar'] ))); - $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $m2n['mindenki_diak'] ))); + $tankorok = get_mayor_tankor($link2, $cfg['allapot_tartas']); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $cfg['mindenki_csop'] ))); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $cfg['mindenki_tanar'] ))); + $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $cfg['mindenki_diak'] ))); $nxt_csop = nxt_group_list(); $elozo_tcsop = ""; $mod_nxt_group = 0; - if($m2n['manage_groups'] === true){ + if($cfg['manage_groups'] === true){ foreach($tankorok as $key => $val){ //Végignézi a tankörök szerint foreach($nxt_csop as $key2 => $val2){ if($key2 == $val['tankorNev']){ //Már van ilyen (tankör)nevű csoport - if ($log['verbose'] > 3 ){ echo " -\t Csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\tok.\n";} + if ($log['verbose'] > 3 ){ echo " -\t Csoport:".po("\t".$val['tankorNev'],$cfg['csoportnev_hossz'],1)."-\tok.\n";} $elozo_tcsop = $val['tankorNev']; break; } } unset($nxt_csop[$val['tankorNev']]); //Megvizsgálva, többször már nem kell dönteni róla. if( $val['tankorNev'] == $elozo_tcsop and $key2 != $val['tankorNev'] ){ //Duplikált tankör(név) a Mayorban - if($log['verbose'] > 2 ){ echo "* -\t Dupla tankör:".po("\t".$val['tankorNev'], $m2n['csoportnev_hossz'],1)."-\tmayor.\n";} + if($log['verbose'] > 2 ){ echo "* -\t Dupla tankör:".po("\t".$val['tankorNev'], $cfg['csoportnev_hossz'],1)."-\tmayor.\n";} } else if($key2 != $val['tankorNev']){ //Ha nincs ilyen (tankör)nevű csoport group_add($val['tankorNev']); //Akkor létrehozza $mod_nxt_group++; - if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$m2n['csoportnev_hossz'],1)."-\thozzáadva.\n";} + if ($log['verbose'] > 2 ){ echo "* -\t Új csoport:".po("\t".$val['tankorNev'],$cfg['csoportnev_hossz'],1)."-\thozzáadva.\n";} } } // A megszűnt tanköröket-csoportokat kitörli foreach($nxt_csop as $key => $val){ - if(substr($key, 0, strlen($m2n['csoport_prefix'])) === $m2n['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. + if(substr($key, 0, strlen($cfg['csoport_prefix'])) === $cfg['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. group_del($key); //elvégzi a törlést $mod_nxt_group++; - if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t eltávolítva.\n";} + if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$cfg['csoportnev_hossz'],1)."-\t eltávolítva.\n";} } else { - if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$m2n['csoportnev_hossz'],1)."-\t békén hagyva.\n";} + if ($log['verbose'] > 3 ){ echo " ---\t Egyéb csoport:".po("\t$key",$cfg['csoportnev_hossz'],1)."-\t békén hagyva.\n";} } // Figyelem! A csoport prefix-szel: "(tk) " kezdődő csoportokat magáénak tekinti, automatikusan töröli! } // Akkor is, ha az külön, kézzel lett létrehozva. } @@ -945,44 +1006,47 @@ ldap_close($ld); // Felhasználónevek egyeztetése if ($log['verbose'] > 0 ){ echo "\n***\tFelhasználók egyeztetése.\n";} - $mayor_tanar = get_mayor_tanar($link2); //Rendezve jön - $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $m2n['mindenki_tanar']); //csak rendezett tömbökön! - $mayor_tanar = set_param_to_user($mayor_tanar, null, 'quota', $m2n['default_quota']); + $mayor_tanar = get_mayor_tanar($link2, $cfg['allapot_tartas']); //Rendezve jön + $mayor_tanar = add_tk_to_users( $mayor_tanar, null, $cfg['mindenki_tanar']); //csak rendezett tömbökön! + $mayor_tanar = set_param_to_user($mayor_tanar, null, 'quota', $cfg['default_quota']); $mayor_tanar = set_param_to_user($mayor_tanar, null, 'diakId', -1 ); usort($mayor_tanar, "mayor_userlistcmp"); - $mayor_diak = get_mayor_diak($link2); //mysql rendezi - $mayor_diak = add_tk_to_users( $mayor_diak, null, $m2n['mindenki_diak']); //csak rendezett tömbökön! - $mayor_diak = set_param_to_user($mayor_diak, null, 'quota', $m2n['diak_quota']); + $mayor_diak = get_mayor_diak($link2, $cfg['allapot_tartas']); //mysql rendezi + $mayor_diak = add_tk_to_users( $mayor_diak, null, $cfg['mindenki_diak']); //csak rendezett tömbökön! + $mayor_diak = set_param_to_user($mayor_diak, null, 'quota', $cfg['diak_quota']); $mayor_diak = set_param_to_user($mayor_diak, null, 'tanarId', -1 ); usort($mayor_diak, "mayor_userlistcmp"); $mayor_user = array(); $mayor_user = array_merge($mayor_tanar, $mayor_diak); //Tanár, és diák lista együtt - if(isset($m2n['megfigyelo_user']) && $m2n['megfigyelo_user'] != "" ){ //A megfigyelő felvétele a lista végére + + if(!empty($cfg['megfigyelo_user'])){ //A megfigyelő user felvétele a lista végére $mayor_user = array_merge($mayor_user, array( - array( 'userAccount' => $m2n['megfigyelo_user'], //A megfigyelő user legyen egyben virtuális tanár is - 'tanarId' => 1, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin Megfigyelő", - 'email' => $m2n['default_email'], - 'tankorNev' => $m2n['mindenki_tanar'], + array( 'userAccount' => $cfg['megfigyelo_user'], //A megfigyelő user legyen egyben virtuális tanár is + 'tanarId' => 1, 'oId' => 70000000000, 'diakId' => 0, 'tankorId' => 0, 'fullName' => "Napló Admin Megfigyelő", + 'email' => $cfg['default_email'], + 'tankorNev' => $cfg['mindenki_tanar'], ))); - foreach(get_mayor_tankor($link2) as $key => $val){ + foreach(get_mayor_tankor($link2, $cfg['allapot_tartas']) as $key => $val){ //És beléptetve az összes létező csoportba $mayor_user = array_merge($mayor_user, array( - array( 'userAccount' => $m2n['megfigyelo_user'], - 'email' => $m2n['default_email'], + array( 'userAccount' => $cfg['megfigyelo_user'], + 'email' => $cfg['default_email'], 'tanarId' => 1, 'diakId' => 0, + 'oId' => 70000000000, 'tankorId' => $val['tankorId'], 'fullName' => "Napló Admin Megfigyelő", 'tankorNev' => $val['tankorNev'], - ))); - //if($val['tankorNev'] == "(tk) 10.b kémia" ){ break; } - + ) + ) + ); + //if($val['tankorNev'] == "(tk) 10.b kémia" ){ break; } } } - usort($mayor_user, "mayor_userlistcmp"); //rendezés - $mayor_user = add_tk_to_users( $mayor_user, null, $m2n['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport - usort($mayor_user, "mayor_userlistcmp"); //Végén ismét rendezzük az egészet + usort($mayor_user, "mayor_userlistcmp"); //rendezés + $mayor_user = add_tk_to_users( $mayor_user, null, $cfg['mindenki_csop']); //csak rendezett tömbökön //mindenki csoport + usort($mayor_user, "mayor_userlistcmp"); //Végén ismét rendezzük az egészet $mayor_user = array_merge($mayor_user, array(array('userAccount' => null, 'fullName' => null, 'tankorNev' => null, 'diakId' => 0, 'tanarId' => 0,)) ); //strázsa a lista végére $nxt_user = nxt_user_list(); @@ -992,15 +1056,15 @@ ldap_close($ld); if ($log['verbose'] > 3 ){ echo "\n";} - foreach($mayor_user as $key => $val){ - //Lecseréli az ékezetes betűket a felhasználónévből - $mayor_user[$key]['userAccount'] = str_replace($search, $replace, $val['userAccount']); // (pl: Á->Aa, á->aa, ...) - if(in_array($mayor_user[$key]['userAccount'], $m2n_forbidden) ){ //És, ha a nyilvántartásban "forbidden"-ként szerepel, + foreach($mayor_user as $key => $val){ //Lecseréli az ékezetes betűket a felhasználónévből + $mayor_user[$key]['userAccount'] = gen_username($val); // lehet saját függvény is + if(in_array($mayor_user[$key]['userAccount'], $m2n_forbidden) ){ //És, ha a nyilvántartásban "forbidden"-ként szerepel, unset($mayor_user[$key]); // akkor nem foglalkozik vele tovább. } } $curr = ""; + $curr_o = array(); $tankorei = array(); $mod_nxt_user_all = 0; $mod_nxt_user = 0; @@ -1009,7 +1073,7 @@ ldap_close($ld); if($curr != $val['userAccount']){ //CSAK Rendezett tömbökön !! foreach($nxt_user as $key2 => $val2){ if($curr == $key2){ //Már létezik a felhasználó a Nextcloud-ban - $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tlétezik.\n"; + $log['curr'] = "-\n-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tlétezik.\n"; if ($log['verbose'] > 3 ){ echo " -".$log['curr']; $log['curr'] = "";} if ( in_array($curr, $m2n_catalog['account'])){ //Benne van-e a nyilvántartásban? if($m2n_catalog['status'][array_keys($m2n_catalog['account'], $curr)[0]] == 'disabled' ){ // Ha le lett tiltva @@ -1017,48 +1081,48 @@ ldap_close($ld); catalog_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi, user_ena($curr); // ha a script tiltotta le. $mod_nxt_user++; - $log['curr'] = "-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tengedélyezve.\n"; + $log['curr'] = "-\n-\tFelhasználó:".po("\t$curr_n ($curr)",$cfg['felhasznalo_hossz'],1)."--\tengedélyezve.\n"; if ($log['verbose'] > 2 ){ echo " -".$log['curr']; $log['curr'] = ""; } //Ez is változtatás } } else { //Nincs a katalógusban, nincs tiltva, felvesszük 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 ($log['verbose'] > 1 ){ echo "-\t\tA felhasználó:".po("\t$curr",$cfg['felhasznalo_hossz'],1)."-\tnyilvántartásba véve.\n";} } //--------------------------------------- QUOTA -----------------------------------// - if($m2n['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 + if($cfg['always_set_diak_quota'] === true && $curr_tanarId < 0 && $curr_diakId > 0 ){ //Állítsunk-e erőből (diák) qvótát? + $params['quota'] = $cfg['diak_quota']; // Alapértelmezett diák kvóta user_set($curr,$params); $mod_nxt_user++; if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\t\n"; } } - if($m2n['manage_groups'] === true){ //Csak, ha a acsoportokhoz is nyúlunk + if($cfg['manage_groups'] === true){ //Csak, ha a acsoportokhoz is nyúlunk //------------------------- Tankörmappa györkér + info.txt ------------------------// - $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); - if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix'],$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} - if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/". $m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + $ret = groupdir_create_root($curr, $curr_tanarId, $cfg['groupdir_prefix']); + if ($ret[0] === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$cfg['groupdir_prefix'],$cfg['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} + if ($ret[1] > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/". $cfg['groupdir_prefix']."/INFO.txt",$cfg['csoportnev_hossz'],1)."\tfájl.\n";} //------------------------------------------ Tankörök egyeztetése -------------------------------------------// 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($key3, $tankorei) /*or $key3 == $cfg['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";} + if ($log['verbose'] > 3 ){ echo " -\t\tBenne van a:".po("\t$key3",$cfg['csoportnev_hossz'],1)."\tcsoportban.\n";} } 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"; } + if ($log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tHozzáadva a:".po("\t$key3",$cfg['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } group_user_add($key3, $curr); //A "mindenki csoportot is ellenőrzi $mod_nxt_user++; } //------------------------------- Tankörmappa -----------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$key3."_beadás"); - if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $cfg['groupdir_prefix']."/".$key3); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."/",$cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappába\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $cfg['groupdir_prefix']."/".$key3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\tÚj mappa Létrehozva:".po("\t/".$key3."_beadás/",$cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappába\n";} //------------------------------------- Tankör (Csoportból) törlés -------------------------// } 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"; } + if(in_array($curr, $val3) and (substr($key3, 0, strlen($cfg['csoport_prefix'])) === $cfg['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",$cfg['csoportnev_hossz'],1)."\tcsoportból.\n"; } group_user_del($key3, $curr); //egy korábbi tankör lehetett... $mod_nxt_user++; } @@ -1066,11 +1130,11 @@ ldap_close($ld); } //------------------------------------- Tankörmappa törlés + NXT-rescan ----------------------------------// //( "_" --> mindenkinek, "username" --> csak neki ) && tanár - $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], $tankorei); - if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappából törölve.\n";}} - if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában.\n";}} - if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappában békén hagyva.\n";}} - if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + $ret = groupdir_finish($curr, $curr_tanarId, $cfg['groupdir_prefix'], $tankorei); + if (count($ret[0]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[0] as $retkey => $retval){ echo "* -\t Üres (Tankör)mappa:".po("\t/".$retval."/", $cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappából törölve.\n";}} + if (count($ret[1]) > 0 && $log['verbose'] > 2 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[1] as $retkey => $retval){ echo "* -\tFájl/Mappa Átnevezve:".po("\t/".$retval."/", $cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappában.\n";}} + if (count($ret[2]) > 0 && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} foreach($ret[2] as $retkey => $retval){ echo "* -\t\tTankörmappa:".po("\t/".$retval."/", $cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappában békén hagyva.\n";}} + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$cfg['groupdir_prefix']."/", $cfg['csoportnev_hossz'],1)."\t mappán.\n";} } $mod_nxt_user_all++; break; @@ -1079,41 +1143,45 @@ ldap_close($ld); unset($nxt_user[$curr]); //Felhasználó Megvizsgálva, többször már nem kell dönteni róla. if($curr != $key2 and $curr != null){ //Nincs még ilyen felhasználó - user_add($curr, $curr_n); //Akkor hozzá kell adni + $ret = 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 ($printpasswds === true ){ $pw = strval($ret[1]); } else { $pw = ""; } + if ($log['verbose'] > 2 ){ echo "-\n**-\tFelhasználó:".po("\t".po($curr_n, 25, 1)." ($curr/$pw)",$cfg['felhasznalo_hossz'],1)." --\tlétrehozva.\n"; } $mod_nxt_user++; - if($m2n['manage_groups'] === true){ - $ret = groupdir_create_root($curr, $curr_tanarId, $m2n['groupdir_prefix']); - if ($ret[0] === true && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/",$m2n['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} - if ($ret[1] > 0 && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/INFO.txt",$m2n['csoportnev_hossz'],1)."\tfájl.\n";} + if($cfg['manage_groups'] === true){ + $ret = groupdir_create_root($curr, $curr_tanarId, $cfg['groupdir_prefix']); + if ($ret[0] === true && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$cfg['groupdir_prefix']."/",$cfg['csoportnev_hossz'],1)."\ttankörmappa gyökér.\n";} + if ($ret[1] > 0 && $log['verbose'] > 2 ){ echo "* -\t\tLétrehozva :".po("\t./".$curr."/files/".$cfg['groupdir_prefix']."/INFO.txt",$cfg['csoportnev_hossz'],1)."\tfájl.\n";} 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); - if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$m2n['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} - $ret = groupdir_create_groupdir($curr, $curr_tanarId, $m2n['groupdir_prefix']."/".$val3."_beadás"); - if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$m2n['csoportnev_hossz'],1)."\t./".$curr."/files/".$m2n['groupdir_prefix']."/ mappa\n";} + if ($log['verbose'] > 2 ){ echo "* -\t\tHozzáadva a:".po("\t $val3",$cfg['csoportnev_hossz'],1)."\tcsoporthoz.\n"; } + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $cfg['groupdir_prefix']."/".$val3); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."/",$cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappa\n";} + $ret = groupdir_create_groupdir($curr, $curr_tanarId, $cfg['groupdir_prefix']."/".$val3."_beadás"); + if ($ret === true && $log['verbose'] > 2 ){echo "* -\tÚj mappa Létrehozva:".po("\t/".$val3."_beadás/",$cfg['csoportnev_hossz'],1)."\t./".$curr."/files/".$cfg['groupdir_prefix']."/ mappa\n";} } } - $ret = groupdir_finish($curr, $curr_tanarId, $m2n['groupdir_prefix'], null); - if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$m2n['groupdir_prefix']."/", $m2n['csoportnev_hossz'],1)."\t mappán.\n";} + $ret = groupdir_finish($curr, $curr_tanarId, $cfg['groupdir_prefix'], null); + if ($ret[3] === true && $log['verbose'] > 3 ){if($log['curr'] !== ""){echo "**".$log['curr'];$log['curr'] = "";} echo "* -\t\tNXT-rescan :".po("\t./".$curr."/files/".$cfg['groupdir_prefix']."/", $cfg['csoportnev_hossz'],1)."\t mappán.\n";} } 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 + $params['quota'] = $cfg['diak_quota']; // Alapértelmezett kvóta } else { - $params['quota'] = $m2n['default_quota']; // Alapértelmezett kvóta + $params['quota'] = $cfg['default_quota']; // Alapértelmezett kvóta } - $params['lang'] = $m2n['default_lang']; // Nyelv - if($curr_e == ""){ - $params['email'] = $m2n['default_email']; // e-mail beállítása + $params['lang'] = $cfg['default_lang']; // Nyelv + /* + if($curr_email == ""){ + $params['email'] = $cfg['default_email']; // e-mail beállítása } else { - $params['email'] = $curr_e; // ha van a mysql-ben e-mail, akkor azt használja + $params['email'] = $curr_email; // ha van a mysql-ben e-mail, akkor azt használja } + */ + $params['email'] = $curr_email; user_set($curr,$params); //Alapértelmezett paraméterek érvényesítése if ($log['verbose'] > 3 ){ echo "* -\t\tBeállítva:\t"."Qvóta: ".$params['quota']."\tNyelv: ".$params['lang']."\tE-mail: ".$params['email']."\n";} } @@ -1124,7 +1192,13 @@ ldap_close($ld); $curr_n = $val['fullName']; // $curr_tanarId = $val['tanarId']; $curr_diakId = $val['diakId']; - $curr_e = @$val['email']; // + if(!empty($val['email'])) { + $curr_email = $val['email']; + } else if(!empty($val['mail'])){ + $curr_email = $val['mail']; + } else { + $curr_email = $cfg['default_email']; // e-mail beállítása + } } $tankorei[] = $val['tankorNev']; // Másodszor/Egyébként a csoportok (tankörök) gyűjtése } @@ -1138,11 +1212,11 @@ ldap_close($ld); if( nxt_user_lastlogin($key) == "1970-01-01T00:00:00+00:00" ){ //Még soha nem lépett be = 1970.01.01 ?? user_del($key); //Akkor törli catalog_userdel($link, $key); //A listáról is - if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\ttörölve.\n"; } + if ($log['verbose'] > 1 ){ echo "-\n**-\tFelhasználó:".po("\t$val ($key)",$cfg['felhasznalo_hossz'],1)."--\ttörölve.\n"; } } else { user_dis($key); //Különben csak letiltja (fájlok ne vesszenek el) catalog_userdis($link, $key); //Feljegyzi a nyilvántartásba - if ($log['verbose'] > 1 ){ echo "**-\tFelhasználó:".po("\t$val ($key)",$m2n['felhasznalo_hossz'],1)."--\tletiltva.\n"; } + if ($log['verbose'] > 1 ){ echo "-\n**-\tFelhasználó:".po("\t$val ($key)",$cfg['felhasznalo_hossz'],1)."--\tletiltva.\n"; } } $mod_nxt_user++; $mod_nxt_user_all++; @@ -1152,10 +1226,10 @@ ldap_close($ld); // - 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 törli, ha kellene - // - vagy megszűnő, korábbi mayor_napló-s user --> törli (vagy letiltja) + // - vagy más, mayor_naplón kívüli user (rendszergazda vette föl) --> nem törli + // - 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) + // - akkor őt a script hozta létre régen --> megszűnő, törli, vagy letiltja // (hiszen, ha aktív lenne, rajta lenne a $mayor_user listán, és kihúzta volna a $nxt_user-ből) } @@ -1167,13 +1241,13 @@ ldap_close($ld); foreach($m2n_catalog['account'] as $key => $val){ if(@$nxt_user[$val] === null ){ //Erre a nextcloud "occ" parancs hibakezelése miatt van szükség - if ($log['verbose'] > 4 ){ echo "**-\tFelhasználónév:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tkivéve a nyilvántartásból.\n";} + if ($log['verbose'] > 4 ){ echo "-\n**-\tFelhasználónév:".po("\t($val)",$cfg['felhasznalo_hossz'],1)."--\tkivéve a nyilvántartásból.\n";} catalog_userdel($link, $val); } } - foreach($m2n_forbidden as $key => $val){ //Szinkronizálja a $m2n['kihagy'] listát a nyilvántartással. - if(!in_array($val, $m2n['kihagy'])){ - if ($log['verbose'] > 4 ){ echo "**-\tFelhasználó:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tújra kezelve.\n";} + foreach($m2n_forbidden as $key => $val){ //Szinkronizálja a $cfg['kihagy'] listát a nyilvántartással. + if(!in_array($val, $cfg['kihagy'])){ + if ($log['verbose'] > 4 ){ echo "-\n**-\tFelhasználó:".po("\t($val)",$cfg['felhasznalo_hossz'],1)."--\tújra kezelve.\n";} catalog_userena($link,$val); user_ena($val); } @@ -1183,11 +1257,12 @@ ldap_close($ld); //test //script_install($link); - if ($log['verbose'] > 0 ){ echo "\n\nStatisztikák:\n";} - if ($log['verbose'] > 0 ){ echo "Összes művelet: ".($mod_nxt_user + $mod_nxt_group)."db.\n";} - if ($log['verbose'] > 0 ){ echo "Feldolgozva: ".$mod_nxt_user_all."db felhasználó.\n";} - if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_user."db a Nextcloud felhasználói beállításokban.\n";} - if ($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_group."db a Nextcloud csoport beállításokban.\n";} + if($log['verbose'] > 0 ){ echo "\n\nStatisztikák:\n";} + if($log['verbose'] > 0 ){ echo "Összes művelet: ".($mod_nxt_user + $mod_nxt_group)."db.\n";} + if($log['verbose'] > 0 ){ echo "Feldolgozva: ".$mod_nxt_user_all."db felhasználó.\n";} + if($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_user."db a Nextcloud felhasználói beállításokban.\n";} + if($log['verbose'] > 0 ){ echo "Változtatás: ".$mod_nxt_group."db a Nextcloud csoport beállításokban.\n";} + if($dryrun){ echo " (( !! DRY RUN !! ))\n"; } @mysqli_close($link2); @@ -1196,7 +1271,7 @@ ldap_close($ld); if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run." min.)\nkész.\n";} //endline } else { - echo "\n\n******** Legalább PHP7 és mysqli szükséges! ********\n\n"; + echo "\n\n******** Legalább PHP5 és mysqli szükséges! ********\n\n"; } -- cgit v1.2.3 From da47aa338e5a285ae98e809436f699072cd68701 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 22 Feb 2021 00:17:41 +0100 Subject: M2N: Kicsi gyorsítás --- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 1c20bb58..7f0b970b 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -403,9 +403,8 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } } - function group_del($groupName){ // Csoport törlése a Nextcloud-ból + function group_del($groupName, $grp){ // Csoport törlése a Nextcloud-ból global $occ_user,$occ_path,$cfg,$link,$log,$cfg,$nxt_version,$dryrun; - $grp = nxt_group_list(); $groupName = rmnp($groupName); if(isset($grp[$groupName])){ if($nxt_version < 14){ // Mivel erre csak a Nextcloud 14-től van "occ" parancs, ezért néha közvetlenül kell... @@ -919,6 +918,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $cfg['mindenki_tanar'] ))); $tankorok = array_merge($tankorok, array( array("tankorId" => 0, "tankorNev" => $cfg['mindenki_diak'] ))); $nxt_csop = nxt_group_list(); + $nxt_csop2 = nxt_group_list(); //Gyorsítási célzattal, mert lassú $elozo_tcsop = ""; $mod_nxt_group = 0; if($cfg['manage_groups'] === true){ @@ -944,7 +944,7 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' // A megszűnt tanköröket-csoportokat kitörli foreach($nxt_csop as $key => $val){ if(substr($key, 0, strlen($cfg['csoport_prefix'])) === $cfg['csoport_prefix'] ){ //Csak a "prefix"-el kezdődő nevűekre. - group_del($key); //elvégzi a törlést + group_del($key, $nxt_csop2); //elvégzi a törlést $mod_nxt_group++; if ($log['verbose'] > 1 ){ echo "** -\t Megszűnő csop:".po("\t$key",$cfg['csoportnev_hossz'],1)."-\t eltávolítva.\n";} } else { -- cgit v1.2.3 From 5a088b9cecda8c8ae7bc28fc39c7483331be397d Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Mon, 22 Feb 2021 04:00:09 +0100 Subject: M2L: ldap_open() --- "egy\303\251b/nextcloud/mayor-ldap.php" | 157 ++++++++++++++++------- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 7 +- 2 files changed, 117 insertions(+), 47 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index a4e15168..b9a6c74d 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -41,6 +41,16 @@ $cfg['allapot_tartas'] = "2018-06-14"; //A jelölt napnak megfelelő állapot b $cfg['infotxt_szöveg'] = "info.txt"; $cfg['verbose'] = 3 ; + + +$cfg['ldap_server'] = "ldaps://windows.iskola.hu:636"; //Jelszóváltoztatást csak TLS/SSL porton enged a windows! +$cfg['ldap_reqCert'] = "allow"; // Ellenőrizze-e a certet: "true" "allow" "never" +$cfg['ldap_baseDn'] = "DC=ad,DC=iskola,DC=hu"; +$cfg['ldap_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=hu"; +$cfg['ldap_rootBindPw'] = ""; + + + $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; $nxt_version = 0; @@ -133,7 +143,8 @@ function rnescp($str){ //Escape strings } -if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', '>=')) { //MySQLi (Improved) és php7 kell! + +if (function_exists('mysqli_connect') and function_exists('ldap_search') and version_compare(phpversion(), '5.0', '>=')) { //MySQLi (Improved) és php7 kell! function db_connect($db = ""){ global $log,$cfg; @@ -155,6 +166,49 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' } // bezár: mysqli_close($link); + + + function ldap_open($host = ""){ + global $cfg, $log; + + if(empty($host)){ + $host = $cfg['ldap_server']; + } + if ($log['verbose'] > 0 ){ echo "***\tLDAP kapcsolódás. ('".$host."')\n"; } + $ld = ldap_connect($host); + + if($ld !== False){ + + if($cfg['ldap_reqCert'] == "never"){ //Mennyire legyen szigorú a CERT-ekkel + ldap_set_option($ld, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER); + } else if($cfg['ldap_reqCert'] == "allow"){ + ldap_set_option($ld, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_ALLOW); + } else if($cfg['ldap_reqCert'] == "true"){ + ldap_set_option($ld, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_HARD); + } else { + ldap_set_option($ld, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_TRY); + } + ldap_set_option($ld, LDAP_OPT_NETWORK_TIMEOUT, 10); //Szerver felülbírálhatja + ldap_set_option($ld, LDAP_OPT_PROTOCOL_VERSION, 3); + ldap_set_option($ld, LDAP_OPT_REFERRALS, 0); //Így azért gyorsabb + ldap_set_option($ld, LDAP_OPT_MATCHED_DN, $cfg['ldap_baseDn']); //Jobb, ha mindjárt az elején beállítjuk + + if(ldap_bind($ld, $cfg['ldap_rootBindDn'], $cfg['ldap_rootBindPw']) === FALSE){ + $ern = ldap_errno($ld); + echo "\n**** Sikertelen kapcsolódás! **** ('".$host."') info:".ldap_err2str($ern)." [$ern] \n\n"; + return null; + } else { + if ($log['verbose'] > 0 ){ echo "*\tSikeres kapcsolódás. ('".$host."') info:".ldap_error($ld)."\n\n"; } + return $ld; + } + } else { + echo "\n**** Sikertelen kapcsolódás! **** ('".$host."') info:".ldap_error($ld)."\n\n"; + return null; + } + } + // bezár: ldap_close($ldap); + + function script_install($l){ global $cfg,$log; if(mysqli_query($l, "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register LIMIT 10;" ) == FALSE ){ //nincs nyilvántartás @@ -833,35 +887,59 @@ if (function_exists('mysqli_connect') and version_compare(phpversion(), '5.0', ' return $ret; } -//----------------------------------------------------------------------------------------------------------------------------------------------------- -var_dump( version_compare(phpversion(), '7.0', '<=')); -echo "\n\n".phpversion()."\n\n"; +//--------------------------------------------------------------------------------------------------------------------------------------------// +// RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN // +//--------------------------------------------------------------------------------------------------------------------------------------------// + -die(); -$server = "10.100.3.3"; //this is the LDAP server you're connecting with -$port = "636"; -$ld = ldap_connect("ldaps://$server:$port"); //always connect securely via LDAPS when possible + if(true){ echo "\n\n###################################################\n" ;} + if(true){ echo "######## Mayor-Nextcloud Script ########\n"; } + if(true){ echo "######## Start: ".date("Y-m-d H:i:s")." ########\n"; } + $t_start = microtime(true); + + if(!isset($cfg['allapot_tartas']) or empty($cfg['allapot_tartas']) or $cfg['allapot_tartas'] == "1970-01-01"){ //A jelölt nap állapotának betöltése + $cfg['allapot_tartas'] = date("Y-m-d"); + } + if(true) { echo "######## A (".$cfg['allapot_tartas'].")-i állapot szerint. ########\n"; } + if(true){ echo "###################################################\n" ;} + + if(true) { echo "\n*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } + if($printconfig === true or $debug === true){ + echo "\n Betöltött Konfig:\n"; + $m2l = $cfg; + $m2l['infotxt_szöveg'] = "<-- TEXT -->"; //Túl hosszú lenne kiprintelni + var_export($m2l); + echo "\n"; + } + $log['verbose'] = $cfg['verbose']; + if($debug === true) {$log['verbose'] = 1000; $printpasswds = true;} + if( $cfg['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } -ldap_set_option($ld, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER); -// LDAP_OPT_X_TLS_NEVER, LDAP_OPT_X_TLS_HARD, LDAP_OPT_X_TLS_DEMAND, LDAP_OPT_X_TLS_ALLOW, LDAP_OPT_X_TLS_TRY -ldap_set_option($ld, LDAP_OPT_NETWORK_TIMEOUT, 10); -ldap_set_option($ld, LDAP_OPT_PROTOCOL_VERSION, 3); -ldap_set_option($ld, LDAP_OPT_REFERRALS, 0); + + - -$basedn = "DC=ad,DC=bmrg,DC=lan"; -ldap_set_option($ld, LDAP_OPT_MATCHED_DN, $basedn); -$ldapbind = ldap_bind($ld, $cfg['rootBindDn'], $cfg['rootBindPass']); //this is the point we are authenticating -print_r($ldapbind); -echo "\n---\n"; + + +//----------------------------------------------------------------------------------------------------------------------------------------------------- + + + + +$ld = ldap_open(); + +function ldap_find(){ + + + +} $dn = "dc=ad,dc=bmrg,dc=lan"; //very important: in which part of your database are you looking $filter = "(objectclass=*)"; //don't filter anyone out (every user has a uid) @@ -881,37 +959,26 @@ ldap_close($ld); +die(); + + + + + + + + + + + + + + -//--------------------------------------------------------------------------------------------------------------------------------------------// -// RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN -- RUN // -//--------------------------------------------------------------------------------------------------------------------------------------------// - - if(true){ echo "\n\n###################################################\n" ;} - if(true){ echo "######## Mayor-Nextcloud Script ########\n"; } - if(true){ echo "######## Start: ".date("Y-m-d H:i:s")." ########\n"; } - $t_start = microtime(true); - - if(!isset($cfg['allapot_tartas']) or empty($cfg['allapot_tartas']) or $cfg['allapot_tartas'] == "1970-01-01"){ //A jelölt nap állapotának betöltése - $cfg['allapot_tartas'] = date("Y-m-d"); - } - if(true) { echo "######## A (".$cfg['allapot_tartas'].")-i állapot szerint. ########\n"; } - if(true){ echo "###################################################\n" ;} - if(true) { echo "\n*** M2N Config betöltése: ($cfgfile fájlból.) ***\n\n"; } - if($printconfig === true or $debug === true){ - echo "\n Betöltött Konfig:\n"; - $m2l = $cfg; - $m2l['infotxt_szöveg'] = "<-- TEXT -->"; //Túl hosszú lenne kiprintelni - var_export($m2l); - echo "\n"; - } - $log['verbose'] = $cfg['verbose']; - if($debug === true) {$log['verbose'] = 1000; $printpasswds = true;} - if( $cfg['always_set_diak_quota'] === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; } - //------------------------------------------------------------------------------------------------------------------------------- $ret = nxt_get_version(); diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index dc5d8c54..bec82d67 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -41,8 +41,11 @@ $cfg['kihagy'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') $cfg['verbose'] = 3 ; -$cfg['ad_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=hu"; -$cfg['ad_rootBindPass'] = ""; +$cfg['ldap_server'] = "ldaps://windows.iskola.hu:636"; //Jelszóváltoztatást csak TLS/SSL porton enged a windows! +$cfg['ldap_reqCert'] = "allow"; // Ellenőrizze-e a certet: "true" "allow" "never" +$cfg['ldap_baseDn'] = "DC=ad,DC=iskola,DC=hu"; +$cfg['ldap_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=hu"; +$cfg['ldap_rootBindPw'] = ""; $occ_path = "/var/www/nextcloud/"; -- cgit v1.2.3 From b3e0418b9f4efbb0811a7a75d84d6ced5199c848 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Tue, 23 Feb 2021 04:53:03 +0100 Subject: M2LDAP: ldap-user-add --- "egy\303\251b/nextcloud/mayor-ldap.php" | 256 +++++++++++++++++++++-- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 18 +- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 5 +- 3 files changed, 257 insertions(+), 22 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index b9a6c74d..ca0831f9 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -48,6 +48,23 @@ $cfg['ldap_reqCert'] = "allow"; // Ellenőrizze-e a $cfg['ldap_baseDn'] = "DC=ad,DC=iskola,DC=hu"; $cfg['ldap_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=hu"; $cfg['ldap_rootBindPw'] = ""; +$cfg['ldap_pageSize'] = 100; +$cfg['ld_username'] = "sAMAccountName"; +$cfg['ld_oId'] = "serialNumber"; +$cfg['ld_employeeId'] = "employeeNumber"; +$cfg['ld_osztalyJel'] = "department"; +$cfg['ld_viseltNevElotag'] = "initials"; +$cfg['ld_viseltCsaladinev'] = "sn"; +$cfg['ld_viseltUtonev'] = "givenName"; +$cfg['ld_lakhelyOrszag'] = "st"; +$cfg['ld_lakhelyHelyseg'] = "l"; +$cfg['ld_lakhelyIrsz'] = "postalCode"; +$cfg['ld_lakHely'] = "streetAddress"; +$cfg['ld_telefon'] = "homePhone"; +$cfg['ld_mobil'] ="mobile"; +$cfg['ld_statusz'] = "company"; +$cfg['ld_beoszt'] = "title"; +$cfg['ld_nxtQuota'] = "description"; @@ -69,8 +86,9 @@ $pwchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_?"; for($i = 1; $i<$argc; $i++){ //Ha van külön config megadva, akkor először azt töltjük be. if($argv[$i] == "--config-file" ){$cfgfile = strval($argv[$i+1]); $i++;} } -if(file_exists($cfgfile) === TRUE){ include($cfgfile); } //Config betöltés -if(!empty($m2n)){ $cfg_o = $cfg; $cfg = $m2n; $cfg = array_merge($cfg, $cfg_o); } //Ha valahol még a régi config lenne +if(file_exists($cfgfile) === TRUE){ $cfg_o = $cfg; include($cfgfile); $cfg_n = $cfg; $cfg = array_merge($cfg, $cfg_o, $cfg_n); } //Config betöltés +if(!empty($m2n)){ $cfg_o = $cfg; $cfg = array_merge($cfg, $m2n, $cfg_o); } //Ha valahol még a régi config lenne + for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--help" ){$printhelp = true;} @@ -208,6 +226,108 @@ if (function_exists('mysqli_connect') and function_exists('ldap_search') and ver } // bezár: ldap_close($ldap); + function ldap_find($ld, $base, $filt, $attr=array()){ + global $cfg, $log; + $ret = array(); + $cookie = ''; + $errn = $mdn = $errmsg = $refs = $ctrl = null; + ldap_set_option($ld, LDAP_OPT_PROTOCOL_VERSION, 3); + + if(version_compare(phpversion(), '7.4', '<')){ //PHP 5-7 + do { + if ($log['verbose'] > 7 ){ echo "LDAP ->\t ldap_search('".$ld."', '".$base."', '".$filt."', \$attr, 0, 0, 0, LDAP_DEREF_NEVER);\n Attr: "; print_r($attr); } + ldap_control_paged_result($ld, $cfg['ldap_pageSize'], true, $cookie); + $res = ldap_search($ld, $base, $filt, $attr, 0, 0, 0, LDAP_DEREF_NEVER); + ldap_parse_result($ld, $res, $errn , $mdn , $errmsg , $refs, $ctrl); + if($errn == 0){ + $ret = array_merge($ret, ldap_get_entries($ld, $res)); + } else { + echo "\nLDAP ->\t ******** Ldap ('".$ld."', '".$base."', '".$filt."') lekérdezési hiba. (Infó: [".$errn."]".$errmsg."!) ********"; + } + ldap_control_paged_result_response($ld, $res, $cookie); + } while($cookie !== null && $cookie != ''); + + } else { //PHP 8+ + do { + if ($log['verbose'] > 7 ){ echo "LDAP ->\t ldap_search('".$ld."', '".$base."', '".$filt."', \$attr, 0, 0, 0, LDAP_DEREF_NEVER, \$ctrl);\n Attr: "; print_r($attr); } + $ctrl = array(array('oid' => LDAP_CONTROL_PAGEDRESULTS, 'iscritical' => true, 'value' => array('size' => $cfg['ldap_pageSize'], 'cookie' => $cookie))); + $res = ldap_search($ld, $base, $filt, $attr, 0, 0, 0, LDAP_DEREF_NEVER, $ctrl); + ldap_parse_result($ld, $res, $errn , $mdn , $errmsg , $refs, $ctrl); + if($errn == 0){ + $ret = array_merge($ret, ldap_get_entries($ld, $res)); + } else { + echo "\nLDAP ->\t ******** Ldap ('".$ld."', '".$base."', '".$filt."') lekérdezési hiba. (Infó: [".$errn."]".$errmsg."!) ********"; + } + if (isset($ctrl[LDAP_CONTROL_PAGEDRESULTS]['value']['cookie'])) { //újraküldéshez + $cookie = $ctrl[LDAP_CONTROL_PAGEDRESULTS]['value']['cookie']; + } else { + $cookie = ''; + } + } while (!empty($cookie)); + } + if ($log['verbose'] > 10 ){ print_r($ret); } + if($res !== False){ + ldap_free_result($res); + } + return $ret; + } + + + function ld_user_add($l, $user, $attr=null){ + global $cfg,$log; + + $def['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell + $def['objectclass'][1] = "person"; + $def['objectclass'][2] = "organizationalPerson"; + $def['objectclass'][3] = "user"; + $def['instancetype'][0] = "4"; + $def['useraccountcontrol'][0] = "514"; + $def['accountexpires'][0] = "9223372036854775807"; // vagy "0" + $def['distinguishedname'][0] = "CN=".$user.",CN=Users,".$cfg['ldap_baseDn']; + $def['displayname'][0] = $user; + $def[strtolower($cfg['ld_username'])][0] = $user; + $def[strtolower($cfg['ld_oId'])][0] = "1111"; + + if(!empty($attr)){ + $def['displayname'][0] = $attr['fullName']; + $def['mail'][0] = $attr['email']; + $def[strtolower($cfg['ld_oId'])][0] = $attr['oId']; + if(!empty($attr['employeeId'] )){ $def[strtolower($cfg['ld_employeeId'])][0] = $attr['employeeId']; } + if(!empty($attr['osztalyJel'] )){ $def[strtolower($cfg['ld_osztalyJel'])][0] = $attr['osztalyJel']; } + if(!empty($attr['viseltNevElotag'] )){ $def[strtolower($cfg['ld_viseltNevElotag'])][0] = $attr['viseltNevElotag']; } + if(!empty($attr['viseltCsaladinev'])){ $def[strtolower($cfg['ld_viseltCsaladinev'])][0]= $attr['viseltCsaladinev']; } + if(!empty($attr['viseltUtonev'] )){ $def[strtolower($cfg['ld_viseltUtonev'])][0] = $attr['viseltUtonev']; } + if(!empty($attr['lakhelyOrszag'] )){ $def[strtolower($cfg['ld_lakhelyOrszag'])][0] = $attr['lakhelyOrszag']; } + if(!empty($attr['lakhelyHelyseg'] )){ $def[strtolower($cfg['ld_lakhelyHelyseg'])][0] = $attr['lakhelyHelyseg']; } + if(!empty($attr['lakhelyIrsz'] )){ $def[strtolower($cfg['ld_lakhelyIrsz'])][0] = $attr['lakhelyIrsz']; } + if(!empty($attr['lakHely'] )){ $def[strtolower($cfg['ld_lakHely'])][0] = $attr['lakHely']; } + if(!empty($attr['telefon'] )){ $def[strtolower($cfg['ld_telefon'])][0] = $attr['telefon']; } + if(!empty($attr['mobil'] )){ $def[strtolower($cfg['ld_mobil'])][0] = $attr['mobil']; } + if(!empty($attr['statusz'] )){ $def[strtolower($cfg['ld_statusz'])][0] = $attr['statusz']; } + if(!empty($attr['beoszt'] )){ $def[strtolower($cfg['ld_beoszt'])][0] = $attr['beoszt']; } + if(!empty($attr['quota'] )){ $def[strtolower($cfg['ld_nxtQuota'])][0] = $attr['quota']; } + $def[strtolower('telephoneNumber')][0] = $attr['oId']; + $def[strtolower('physicalDeliveryOfficeName')][0] = "MaYor-Script-Managed"; + $def[strtolower('info')][0] = "Jogviszony kezdete: ".($attr['kezdoTanev'])."\r\nJogviszony terv. vége: ".($attr['vegzoTanev']+1)." Június\r\n\r\n(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; + //$def[strtolower($cfg['ld_'])][0] = $attr['']; + unset($def['']); + } + + $dn = $def['distinguishedname'][0]; //Így egyszerű + + if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$def)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($def); } + if (ldap_add($l, $dn, $def)){ + // passwd + // + enable + //csoportokba léptetés + } else { + $errn = ldap_errno($l); + echo "\nLDAP ->\t ******** LDAP Felhasználó létrehozási hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********"; + } + } + + + function script_install($l){ global $cfg,$log; @@ -930,45 +1050,62 @@ if (function_exists('mysqli_connect') and function_exists('ldap_search') and ver //----------------------------------------------------------------------------------------------------------------------------------------------------- +$ld = ldap_open(); -$ld = ldap_open(); -function ldap_find(){ - -} -$dn = "dc=ad,dc=bmrg,dc=lan"; //very important: in which part of your database are you looking -$filter = "(objectclass=*)"; //don't filter anyone out (every user has a uid) -$sr = ldap_search($ld, $dn, $filter) or die ("bummer"); //define your search scope -$results = ldap_get_entries($ld, $sr); //here we are pulling the actual entries from the search we just defined -print_r($results); //will give you all results is array form. -echo "\n--\n"; -//did the connecting and binding -$dn = "cn=bikeowners,cn=groups,dc=server,dc=example,dc=com"; //note the extra "cn=groups" for looking in a group that is not "users" -$filter = "email=*"; //email address must be set but can be anything -$sr = ldap_search($ld, $dn, $filter) or die ("bummer"); //define your search scope -ldap_close($ld); +$dn = "dc=ad,dc=bmrg,dc=lan"; +$filter = "(objectclass=*)"; +$attr = array("mail", "sn"); -die(); +$aa = ldap_find($ld,$dn,$filter); +//print_r($aa); +$attr=array(); +$attr['fullName'] = "fn Teszt Elek"; +$attr['email'] = "elek@suli.hu"; +$attr['oId'] = "75999888777"; +$attr['employeeId'] = "123AA"; +$attr['osztalyJel'] = "12.c"; +$attr['viseltNevElotag'] = "Msgr."; +$attr['viseltCsaladinev'] = "Teszt"; +$attr['viseltUtonev'] = "Elek"; +$attr['lakhelyOrszag'] = "Magyarország"; +$attr['lakhelyHelyseg'] = "Pilisborosjenő"; +$attr['lakhelyIrsz'] = "1234"; +$attr['lakHely'] = "Boros utca 19."; +$attr['telefon'] = "1234567"; +$attr['mobil'] = "06700000000"; +$attr['statusz'] = "jogviszonyban van"; +$attr['beoszt'] = "Diák"; +$attr['quota'] = "4GB"; +$attr['vegzoTanev'] = 3001; + + + +ld_user_add($ld, 'abcd', $attr); +ldap_close($ld); +die(); + + @@ -1338,10 +1475,91 @@ die(); if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run." min.)\nkész.\n";} //endline } else { - echo "\n\n******** Legalább PHP5 és mysqli szükséges! ********\n\n"; + echo "\n\n******** Legalább PHP5, php-mysql(i) és php-ldap szükséges! ********\n\n"; } +/* +sn:: Vezetéknév +serialNumber:: sorozatszám2 +serialNumber:: sorozatszám1 +c: HU +l:: Telepulés +st:: Megyé +street:: Utcá +title:: Beosztás +description:: Leirás +postalAddress:: postaiCímx2 +postalAddress:: postaiCímX1 +postalCode:: Iranyitoszám +postOfficeBox:: Postafiók +physicalDeliveryOfficeName:: Irodá +telephoneNumber:: tel0é +facsimileTelephoneNumber:: tel_faxé0 +givenName:: Utónév +initials:: MónoGR +otherTelephone: 000111222333 +otherTelephone: telefon1 +info:: Megjegyzés 2.0 +memberOf: CN=suli_mail,OU=suli-mail,DC=ad,DC=suli,DC=lan +memberOf: CN=suli_edu,OU=suli-edu,DC=ad,DC=suli,DC=lan +memberOf: CN=suli_cloud,OU=suli-cloud,DC=ad,DC=suli,DC=lan +otherPager: 1212 +otherPager: 2323 +otherPager: tel_szemelyhivo1 +co:: Magyarország +department:: Ország +company:: Cég +streetAddress:: Utca\n Neve \n Hosszú +otherHomePhone: 0101 +otherHomePhone: 11223344 +otherHomePhone: tel_otthon1 +wWWHomePage:: webé0 +employeeNumber:: emplNumé +employeeType:: emltypeé +personalTitle:: személyiCím +homePostalAddress:: otthonicím +name:: Teljes Név +countryCode: 348 +employeeID:: employeIDé +homeDirectory: C:\totalcmd +comment:: kóómment +sAMAccountName: ggg +division:: diviízió +otherFacsimileTelephoneNumber: 2323 +otherFacsimileTelephoneNumber: tel_fax1 +otherMobile: tel_mobil1 +primaryTelexNumber: Telex +otherMailbox:: másikl1@email +otherMailbox:: másik2@email +ipPhone:: tel_ipí0 +otherIpPhone: 00000 +otherIpPhone: tel_ip1 +url: weblap2 +url: http://weblap1 +uid: uid2 +uid: uid1 +mail:: eméail@email.com +roomNumber:: szobaszám2 +roomNumber:: szobaszám1 +homePhone:: tel_otthoní0 +mobile:: tel_mobiló0 +pager:: tel_szemelyhivó0 +jpegPhoto:: +departmentNumber:: departmentNumber2é +departmentNumber:: departmentNumber1á +middleName:: középsőNév +thumbnailPhoto:: +preferredLanguage: nyelv +uidNumber: 1601 +gidNumber: 1601 +unixHomeDirectory: /home/aa/bb +loginShell: /bin/bash +*/ + + + + ?> diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index bec82d67..4e1f82de 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -46,7 +46,23 @@ $cfg['ldap_reqCert'] = "allow"; // Ellenőrizze-e a $cfg['ldap_baseDn'] = "DC=ad,DC=iskola,DC=hu"; $cfg['ldap_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=hu"; $cfg['ldap_rootBindPw'] = ""; - +$cfg['ldap_pageSize'] = 100; +$cfg['ld_username'] = "sAMAccountName"; +$cfg['ld_oId'] = "serialNumber"; +$cfg['ld_employeeId'] = "employeeNumber"; +$cfg['ld_osztalyJel'] = "department"; +$cfg['ld_viseltNevElotag'] = "initials"; +$cfg['ld_viseltCsaladinev'] = "sn"; +$cfg['ld_viseltUtonev'] = "givenName"; +$cfg['ld_lakhelyOrszag'] = "co"; +$cfg['ld_lakhelyHelyseg'] = "l"; +$cfg['ld_lakhelyIrsz'] = "postalCode"; +$cfg['ld_lakHely'] = "streetAddress"; +$cfg['ld_telefon'] = "homePhone"; +$cfg['ld_mobil'] = "mobile"; +$cfg['ld_statusz'] = "company"; +$cfg['ld_beoszt'] = "title"; +$cfg['ld_nxtQuota'] = "description"; $occ_path = "/var/www/nextcloud/"; $occ_user = "www-data"; diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 7f0b970b..dbf7ee1d 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -59,8 +59,9 @@ $pwchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_?"; for($i = 1; $i<$argc; $i++){ //Ha van külön config megadva, akkor először azt töltjük be. if($argv[$i] == "--config-file" ){$cfgfile = strval($argv[$i+1]); $i++;} } -if(file_exists($cfgfile) === TRUE){ include($cfgfile); } //Config betöltés -if(!empty($m2n)){ $cfg_o = $cfg; $cfg = $m2n; $cfg = array_merge($cfg, $cfg_o); } //Ha valahol még a régi config lenne +if(file_exists($cfgfile) === TRUE){ $cfg_o = $cfg; include($cfgfile); $cfg_n = $cfg; $cfg = array_merge($cfg, $cfg_o, $cfg_n); } //Config betöltés +if(!empty($m2n)){ $cfg_o = $cfg; $cfg = array_merge($cfg, $m2n, $cfg_o); } //Ha valahol még a régi config lenne + for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók if($argv[$i] == "--help" ){$printhelp = true;} -- cgit v1.2.3 From a96cdce4d45582a88308632be35b54e57a3d35fb Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 24 Feb 2021 12:19:19 +0100 Subject: M2LDAP: ld_user_add() --- "egy\303\251b/nextcloud/mayor-ldap.php" | 154 +++++++++++++++++++++----------- 1 file changed, 103 insertions(+), 51 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index ca0831f9..83bd7783 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -50,7 +50,7 @@ $cfg['ldap_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=h $cfg['ldap_rootBindPw'] = ""; $cfg['ldap_pageSize'] = 100; $cfg['ld_username'] = "sAMAccountName"; -$cfg['ld_oId'] = "serialNumber"; +$cfg['ld_oId'] = "telephoneNumber"; //"serialNumber"; $cfg['ld_employeeId'] = "employeeNumber"; $cfg['ld_osztalyJel'] = "department"; $cfg['ld_viseltNevElotag'] = "initials"; @@ -65,6 +65,8 @@ $cfg['ld_mobil'] ="mobile"; $cfg['ld_statusz'] = "company"; $cfg['ld_beoszt'] = "title"; $cfg['ld_nxtQuota'] = "description"; +$cfg['ld_iroda'] = "physicalDeliveryOfficeName"; +$cfg['ld_info'] = "info"; @@ -162,7 +164,7 @@ function rnescp($str){ //Escape strings -if (function_exists('mysqli_connect') and function_exists('ldap_search') and version_compare(phpversion(), '5.0', '>=')) { //MySQLi (Improved) és php7 kell! +if (function_exists('mysqli_connect') and function_exists('iconv') and function_exists('ldap_search') and version_compare(phpversion(), '5.0', '>=')) { //MySQLi (Improved) és php7 kell! function db_connect($db = ""){ global $log,$cfg; @@ -226,6 +228,7 @@ if (function_exists('mysqli_connect') and function_exists('ldap_search') and ver } // bezár: ldap_close($ldap); + function ldap_find($ld, $base, $filt, $attr=array()){ global $cfg, $log; $ret = array(); @@ -273,60 +276,109 @@ if (function_exists('mysqli_connect') and function_exists('ldap_search') and ver } - function ld_user_add($l, $user, $attr=null){ - global $cfg,$log; - - $def['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell - $def['objectclass'][1] = "person"; - $def['objectclass'][2] = "organizationalPerson"; - $def['objectclass'][3] = "user"; - $def['instancetype'][0] = "4"; - $def['useraccountcontrol'][0] = "514"; - $def['accountexpires'][0] = "9223372036854775807"; // vagy "0" - $def['distinguishedname'][0] = "CN=".$user.",CN=Users,".$cfg['ldap_baseDn']; - $def['displayname'][0] = $user; - $def[strtolower($cfg['ld_username'])][0] = $user; - $def[strtolower($cfg['ld_oId'])][0] = "1111"; - - if(!empty($attr)){ - $def['displayname'][0] = $attr['fullName']; - $def['mail'][0] = $attr['email']; - $def[strtolower($cfg['ld_oId'])][0] = $attr['oId']; - if(!empty($attr['employeeId'] )){ $def[strtolower($cfg['ld_employeeId'])][0] = $attr['employeeId']; } - if(!empty($attr['osztalyJel'] )){ $def[strtolower($cfg['ld_osztalyJel'])][0] = $attr['osztalyJel']; } - if(!empty($attr['viseltNevElotag'] )){ $def[strtolower($cfg['ld_viseltNevElotag'])][0] = $attr['viseltNevElotag']; } - if(!empty($attr['viseltCsaladinev'])){ $def[strtolower($cfg['ld_viseltCsaladinev'])][0]= $attr['viseltCsaladinev']; } - if(!empty($attr['viseltUtonev'] )){ $def[strtolower($cfg['ld_viseltUtonev'])][0] = $attr['viseltUtonev']; } - if(!empty($attr['lakhelyOrszag'] )){ $def[strtolower($cfg['ld_lakhelyOrszag'])][0] = $attr['lakhelyOrszag']; } - if(!empty($attr['lakhelyHelyseg'] )){ $def[strtolower($cfg['ld_lakhelyHelyseg'])][0] = $attr['lakhelyHelyseg']; } - if(!empty($attr['lakhelyIrsz'] )){ $def[strtolower($cfg['ld_lakhelyIrsz'])][0] = $attr['lakhelyIrsz']; } - if(!empty($attr['lakHely'] )){ $def[strtolower($cfg['ld_lakHely'])][0] = $attr['lakHely']; } - if(!empty($attr['telefon'] )){ $def[strtolower($cfg['ld_telefon'])][0] = $attr['telefon']; } - if(!empty($attr['mobil'] )){ $def[strtolower($cfg['ld_mobil'])][0] = $attr['mobil']; } - if(!empty($attr['statusz'] )){ $def[strtolower($cfg['ld_statusz'])][0] = $attr['statusz']; } - if(!empty($attr['beoszt'] )){ $def[strtolower($cfg['ld_beoszt'])][0] = $attr['beoszt']; } - if(!empty($attr['quota'] )){ $def[strtolower($cfg['ld_nxtQuota'])][0] = $attr['quota']; } - $def[strtolower('telephoneNumber')][0] = $attr['oId']; - $def[strtolower('physicalDeliveryOfficeName')][0] = "MaYor-Script-Managed"; - $def[strtolower('info')][0] = "Jogviszony kezdete: ".($attr['kezdoTanev'])."\r\nJogviszony terv. vége: ".($attr['vegzoTanev']+1)." Június\r\n\r\n(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; - //$def[strtolower($cfg['ld_'])][0] = $attr['']; - unset($def['']); + function attr_add_defaults($inp = array()){ //Attributes tömb feltöltése alapértékekkel + global $cfg, $log; + $ovr = array(); + + if(!empty($inp['email'])) { + $ovr['email'] = $inp['email']; + } else if(!empty($inp['mail'])){ + $ovr['email'] = $inp['mail']; + } else { + $ovr['email'] = $cfg['default_email']; } + $def = array('mail','oId', 'employeeId', 'osztalyJel', 'viseltNevElotag', 'viseltCsaladinev','viseltUtonev', + 'szuletesiHely', 'szuletesiIdo', 'lakhelyOrszag', 'lakhelyHelyseg', 'lakhelyIrsz', 'lakHely', + 'telefon', 'mobil', 'statusz', 'beoszt', 'quota', 'kezdoTanev', 'vegzoTanev', 'jel', 'diakId', + 'tanarId', 'beDt', 'kiDt', 'beEv', 'userAccount', 'fullName', + ); + $defo = array('oId' => "11111111111", 'quota' => $cfg['default_quota'], 'jel' => 'x', 'vegzoTanev' => -1, 'beDt' => -1, + 'kezdoTanev' => -1, 'diakId' => 0, 'tanarId' => 0, 'kiDt' => -1, 'beEv' => -1, + ); + return array_merge($def, $defo, $inp, $ovr); + } - $dn = $def['distinguishedname'][0]; //Így egyszerű - if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$def)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($def); } - if (ldap_add($l, $dn, $def)){ - // passwd - // + enable - //csoportokba léptetés + function ld_user_add($l, $user, $fullname, $attr=array()){ + global $cfg,$log; + $attb = $ret = array(); + + $attb['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell + $attb['objectclass'][1] = "person"; + $attb['objectclass'][2] = "organizationalPerson"; + $attb['objectclass'][3] = "user"; + $attb['instancetype'][0] = "4"; + $attb['useraccountcontrol'][0] = "514"; + $attb['accountexpires'][0] = "9223372036854775807"; // vagy "0" + $attb['distinguishedname'][0] = "CN=".ldap_escape($user, "", LDAP_ESCAPE_DN).",CN=Users,".$cfg['ldap_baseDn']; //Ezt még lehetne cizellálni + $attb[strtolower($cfg['ld_username'])][0] = $user; + + $attr = attr_add_defaults($attr); + if(!empty($fullname) ){ $attb['displayname'][0] = $fullname;} + else if(!empty($attr['fullName']) ){ $attb['displayname'][0] = $attr['fullName'];} + else { $attb['displayname'][0] = $user;} + $attb['mail'][0] = $attr['email']; + $attb[strtolower($cfg['ld_oId'])][0] = $attr['oId']; + $attb[strtolower($cfg['ld_employeeId'])][0] = $attr['employeeId']; + $attb[strtolower($cfg['ld_osztalyJel'])][0] = $attr['osztalyJel']; + $attb[strtolower($cfg['ld_viseltNevElotag'])][0] = $attr['viseltNevElotag']; + $attb[strtolower($cfg['ld_viseltCsaladinev'])][0]= $attr['viseltCsaladinev']; + $attb[strtolower($cfg['ld_viseltUtonev'])][0] = $attr['viseltUtonev']; + $attb[strtolower($cfg['ld_lakhelyOrszag'])][0] = $attr['lakhelyOrszag']; + $attb[strtolower($cfg['ld_lakhelyHelyseg'])][0] = $attr['lakhelyHelyseg']; + $attb[strtolower($cfg['ld_lakhelyIrsz'])][0] = $attr['lakhelyIrsz']; + $attb[strtolower($cfg['ld_lakHely'])][0] = $attr['lakHely']; + $attb[strtolower($cfg['ld_telefon'])][0] = $attr['telefon']; + $attb[strtolower($cfg['ld_mobil'])][0] = $attr['mobil']; + $attb[strtolower($cfg['ld_statusz'])][0] = $attr['statusz']; + $attb[strtolower($cfg['ld_beoszt'])][0] = $attr['beoszt']; + $attb[strtolower($cfg['ld_nxtQuota'])][0] = $attr['quota']; + $attb[strtolower($cfg['ld_iroda'])][0] = "MaYor-Script-Managed"; + $attb[strtolower($cfg['ld_info'])][0] = "Jogviszony kezdete: ".($attr['kezdoTanev'])."\r\nJogviszony terv. vége: ".($attr['vegzoTanev']+1)." Június\r\n\r\n(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; + //$attb[strtolower($cfg['ld_'])][0] = $attr['']; + unset($attb['']); //Üresek kipucolása + + $dn = $attb['distinguishedname'][0]; //Így egyszerű + + if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$attb)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attb); } + if($ret[0] = ldap_add($l, $dn, $attb)){ + unset($attb); //Régiek törlése + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($errn); + $ret[1] = gen_password(16); //Jelszó + $attb[strtolower('unicodePwd')][0] = iconv( "UTF-8", "UTF-16LE", "\"".$ret[1]."\"" ); + if($log['verbose'] > 7){ echo "LDAP ->\tldap_mod_replace('".$l."', '".$dn."', \$attb)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attb); } + + if(!ldap_mod_replace ($l, $dn, $attb )){ //Jelszó beállítása + $ret[2] = $errn = ldap_errno($l); + echo "\nLDAP ->\t ******** LDAP Felhasználó jelszócsere hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********\n"; + $ret[3] = ldap_err2str($errn); + return $ret; + } + unset($attb); //User Engedélyezése + $attb[strtolower('userAccountControl')][0] = 512; + if(!ldap_mod_replace ($l, $dn, $attb )){ + $ret[2] = $errn = ldap_errno($l); + echo "\nLDAP ->\t ******** LDAP Felhasználó jelszócsere hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********\n"; + $ret[3] = ldap_err2str($errn); + return $ret; + } } else { - $errn = ldap_errno($l); - echo "\nLDAP ->\t ******** LDAP Felhasználó létrehozási hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********"; + $ret[2] = $errn = ldap_errno($l); + echo "\nLDAP ->\t ******** LDAP Felhasználó létrehozási hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********\n"; + $ret[3] = ldap_err2str($errn); } + return $ret; } + + +function ld_group_user_add(){ +$group_name = "CN=MyGroup,OU=Groups,DC=example,DC=com"; +$group_info['member'] = $dn; // User's DN is added to group's 'member' array +ldap_mod_add($connect,$group_name,$group_info); +} function script_install($l){ @@ -1095,10 +1147,10 @@ $attr['vegzoTanev'] = 3001; -ld_user_add($ld, 'abcd', $attr); - +ld_user_add($ld, 'abcd', '', $attr); + @@ -1475,7 +1527,7 @@ die(); if ($log['verbose'] > 0 ){ echo "\n(Runtime: ".$t_run." min.)\nkész.\n";} //endline } else { - echo "\n\n******** Legalább PHP5, php-mysql(i) és php-ldap szükséges! ********\n\n"; + echo "\n\n******** Legalább PHP5, php-mysql, php-iconv, php-ldap szükséges! ********\n\n"; } -- cgit v1.2.3 From 58be7bd353c0190e57cfebe2b281a9eb2a778685 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 24 Feb 2021 17:42:28 +0100 Subject: M2LDAP: ld_group_user_del() --- "egy\303\251b/nextcloud/mayor-ldap.php" | 243 +++++++++++++++++++++++++------- 1 file changed, 189 insertions(+), 54 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index 83bd7783..d31f50f0 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -46,6 +46,7 @@ $cfg['verbose'] = 3 ; $cfg['ldap_server'] = "ldaps://windows.iskola.hu:636"; //Jelszóváltoztatást csak TLS/SSL porton enged a windows! $cfg['ldap_reqCert'] = "allow"; // Ellenőrizze-e a certet: "true" "allow" "never" $cfg['ldap_baseDn'] = "DC=ad,DC=iskola,DC=hu"; +//$cfg['ldap_groupOuName'] = ""; $cfg['ldap_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=hu"; $cfg['ldap_rootBindPw'] = ""; $cfg['ldap_pageSize'] = 100; @@ -84,12 +85,24 @@ $cfgfile = realpath(pathinfo($argv[0])['dirname'])."/"."mayor-nextcloud.cfg.php" $search = array( 'á', 'ä', 'é', 'í', 'ó', 'ö', 'ő', 'ú', 'ü', 'ű', 'Á', 'Ä', 'É', 'Í', 'Ó', 'Ö', 'Ő', 'Ú', 'Ü', 'Ű'); // egyelőre csak a magyar betűket ismeri $replace = array( 'aa', 'ae', 'ee', 'ii', 'oo', 'oe', 'ooe', 'uu', 'ue', 'uue', 'Aa', 'Aae', 'Ee', 'Ii', 'Oo', 'Oe', 'Ooe', 'Uu', 'Ue', 'Uue'); $pwchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_?"; +$ldap_group_attrs = array('objectCalss', 'samaccountname', 'cn', 'member', 'name', 'description', 'info', 'mail', 'gidNumber', 'samaccounttype', 'instancetype', ); +$ldap_user_attrs = array('sn', 'serialNumber', 'c', 'l', 'st', 'street', 'title', 'description', 'postalAddress', 'postalCode', 'postOfficeBox', 'physicalDeliveryOfficeName', + 'telephoneNumber', 'facsimileTelephoneNumber', 'givenName', 'initials', 'otherTelephone', 'info', 'memberOf', 'otherPager', 'co', 'department', + 'company', 'streetAddress', 'otherHomePhone', 'wWWHomePage', 'employeeNumber', 'employeeType', 'personalTitle', 'homePostalAddress', 'name', + 'countryCode', 'employeeID', 'homeDirectory', 'comment', 'sAMAccountName', 'division', 'otherFacsimileTelephoneNumber', 'otherMobile', + 'primaryTelexNumber', 'otherMailbox', 'ipPhone', 'otherIpPhone', 'url', 'uid', 'mail', 'roomNumber', 'homePhone', 'mobile', 'pager', + 'jpegPhoto', 'departmentNumber', 'middleName', 'thumbnailPhoto', 'preferredLanguage', 'uidNumber', 'gidNumber', 'unixHomeDirectory', 'loginShell' + ); + + + + for($i = 1; $i<$argc; $i++){ //Ha van külön config megadva, akkor először azt töltjük be. if($argv[$i] == "--config-file" ){$cfgfile = strval($argv[$i+1]); $i++;} } if(file_exists($cfgfile) === TRUE){ $cfg_o = $cfg; include($cfgfile); $cfg_n = $cfg; $cfg = array_merge($cfg, $cfg_o, $cfg_n); } //Config betöltés -if(!empty($m2n)){ $cfg_o = $cfg; $cfg = array_merge($cfg, $m2n, $cfg_o); } //Ha valahol még a régi config lenne +if(!empty($m2n)){ $cfg = array_merge($cfg, $m2n); } //Ha valahol még a régi config lenne for($i = 1; $i<$argc; $i++){ // Kézzel felülbírált config opciók @@ -301,63 +314,64 @@ if (function_exists('mysqli_connect') and function_exists('iconv') and function_ function ld_user_add($l, $user, $fullname, $attr=array()){ global $cfg,$log; - $attb = $ret = array(); - - $attb['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell - $attb['objectclass'][1] = "person"; - $attb['objectclass'][2] = "organizationalPerson"; - $attb['objectclass'][3] = "user"; - $attb['instancetype'][0] = "4"; - $attb['useraccountcontrol'][0] = "514"; - $attb['accountexpires'][0] = "9223372036854775807"; // vagy "0" - $attb['distinguishedname'][0] = "CN=".ldap_escape($user, "", LDAP_ESCAPE_DN).",CN=Users,".$cfg['ldap_baseDn']; //Ezt még lehetne cizellálni - $attb[strtolower($cfg['ld_username'])][0] = $user; + $attrs = $ret = array(); + + $attrs['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell + $attrs['objectclass'][1] = "person"; + $attrs['objectclass'][2] = "organizationalPerson"; + $attrs['objectclass'][3] = "user"; + $attrs['instancetype'][0] = "4"; + $attrs['useraccountcontrol'][0] = "514"; + $attrs['accountexpires'][0] = "9223372036854775807"; // vagy "0" + $attrs['distinguishedname'][0] = "CN=".ldap_escape($user, "", LDAP_ESCAPE_DN).",CN=Users,".$cfg['ldap_baseDn']; //Ezt még lehetne cizellálni + $attrs[strtolower($cfg['ld_username'])][0] = $user; $attr = attr_add_defaults($attr); - if(!empty($fullname) ){ $attb['displayname'][0] = $fullname;} - else if(!empty($attr['fullName']) ){ $attb['displayname'][0] = $attr['fullName'];} - else { $attb['displayname'][0] = $user;} - $attb['mail'][0] = $attr['email']; - $attb[strtolower($cfg['ld_oId'])][0] = $attr['oId']; - $attb[strtolower($cfg['ld_employeeId'])][0] = $attr['employeeId']; - $attb[strtolower($cfg['ld_osztalyJel'])][0] = $attr['osztalyJel']; - $attb[strtolower($cfg['ld_viseltNevElotag'])][0] = $attr['viseltNevElotag']; - $attb[strtolower($cfg['ld_viseltCsaladinev'])][0]= $attr['viseltCsaladinev']; - $attb[strtolower($cfg['ld_viseltUtonev'])][0] = $attr['viseltUtonev']; - $attb[strtolower($cfg['ld_lakhelyOrszag'])][0] = $attr['lakhelyOrszag']; - $attb[strtolower($cfg['ld_lakhelyHelyseg'])][0] = $attr['lakhelyHelyseg']; - $attb[strtolower($cfg['ld_lakhelyIrsz'])][0] = $attr['lakhelyIrsz']; - $attb[strtolower($cfg['ld_lakHely'])][0] = $attr['lakHely']; - $attb[strtolower($cfg['ld_telefon'])][0] = $attr['telefon']; - $attb[strtolower($cfg['ld_mobil'])][0] = $attr['mobil']; - $attb[strtolower($cfg['ld_statusz'])][0] = $attr['statusz']; - $attb[strtolower($cfg['ld_beoszt'])][0] = $attr['beoszt']; - $attb[strtolower($cfg['ld_nxtQuota'])][0] = $attr['quota']; - $attb[strtolower($cfg['ld_iroda'])][0] = "MaYor-Script-Managed"; - $attb[strtolower($cfg['ld_info'])][0] = "Jogviszony kezdete: ".($attr['kezdoTanev'])."\r\nJogviszony terv. vége: ".($attr['vegzoTanev']+1)." Június\r\n\r\n(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; - //$attb[strtolower($cfg['ld_'])][0] = $attr['']; - unset($attb['']); //Üresek kipucolása + if(!empty($fullname) ){ $attrs['displayname'][0] = $fullname;} + else if(!empty($attr['fullName']) ){ $attrs['displayname'][0] = $attr['fullName'];} + else { $attrs['displayname'][0] = $user;} + $attrs['mail'][0] = $attr['email']; + $attrs[strtolower($cfg['ld_oId'])][0] = $attr['oId']; + $attrs[strtolower($cfg['ld_employeeId'])][0] = $attr['employeeId']; + $attrs[strtolower($cfg['ld_osztalyJel'])][0] = $attr['osztalyJel']; + $attrs[strtolower($cfg['ld_viseltNevElotag'])][0] = $attr['viseltNevElotag']; + $attrs[strtolower($cfg['ld_viseltCsaladinev'])][0]= $attr['viseltCsaladinev']; + $attrs[strtolower($cfg['ld_viseltUtonev'])][0] = $attr['viseltUtonev']; + $attrs[strtolower($cfg['ld_lakhelyOrszag'])][0] = $attr['lakhelyOrszag']; + $attrs[strtolower($cfg['ld_lakhelyHelyseg'])][0] = $attr['lakhelyHelyseg']; + $attrs[strtolower($cfg['ld_lakhelyIrsz'])][0] = $attr['lakhelyIrsz']; + $attrs[strtolower($cfg['ld_lakHely'])][0] = $attr['lakHely']; + $attrs[strtolower($cfg['ld_telefon'])][0] = $attr['telefon']; + $attrs[strtolower($cfg['ld_mobil'])][0] = $attr['mobil']; + $attrs[strtolower($cfg['ld_statusz'])][0] = $attr['statusz']; + $attrs[strtolower($cfg['ld_beoszt'])][0] = $attr['beoszt']; + $attrs[strtolower($cfg['ld_nxtQuota'])][0] = $attr['quota']; + $attrs[strtolower($cfg['ld_iroda'])][0] = "MaYor-Script-Managed"; + $attrs[strtolower($cfg['ld_info'])][0] = "Jogviszony kezdete: ".($attr['kezdoTanev'])."\r\nJogviszony terv. vége: ".($attr['vegzoTanev']+1)." Június\r\n\r\n(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; + //$attrs[strtolower($cfg['ld_'])][0] = $attr['']; + unset($attrs['']); //Üresek kipucolása - $dn = $attb['distinguishedname'][0]; //Így egyszerű + $dn = $attrs['distinguishedname'][0]; //Így egyszerű + $ret[4] = $attrs; - if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$attb)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attb); } - if($ret[0] = ldap_add($l, $dn, $attb)){ - unset($attb); //Régiek törlése - $ret[2] = ldap_errno($l); + if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$attrs)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attrs); } + if($ret[0] = @ldap_add($l, $dn, $attrs)){ + unset($attrs); //Régiek törlése + $ret[2] = $errn = ldap_errno($l); $ret[3] = ldap_err2str($errn); $ret[1] = gen_password(16); //Jelszó - $attb[strtolower('unicodePwd')][0] = iconv( "UTF-8", "UTF-16LE", "\"".$ret[1]."\"" ); - if($log['verbose'] > 7){ echo "LDAP ->\tldap_mod_replace('".$l."', '".$dn."', \$attb)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attb); } + $attrs[strtolower('unicodePwd')][0] = iconv( "UTF-8", "UTF-16LE", "\"".$ret[1]."\"" ); + if($log['verbose'] > 7){ echo "LDAP ->\tldap_mod_replace('".$l."', '".$dn."', \$attrs)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attrs); } - if(!ldap_mod_replace ($l, $dn, $attb )){ //Jelszó beállítása + if(!@ldap_mod_replace ($l, $dn, $attrs )){ //Jelszó beállítása $ret[2] = $errn = ldap_errno($l); echo "\nLDAP ->\t ******** LDAP Felhasználó jelszócsere hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********\n"; $ret[3] = ldap_err2str($errn); return $ret; } - unset($attb); //User Engedélyezése - $attb[strtolower('userAccountControl')][0] = 512; - if(!ldap_mod_replace ($l, $dn, $attb )){ + unset($attrs); //User Engedélyezése + $attrs[strtolower('userAccountControl')][0] = 512; + if(!@ldap_mod_replace ($l, $dn, $attrs )){ $ret[2] = $errn = ldap_errno($l); echo "\nLDAP ->\t ******** LDAP Felhasználó jelszócsere hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********\n"; $ret[3] = ldap_err2str($errn); @@ -372,15 +386,135 @@ if (function_exists('mysqli_connect') and function_exists('iconv') and function_ } -function ld_group_user_add(){ +function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ + global $cfg,$log,$ldap_group_attrs,$ldap_user_attrs; + $ret = array(0 => true, 2 => 0); + $dn = ""; + + if(empty($scope) or $scope == "own"){ //A Script saját csoportjai között + $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-mayor", "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } + $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); + } else if($scope == "global"){ //Egész szerveren + $dn = $cfg['ldap_baseDn']; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } + $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); + } else { //Csak a megadott DN-ben (OU) + $dn = $scope; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } + $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); + } + if ($log['verbose'] > 11 ){ echo "\$group = "; print_r($group); } + + + if(!empty($group) and $group['count'] == 1){ //Ha megvan a csoport //A felhasználókat viszont globálisan keresi! + + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } + $users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )" , array('dn')); + if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } + + if(!empty($users) and $users['count'] == 1){ + $userdn = $users[0]['dn']; + if(!in_array($userdn, $group[0]['member'])){ + $ldif['member'] = $userdn; + $ret[0] = @ldap_mod_add($l, $group[0]['dn'], $ldif); + $ret[2] = $errn = ldap_errno($l); + $ret[3] = ldap_err2str($errn); + if ($log['verbose'] > 6 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] hozzáadva a: [".$groupName."]/[".$dn."] csoporthoz!\n"; } + } else { + if ($log['verbose'] > 6 ) { echo "\nLDAP ->\t Felhasználó: [".$userAccount."] már benne volt a: [".$groupName."]/[".$dn."] csoportban!\n"; } + } + } else if($users['count'] > 1){ //Több user + echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan felhasználó a létezik! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + } else { //vagy nincs user + echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Nincs ilyen felhasználó! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + } + } else if($group['count'] > 1) { //Több csoport, + echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; + } else { ///vagy nincs csoport + echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; + } + return $ret; +} -$group_name = "CN=MyGroup,OU=Groups,DC=example,DC=com"; -$group_info['member'] = $dn; // User's DN is added to group's 'member' array -ldap_mod_add($connect,$group_name,$group_info); +function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ + global $cfg,$log,$ldap_group_attrs,$ldap_user_attrs; + $ret = array(0 => true, 2 => 0); + $dn = ""; + + if(empty($scope) or $scope == "own"){ //A Script saját csoportjai között + $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-mayor", "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } + $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); + } else if($scope == "global"){ //Egész szerveren + $dn = $cfg['ldap_baseDn']; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } + $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); + } else { //Csak a megadott DN-ben (OU) + $dn = $scope; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } + $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); + } + if ($log['verbose'] > 11 ){ echo "\$group = "; print_r($group); } + $ret[4] = $dn; + + + if(!empty($group) and $group['count'] == 1){ //Ha megvan a csoport //A felhasználókat viszont globálisan keresi! + for($i = 0; $i < $group[0]['member']['count']; $i++){ //Memebereket végigkérdezi + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$group[0]['member'][$i]."', '', array('".strtolower($cfg['ld_username'])."'));\n"; } + $users = ldap_find($l, $group[0]['member'][$i], "(objectClass=*)", array(strtolower($cfg['ld_username']))); //lekérdezni egyesével a sAMAccountName-t + if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } + + if($users[0][strtolower($cfg['ld_username'])][0] == $userAccount){ //Ha ő az, törölni belőle + $ldif['member'] = $group[0]['member'][$i]; //vagy $users[0]['dn']; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_mod_del('".$l."', '".$group[0]['dn']."', '', array('member' => '".$ldif['member']."'));\n"; } + if(!($ret[0] = ldap_mod_del($l, $group[0]['dn'], $ldif)) ){ + $errn = ldap_errno($l); + echo "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: [".$errn."] ".ldap_err2str($errn)." ) ********\n"; + } + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($ret[2]); + } + } + if(empty($ldif)){ //Nem töröltünk senkit + if ($log['verbose'] > 7 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] nincs: [".$groupName."]/[".$dn."] csoporthoz!\n"; } + } + return $ret; + + /* + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } + $users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )" , array('memberOf')); + if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } + + if(!empty($users) and $users['count'] == 1){ //Csak 1db user van + $userdn = $users[0]['dn']; + if(in_array($userdn, $group[0]['member'])){ + $ldif['member'] = $userdn; + $ret[0] = @ldap_mod_del($l, $group[0]['dn'], $ldif); + $ret[2] = $errn = ldap_errno($l); + $ret[3] = ldap_err2str($errn); + if ($log['verbose'] > 7 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] törölve a: [".$groupName."]/[".$dn."] csoportból!\n"; } + } else { + if ($log['verbose'] > 7 ) { echo "\nLDAP ->\t Felhasználó: [".$userAccount."] nincs benne a: [".$groupName."]/[".$dn."] csoportban!\n"; } + } + } else if($users['count'] > 1){ //Több user + echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan felhasználó a létezik! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + } else { //vagy nincs user + echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Nincs ilyen felhasználó! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + } + */ + } else if($group['count'] > 1) { //Több csoport, + echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; + } else { ///vagy nincs csoport + echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; + } + return $ret; } + + function script_install($l){ global $cfg,$log; if(mysqli_query($l, "SELECT * FROM ".$cfg['db_m2n_db'].".".$cfg['db_m2n_prefix']."register LIMIT 10;" ) == FALSE ){ //nincs nyilvántartás @@ -1147,10 +1281,11 @@ $attr['vegzoTanev'] = 3001; -ld_user_add($ld, 'abcd', '', $attr); - - - +//$rv = ld_user_add($ld, 'aaa', '', $attr); +//print_r($rv); +ld_group_user_add($ld, "bmrg_cloud", "aaa", "global"); +ld_group_user_del($ld, "naplos_tanar", "aaa"); +ld_group_user_del($ld, "naplos_diak", "23bbp"); -- cgit v1.2.3 From 7fa4dde6a09a9dabd925c409e86b27cc4bf49b81 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 24 Feb 2021 21:53:08 +0100 Subject: M2LDAP ld_user_info() --- "egy\303\251b/nextcloud/mayor-ldap.php" | 93 ++++++++++++++++++--------------- 1 file changed, 52 insertions(+), 41 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index d31f50f0..b64a40fb 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -281,7 +281,7 @@ if (function_exists('mysqli_connect') and function_exists('iconv') and function_ } } while (!empty($cookie)); } - if ($log['verbose'] > 10 ){ print_r($ret); } + if ($log['verbose'] > 11 ){ $pr = $ret; for($i = 0; $i < $pr['count']; $i++){ $pr[$i]['jpegphoto'][0] = base64_encode($pr[$i]['jpegphoto'][0]); $pr[$i]['thumbnailphoto'][0] = base64_encode($pr[$i]['thumbnailphoto'][0]);} print_r($pr);} if($res !== False){ ldap_free_result($res); } @@ -415,7 +415,7 @@ function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ if(!empty($users) and $users['count'] == 1){ $userdn = $users[0]['dn']; - if(!in_array($userdn, $group[0]['member'])){ + if(empty($group[0]['member']) or !in_array($userdn, $group[0]['member'])){ $ldif['member'] = $userdn; $ret[0] = @ldap_mod_add($l, $group[0]['dn'], $ldif); $ret[2] = $errn = ldap_errno($l); @@ -459,9 +459,8 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ if ($log['verbose'] > 11 ){ echo "\$group = "; print_r($group); } $ret[4] = $dn; - - if(!empty($group) and $group['count'] == 1){ //Ha megvan a csoport //A felhasználókat viszont globálisan keresi! - for($i = 0; $i < $group[0]['member']['count']; $i++){ //Memebereket végigkérdezi + if(!empty($group) and $group['count'] == 1 ){ //Ha megvan a csoport //A felhasználókat viszont globálisan keresi! + for( $i = 0; (!empty($group[0]['member']) and $i < $group[0]['member']['count']); $i++ ){ //Memebereket végigkérdezi if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$group[0]['member'][$i]."', '', array('".strtolower($cfg['ld_username'])."'));\n"; } $users = ldap_find($l, $group[0]['member'][$i], "(objectClass=*)", array(strtolower($cfg['ld_username']))); //lekérdezni egyesével a sAMAccountName-t if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } @@ -480,7 +479,6 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ if(empty($ldif)){ //Nem töröltünk senkit if ($log['verbose'] > 7 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] nincs: [".$groupName."]/[".$dn."] csoporthoz!\n"; } } - return $ret; /* if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } @@ -505,14 +503,28 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ } */ } else if($group['count'] > 1) { //Több csoport, - echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; + echo "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; } else { ///vagy nincs csoport - echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; + echo "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; } return $ret; } +function ld_user_info($l, $userAccount){ //Csak a fontosabb tulajdonságokkal + global $cfg,$log,$ldap_user_attrs; + $ret = array(); + + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', \$ldap_user_attrs);\n"; } + $users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )", $ldap_user_attrs); + if ($log['verbose'] > 11 ){ $pr = $users; for($i = 0; $i < $users['count']; $i++){ $pr[$i]['jpegphoto'][0] = base64_encode($pr[$i]['jpegphoto'][0]); $pr[$i]['thumbnailphoto'][0] = base64_encode($pr[$i]['thumbnailphoto'][0]); } echo "Users: "; print_r($pr); } + + return $users; +} + + + + function script_install($l){ @@ -643,7 +655,7 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ } function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban - global $occ_path,$occ_user,$log,$dryrun; + global $occ_path,$occ_user,$log,$dryrun; $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } $last_login = json_decode(shell_exec($e),true)['last_seen'] ; @@ -663,52 +675,51 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ function user_info($userAccount){ // User állpot a Nextcloudban global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; - if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = (array)json_decode(shell_exec($e),true); - if ($log['verbose'] > 10 ){ print_r($ret); } - return $ret; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } - function user_dis($userAccount){ // letiltja a felhasználót a Nextcloud-ban global $occ_path,$occ_user,$log,$dryrun; - $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; - if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } - if ($log['verbose'] > 11 ){ print_r($ret); } + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } + if ($log['verbose'] > 11 ){ print_r($ret); } } function user_ena($userAccount){ // engedélyezi global $occ_path,$occ_user,$log,$dryrun; - $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; - if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } - if ($log['verbose'] > 11 ){ print_r($ret); } + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:enable ".escp($userAccount)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } + if ($log['verbose'] > 11 ){ print_r($ret); } } function nxt_group_list() { // Csoportok listázása a Nextcloud-ból - global $occ_path,$occ_user,$log; - $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk - if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = (array)json_decode(shell_exec($e),true); - if ($log['verbose'] > 10 ){ print_r($ret); } - return $ret; + global $occ_path,$occ_user,$log; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." group:list --limit=1000000 --output=json \""; //* Jó nagy limittel dolgozzunk + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } function nxt_user_list() { // Felhasználók listázása a Nextcloud-ból - global $occ_path,$occ_user,$log; + global $occ_path,$occ_user,$log; // $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:report | grep 'total' | sed -e 's/[^0-9]//g' | tr -d '[:blank:]\n' \""; // if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } // $num = shell_exec($e); - $num = 1000000; //inkább kézi limit! + $num = 1000000; //inkább kézi limit! // $num = $num + 100; // Biztos-ami-biztos, a nextcloud rejtett hibái miatt... - $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; - if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } - $ret = (array)json_decode(shell_exec($e),true); - if ($log['verbose'] > 10 ){ print_r($ret); } - return $ret; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:list --limit ".escp($num)." --output=json \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + $ret = (array)json_decode(shell_exec($e),true); + if ($log['verbose'] > 10 ){ print_r($ret); } + return $ret; } function nxt_user_lastlogin($userAccount){ // legutóbbi belépés lekérdezése @@ -1284,9 +1295,9 @@ $attr['vegzoTanev'] = 3001; //$rv = ld_user_add($ld, 'aaa', '', $attr); //print_r($rv); ld_group_user_add($ld, "bmrg_cloud", "aaa", "global"); -ld_group_user_del($ld, "naplos_tanar", "aaa"); -ld_group_user_del($ld, "naplos_diak", "23bbp"); - +ld_group_user_del($ld, "naplos_tanar", "gergo112"); +ld_group_user_add($ld, "naplos_diak", "23bbp"); +print_r(ld_user_info($ld, "gergo1111")); ldap_close($ld); @@ -1304,7 +1315,7 @@ die(); -//------------------------------------------------------------------------------------------------------------------------------- + //------------------------------------------------------------------------------------------------------------------------------- $ret = nxt_get_version(); $nxt_version = $ret[1]; if($ret[1] < 13){ //Nextcloud 13-tól támogatott @@ -1348,7 +1359,7 @@ die(); // group_add($cfg['mindenki_tanar']); // A "mindenki"/tanár csoport hozzáadása // group_add($cfg['mindenki_diak']); // A "mindenki"/diák csoport hozzáadása -//------------------------------------------------------------------------------------------------------------------------------ + //------------------------------------------------------------------------------------------------------------------------------ // Létrehozza az új coportokat a Mayor tankörök szerint if ($log['verbose'] > 0 ){ echo "\n***\tCsoportok egyeztetése.\n";} -- cgit v1.2.3 From a7f1076bb7e085aadfe0d145aa2019eea84da8cf Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Wed, 24 Feb 2021 22:58:41 +0100 Subject: M2LDAP ld_goup_add() --- "egy\303\251b/nextcloud/mayor-ldap.php" | 113 ++++++++++++++++++++++---------- 1 file changed, 80 insertions(+), 33 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index b64a40fb..f354beae 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -66,9 +66,10 @@ $cfg['ld_mobil'] ="mobile"; $cfg['ld_statusz'] = "company"; $cfg['ld_beoszt'] = "title"; $cfg['ld_nxtQuota'] = "description"; +$cfg['ld_leiras'] = "description"; $cfg['ld_iroda'] = "physicalDeliveryOfficeName"; $cfg['ld_info'] = "info"; - +$cfg['csoport_oupfx'] = "mayor"; $occ_path = "/var/www/nextcloud/"; @@ -312,10 +313,29 @@ if (function_exists('mysqli_connect') and function_exists('iconv') and function_ } + +function ld_user_info($l, $userAccount, $attr = array()){ //Csak a fontosabb tulajdonságokkal + global $cfg,$log,$ldap_user_attrs; + if(empty($attrs)){ + $attrs = $ldap_user_attrs; + } + $ret = array(); + + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', \$attrs);\n"; } + if($log['verbose'] > 11 ){ echo "\$attrs = "; print_r($attrs); } + $users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )", $attrs); + if ($log['verbose'] > 11 ){ $pr = $users; for($i = 0; $i < $users['count']; $i++){ $pr[$i]['jpegphoto'][0] = base64_encode($pr[$i]['jpegphoto'][0]); $pr[$i]['thumbnailphoto'][0] = base64_encode($pr[$i]['thumbnailphoto'][0]); } echo "Users: "; print_r($pr); } + + return $users; +} + + function ld_user_add($l, $user, $fullname, $attr=array()){ global $cfg,$log; $attrs = $ret = array(); + $dn = "CN=".ldap_escape($user, "", LDAP_ESCAPE_DN).",CN=Users,".$cfg['ldap_baseDn']; //Ezt még lehetne cizellálni + $attrs['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell $attrs['objectclass'][1] = "person"; $attrs['objectclass'][2] = "organizationalPerson"; @@ -323,7 +343,7 @@ if (function_exists('mysqli_connect') and function_exists('iconv') and function_ $attrs['instancetype'][0] = "4"; $attrs['useraccountcontrol'][0] = "514"; $attrs['accountexpires'][0] = "9223372036854775807"; // vagy "0" - $attrs['distinguishedname'][0] = "CN=".ldap_escape($user, "", LDAP_ESCAPE_DN).",CN=Users,".$cfg['ldap_baseDn']; //Ezt még lehetne cizellálni + $attrs['distinguishedname'][0] = $dn; $attrs[strtolower($cfg['ld_username'])][0] = $user; $attr = attr_add_defaults($attr); @@ -350,37 +370,35 @@ if (function_exists('mysqli_connect') and function_exists('iconv') and function_ $attrs[strtolower($cfg['ld_info'])][0] = "Jogviszony kezdete: ".($attr['kezdoTanev'])."\r\nJogviszony terv. vége: ".($attr['vegzoTanev']+1)." Június\r\n\r\n(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; //$attrs[strtolower($cfg['ld_'])][0] = $attr['']; unset($attrs['']); //Üresek kipucolása - - $dn = $attrs['distinguishedname'][0]; //Így egyszerű $ret[4] = $attrs; if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$attrs)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attrs); } - if($ret[0] = @ldap_add($l, $dn, $attrs)){ - unset($attrs); //Régiek törlése - $ret[2] = $errn = ldap_errno($l); - $ret[3] = ldap_err2str($errn); - $ret[1] = gen_password(16); //Jelszó + + $ret[0] = @ldap_add($l, $dn, $attrs); + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($ret[2]); + if($ret[0] === true){ //Sikeres volt a létrehozás + unset($attrs); //Attr tisztítása + $ret[1] = gen_password(16); //Jelszó $attrs[strtolower('unicodePwd')][0] = iconv( "UTF-8", "UTF-16LE", "\"".$ret[1]."\"" ); if($log['verbose'] > 7){ echo "LDAP ->\tldap_mod_replace('".$l."', '".$dn."', \$attrs)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attrs); } if(!@ldap_mod_replace ($l, $dn, $attrs )){ //Jelszó beállítása - $ret[2] = $errn = ldap_errno($l); - echo "\nLDAP ->\t ******** LDAP Felhasználó jelszócsere hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********\n"; - $ret[3] = ldap_err2str($errn); + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($ret[2]); + echo "\nLDAP ->\t ******** LDAP Felhasználó jelszócsere hiba. (infó: [".$ret[2]."] ".$ret[3]."!) ********\n"; return $ret; } unset($attrs); //User Engedélyezése $attrs[strtolower('userAccountControl')][0] = 512; if(!@ldap_mod_replace ($l, $dn, $attrs )){ - $ret[2] = $errn = ldap_errno($l); - echo "\nLDAP ->\t ******** LDAP Felhasználó jelszócsere hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********\n"; + $ret[2] = ldap_errno($l); $ret[3] = ldap_err2str($errn); + echo "\nLDAP ->\t ******** LDAP Felhasználó jelszócsere hiba. (infó: [".$ret[2]."] ".$ret[3]."!) ********\n"; return $ret; } } else { - $ret[2] = $errn = ldap_errno($l); - echo "\nLDAP ->\t ******** LDAP Felhasználó létrehozási hiba. (infó: [$errn] ".ldap_err2str($errn)."!) ********\n"; - $ret[3] = ldap_err2str($errn); + echo "\nLDAP ->\t ******** LDAP Felhasználó létrehozási hiba. (infó: [".$ret[2]."] ".$ret[3]."!) ********\n"; } return $ret; } @@ -392,7 +410,7 @@ function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ $dn = ""; if(empty($scope) or $scope == "own"){ //A Script saját csoportjai között - $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-mayor", "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; + $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-".$cfg['csoport_oupfx'], "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); } else if($scope == "global"){ //Egész szerveren @@ -409,17 +427,18 @@ function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ if(!empty($group) and $group['count'] == 1){ //Ha megvan a csoport //A felhasználókat viszont globálisan keresi! - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } - $users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )" , array('dn')); - if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } + //if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } + //$users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )" , array('dn')); + $users = ld_user_info($l, $userAccount, array('dn')); + //if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } if(!empty($users) and $users['count'] == 1){ $userdn = $users[0]['dn']; if(empty($group[0]['member']) or !in_array($userdn, $group[0]['member'])){ $ldif['member'] = $userdn; $ret[0] = @ldap_mod_add($l, $group[0]['dn'], $ldif); - $ret[2] = $errn = ldap_errno($l); - $ret[3] = ldap_err2str($errn); + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($ret[2]); if ($log['verbose'] > 6 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] hozzáadva a: [".$groupName."]/[".$dn."] csoporthoz!\n"; } } else { if ($log['verbose'] > 6 ) { echo "\nLDAP ->\t Felhasználó: [".$userAccount."] már benne volt a: [".$groupName."]/[".$dn."] csoportban!\n"; } @@ -438,13 +457,14 @@ function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ } + function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ global $cfg,$log,$ldap_group_attrs,$ldap_user_attrs; $ret = array(0 => true, 2 => 0); $dn = ""; if(empty($scope) or $scope == "own"){ //A Script saját csoportjai között - $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-mayor", "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; + $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-".$cfg['csoport_oupfx'], "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); } else if($scope == "global"){ //Egész szerveren @@ -483,6 +503,7 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ /* if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } $users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )" , array('memberOf')); + $users = ld_user_info($l, $userAccount, array('memberOf')); if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } if(!empty($users) and $users['count'] == 1){ //Csak 1db user van @@ -511,19 +532,44 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ } -function ld_user_info($l, $userAccount){ //Csak a fontosabb tulajdonságokkal - global $cfg,$log,$ldap_user_attrs; - $ret = array(); + function ld_group_add($l, $groupName, $attr=array()){ + global $cfg,$log,$ldap_group_attrs; + $attrs = $ret = array(); - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', \$ldap_user_attrs);\n"; } - $users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )", $ldap_user_attrs); - if ($log['verbose'] > 11 ){ $pr = $users; for($i = 0; $i < $users['count']; $i++){ $pr[$i]['jpegphoto'][0] = base64_encode($pr[$i]['jpegphoto'][0]); $pr[$i]['thumbnailphoto'][0] = base64_encode($pr[$i]['thumbnailphoto'][0]); } echo "Users: "; print_r($pr); } + $dn = "CN=".ldap_escape($groupName, "", LDAP_ESCAPE_DN).",OU=".ldap_escape($cfg['isk_rovidnev']."-".$cfg['csoport_oupfx'], "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; + + $attrs['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell + $attrs['objectclass'][1] = "group"; + $attrs['instancetype'][0] = "4"; + $attrs['distinguishedname'][0] = $dn; + $attrs[strtolower($cfg['ld_username'])][0] = $groupName; + $attrs[strtolower($cfg['ld_leiras'])][0] = "MaYor-Script-Managed"; + $attrs[strtolower($cfg['ld_info'])][0] = "(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; + unset($attrs['']); + $ret[4] = $attrs; + + if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$attrs)\n"; } if ($log['verbose'] > 10 ){ echo "Attr: "; print_r($attrs); } + $ret[0] = @ldap_add($l, $dn, $attrs); + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($ret[2]); + if($ret[0] == false){ + echo "\nLDAP ->\t ******** LDAP Csoport létrehozási hiba. (infó: {".$dn."} [".$ret[2]."] ".$ret[3]."!) ********\n"; + } + return $ret; + } - return $users; -} + function ld_user_set(){} + function ld_user_enable(){} + function ld_user_disable(){} + function ld_user_del(){} + function ld_group_del(){} + //function ld_group_add(){} + function ld_user_list(){} + function ld_group_list(){} + function ld_user_lastlogin(){} @@ -1294,7 +1340,8 @@ $attr['vegzoTanev'] = 3001; //$rv = ld_user_add($ld, 'aaa', '', $attr); //print_r($rv); -ld_group_user_add($ld, "bmrg_cloud", "aaa", "global"); +ld_group_add($ld, "(tk) 10.c Tééészta"); +print_r(ld_group_user_add($ld, "bmrg_cloud", "aaa", "global")); ld_group_user_del($ld, "naplos_tanar", "gergo112"); ld_group_user_add($ld, "naplos_diak", "23bbp"); print_r(ld_user_info($ld, "gergo1111")); -- cgit v1.2.3 From 131963602559ae2497070878e9ae3ebdd18882d3 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 25 Feb 2021 00:23:53 +0100 Subject: M2LDAP ld_find_group() --- "egy\303\251b/nextcloud/mayor-ldap.php" | 170 +++++++++++++++++++++----------- 1 file changed, 110 insertions(+), 60 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index f354beae..fd619589 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -51,6 +51,7 @@ $cfg['ldap_rootBindDn'] = "CN=LDAP_ADATCSERE_ADMIN,CN=Users,DC=ad,DC=iskola,DC=h $cfg['ldap_rootBindPw'] = ""; $cfg['ldap_pageSize'] = 100; $cfg['ld_username'] = "sAMAccountName"; +$cfg['ld_groupname'] = "sAMAccountName"; $cfg['ld_oId'] = "telephoneNumber"; //"serialNumber"; $cfg['ld_employeeId'] = "employeeNumber"; $cfg['ld_osztalyJel'] = "department"; @@ -69,6 +70,7 @@ $cfg['ld_nxtQuota'] = "description"; $cfg['ld_leiras'] = "description"; $cfg['ld_iroda'] = "physicalDeliveryOfficeName"; $cfg['ld_info'] = "info"; +$cfg['ld_groupMember'] = 'member'; $cfg['csoport_oupfx'] = "mayor"; @@ -330,6 +332,30 @@ function ld_user_info($l, $userAccount, $attr = array()){ //Csak a fontosabb } +function ld_find_group($l, $groupName, $scope, $attrs){ + global $cfg,$log; + $ret = array(); + $dn = ""; + + if(empty($scope) or $scope == "own"){ //A Script saját csoportjai között + $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-".$cfg['csoport_oupfx'], "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($attrs); } + $ret[1] = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $attrs ); + } else if($scope == "global"){ //Egész szerveren + $dn = $cfg['ldap_baseDn']; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($attrs); } + $ret[1] = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $attrs ); + } else { //Csak a megadott DN-ben (OU) + $dn = $scope; + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($attrs); } + $ret[1] = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $attrs ); + } + $ret[4] = $dn; + + return $ret; +} + + function ld_user_add($l, $user, $fullname, $attr=array()){ global $cfg,$log; $attrs = $ret = array(); @@ -370,7 +396,8 @@ function ld_user_info($l, $userAccount, $attr = array()){ //Csak a fontosabb $attrs[strtolower($cfg['ld_info'])][0] = "Jogviszony kezdete: ".($attr['kezdoTanev'])."\r\nJogviszony terv. vége: ".($attr['vegzoTanev']+1)." Június\r\n\r\n(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; //$attrs[strtolower($cfg['ld_'])][0] = $attr['']; unset($attrs['']); //Üresek kipucolása - $ret[4] = $attrs; + $ret[4] = $dn; + $ret[5] = $attrs; if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$attrs)\n"; } if ($log['verbose'] > 11 ){ echo "Attr: "; print_r($attrs); } @@ -404,33 +431,22 @@ function ld_user_info($l, $userAccount, $attr = array()){ //Csak a fontosabb } + function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ global $cfg,$log,$ldap_group_attrs,$ldap_user_attrs; $ret = array(0 => true, 2 => 0); - $dn = ""; + //$attrs = $ldap_group_attrs; + $attrs = array('member', 'cn', strtolower($cfg['ld_groupname'])); - if(empty($scope) or $scope == "own"){ //A Script saját csoportjai között - $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-".$cfg['csoport_oupfx'], "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } - $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); - } else if($scope == "global"){ //Egész szerveren - $dn = $cfg['ldap_baseDn']; - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } - $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); - } else { //Csak a megadott DN-ben (OU) - $dn = $scope; - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } - $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); - } + $rv = ld_find_group($l, $groupName, $scope, $attrs); + $ret[4] = $dn = $rv[4]; + $group = $rv[1]; + $ret[5] = $attrs; if ($log['verbose'] > 11 ){ echo "\$group = "; print_r($group); } - if(!empty($group) and $group['count'] == 1){ //Ha megvan a csoport //A felhasználókat viszont globálisan keresi! - //if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } - //$users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )" , array('dn')); $users = ld_user_info($l, $userAccount, array('dn')); - //if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } if(!empty($users) and $users['count'] == 1){ $userdn = $users[0]['dn']; @@ -439,19 +455,27 @@ function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ $ret[0] = @ldap_mod_add($l, $group[0]['dn'], $ldif); $ret[2] = ldap_errno($l); $ret[3] = ldap_err2str($ret[2]); - if ($log['verbose'] > 6 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] hozzáadva a: [".$groupName."]/[".$dn."] csoporthoz!\n"; } + //if ($log['verbose'] > 6 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] hozzáadva a: [".$groupName."]/[".$dn."] csoporthoz!\n"; } } else { - if ($log['verbose'] > 6 ) { echo "\nLDAP ->\t Felhasználó: [".$userAccount."] már benne volt a: [".$groupName."]/[".$dn."] csoportban!\n"; } + //if ($log['verbose'] > 6 ) { echo "\nLDAP ->\t Felhasználó: [".$userAccount."] már benne volt a: [".$groupName."]/[".$dn."] csoportban!\n"; } } } else if($users['count'] > 1){ //Több user - echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan felhasználó a létezik! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + $ret[0] = false; + $ret[3] = "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan felhasználó a létezik! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + echo $ret[3]; } else { //vagy nincs user - echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Nincs ilyen felhasználó! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + $ret[0] = false; + $ret[3] = "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Nincs ilyen felhasználó! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + echo $ret[3]; } } else if($group['count'] > 1) { //Több csoport, - echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; + $ret[0] = false; + $ret[3] = "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; + echo $ret[3]; } else { ///vagy nincs csoport - echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; + $ret[0] = false; + $ret[3] = "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; + echo $ret[3]; } return $ret; } @@ -461,50 +485,46 @@ function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ global $cfg,$log,$ldap_group_attrs,$ldap_user_attrs; $ret = array(0 => true, 2 => 0); + //$attrs = $ldap_group_attrs; + $attrs = array('member', 'cn', strtolower($cfg['ld_groupname'])); $dn = ""; - if(empty($scope) or $scope == "own"){ //A Script saját csoportjai között - $dn = "OU=".ldap_escape($cfg['isk_rovidnev']."-".$cfg['csoport_oupfx'], "", LDAP_ESCAPE_DN).",".$cfg['ldap_baseDn']; - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } - $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); - } else if($scope == "global"){ //Egész szerveren - $dn = $cfg['ldap_baseDn']; - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } - $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); - } else { //Csak a megadott DN-ben (OU) - $dn = $scope; - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$dn."', '(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER).")', \$ldap_group_attrs);\n"; } if ($log['verbose'] > 11 ) { echo "Attr: "; print_r($ldap_group_attrs); } - $group = ldap_find($l, $dn, "(&(objectClass=group)(cn=".ldap_escape($groupName, "", LDAP_ESCAPE_FILTER)."))", $ldap_group_attrs ); - } + $rv = ld_find_group($l, $groupName, $scope, $attrs); + $ret[4] = $dn = $rv[4]; + $group = $rv[1]; + $ret[5] = $attrs; if ($log['verbose'] > 11 ){ echo "\$group = "; print_r($group); } - $ret[4] = $dn; if(!empty($group) and $group['count'] == 1 ){ //Ha megvan a csoport //A felhasználókat viszont globálisan keresi! for( $i = 0; (!empty($group[0]['member']) and $i < $group[0]['member']['count']); $i++ ){ //Memebereket végigkérdezi + if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$group[0]['member'][$i]."', '', array('".strtolower($cfg['ld_username'])."'));\n"; } $users = ldap_find($l, $group[0]['member'][$i], "(objectClass=*)", array(strtolower($cfg['ld_username']))); //lekérdezni egyesével a sAMAccountName-t if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } if($users[0][strtolower($cfg['ld_username'])][0] == $userAccount){ //Ha ő az, törölni belőle $ldif['member'] = $group[0]['member'][$i]; //vagy $users[0]['dn']; - if($log['verbose'] > 7){ echo "LDAP ->\tldap_mod_del('".$l."', '".$group[0]['dn']."', '', array('member' => '".$ldif['member']."'));\n"; } - if(!($ret[0] = ldap_mod_del($l, $group[0]['dn'], $ldif)) ){ - $errn = ldap_errno($l); - echo "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: [".$errn."] ".ldap_err2str($errn)." ) ********\n"; - } + if($log['verbose'] > 7){ echo "LDAP ->\tldap_mod_del('".$l."', '".$group[0]['dn']."', '', array('".'member'."' => '".$ldif['member']."'));\n"; } + + $ret[0] = ldap_mod_del($l, $group[0]['dn'], $ldif); $ret[2] = ldap_errno($l); $ret[3] = ldap_err2str($ret[2]); + if($ret[0] === false ){ + $errn = ldap_errno($l); + echo "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: {".$groupName."/".$userAccount."} [".$errn."] ".ldap_err2str($errn)." ) ********\n"; + } } } if(empty($ldif)){ //Nem töröltünk senkit - if ($log['verbose'] > 7 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] nincs: [".$groupName."]/[".$dn."] csoporthoz!\n"; } + $ret[3] = "\nLDAP ->\t Felhasználó: [".$userAccount."] nincs: [".$groupName."]/[".$dn."] csoportban!\n"; + if ($log['verbose'] > 7 ){ echo $ret[3]; } } - + /* - if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } - $users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )" , array('memberOf')); + //if($log['verbose'] > 7){ echo "LDAP ->\tldap_find('".$l."', '".$cfg['ldap_baseDn']."', '(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER)."))', array('dn'));\n"; } + //$users = ldap_find($l, $cfg['ldap_baseDn'], "(&(|(|(objectClass=person)(objectClass=organizationalPerson))(objectClass=user))(".$cfg['ld_username']."=".ldap_escape($userAccount, "", LDAP_ESCAPE_FILTER).") )" , array('memberOf')); $users = ld_user_info($l, $userAccount, array('memberOf')); - if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } + //if ($log['verbose'] > 11 ) { echo "Users: "; print_r($users); } if(!empty($users) and $users['count'] == 1){ //Csak 1db user van $userdn = $users[0]['dn']; @@ -523,10 +543,12 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Nincs ilyen felhasználó! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; } */ - } else if($group['count'] > 1) { //Több csoport, - echo "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; - } else { ///vagy nincs csoport - echo "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; + } else if($group['count'] > 1) { //Több csoport, + $ret[0] = false; + $ret[3] = "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; + } else { /// vagy nincs ilyen csoport + $ret[0] = false; + $ret[3] = "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; } return $ret; } @@ -542,11 +564,12 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ $attrs['objectclass'][1] = "group"; $attrs['instancetype'][0] = "4"; $attrs['distinguishedname'][0] = $dn; - $attrs[strtolower($cfg['ld_username'])][0] = $groupName; + $attrs[strtolower($cfg['ld_groupname'])][0] = $groupName; $attrs[strtolower($cfg['ld_leiras'])][0] = "MaYor-Script-Managed"; $attrs[strtolower($cfg['ld_info'])][0] = "(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; unset($attrs['']); - $ret[4] = $attrs; + $ret[4] = $dn; + $ret[5] = $attrs; if($log['verbose'] > 7){ echo "LDAP ->\tldap_add('".$l."', '".$dn."', \$attrs)\n"; } if ($log['verbose'] > 10 ){ echo "Attr: "; print_r($attrs); } $ret[0] = @ldap_add($l, $dn, $attrs); @@ -560,16 +583,43 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ + + function ld_group_del($l, $groupName, $scope=null){ + global $cfg,$log,$ldap_group_attrs,$ldap_user_attrs; + $ret = array(0 => true, 2 => 0); + $attrs = array(strtolower($cfg['ld_groupname']), 'cn'); + + $rv = ld_find_group($l, $groupName, $scope, $attrs); + $ret[6] = $rv[4]; + $group = $rv[1]; + $ret[5] = $attrs; + if ($log['verbose'] > 11 ){ echo "\$group = "; print_r($group); } + + for($i = 0; $i < $group['count']; $i++){ + if($group[$i][strtolower($cfg['ld_groupname'])][0] == $groupName){ //Biztonság kedvéért + $ret[0][$i] = ldap_delete($l, $group[$i]['dn']); + $ret[4][$i] = $group[$i]['dn']; + $ret[2][$i] = ldap_errno($l); + $ret[3][$i] = ldap_err2str($ret[2]); + } + } + return $ret; + } + + + + + function ld_user_set(){} function ld_user_enable(){} function ld_user_disable(){} function ld_user_del(){} - function ld_group_del(){} - //function ld_group_add(){} - + function ld_user_list(){} function ld_group_list(){} function ld_user_lastlogin(){} + function ld_ou_add(){} + function ld_ou_del(){} @@ -1341,8 +1391,8 @@ $attr['vegzoTanev'] = 3001; //$rv = ld_user_add($ld, 'aaa', '', $attr); //print_r($rv); ld_group_add($ld, "(tk) 10.c Tééészta"); -print_r(ld_group_user_add($ld, "bmrg_cloud", "aaa", "global")); -ld_group_user_del($ld, "naplos_tanar", "gergo112"); +ld_group_user_add($ld, "bmrg_cloud", "aaa", "global"); +print_r(ld_group_user_del($ld, "naplos_tanar", "gergo112")); ld_group_user_add($ld, "naplos_diak", "23bbp"); print_r(ld_user_info($ld, "gergo1111")); -- cgit v1.2.3 From d4d3363953455f63358ab820c5ed524150756bf1 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 25 Feb 2021 00:49:15 +0100 Subject: M2LDAP ldap_csoportok OK --- "egy\303\251b/nextcloud/mayor-ldap.php" | 83 ++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 28 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index fd619589..8ab75305 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -70,7 +70,6 @@ $cfg['ld_nxtQuota'] = "description"; $cfg['ld_leiras'] = "description"; $cfg['ld_iroda'] = "physicalDeliveryOfficeName"; $cfg['ld_info'] = "info"; -$cfg['ld_groupMember'] = 'member'; $cfg['csoport_oupfx'] = "mayor"; @@ -316,7 +315,7 @@ if (function_exists('mysqli_connect') and function_exists('iconv') and function_ -function ld_user_info($l, $userAccount, $attr = array()){ //Csak a fontosabb tulajdonságokkal +function ld_user_info($l, $userAccount, $attrs = array()){ //Csak a fontosabb tulajdonságokkal global $cfg,$log,$ldap_user_attrs; if(empty($attrs)){ $attrs = $ldap_user_attrs; @@ -332,8 +331,11 @@ function ld_user_info($l, $userAccount, $attr = array()){ //Csak a fontosabb } -function ld_find_group($l, $groupName, $scope, $attrs){ - global $cfg,$log; +function ld_find_group($l, $groupName, $scope, $attrs = array()){ + global $cfg,$log,$ldap_group_attrs; + if(empty($attrs)){ + $attrs = $ldap_group_attrs; + } $ret = array(); $dn = ""; @@ -360,6 +362,12 @@ function ld_find_group($l, $groupName, $scope, $attrs){ global $cfg,$log; $attrs = $ret = array(); + + $attr = attr_add_defaults($attr); + if(!empty($fullname) ){ $attrs['displayname'][0] = $fullname;} + else if(!empty($attr['fullName']) ){ $attrs['displayname'][0] = $attr['fullName'];} + else { $attrs['displayname'][0] = $user;} + $dn = "CN=".ldap_escape($user, "", LDAP_ESCAPE_DN).",CN=Users,".$cfg['ldap_baseDn']; //Ezt még lehetne cizellálni $attrs['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell @@ -370,12 +378,8 @@ function ld_find_group($l, $groupName, $scope, $attrs){ $attrs['useraccountcontrol'][0] = "514"; $attrs['accountexpires'][0] = "9223372036854775807"; // vagy "0" $attrs['distinguishedname'][0] = $dn; - $attrs[strtolower($cfg['ld_username'])][0] = $user; - - $attr = attr_add_defaults($attr); - if(!empty($fullname) ){ $attrs['displayname'][0] = $fullname;} - else if(!empty($attr['fullName']) ){ $attrs['displayname'][0] = $attr['fullName'];} - else { $attrs['displayname'][0] = $user;} + $attrs[strtolower($cfg['ld_username'])][0] = $user; + $attrs['mail'][0] = $attr['email']; $attrs[strtolower($cfg['ld_oId'])][0] = $attr['oId']; $attrs[strtolower($cfg['ld_employeeId'])][0] = $attr['employeeId']; @@ -455,26 +459,31 @@ function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ $ret[0] = @ldap_mod_add($l, $group[0]['dn'], $ldif); $ret[2] = ldap_errno($l); $ret[3] = ldap_err2str($ret[2]); + + unset($attrs); //Módosítási dátum frissítés + $attrs[strtolower($cfg['ld_info'])][0] = "(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; + @ldap_mod_replace($l, $group[0]['dn'], $attrs); + //if ($log['verbose'] > 6 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] hozzáadva a: [".$groupName."]/[".$dn."] csoporthoz!\n"; } } else { //if ($log['verbose'] > 6 ) { echo "\nLDAP ->\t Felhasználó: [".$userAccount."] már benne volt a: [".$groupName."]/[".$dn."] csoportban!\n"; } } } else if($users['count'] > 1){ //Több user $ret[0] = false; - $ret[3] = "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan felhasználó a létezik! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + $ret[3] = "LDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan felhasználó a létezik! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; echo $ret[3]; } else { //vagy nincs user $ret[0] = false; - $ret[3] = "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Nincs ilyen felhasználó! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + $ret[3] = "LDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Nincs ilyen felhasználó! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; echo $ret[3]; } } else if($group['count'] > 1) { //Több csoport, $ret[0] = false; - $ret[3] = "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; + $ret[3] = "LDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; echo $ret[3]; } else { ///vagy nincs csoport $ret[0] = false; - $ret[3] = "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; + $ret[3] = "LDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; echo $ret[3]; } return $ret; @@ -509,6 +518,11 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ $ret[0] = ldap_mod_del($l, $group[0]['dn'], $ldif); $ret[2] = ldap_errno($l); $ret[3] = ldap_err2str($ret[2]); + + unset($attrs); //Módosítási dátum frissítés + $attrs[strtolower($cfg['ld_info'])][0] = "(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; + @ldap_mod_replace($l, $group[0]['dn'], $attrs); + if($ret[0] === false ){ $errn = ldap_errno($l); echo "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: {".$groupName."/".$userAccount."} [".$errn."] ".ldap_err2str($errn)." ) ********\n"; @@ -516,7 +530,7 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ } } if(empty($ldif)){ //Nem töröltünk senkit - $ret[3] = "\nLDAP ->\t Felhasználó: [".$userAccount."] nincs: [".$groupName."]/[".$dn."] csoportban!\n"; + $ret[3] = "LDAP ->\t Felhasználó: [".$userAccount."] nincs: [".$groupName."]/[".$dn."] csoportban!\n"; if ($log['verbose'] > 7 ){ echo $ret[3]; } } @@ -533,9 +547,14 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ $ret[0] = @ldap_mod_del($l, $group[0]['dn'], $ldif); $ret[2] = $errn = ldap_errno($l); $ret[3] = ldap_err2str($errn); - if ($log['verbose'] > 7 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] törölve a: [".$groupName."]/[".$dn."] csoportból!\n"; } + + unset($attrs); //Módosítási dátum frissítés + $attrs[strtolower($cfg['ld_info'])][0] = "(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; + @ldap_mod_replace($l, $group[0]['dn'], $attrs); + + //if ($log['verbose'] > 7 ){ echo "\nLDAP ->\t Felhasználó: [".$userAccount."] törölve a: [".$groupName."]/[".$dn."] csoportból!\n"; } } else { - if ($log['verbose'] > 7 ) { echo "\nLDAP ->\t Felhasználó: [".$userAccount."] nincs benne a: [".$groupName."]/[".$dn."] csoportban!\n"; } + //if ($log['verbose'] > 7 ) { echo "\nLDAP ->\t Felhasználó: [".$userAccount."] nincs benne a: [".$groupName."]/[".$dn."] csoportban!\n"; } } } else if($users['count'] > 1){ //Több user echo "\nLDAP ->\t ******** LDAP Csoporthoz adás hiba! (infó: Több ugyanolyan felhasználó a létezik! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; @@ -545,10 +564,10 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ */ } else if($group['count'] > 1) { //Több csoport, $ret[0] = false; - $ret[3] = "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; + $ret[3] = "LDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Több ugyanolyan csoport található! [".$groupName."]/[".$dn."]) ********\n"; } else { /// vagy nincs ilyen csoport $ret[0] = false; - $ret[3] = "\nLDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; + $ret[3] = "LDAP ->\t ******** LDAP Csoportból törlés hiba! (infó: Csoport nem található! [".$groupName."]/[".$dn."]) ********\n"; } return $ret; } @@ -582,8 +601,6 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ } - - function ld_group_del($l, $groupName, $scope=null){ global $cfg,$log,$ldap_group_attrs,$ldap_user_attrs; $ret = array(0 => true, 2 => 0); @@ -1387,14 +1404,24 @@ $attr['quota'] = "4GB"; $attr['vegzoTanev'] = 3001; +echo "\nUser:\n"; +$rv = ld_user_add($ld, 'aaa', '', $attr); +print_r($rv); + +echo "g add\n"; +print_r(ld_group_add($ld, "(tk) 10.c Tééészta")); +echo "g u add\n"; +print_r(ld_group_user_del($ld, "bmrg_cloud", "aaa", "global")); +echo "g u add\n"; +print_r(ld_group_user_del($ld, "(tk) 10.c Tééészta", "aaa", "own")); + +echo "g u add\n"; +print_r(ld_group_user_del($ld, "(tk) 10.c Tééészta", "23bbp", "own")); + +echo "g u del\n"; +print_r(ld_group_user_del($ld, "naplos_tanar", "gergo113")); -//$rv = ld_user_add($ld, 'aaa', '', $attr); -//print_r($rv); -ld_group_add($ld, "(tk) 10.c Tééészta"); -ld_group_user_add($ld, "bmrg_cloud", "aaa", "global"); -print_r(ld_group_user_del($ld, "naplos_tanar", "gergo112")); -ld_group_user_add($ld, "naplos_diak", "23bbp"); -print_r(ld_user_info($ld, "gergo1111")); +//print_r(ld_user_info($ld, "gergo1111")); ldap_close($ld); -- cgit v1.2.3 From f596834c3e8549f5fd8deb8253cc012c3e2154e1 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 25 Feb 2021 00:49:45 +0100 Subject: M2LDAP ldap_csoportok OK --- "egy\303\251b/nextcloud/mayor-ldap.php" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index 8ab75305..3c9a741e 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -1416,10 +1416,10 @@ echo "g u add\n"; print_r(ld_group_user_del($ld, "(tk) 10.c Tééészta", "aaa", "own")); echo "g u add\n"; -print_r(ld_group_user_del($ld, "(tk) 10.c Tééészta", "23bbp", "own")); +print_r(ld_group_user_del($ld, "(tk) 10.c Tééészta", "23bbmp", "own")); echo "g u del\n"; -print_r(ld_group_user_del($ld, "naplos_tanar", "gergo113")); +//print_r(ld_group_user_del($ld, "naplos_tanar", "gergo113")); //print_r(ld_user_info($ld, "gergo1111")); -- cgit v1.2.3 From 13774bf331c38d631df1458bf4f0ab95ce276c32 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 25 Feb 2021 01:16:02 +0100 Subject: M2LDAP ldap_csoportok OK --- "egy\303\251b/nextcloud/mayor-ldap.php" | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index 3c9a741e..b740e9ec 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -283,7 +283,7 @@ if (function_exists('mysqli_connect') and function_exists('iconv') and function_ } } while (!empty($cookie)); } - if ($log['verbose'] > 11 ){ $pr = $ret; for($i = 0; $i < $pr['count']; $i++){ $pr[$i]['jpegphoto'][0] = base64_encode($pr[$i]['jpegphoto'][0]); $pr[$i]['thumbnailphoto'][0] = base64_encode($pr[$i]['thumbnailphoto'][0]);} print_r($pr);} + if ($log['verbose'] > 11 ){ $pr = $ret; for($i = 0; $i < $pr['count']; $i++){ $pr[$i]['jpegphoto'][0] = @base64_encode(@$pr[$i]['jpegphoto'][0]); $pr[$i]['thumbnailphoto'][0] = @base64_encode(@$pr[$i]['thumbnailphoto'][0]);} print_r($pr);} if($res !== False){ ldap_free_result($res); } @@ -614,27 +614,28 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ for($i = 0; $i < $group['count']; $i++){ if($group[$i][strtolower($cfg['ld_groupname'])][0] == $groupName){ //Biztonság kedvéért - $ret[0][$i] = ldap_delete($l, $group[$i]['dn']); - $ret[4][$i] = $group[$i]['dn']; - $ret[2][$i] = ldap_errno($l); - $ret[3][$i] = ldap_err2str($ret[2]); + $ret[0] = ldap_delete($l, $group[$i]['dn']); + $ret[4] = $group[$i]['dn']; + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($ret[2]); } } + if($i == 0){ + $ret[3] = "LDAP ->\t ******** LDAP Csoport törlés hiba! (infó: Csoport nem található! [".$groupName."]/[".$rv[4]."]) ********\n"; + } return $ret; } - - - + function ld_user_del(){} function ld_user_set(){} function ld_user_enable(){} function ld_user_disable(){} - function ld_user_del(){} function ld_user_list(){} function ld_group_list(){} function ld_user_lastlogin(){} + function ld_ou_add(){} function ld_ou_del(){} @@ -1413,13 +1414,13 @@ print_r(ld_group_add($ld, "(tk) 10.c Tééészta")); echo "g u add\n"; print_r(ld_group_user_del($ld, "bmrg_cloud", "aaa", "global")); echo "g u add\n"; -print_r(ld_group_user_del($ld, "(tk) 10.c Tééészta", "aaa", "own")); +print_r(ld_group_user_add($ld, "(tk) 10.c Tééészta", "aaa", "own")); echo "g u add\n"; -print_r(ld_group_user_del($ld, "(tk) 10.c Tééészta", "23bbmp", "own")); +print_r(ld_group_user_add($ld, "(tk) 10.c Tééészta", "23bbmp", "own")); -echo "g u del\n"; -//print_r(ld_group_user_del($ld, "naplos_tanar", "gergo113")); +echo "g del\n"; +print_r(ld_group_del($ld, "(tk) 10.c Tééészta", "")); //print_r(ld_user_info($ld, "gergo1111")); -- cgit v1.2.3 From 3edda58a29c50957a72b8e74f078df54fc914f97 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Thu, 25 Feb 2021 03:52:13 +0100 Subject: M2LDAP ldap_user_del() --- "egy\303\251b/nextcloud/mayor-ldap.php" | 97 +++++++++++++++++++++++++++------ 1 file changed, 81 insertions(+), 16 deletions(-) (limited to 'egyéb') diff --git "a/egy\303\251b/nextcloud/mayor-ldap.php" "b/egy\303\251b/nextcloud/mayor-ldap.php" index b740e9ec..0fbd5177 100644 --- "a/egy\303\251b/nextcloud/mayor-ldap.php" +++ "b/egy\303\251b/nextcloud/mayor-ldap.php" @@ -71,6 +71,7 @@ $cfg['ld_leiras'] = "description"; $cfg['ld_iroda'] = "physicalDeliveryOfficeName"; $cfg['ld_info'] = "info"; $cfg['csoport_oupfx'] = "mayor"; +$cfg['manage_users'] = true; $occ_path = "/var/www/nextcloud/"; @@ -90,9 +91,9 @@ $pwchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_?"; $ldap_group_attrs = array('objectCalss', 'samaccountname', 'cn', 'member', 'name', 'description', 'info', 'mail', 'gidNumber', 'samaccounttype', 'instancetype', ); $ldap_user_attrs = array('sn', 'serialNumber', 'c', 'l', 'st', 'street', 'title', 'description', 'postalAddress', 'postalCode', 'postOfficeBox', 'physicalDeliveryOfficeName', 'telephoneNumber', 'facsimileTelephoneNumber', 'givenName', 'initials', 'otherTelephone', 'info', 'memberOf', 'otherPager', 'co', 'department', - 'company', 'streetAddress', 'otherHomePhone', 'wWWHomePage', 'employeeNumber', 'employeeType', 'personalTitle', 'homePostalAddress', 'name', - 'countryCode', 'employeeID', 'homeDirectory', 'comment', 'sAMAccountName', 'division', 'otherFacsimileTelephoneNumber', 'otherMobile', - 'primaryTelexNumber', 'otherMailbox', 'ipPhone', 'otherIpPhone', 'url', 'uid', 'mail', 'roomNumber', 'homePhone', 'mobile', 'pager', + 'company', 'streetAddress', 'otherHomePhone', 'wWWHomePage', 'employeeNumber', 'employeeType', 'personalTitle', 'homePostalAddress', 'name','accountExpires', + 'countryCode', 'employeeID', 'homeDirectory', 'comment', 'sAMAccountName', 'division', 'otherFacsimileTelephoneNumber', 'otherMobile', 'lastLogon', + 'primaryTelexNumber', 'otherMailbox', 'ipPhone', 'otherIpPhone', 'url', 'uid', 'mail', 'roomNumber', 'homePhone', 'mobile', 'pager', 'lastLogonTimestamp', 'jpegPhoto', 'departmentNumber', 'middleName', 'thumbnailPhoto', 'preferredLanguage', 'uidNumber', 'gidNumber', 'unixHomeDirectory', 'loginShell' ); @@ -358,7 +359,7 @@ function ld_find_group($l, $groupName, $scope, $attrs = array()){ } - function ld_user_add($l, $user, $fullname, $attr=array()){ + function ld_user_add($l, $userAccount, $fullname, $attr=array()){ global $cfg,$log; $attrs = $ret = array(); @@ -366,9 +367,9 @@ function ld_find_group($l, $groupName, $scope, $attrs = array()){ $attr = attr_add_defaults($attr); if(!empty($fullname) ){ $attrs['displayname'][0] = $fullname;} else if(!empty($attr['fullName']) ){ $attrs['displayname'][0] = $attr['fullName'];} - else { $attrs['displayname'][0] = $user;} + else { $attrs['displayname'][0] = $userAccount;} - $dn = "CN=".ldap_escape($user, "", LDAP_ESCAPE_DN).",CN=Users,".$cfg['ldap_baseDn']; //Ezt még lehetne cizellálni + $dn = "CN=".ldap_escape($userAccount, "", LDAP_ESCAPE_DN).",CN=Users,".$cfg['ldap_baseDn']; //Ezt még lehetne cizellálni $attrs['objectclass'][0] = "top"; //Alap dolgok, ami mindenképpen kell $attrs['objectclass'][1] = "person"; @@ -378,7 +379,7 @@ function ld_find_group($l, $groupName, $scope, $attrs = array()){ $attrs['useraccountcontrol'][0] = "514"; $attrs['accountexpires'][0] = "9223372036854775807"; // vagy "0" $attrs['distinguishedname'][0] = $dn; - $attrs[strtolower($cfg['ld_username'])][0] = $user; + $attrs[strtolower($cfg['ld_username'])][0] = $userAccount; $attrs['mail'][0] = $attr['email']; $attrs[strtolower($cfg['ld_oId'])][0] = $attr['oId']; @@ -387,7 +388,7 @@ function ld_find_group($l, $groupName, $scope, $attrs = array()){ $attrs[strtolower($cfg['ld_viseltNevElotag'])][0] = $attr['viseltNevElotag']; $attrs[strtolower($cfg['ld_viseltCsaladinev'])][0]= $attr['viseltCsaladinev']; $attrs[strtolower($cfg['ld_viseltUtonev'])][0] = $attr['viseltUtonev']; - $attrs[strtolower($cfg['ld_lakhelyOrszag'])][0] = $attr['lakhelyOrszag']; + $attrs[strtolower($cfg['ld_lakhelyOrszag'])][0] = @$attr['lakhelyOrszag']; $attrs[strtolower($cfg['ld_lakhelyHelyseg'])][0] = $attr['lakhelyHelyseg']; $attrs[strtolower($cfg['ld_lakhelyIrsz'])][0] = $attr['lakhelyIrsz']; $attrs[strtolower($cfg['ld_lakHely'])][0] = $attr['lakHely']; @@ -399,7 +400,10 @@ function ld_find_group($l, $groupName, $scope, $attrs = array()){ $attrs[strtolower($cfg['ld_iroda'])][0] = "MaYor-Script-Managed"; $attrs[strtolower($cfg['ld_info'])][0] = "Jogviszony kezdete: ".($attr['kezdoTanev'])."\r\nJogviszony terv. vége: ".($attr['vegzoTanev']+1)." Június\r\n\r\n(Generated-by MaYor-LDAP Script.)\r\n(Updated: ".date('Y-m-d H:i:s').")\r\n"; //$attrs[strtolower($cfg['ld_'])][0] = $attr['']; - unset($attrs['']); //Üresek kipucolása + + foreach($attrs as $key => $val){ //Üresek kipucolása + if($key == "" or $val[0] == ""){ unset($attrs[$key]); } + } $ret[4] = $dn; $ret[5] = $attrs; @@ -436,6 +440,64 @@ function ld_find_group($l, $groupName, $scope, $attrs = array()){ + function ld_user_del($l, $userAccount){ + global $cfg, $log; + $ret = array(); + $attrs = array(strtolower($cfg['ld_username']), 'lastLogonTimestamp', 'samaccountname', 'physicalDeliveryOfficeName', 'displayName', 'cn'); + + $user = ld_user_info($l, $userAccount, $attrs); + if ($log['verbose'] > 0 ){ echo "\$user = "; print_r($user); } + + for($i = 0; $i < $user['count']; $i++){ //Az összeset, ha több? lenne. + if($user[$i][strtolower($cfg['ld_username'])][0] == $userAccount and !in_array($userAccount, $cfg['kihagy']) and $user[$i]['physicaldeliveryofficename'][0] == "MaYor-Script-Managed" ){ //Biztonság kedvéért + + if(!empty($user[$i][strtolower('lastLogonTimestamp')]) /*and $user[$i][strtolower('lastLogonTimestamp')][0] != "0"*/ ){ //Ha egyszer már belépett, letiltja + + unset($attrs); //Letiltás + $attrs['useraccountcontrol'][0] = "514"; + $ret[0] = ldap_mod_replace($l, $user[$i]['dn'], $attrs); + $ret[4] = $user[$i]['dn']; + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($ret[2]); + $ret[5] = $attrs; + + } else { //Egyébként törli is + $ret[0] = @ldap_delete($l, $user[$i]['dn']); + $ret[4] = $user[$i]['dn']; + $ret[2] = ldap_errno($l); + $ret[3] = ldap_err2str($ret[2]); + } + } else { //Nem nyúl hozzá + echo "\nNem nyúl hozzá!\n"; + } + } + if($i == 0){ + $ret[3] = "LDAP ->\t ******** LDAP Felhasználó törlés hiba! (infó: FElhasználó nem található! [".$userAccount."]/[".$cfg['ldap_baseDn']."]) ********\n"; + } + return $ret; + + } + +/* + function user_del($userAccount){ // kitöröl vagy letilt egy felhasználót a Nextcloud-ban + global $occ_path,$occ_user,$log,$dryrun; + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:info ".escp($userAccount)." --output=json \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + $last_login = json_decode(shell_exec($e),true)['last_seen'] ; + if($last_login == "1970-01-01T00:00:00+00:00" ){ + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:delete ".escp($userAccount)." \""; // Ha még soha nem lépett be + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } // akkor törölhető + if ($log['verbose'] > 11 ){ print_r($ret); } + } else { + $e = "su -s /bin/sh $occ_user -c \"".phpv()." ".escp($occ_path."/occ")." user:disable ".escp($userAccount)." \""; + if($log['verbose'] > 7) { echo "bash ->\t".$e."\n"; } + if(!$dryrun){ $ret = shell_exec($e); } else { $ret = true; } // különben csak letiltja + if ($log['verbose'] > 11 ){ print_r($ret); } + } + } +*/ + function ld_group_user_add($l, $groupName, $userAccount, $scope = null){ global $cfg,$log,$ldap_group_attrs,$ldap_user_attrs; $ret = array(0 => true, 2 => 0); @@ -627,7 +689,7 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ } - function ld_user_del(){} + function ld_user_set(){} function ld_user_enable(){} function ld_user_disable(){} @@ -635,7 +697,7 @@ function ld_group_user_del($l, $groupName, $userAccount, $scope = null){ function ld_user_list(){} function ld_group_list(){} function ld_user_lastlogin(){} - + function ld_ou_add(){} function ld_ou_del(){} @@ -1393,9 +1455,9 @@ $attr['osztalyJel'] = "12.c"; $attr['viseltNevElotag'] = "Msgr."; $attr['viseltCsaladinev'] = "Teszt"; $attr['viseltUtonev'] = "Elek"; -$attr['lakhelyOrszag'] = "Magyarország"; +//$attr['lakhelyOrszag'] = "Magyarország"; $attr['lakhelyHelyseg'] = "Pilisborosjenő"; -$attr['lakhelyIrsz'] = "1234"; +$attr['lakhelyIrsz'] = ""; $attr['lakHely'] = "Boros utca 19."; $attr['telefon'] = "1234567"; $attr['mobil'] = "06700000000"; @@ -1406,13 +1468,13 @@ $attr['vegzoTanev'] = 3001; echo "\nUser:\n"; -$rv = ld_user_add($ld, 'aaa', '', $attr); +$rv = ld_user_add($ld, 'bbb', '', $attr); print_r($rv); echo "g add\n"; print_r(ld_group_add($ld, "(tk) 10.c Tééészta")); echo "g u add\n"; -print_r(ld_group_user_del($ld, "bmrg_cloud", "aaa", "global")); +print_r(ld_group_user_add($ld, "bmrg_cloud", "bbb", "global")); echo "g u add\n"; print_r(ld_group_user_add($ld, "(tk) 10.c Tééészta", "aaa", "own")); @@ -1422,7 +1484,10 @@ print_r(ld_group_user_add($ld, "(tk) 10.c Tééészta", "23bbmp", "own")); echo "g del\n"; print_r(ld_group_del($ld, "(tk) 10.c Tééészta", "")); -//print_r(ld_user_info($ld, "gergo1111")); +print_r(ld_user_info($ld, "bbb")); + +echo "u del\n"; +print_r(ld_user_del($ld, "gergo111")); ldap_close($ld); -- cgit v1.2.3