diff --git a/src/main/java/org/olat/admin/cache/AllCachesController.java b/src/main/java/org/olat/admin/cache/AllCachesController.java index 4d9904ae5da23527fbc7ca4236d50c63900a69e3..c08092a0f396dd6698703c6c132858a149f59745 100644 --- a/src/main/java/org/olat/admin/cache/AllCachesController.java +++ b/src/main/java/org/olat/admin/cache/AllCachesController.java @@ -90,7 +90,6 @@ public class AllCachesController extends BasicController { tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("cache.disk", 1, null, getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("cache.hitcnt", 2, null, getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("cache.mcexp", 3, null, getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("cache.mcnotfound", 4, null, getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("cache.quickcount", 5, null, getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("cache.tti", 6, null, getLocale())); tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("cache.ttl", 7, null, getLocale())); @@ -205,7 +204,6 @@ public class AllCachesController extends BasicController { case 1: return c.getCacheConfiguration().storeAsBinary().enabled() ? Boolean.TRUE:Boolean.FALSE; case 2: return new Long(stats.getHits()); case 3: return new Long(stats.getMisses()); - case 4: return "???"; case 5: return new Long(stats.getTotalNumberOfEntries()); case 6: return new Long(c.getCacheConfiguration().expiration().maxIdle()); case 7: return new Long(c.getCacheConfiguration().expiration().lifespan()); diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_ar.properties index 01eae0849fcad83e22af90ab0c3484d1c8915589..4f2fac2b8d8fa0e318fea9b543b22c2878cb5e3c 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_ar.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_ar.properties @@ -4,8 +4,7 @@ cache.disk=\u0641\u0649 \u0627\u0644\u0642\u0631\u0635 cache.empty=\u0627\u0644\u0639\u0645\u0644\u064A\u0629 \u0627\u0644\u0641\u0648\u0631\u064A\u0629 cache.hitcnt=\u062A\u0644\u0645\u064A\u062D\u0627\u062A cache.maxElements=Max el -cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) +cache.mcexp=Misses cache.name=\u0627\u0644\u0627\u0633\u0645 cache.quickcount=\u0627\u0644\u0639\u0646\u0627\u0635\u0631 ~ cache.tti=\u0627\u0644\u0648\u0642\u062A \u0644\u0644\u062E\u0645\u0648\u0644 - \u062B\u0627\u0646\u064A\u0629 diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_bg.properties index 690402fef4f1dc7d42391692358f4e01bed17305..cfddbf81e79f09b8cadf2e85bbd402f2d2954999 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_bg.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_bg.properties @@ -4,8 +4,7 @@ cache.disk=\u041D\u0430 \u0434\u0438\u0441\u043A cache.empty=\u041A\u0435\u0448 \u043F\u0430\u043C\u0435\u0442 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F cache.hitcnt=\u041F\u043E\u0441\u0435\u0449\u0435\u043D\u0438\u044F cache.maxElements=Max el -cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) +cache.mcexp=Misses cache.name=\u0418\u043C\u0435 cache.quickcount=~ \u0415\u043B\u0435\u043C\u0435\u043D\u0442\u0438 cache.tti=\u0412\u0440\u0435\u043C\u0435 \u0434\u043E \u0445\u0438\u0431\u0435\u0440\u043D\u0430\u0446\u0438\u044F (\u0441\u0435\u043A\u0443\u043D\u0434\u0438) diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_cs.properties index 54c7bb3532c51a82526f7a89b8637b6d4abd2903..92336086528a350095dbcf3f434bb5e1cc02b301 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_cs.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_cs.properties @@ -5,10 +5,9 @@ cache.empty=Cache operace cache.hitcnt=Z\u00E1sahy cache.maxElements=Max el cache.mcexp=Zme\u0161k\u00E1n\u00ED (projeven\u00E1) -cache.mcnotfound=Zme\u0161k\u00E1n\u00ED (nenalezen\u00E1) cache.name=Jm\u00E9no cache.quickcount=~ Elementy -cache.tti=\u010Das idle (sec) -cache.ttl=\u010Das live (sec) +cache.tti=\u010Das idle (millisec) +cache.ttl=\u010Das live (millisec) caches.title=P\u0159ehled EHCache (jednoduch\u00E1 uspan\u00E1 cache) confirm.emptycache=Chcete smazat v\u0161echny z\u00E1znamy v t\u00E9to cache? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_da.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_da.properties index 9e73321e0a613159c35eb42fa5cc779e1c6ff5cf..cd7d747c20f756e972f5ac69f6b87fcb7490375f 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_da.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_da.properties @@ -4,7 +4,6 @@ cache.disk=P\u00E5 harddisk cache.empty=Cache operation cache.hitcnt=Hits cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (ikke fundet) cache.name=Navn cache.quickcount=~ elementer caches.title=Oversigt over Cache diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_de.properties index eee0b21646ab06e84240931a2a8ccd1e83275948..35f061f1dc676a04d1907d6f77a47ce9419245d3 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_de.properties @@ -1,15 +1,14 @@ #Mon Mar 02 09:54:03 CET 2009 -action.choose=leeren +action.choose=Leeren cache.disk=Auf HD cache.empty=Cache Operation -cache.hitcnt=Hit +cache.hitcnt=Hits cache.maxElements=Max el -cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) +cache.mcexp=Misses cache.name=Name cache.quickcount=~ Elemente -cache.tti=Time to idle (sec) -cache.ttl=Time to live (sec) +cache.tti=Max idle (millisec) +cache.ttl=Lifespan (millisec) cache.clustered=Clustered caches.title=\u00DCbersicht der Caches confirm.emptycache=Wollen Sie alle Eintr\u00E4ge dieses Cache l\u00F6schen? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_el.properties index eb915de4c55443cd030e912813989fb314cc993a..55aacbb945843b9a36c0d07fd78d47fdb43651c1 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_el.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_el.properties @@ -5,7 +5,6 @@ cache.empty=\u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 Cache cache.hitcnt=Hits cache.maxElements=Max el cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) cache.name=\u038C\u03BD\u03BF\u03BC\u03B1 cache.quickcount=~ \u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 cache.tti=\u03A7\u03C1\u03CC\u03BD\u03BF\u03C2 \u0391\u03B4\u03C1\u03AC\u03BD\u03B5\u03B9\u03B1\u03C2 (\u03B4\u03B5\u03C5\u03C4.) diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_en.properties index 02b7861cd5ea5c2579cc75558bb3a2eac528507c..49b12a6c1dd795b3fe91bdf7a7c2742c6874f601 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_en.properties @@ -4,11 +4,11 @@ cache.disk=On HD cache.empty=Cache operation cache.hitcnt=Hits cache.maxElements=Max el -cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) +cache.mcexp=Misses cache.name=Name cache.quickcount=~ Elements -cache.tti=Time to idle (sec) -cache.ttl=Time to live (sec) +cache.tti=Max idle (millisec) +cache.ttl=Lifespan (millisec) +cache.clustered=Clustered caches.title=Overview of caches confirm.emptycache=Do you really want to delete all entries in this cache? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_es.properties index bfe0c33c14555f1d57f155b2afd3515b2e44eebb..ce770f537981aed65ad89904e3d7c84bad02325f 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_es.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_es.properties @@ -5,10 +5,9 @@ cache.empty=Operaci\u00F3n de cach\u00E9 cache.hitcnt=Aciertos cache.maxElements=Max elementos cache.mcexp=Perdido (exp) -cache.mcnotfound=Perdido (notfnd) cache.name=Nombre cache.quickcount=~ Elementos -cache.tti=Tiempo hasta idle (sec) -cache.ttl=Tiempo hasta live (sec) +cache.tti=Tiempo hasta idle (millisec) +cache.ttl=Tiempo hasta live (millisec) caches.title=Visi\u00F3n general de caches confirm.emptycache=\u00BFDesea eliminar todas las entradas de esta cach\u00E9? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_fa.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_fa.properties index cc214e219b8ff776ad22e9578ccfc72cb9c74031..6b3e2b7c586e9f91ac620e82e7f4c6a7109c2d1b 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_fa.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_fa.properties @@ -4,7 +4,6 @@ cache.disk=On disk cache.empty=Cache operation cache.hitcnt=Hits cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) cache.name=Name cache.quickcount=~ Elements caches.title=Overview of caches diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_fr.properties index c507966831cd3f60f3f437382c2ac6d8fde229ac..45d9ff10b60a1aa3ad0ddafab501f26c7d35dc62 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_fr.properties @@ -1,14 +1,13 @@ #Mon Mar 02 09:54:07 CET 2009 -action.choose=vider +action.choose=Vider cache.disk=Sur HD -cache.empty=Cache Operation -cache.hitcnt=Hit -cache.maxElements=Max el -cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) +cache.empty=Cache op\u00E9ration +cache.hitcnt=Hits +cache.maxElements=Max. \u00E9l. +cache.mcexp=Misses cache.name=Nom cache.quickcount=~ \u00E9l\u00E9ments -cache.tti=Time to idle (sec) -cache.ttl=Time to live (sec) +cache.tti=Max idle (millisec) +cache.ttl=Lifespan (millisec) caches.title=Aper\u00E7u des caches confirm.emptycache=Voulez-vous effacer tous le contenu de ce cache? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_it.properties index c5ea7139a875cce0c1f2de1cd3fbe2051e8fe88b..624854729ba0037e2634be5e706247b78dec77a6 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_it.properties @@ -5,10 +5,9 @@ cache.empty=Cache Operation cache.hitcnt=Hit cache.maxElements=Max el cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) cache.name=Nome cache.quickcount=~ Elementi -cache.tti=Time to idle (sec) -cache.ttl=Time to live (sec) +cache.tti=Time to idle (millisec) +cache.ttl=Time to live (millisec) caches.title=Visone d'insieme delle caches confirm.emptycache=Vuole eliminare tutte le entrate di questa cache? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_lt.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_lt.properties index f763f548faa6ae975b7e9497eb2284cd22490f0f..8899828f6146a38e731f304f20d52aa06248bd0f 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_lt.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_lt.properties @@ -4,7 +4,6 @@ cache.disk=Diske cache.empty=Pagalbin\u0117s atminties operacija cache.hitcnt=Parodymai cache.mcexp=Nerasta (exp) -cache.mcnotfound=Nerasta (notfnd) cache.name=Pavadinimas cache.quickcount=~ Elementai caches.title=EHCache (palengvinan\u010Dioji \u201Ehibernate\u201C funkcijos atminties) ap\u017Evalga diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_nl_NL.properties index 7b86cbe10cb6bee6c983b6fa2c3551bb00eea4ce..d76fd426718ffe25c6fee45b05bdc60c9ac0d1e7 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_nl_NL.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_nl_NL.properties @@ -5,10 +5,9 @@ cache.empty=Cache operatie cache.hitcnt=Hits cache.maxElements=Max el cache.mcexp=Miss (exp) -cache.mcnotfound=Miss (notfnd) cache.name=Name cache.quickcount=~ Elements -cache.tti=Time to idle (sec) -cache.ttl=Time to live (sec) +cache.tti=Max idle (millisec) +cache.ttl=Lifespan (millisec) caches.title=Overzicht van caches confirm.emptycache=Weet u zeker dat u alle bijdragen uit deze cache wilt verwijderen? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pl.properties index 4482efc267c49cb85a595f4f2cdc2ebe99d3be10..045761e1eab885e54b1b808d779ffb33a528d744 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pl.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pl.properties @@ -4,11 +4,10 @@ cache.disk=Na dysku cache.empty=Operacje cache.hitcnt=U\u017Cycia cache.maxElements=Max el -cache.mcexp=Chybiony (exp) -cache.mcnotfound=Chybiony (notfnd) +cache.mcexp=Chybiony cache.name=Nazwa cache.quickcount=~ Element\u00F3w -cache.tti=Time to idle (sec) -cache.ttl=Time to live (sec) +cache.tti=Max idle (millisec) +cache.ttl=Lifespan (millisec) caches.title=Og\u00F3lne informacje o EHCache confirm.emptycache=Chcesz wykasowa\u0107 wszystkie wpisy w tym schowku? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pt_BR.properties index ddc26aa23149c07ea2e91a563c05444d70badd5b..55d0aaae2f16db1488000e448d5f2446ad154085 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pt_BR.properties @@ -4,11 +4,10 @@ cache.disk=No disco cache.empty=Opera\u00E7\u00E3o cache cache.hitcnt=Batidas cache.maxElements=Elementos maximos -cache.mcexp=Falta (exp) -cache.mcnotfound=Falta (notfnd) +cache.mcexp=Falta cache.name=Nome cache.quickcount=~ Elementos -cache.tti=Tempo para dormir (sec) -cache.ttl=Tempo para ativar (sec) +cache.tti=Tempo para dormir (millisec) +cache.ttl=Tempo para ativar (millisec) caches.title=Vis\u00E3o geral de caches confirm.emptycache=Voc\u00EA quer apagar todos os itens neste cache? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pt_PT.properties index 7d641b1afe1486d826ad7cbd78ee53cfcd814df9..e0b048c41112c165344499d34e8ba300da366759 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pt_PT.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_pt_PT.properties @@ -3,8 +3,7 @@ action.choose=Vazio cache.disk=No disco cache.empty=Opera\u00E7\u00E3o cache cache.hitcnt=Batidas -cache.mcexp=Falta (exp) -cache.mcnotfound=Falta (notfnd) +cache.mcexp=Falta cache.name=Nome cache.quickcount=~ Elementos caches.title=Vis\u00E3o geral de caches diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_ru.properties index 33a9d93e889184637b2a32d7b7ff8f396bdfc152..e29e2854eeef73cd3cb9693c935cf539e89c4d25 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_ru.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_ru.properties @@ -5,7 +5,6 @@ cache.empty=\u041A\u044D\u0448 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F cache.hitcnt=hit cache.maxElements=\u041C\u0430\u043A\u0441 \u044D\u043B cache.mcexp=miss (exp) -cache.mcnotfound=miss (notfnd) cache.name=\u0418\u043C\u044F cache.quickcount=~ \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 cache.tti=\u0412\u0440\u0435\u043C\u044F \u0434\u043E idle (\u0441\u0435\u043A) diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_sq.properties index 79bba5858491afcb3e361f0ae5982f35b2644f95..d1a305951d2b288a9b3c7f8b2b69ee2958572a87 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_sq.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_sq.properties @@ -5,10 +5,9 @@ cache.empty=Operacioni i Cashe cache.hitcnt=Goditje cache.maxElements=El maks cache.mcexp=Mungon (exp) -cache.mcnotfound=Mungon (notfnd) cache.name=Emri cache.quickcount=~ Elemente -cache.tti=Koha p\u00EBr amulluar (sek) -cache.ttl=Koha p\u00EBr t\u00EB gjall\u00EBruar (sek) +cache.tti=Koha p\u00EBr amulluar (millisek) +cache.ttl=Koha p\u00EBr t\u00EB gjall\u00EBruar (millisek) caches.title=Mbishikimi i caches confirm.emptycache=A doni t'i fshini t\u00EB gjitha t\u00EB hyrat n\u00EB k\u00EBt\u00EB cache? diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_zh_CN.properties index ecc302a111b1da911671cc0715fe9035ebecc505..c4be31911456ac36498a7ee88ea8f10cb92eeb9e 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_zh_CN.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_zh_CN.properties @@ -4,8 +4,7 @@ cache.disk=\u5728\u78C1\u76D8\u4E0A cache.empty=\u7F13\u5B58\u64CD\u4F5C cache.hitcnt=\u6572\u51FB cache.maxElements=\u6700\u5927\u9AD8\u5EA6 -cache.mcexp=\u4E22\u5931(\u5F02\u5E38) -cache.mcnotfound=\u4E22\u5931(\u672A\u627E\u5230) +cache.mcexp=\u4E22\u5931 cache.name=\u540D\u79F0 cache.quickcount=~\u5143\u7D20 cache.tti=\u95F2\u7F6E\u65F6\u95F4(\u5206\u949F) diff --git a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_zh_TW.properties index 667cdbb2bd2dcbf1c91e27dd15a865f9056c7e9b..04fc43706c21b6d5de81a46770c5f3d5b549d9cf 100644 --- a/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_zh_TW.properties +++ b/src/main/java/org/olat/admin/cache/_i18n/LocalStrings_zh_TW.properties @@ -4,8 +4,7 @@ cache.disk=\u5728\u78C1\u789F\u4E0A cache.empty=\u5FEB\u53D6\u64CD\u4F5C cache.hitcnt=\u547D\u4E2D cache.maxElements=\u6700\u5927\u5143\u7D20 -cache.mcexp=\u5931\u8AA4(\u903E\u6642) -cache.mcnotfound=\u5931\u8AA4(\u627E\u4E0D\u5230) +cache.mcexp=\u5931\u8AA4 cache.name=\u540D\u7A31 cache.quickcount=~ \u5143\u7D20 cache.tti=\u9592\u7F6E\u6642\u9593(\u79D2) diff --git a/src/main/java/org/olat/commons/servlets/WebDAVManagerImpl.java b/src/main/java/org/olat/commons/servlets/WebDAVManagerImpl.java index dda2ab735210ed55197ad31564a2b2d1b97e074c..87559b610258f21bb705420c781d4d9a5a11227b 100644 --- a/src/main/java/org/olat/commons/servlets/WebDAVManagerImpl.java +++ b/src/main/java/org/olat/commons/servlets/WebDAVManagerImpl.java @@ -35,7 +35,6 @@ import javax.servlet.http.HttpServletResponse; import org.olat.admin.user.delete.service.UserDeletionManager; import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.BaseSecurityModule; -import org.olat.core.CoreSpringFactory; import org.olat.core.id.Identity; import org.olat.core.id.Roles; import org.olat.core.id.User; @@ -66,7 +65,7 @@ public class WebDAVManagerImpl extends WebDAVManager { private static final String BASIC_AUTH_REALM = "OLAT WebDAV Access"; private CoordinatorManager coordinatorManager; - private CacheWrapper timedSessionCache; + private CacheWrapper<String,UserSession> timedSessionCache; private UserSessionManager sessionManager; /** @@ -88,6 +87,7 @@ public class WebDAVManagerImpl extends WebDAVManager { /** * @see org.olat.commons.servlets.WebDAVManager#handleAuthentication(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ + @Override protected boolean handleAuthentication(HttpServletRequest req, HttpServletResponse resp) { UserSession usess = handleBasicAuthentication(req, resp); if (usess == null) return false; @@ -101,12 +101,12 @@ public class WebDAVManagerImpl extends WebDAVManager { /** * @see org.olat.commons.servlets.WebDAVManager#getUserSession(javax.servlet.http.HttpServletRequest) */ + @Override protected UserSession getUserSession(HttpServletRequest req) { return (UserSession)req.getAttribute(SecureWebdavServlet.REQUEST_USERSESSION_KEY); } private UserSession handleBasicAuthentication(HttpServletRequest request, HttpServletResponse response) { - if (timedSessionCache == null) { synchronized (this) { timedSessionCache = coordinatorManager.getCoordinator().getCacher().getCache(WebDAVManager.class.getSimpleName(), "webdav"); @@ -117,7 +117,7 @@ public class WebDAVManagerImpl extends WebDAVManager { String authHeader = request.getHeader("Authorization"); if (authHeader != null) { // fetch user session from a previous authentication - UserSession usess = (UserSession)timedSessionCache.get(authHeader); + UserSession usess = timedSessionCache.get(authHeader); if (usess != null && usess.isAuthenticated()) { return usess; } @@ -130,12 +130,12 @@ public class WebDAVManagerImpl extends WebDAVManager { if (basic.equalsIgnoreCase("Basic")) { String credentials = st.nextToken(); usess = handleBasicAuthentication(credentials, request); - } } if(usess != null) { timedSessionCache.put(authHeader, usess); + return usess; } } diff --git a/src/main/java/org/olat/core/defaults/dispatcher/StaticMediaDispatcher.java b/src/main/java/org/olat/core/defaults/dispatcher/StaticMediaDispatcher.java index 81da68e9ac51a074ed4de89e00974e74a9ccac2b..abb680df39760e210c14189b1bd1d402231091dc 100644 --- a/src/main/java/org/olat/core/defaults/dispatcher/StaticMediaDispatcher.java +++ b/src/main/java/org/olat/core/defaults/dispatcher/StaticMediaDispatcher.java @@ -72,7 +72,8 @@ public class StaticMediaDispatcher extends LogDelegator implements Dispatcher { * @see org.olat.core.dispatcher.Dispatcher#execute(javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse, java.lang.String) */ - public void execute(HttpServletRequest request, HttpServletResponse response, @SuppressWarnings("unused") String uriPrefix) { + @Override + public void execute(HttpServletRequest request, HttpServletResponse response, String uriPrefix) { String pathInfo = request.getPathInfo(); if (pathInfo == null) { // huh? What's this, send not found, don't know what to do here @@ -91,7 +92,14 @@ public class StaticMediaDispatcher extends LogDelegator implements Dispatcher { else { // version provided - remove it String version = Settings.getBuildIdentifier(); - staticRelPath = pathInfo.substring(mapperPath.length() + 1 + version.length(), pathInfo.length()); + int start = mapperPath.length() + 1 + version.length(); + int end = pathInfo.length(); + if(start <= end) { + staticRelPath = pathInfo.substring(start, end); + } else { + ServletUtil.serveResource(request, response, new NotFoundMediaResource("error")); + return; + } } // remove any .. in the path diff --git a/src/main/java/org/olat/core/servlets/OLATServlet.java b/src/main/java/org/olat/core/servlets/OLATServlet.java index 12ce7be175c33dfbe68dd4d23ba9aebfab6ff7a5..d3f47db923930616b89c7bf60c5cf9bafdba16e0 100644 --- a/src/main/java/org/olat/core/servlets/OLATServlet.java +++ b/src/main/java/org/olat/core/servlets/OLATServlet.java @@ -96,6 +96,22 @@ public class OLATServlet extends HttpServlet { public void destroy() { // } + + + /** + * Filter BitKinex at the root + */ + @Override + public void service(HttpServletRequest req, HttpServletResponse res) + throws ServletException, IOException { + String userAgent = req.getHeader("User-Agent"); + if(userAgent != null && userAgent.indexOf("BitKinex") >= 0) { + //BitKinex isn't allow to see this context + res.sendError(HttpServletResponse.SC_FORBIDDEN); + } else { + super.service(req, res); + } + } /** * Called when the HTTP request method is GET. This method just calls the diff --git a/src/main/java/org/olat/core/servlets/SecureWebdavServlet.java b/src/main/java/org/olat/core/servlets/SecureWebdavServlet.java index d4d2ce5abc656206b28b2a069593ad786452bd5e..fdc2ae14b115c1706fed7f593cf1f322172ae746 100644 --- a/src/main/java/org/olat/core/servlets/SecureWebdavServlet.java +++ b/src/main/java/org/olat/core/servlets/SecureWebdavServlet.java @@ -57,10 +57,12 @@ import org.apache.naming.resources.Resource; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.helpers.Settings; import org.olat.core.id.Identity; -import org.olat.core.logging.DBRuntimeException; import org.olat.core.logging.OLATRuntimeException; +import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import org.olat.core.logging.activity.ThreadLocalUserActivityLoggerInstaller; import org.olat.core.util.UserSession; +import org.olat.core.util.WorkThreadInformations; import org.olat.core.util.i18n.I18nManager; import org.olat.core.util.servlets.DOMWriter; import org.olat.core.util.servlets.RequestUtil; @@ -86,6 +88,9 @@ import org.xml.sax.InputSource; public class SecureWebdavServlet extends DefaultServlet { + private static final long serialVersionUID = -4935604508424445093L; + private static final OLog log = Tracing.createLoggerFor(SecureWebdavServlet.class); + // -------------------------------------------------------------- Constants public static final String REQUEST_USERSESSION_KEY = "__usess"; @@ -266,36 +271,55 @@ public class SecureWebdavServlet return documentBuilder; } - /** - * Handles the special WebDAV methods. + * Wrap the request around the same calls as the OLATServlet */ - protected void service(HttpServletRequest req, HttpServletResponse resp) + protected void service(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException { - boolean success = false; try { - Tracing.setUreq(req); - I18nManager.attachI18nInfoToThread(req); - + Tracing.setUreq(request); + I18nManager.attachI18nInfoToThread(request); + ThreadLocalUserActivityLoggerInstaller.initUserActivityLogger(request); + //fxdiff FXOLAT-97: high CPU load tracker + WorkThreadInformations.set("Serve request: " + request.getRequestURI()); + + secureService(request, resp); + + } finally { + //fxdiff FXOLAT-97: high CPU load tracker + WorkThreadInformations.unset(); + ThreadLocalUserActivityLoggerInstaller.resetUserActivityLogger(); + I18nManager.remove18nInfoFromThread(); + Tracing.setUreq(null); + DBFactory.getInstanceForClosing().closeSession(); + } + } + + /** + * Handles the special WebDAV methods. + */ + protected void secureService(HttpServletRequest req, HttpServletResponse resp) { + try { String method = req.getMethod(); String path = getRelativePath(req); // OLAT-6294 alsways set encoding to UTF-8, overwritten later when a resource is different resp.setCharacterEncoding("UTF-8"); - - if (debug > 0) { - Tracing.logDebug("[" + method + "] " + path, SecureWebdavServlet.class); - } + if (debug > 0) { + log.debug("[" + method + "] " + path); + } - // security check; response header will be set appropriately - // returns false if security check failed. + // security check; response header will be set appropriately + // returns false if security check failed. - if (webDAVManager == null) { - // is not initialized properly - return; - } - boolean authenticated = webDAVManager.handleAuthentication(req, resp); - if (!authenticated) return; + if (webDAVManager == null) { + // is not initialized properly + return; + } + boolean authenticated = webDAVManager.handleAuthentication(req, resp); + if (!authenticated) { + return; + } if (method.equals(METHOD_PROPFIND)) { doPropfind(req, resp); @@ -326,28 +350,16 @@ public class SecureWebdavServlet // DefaultServlet processing super.service(req, resp); } - DBFactory.getInstance(false).commitAndCloseSession(); - success = true; } catch (Exception e) { - Tracing.logError("Exception in WebDAV request", e, SecureWebdavServlet.class); + log.error("Exception in WebDAV request", e); throw new OLATRuntimeException(this.getClass(), "Exception in SecureWebDavServlet.", e); } catch (Error er) { - Tracing.logError("Error in WebDAV request", er, SecureWebdavServlet.class); + log.error("Error in WebDAV request", er); throw new OLATRuntimeException(this.getClass(), "Error in SecureWebDavServlet.", er); } catch (Throwable er) { - Tracing.logError("Throwable in WebDAV request", er, SecureWebdavServlet.class); + log.error("Throwable in WebDAV request", er); throw new OLATRuntimeException(this.getClass(), "Throwable in SecureWebDavServlet.", er); - } finally { - try { - if (!success) { - DBFactory.getInstance(false).rollbackAndCloseSession(); - } - } finally { - I18nManager.remove18nInfoFromThread(); - // clear user request in thread local of Tracing, as it is no longer needed - Tracing.setUreq(null); - } - } + } } ///////////////////////////////////////////// diff --git a/src/main/java/org/olat/core/util/SessionInfo.java b/src/main/java/org/olat/core/util/SessionInfo.java index a8bab833fee06bf330ad7a74a91010a819f0970b..f86eeb136b1538145341b2acf053fc5036e226a4 100644 --- a/src/main/java/org/olat/core/util/SessionInfo.java +++ b/src/main/java/org/olat/core/util/SessionInfo.java @@ -26,6 +26,8 @@ package org.olat.core.util; +import java.io.Serializable; + import javax.servlet.http.HttpSession; import org.olat.admin.sysinfo.manager.SessionStatsManager; @@ -38,11 +40,13 @@ import org.olat.core.gui.Windows; * * @author Mike Stock */ -public class SessionInfo { +public class SessionInfo implements Serializable { + private static final long serialVersionUID = -380173272533291504L; + private Long identityKey; private String login; - private HttpSession session; + private transient HttpSession session; private String firstname; private String lastname; private String fromIP; diff --git a/src/main/java/org/olat/core/util/UserSession.java b/src/main/java/org/olat/core/util/UserSession.java index 34c4ae7f104297c8e5aa3f491152a73c5149f364..45aaaa3b2222795697dc52eed81b5d1bf071fc6d 100644 --- a/src/main/java/org/olat/core/util/UserSession.java +++ b/src/main/java/org/olat/core/util/UserSession.java @@ -75,7 +75,7 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList // the environment (identity, locale, ..) of the identity private IdentityEnvironment identityEnvironment; - private transient SessionInfo sessionInfo; + private SessionInfo sessionInfo; private transient Map<String,Object> store; /** * things to put into that should not be clear when signing on (e.g. remember url for a direct jump) diff --git a/src/main/java/org/olat/core/util/cache/infinispan/InfinispanCacher.java b/src/main/java/org/olat/core/util/cache/infinispan/InfinispanCacher.java index 8f2755d04eff9dde3bd380093c644e7935c2d5a9..a46a07332e5a5f619967144c470dae36219c8f88 100644 --- a/src/main/java/org/olat/core/util/cache/infinispan/InfinispanCacher.java +++ b/src/main/java/org/olat/core/util/cache/infinispan/InfinispanCacher.java @@ -81,7 +81,7 @@ public class InfinispanCacher implements Cacher { CacheConfig oConfig = configs.get(type); if(oConfig != null) { maxEntries = oConfig.getMaxElementsInMemory(); - maxIdle = oConfig.getTimeToIdle(); + maxIdle = oConfig.getTimeToIdle() * 1000;//convert seconds of ehcache to milliseconds of infinispan } ConfigurationBuilder builder = new ConfigurationBuilder(); builder.eviction().strategy(EvictionStrategy.LRU); diff --git a/src/main/resources/infinispan-config.xml b/src/main/resources/infinispan-config.xml index 07d47f89995086077546bad5a4461470d2586484..4ba5419195db9b355c4f00deb52c2bf95f2e3a86 100644 --- a/src/main/resources/infinispan-config.xml +++ b/src/main/resources/infinispan-config.xml @@ -45,6 +45,14 @@ <expiration maxIdle="900000" wakeUpInterval="5000"/> <transaction transactionMode="NON_TRANSACTIONAL" /> </namedCache> + + <namedCache name="WebDAVManager@webdav"> + <locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/> + <eviction maxEntries="2013" strategy="LRU"/> + <expiration maxIdle="900000" wakeUpInterval="5000"/> + <transaction transactionMode="NON_TRANSACTIONAL" /> + </namedCache> + <!-- Hibernate cache