From f743e2207021b40b3b224066de093610423e5102 Mon Sep 17 00:00:00 2001 From: M.Gergo Date: Tue, 17 Mar 2020 15:15:35 +0100 Subject: Mayor-Nextcloud script: refactoring --- "egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" | 66 +++++++++++++----------- "egy\303\251b/nextcloud/mayor-nextcloud.php" | 38 ++++++++------ 2 files changed, 56 insertions(+), 48 deletions(-) (limited to 'egyéb/nextcloud') diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" index 0343d3f2..41e75191 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.cfg.php" @@ -19,6 +19,10 @@ $db['nxt_prefix'] = "oc_"; //$db['mayor_user'] = ""; //$db['mayor_pass'] = ""; +$m2n['megfigyelo_user'] = "naplo_robot"; +$m2n['megfigyelo_hozzaadasa'] = True; +$m2n['beken_hagyottak'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') + $m2n['min_evfolyam'] = 1; $m2n['isk_rovidnev'] = "rovid"; $m2n['csoport_prefix'] = "(tk) "; @@ -40,7 +44,7 @@ $occ_user = "www-data"; /* -Nextcloud(13) - Mayor script +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, létrehozva ezzel a saját, iskolai felhőszolgáltatásunkat. @@ -51,23 +55,22 @@ majd belépteti ezen csoportokba a diákokat, és tanárokat, megspórolva ezze és egy csomó időt az adminisztrátornak. Támogatja a külön, illetve az egy, közös szerverre történő telepítését a mayornak és a nextcloud-nak. **(lásd: Szeparációs lehetőségek rész.) -Egyelőre még csak a Nextcloud 13.x -mal tesztelt. +A Nextcloud 13-mas és újabb verzióival használható. FONTOS! 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(13+) szervert egy Debian 9+ szerverre, - szükség 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 - https://docs.nextcloud.com/server/13/admin_manual/installation/index.html oldalon találunk. +-(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. -(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 állítsuk be a tulajdonost, és vegyük el a jogosultságokat. (chown root; chmod 600) + 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! @@ -80,15 +83,15 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $db['port'] = "3306"; //nextcloud-mysql port - $db['user'] = "root"; //nextcloud-mysql felhasználónév + $db['user'] = "root"; //nextcloud-mysql felhasználónév // HA nem a root-ot használjuk, 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, // valamit saját kezűleg kell létrehozni a script saját, nyilvántartó adatbázisát, és a fenti jogokat beállítani rá. // Ha a Debian-on alapértelmezett root-ot használjuk, akkor mindez automatikusan történik. - $db['pass'] = ""; //A nextcloud-mysql jelszó (pl a "root" felhasználónévhez tartozó) + $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 nem jön létre "olvasható" jelszó. + // használnunk, ez biztonságosabb, mert ekkor nem kell jelszó, más módon hitelesít, így biztonságosabb. @@ -96,17 +99,17 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) $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 nyilvántartó adatbázis neve. - // Ennek az adatbázisnak a nextcloud-mysql szerveren kell lennie! + $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 el a script által létrehozott felhasználókat, azért, + // 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ülön létrehozott felhasználóktól. + // á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'] = "m2n_"; //A nyilvántartó adatbázisban használt prefix, ha van. (ha nincs, akkor "üres string"-re kell állítani ($db['m2n_prefix'] = "";)) - //$db['mayor_host'] = ""; //Akkor használatos, ha a mayor alatti mysql szerver egy másik szerveren van. + //$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): @@ -124,42 +127,43 @@ Beállítása az alábbiak szerint: (egy lehetséges elrendezés) - $m2n['default_email'] = "rendszergazda@iskola.hu"; //Ha a mayor intezmeny_xxx.diak, vagy az intezmeny_xxx.tanar táblákban nincs kitöltve az + $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 // e-mail, akkor ezt használja alapértelmezetten. - // (ide megy a jelszó-emlékeztető, amíg a felhasználó birtokba nem veszi a fiókját) + // (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'] = "EHYmGktzrdfS7wxJR6DFqxjJ"; //Az induló jelszó a Nextcloud-ban a felhasználóknak. (érdemes erőset megadni, a botnet-ek miatt) + $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) - $m2n['default_quota'] = "10GB"; //Az induló fájl-kvóta a Nextcloud-ban. + $m2n['default_quota'] = "10GB"; //Az indulási fájl-kvóta a Nextcloud-ban. (Rendszergazda később átállíthatja kézzel.) $m2n['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. - // Tehát ha beállítunk egy minimális évfolyamot, a felsorolt osztályok akkor is importálódnak, - // ha a minimális évfolyamnál kisebb. //pl: array('9.a','11.a'); + // 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. + $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. + $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['mindenki_csop'] = "naplós_felhasználók"; //A Nextcloud "mindenki" csoportja + $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['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 !; + // Ha már nem kell, akkor állítsd "1970-01-01"-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. tények, 5: részletesebben, 6: sql query + bash parancsok kiírása + // 4: csop./felh. állapot, 5: részletesebben, 6: sql query + bash parancsok kiírása is $occ_path = "/var/www/nextcloud/"; //A Nextcloud-server fájljainak elérési útja. (DocumentRoot) // Erre szükség van a nextcloud "occ" parancsának eléréséhez. - $occ_user = "www-data"; //A Nextcloud-servert futtató (Apache) felhasználónév + $occ_user = "www-data"; //A Nextcloud-servert futtató (Apache által használt) felhasználónév + - $cfgfile = ".mayor-nextcloud.cfg.php"; //Lehetőség van a konfig-fejléc 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. diff --git "a/egy\303\251b/nextcloud/mayor-nextcloud.php" "b/egy\303\251b/nextcloud/mayor-nextcloud.php" index 9f987bc7..da1e23f0 100644 --- "a/egy\303\251b/nextcloud/mayor-nextcloud.php" +++ "b/egy\303\251b/nextcloud/mayor-nextcloud.php" @@ -13,9 +13,13 @@ $db['nxt_dbname'] = "Nextcloud"; $db['nxt_prefix'] = "oc_"; //$db['mayor_host'] = ""; //$db['mayor_port'] = ""; -//$db['mayor_user'] = ""; +//$db['mayor_user'] = ""; //$db['mayor_pass'] = ""; +$m2n['megfigyelo_user'] = "naplo_robot"; +$m2n['megfigyelo_hozzaadasa'] = True; +$m2n['beken_hagyottak'] = array(); //pl: array('Trap.Pista', 'Ebeed.Elek', '22att') + $m2n['min_evfolyam'] = 1; $m2n['isk_rovidnev'] = "rovid"; $m2n['csoport_prefix'] = "(tk) "; @@ -109,7 +113,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im echo "\n\n\n".explode(".", json_decode(shell_exec($e),true)['version'])[0]."\n\n\n"; } - function nxt_register_userlist($link){ //akiket a script hozott létre + function nxt_registered_userlist($link){ //akiket a script hozott létre global $db,$log; $ret['account'] = array(); $ret['status'] = array(); @@ -128,7 +132,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - function nxt_register_forbiddenlist($link){ //akiket a rendszergazda kitiltott + function nxt_registered_forbiddenlist($link){ //akiket a rendszergazda kitiltott global $log,$db; $q = "SELECT * FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE STATUS = 'forbidden'; "; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } @@ -145,7 +149,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - function nxt_register_useradd($link, $account){ // feljegyzi az általa létrehozott felhasználókat + function nxt_registered_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."')"; if ($log['verbose'] > 5 ){ echo "M2N -> \t".$q."\n"; } @@ -154,7 +158,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - function nxt_register_userena($link, $account){ // az engedélyezetteket + function nxt_registered_userena($link, $account){ // az engedélyezetteket global $db,$log; $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='active' WHERE account='".$account."'"; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } @@ -163,7 +167,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - function nxt_register_userdel($link, $account){ // a törölteket + function nxt_registered_userdel($link, $account){ // a törölteket global $db,$log; $q = "DELETE FROM ".$db['m2n_db'].".".$db['m2n_prefix']."register WHERE account='".$account."' "; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } @@ -172,7 +176,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im } } - function nxt_register_userdis($link, $account){ // a letiltottakat + function nxt_registered_userdis($link, $account){ // a letiltottakat global $m2n,$db,$log; $q = "UPDATE ".$db['m2n_db'].".".$db['m2n_prefix']."register SET status='disabled' WHERE account='".$account."'"; if ($log['verbose'] > 5 ){ echo "M2N ->\t".$q."\n"; } @@ -561,8 +565,8 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im $mayor_user = array_merge($mayor_user, array(array('userAccount' => null, 'fullName' => null, 'tankorNev' => null,)) ); //strázsa a lista végére $nxt_user = nxt_user_list(); $nxt_group = nxt_group_list(); - $nxt_registered = nxt_register_userlist($link); - $m2n_forbidden = nxt_register_forbiddenlist($link); + $nxt_registered = nxt_registered_userlist($link); + $m2n_forbidden = nxt_registered_forbiddenlist($link); if ($log['verbose'] > 3 ){ echo "\n";} foreach($mayor_user as $key => $val){ @@ -584,11 +588,11 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if ($log['verbose'] > 3 ){ echo " -".$log['curr']; $log['curr'] = "";} if( in_array($curr, $nxt_registered['account'])){ if($nxt_registered['status'][array_keys($nxt_registered['account'], $curr)[0]] == 'disabled' ){ - nxt_register_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi, + nxt_registered_userena($link, $curr); //Ha netán le lenne tiltva, akkor engedélyezi, user_ena($curr); //ha a script tiltotta le. } } else { - nxt_register_useradd($link, $curr); + nxt_registered_useradd($link, $curr); if ($log['verbose'] > 1 ){ echo "??? -\t\tA felhasználó:".po("\t$curr",$m2n['felhasznalo_hossz'],1)."\tlétezik a naplóban, és a nextcloudban, de nem szerepelt az m2n nyilvántartásában. +++ Felvéve.\n";} } @@ -616,7 +620,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im if($curr != $key2 and $curr != null){ //Nincs még ilyen felhasználó user_add($curr, $curr_n); //Akkor hozzá kell adni - nxt_register_useradd($link, $curr); + nxt_registered_useradd($link, $curr); if ($log['verbose'] > 2 ){ echo "**-\tFelhasználó:".po("\t$curr_n ($curr)",$m2n['felhasznalo_hossz'],1)."--\tlétrehozva.\n";} foreach($tankorei as $key3 => $val3){ //Hozzáadja a (tankör)csoportokhoz is egyből, @@ -647,16 +651,16 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im // A megszűnő felhasználónevek egyeztetése if ($log['verbose'] > 0 ){ echo "\n***\tTörlendő/Letiltandó felhasználók egyeztetése.\n";} - $nxt_registered = nxt_register_userlist($link); + $nxt_registered = nxt_registered_userlist($link); foreach($nxt_user as $key => $val){ //Benne van a nyilvántartásban, if(in_array($key, $nxt_registered['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 - nxt_register_userdel($link, $key); //A listáról is + nxt_registered_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) - nxt_register_userdis($link, $key); //Feljegyzi a nyilvántartásba + nxt_registered_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";} } } @@ -675,12 +679,12 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im // 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(); - $nxt_registered = nxt_register_userlist($link); + $nxt_registered = nxt_registered_userlist($link); foreach($nxt_registered['account'] as $key => $val){ //Erre a nextcloud "occ" parancs hibakezelése miatt van szükség if(@$nxt_user[$val] === null ){ if ($log['verbose'] > 4 ){ echo "**-\tFelhasználónév:".po("\t($val)",$m2n['felhasznalo_hossz'],1)."--\tkivéve a nyilvántartásból.";} - nxt_register_userdel($link, $val); + nxt_registered_userdel($link, $val); } } -- cgit v1.2.3