aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorM.Gergo2020-03-17 15:15:35 +0100
committerM.Gergo2020-03-17 15:15:35 +0100
commitf743e2207021b40b3b224066de093610423e5102 (patch)
tree46a1c22cac8f7ee886b5caf6b846e6f4cf8cc8c9
parent5a255e018ff18065c8e49f42bcc107c4f67132cb (diff)
downloadmayor-f743e2207021b40b3b224066de093610423e5102.tar.gz
mayor-f743e2207021b40b3b224066de093610423e5102.zip
Mayor-Nextcloud script: refactoring
-rw-r--r--egyéb/nextcloud/mayor-nextcloud.cfg.php66
-rw-r--r--egyéb/nextcloud/mayor-nextcloud.php38
2 files changed, 56 insertions, 48 deletions
diff --git a/egyéb/nextcloud/mayor-nextcloud.cfg.php b/egyéb/nextcloud/mayor-nextcloud.cfg.php
index 0343d3f2..41e75191 100644
--- a/egyéb/nextcloud/mayor-nextcloud.cfg.php
+++ b/egyéb/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éb/nextcloud/mayor-nextcloud.php b/egyéb/nextcloud/mayor-nextcloud.php
index 9f987bc7..da1e23f0 100644
--- a/egyéb/nextcloud/mayor-nextcloud.php
+++ b/egyéb/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);
}
}