aboutsummaryrefslogtreecommitdiffstats
path: root/egyéb
diff options
context:
space:
mode:
Diffstat (limited to 'egyéb')
-rw-r--r--egyéb/munin/README98
-rw-r--r--egyéb/munin/README.md91
-rwxr-xr-xegyéb/munin/mayor_munin.php152
-rw-r--r--egyéb/nextcloud/mayor-nextcloud.cfg.php243
-rw-r--r--egyéb/nextcloud/mayor-nextcloud.php289
5 files changed, 552 insertions, 321 deletions
diff --git a/egyéb/munin/README b/egyéb/munin/README
deleted file mode 100644
index a0ad5eb8..00000000
--- a/egyéb/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éb/munin/README.md b/egyéb/munin/README.md
new file mode 100644
index 00000000..c8eb91e4
--- /dev/null
+++ b/egyéb/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éb/munin/mayor_munin.php b/egyéb/munin/mayor_munin.php
index 92fc264d..dfb92efc 100755
--- a/egyéb/munin/mayor_munin.php
+++ b/egyéb/munin/mayor_munin.php
@@ -1,19 +1,26 @@
#!/usr/bin/env php
<?php
-
+$ret = array();
+$set['host'] = getenv('host');
+$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";
$set['db_pass'] = "";
$set['db_db'] = "mayor_login";
$set['db_host'] = "localhost";
-$set['naplo_host'] = "mayor.iskolaneve.hu";
+$set['host'] = "mayor.iskolaneve.hu";
$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 = "host_name ".$set['host']."\n";
$cf .= "graph_title Napló rendszerterhelés (Mayor)\n";
$cf .= "graph_args --base 1000 \n";
$cf .= "graph_vlabel db/fő\n";
@@ -22,100 +29,139 @@ 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ó +(a villámgyorsak)\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";
+
+ $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;
} else {
if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7 ) { //MySQLi (Improved) és php7 kell!!!
-
+ $ret['ip_sum'] = 0;
$ret['ip_b'] = 0;
$ret['ip_k'] = 0;
$ret['p_pri'] = 0;
$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_sum'] = "U";
+ $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éb/nextcloud/mayor-nextcloud.cfg.php b/egyéb/nextcloud/mayor-nextcloud.cfg.php
index 205f6714..35ac1619 100644
--- a/egyéb/nextcloud/mayor-nextcloud.cfg.php
+++ b/egyéb/nextcloud/mayor-nextcloud.cfg.php
@@ -24,13 +24,15 @@ $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_groupdirs'] = 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";
@@ -50,54 +52,204 @@ $m2n['infotxt_szöveg'] = <<<EOT
FONTOS INFORMÁCIÓK!
-Ez a mappa, és a benne lévő mappák, a távoktatás segítésére, egyszerűsítésére szolgálnak.
+Ez a mappa, és a benne lévő mappák, a távoktatás segítésére,
+egyszerűsítésére szolgálnak.
-Fontos tudni, hogy ha megosztunk egy, a mi mappánkon belüli fájlt, vagy mappát, egy másik felhasználóval a felhőben, akkor a megosztott fájl, vagy mappa, a másik felhasználónak a kezdőoldalán jelenik meg, a fájlok között.
-Egy idő után, ha az illető, már nagyon sok megosztást fogadott, a rengeteg fájl már számára egy átláthatatlan mappa-tengert fog képezni, és nagyon nehéz lesz benne eligazodnia.
+Fontos tudni, hogy ha megosztunk egy, a mi mappánkon belüli fájlt,
+vagy mappát, egy másik felhasználóval a felhőben, akkor a megosztott
+fájl, vagy mappa, a másik felhasználónak a kezdőoldalán jelenik meg,
+a fájlok között.
+
+Egy idő után, ha az illető, már nagyon sok megosztást fogadott,
+a rengeteg fájl már számára egy átláthatatlan mappa-tengert fog képezni,
+és nagyon nehéz lesz benne eligazodnia.
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 tanított (e-napló szerint) tanköröknek megfelelő mappákat automatikusan.
+A tanátoknak a szerver automatikusan létrehoz egy, a távoktatásra
+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.
+
+
+A működési szabályok:
+
+1) A tanár ezekbe a mappákba helyezheti el a diákoknak szánt fájlokat.
+ (Ha akarja, ez nem kötelező, csak segítség.)
-A használati szabályok:
-1) A tanár ezekbe a mappákba helyezi/helyezheti el a diákoknak szánt fájlokat.
2) A tanár ezeket a mappákat osztja meg a diákcsoportokkal.
-3) A diák ezekben a mappákban helyezi el a nyilvánosan visszaküldendő fájlokat, képeket. (Ezt a mappát, a tankör összes tagja látja, amelyik tankörrel megosztottuk.)
-4) A diák, a privát módon visszaküldendő fájlokat, a tanárral való megegyezés szerint, lehetőleg ne ebbe a mappába helyezze el, azt egyszerűen ossza meg a tanárával.
-5) A Tankörmappákban a fájlok rendjét a tanár határozza/határozhatja meg.
-6) A tankörmappák gyűjtőmappájában a rendet a szerver tartja, oda egyéb fájl, nem helyezhető. Ha mégis kerülne oda egyéb fájl akkor, arról a szerver, a tanárt először értesíti, majd később a fájt automatikusan törli.
+
+3) A diák ezekben a mappákban helyezi el a nyilvánosan visszaküldendő
+ fájlokat, képeket. (Ezt a mappát, a tankör összes tagja látja,
+ amelyik tankörrel, vagy csoporttal megosztottuk.
+ A megosztást nekünk, kézzel kell elvégezni, az nem történik
+ meg automatikusan.)
+
+4) A diák, a privát módon visszaküldendő fájlokat, a tanárral való
+ megegyezés szerint, lehetőleg ne ebbe a mappába helyezze el,
+ hanem azt egyszerűen ossza meg a tanárával, vagy valamilyen
+ 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 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, 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,
+ í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, 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ó
+ változás, csak másnap reggelre lép érvénybe.
+
Legyen egy gyakorlati példa:
-A tanár mappalistájában létrejön a gyűjtőmappa mondjuk: "Iskolai Távoktatás" névvel.
-Ezen, a "Iskolai Távoktatás" nevű mappán belül létrejön mondjuk, egy "(tk) 10.b fizika" és egy "(tk) 10.b osztályfőnöki" mappa.
-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, ha engedélyezi a szerkesztést, akkor a diák is helyezhet bele fájlokat, vagy szerkesztheti*** a fájlokat.
-Ha a tankörmappát megosztja a diákkal/tankörrel, akkor a diáknak nem egy csomó fájl, és nem is az "Iskolai Távoktatás" mappa fog megjelenni a kezdőoldalán, hanem az adott tankörmappa. Tehát, ha a tanár a "(tk) 10.b fizika" mappát osztja meg, 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.
+A tanár mappalistájában létrejön a gyűjtőmappa mondjuk:
+"Iskolai Távoktatás" névvel.
+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álhatnak.
-Viszont a "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!
-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.
+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.,
+ha engedélyezi a szerkesztést, akkor a diák is helyezhet bele
+fájlokat, vagy szerkesztheti*** a benne lévő fájlokat.
-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é, akkor onnantól azt is "idegen" mappának fogja tekinteni.
+Ha a tankörmappát megosztja a diákkal/ egész tankörrel,
+akkor a diáknak így már nem egy csomó fájl, rendezetlenül,
+és nem is az "Iskolai Távoktatás" nevű mappa fog megjelenni
+a kezdőoldalán, hanem az adott tankörmappa.
-Ugyanez történik akkor is, ha a tanár, (a naplóban) kikerül a tankörből, tehát nem tanítja tovább, vagy a tankör ugrik egyet évkezdéskor, és a "(tk) 10.b fizika"-ból "(tk) 11.b fizika" lesz, ekkor a, még ottmaradó "(tk) 10.b fizika" mappát szintén idegennek fogja tekinteni.
+Tehát, ha a tanár a "(tk) 10.b fizika" mappát osztja meg,
+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.
-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". )
+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
+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é,
+valami másra, akkor onnantól azt is "idegen" mappának fogja tekinteni.
+
+Ugyanez történik akkor is, ha a tanár, (a napló szerint) kikerül a
+tankörből, tehát nem tanítja tovább, vagy a tankör ugrik egyet
+évkezdéskor, és a "(tk) 10.b fizika"-ból "(tk) 11.b fizika" lesz,
+ekkor, a, még ottmaradó "(tk) 10.b fizika" mappát szintén
+idegennek fogja tekinteni.
+
+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
+évváltás van, és a tankör ugrik egyet:
+"(tk) 10.b fizika" --> "(tk) 11.b fizika". )
-*** Tipp:
+
+
+*** 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, 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, 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!
+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;
@@ -198,6 +350,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)
@@ -206,16 +360,18 @@ 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.
-
+
$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.
@@ -224,8 +380,11 @@ 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.)
// 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
@@ -238,14 +397,16 @@ 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.
+ //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,
+ 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.
@@ -256,14 +417,16 @@ 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:
-
- --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
+ 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 <username>: A távoktatást segítő könyvtárstruktúrát csak az <username> felhasználónak hozza létre.
+ --create-groupdir <username>: A távoktatást segítő könyvtárstruktúrát csak az <username> 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éb/nextcloud/mayor-nextcloud.php b/egyéb/nextcloud/mayor-nextcloud.php
index e08e4e50..a613c2ac 100644
--- a/egyéb/nextcloud/mayor-nextcloud.php
+++ b/egyéb/nextcloud/mayor-nextcloud.php
@@ -2,6 +2,7 @@
<?php
$db = array();
$m2n = array();
+$m2l = array();
////////////////////////////////////////////// Figyelem! az alábbi konfig automatikusan külön fájból töltődik, ha létezik a "mayor-nextcloud.cfg.php" fájl!! /////////////////////////////////
$db['host'] = "localhost";
$db['port'] = "3306";
@@ -15,12 +16,13 @@ $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) ";
$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');
@@ -29,8 +31,9 @@ $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['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";
@@ -39,27 +42,21 @@ $m2n['verbose'] = 3 ;
$occ_path = "/var/www/nextcloud/";
$occ_user = "www-data";
-$ALWAYS_SET_DIAK_QUOTA = false;
-$groupdir_user = "";
+
$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');
-$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] == "--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( $ALWAYS_SET_DIAK_QUOTA === true && $log['verbose'] < 4 ){ $log['verbose'] = 4; }
+
if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Improved) és php7 kell!
function db_connect(array $db){
@@ -91,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){
@@ -113,10 +110,26 @@ 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 = 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 \"".$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";
@@ -163,7 +176,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 +185,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 +194,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 +203,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"; }
@@ -201,10 +214,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);
}
@@ -212,15 +224,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
}
@@ -229,7 +241,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);
}
@@ -237,14 +249,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);
}
@@ -252,26 +264,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'] ;
}
@@ -280,33 +292,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);
}
@@ -316,21 +331,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);
}
@@ -339,14 +355,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);
}
@@ -354,56 +370,48 @@ 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"; }
- }
- if(!file_exists($occ_path."/data/".$user."/files/".$path)){ // Ha Még mindig nen könyvtár
- $ret = mkdir($occ_path."/data/".$user."/files/".$path, 0755, true); // Akkor létrehozza
+ $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($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;
}
- 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 ->\tFILE ERROR: \"".$occ_path."/data/".$user."/files/".$path."\" \t 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
+ $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 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."\" '";
+ $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);
}
- 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,32 +424,29 @@ 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);
$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");
+ 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! 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"; }
+ 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 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 );
+ // 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 {
@@ -450,46 +455,58 @@ 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
- global $groupdir_user, $m2n, $occ_path, $occ_user,$log;
+ 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(($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
- 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
- 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!");
- }
+ 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, $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, 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);
+ }
+ }
return $ret;
}
- 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
- }
+ 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);
+ }
+ }
+ return $ret;
+ }
}
- function groupdir_finish($user, $oktId, $path, $tankorei){
- global $groupdir_user, $m2n;
- $ret[0] = array();
- $ret[1] = array();
- $ret[2] = array();
- $ret[3] = array();
- if(($groupdir_user === "" || ($groupdir_user !== "" && $user == $groupdir_user)) && $oktId > 0 && $m2n['manage_groupdirs'] === true){
+ 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
}
- files_scan($user, $path); // Tankörmappa gyökér létrehozása
- $ret[3] = true;
+ 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;
}
@@ -527,7 +544,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
@@ -576,7 +593,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);
@@ -705,7 +722,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(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 ){
include($cfgfile);
@@ -713,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( $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";
@@ -787,22 +809,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'],
@@ -817,9 +842,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);
@@ -855,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";}
@@ -874,11 +901,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_tanar']){ //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);
+ 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
@@ -898,7 +926,7 @@ if (function_exists('mysqli_connect') and PHP_MAJOR_VERSION >= 7) { //MySQLi (Im
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ó
@@ -914,13 +942,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_tanar']){ //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);
+ 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);
+ $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";}
@@ -1006,8 +1034,9 @@ 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
-
+ $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";
}