diff --git a/src/main/java/org/olat/admin/policy/PolicyController.java b/src/main/java/org/olat/admin/policy/PolicyController.java deleted file mode 100644 index 95953ef8879a41cfcf3830b8a70c3b4ee33e3c87..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/PolicyController.java +++ /dev/null @@ -1,113 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.admin.policy; - -import java.util.List; - -import org.olat.basesecurity.BaseSecurityManager; -import org.olat.basesecurity.Policy; -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -import org.olat.core.gui.components.table.ColumnDescriptor; -import org.olat.core.gui.components.table.DefaultColumnDescriptor; -import org.olat.core.gui.components.table.DefaultTableDataModel; -import org.olat.core.gui.components.table.TableController; -import org.olat.core.gui.components.table.TableDataModel; -import org.olat.core.gui.components.table.TableGuiConfiguration; -import org.olat.core.gui.control.Event; -import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.control.controller.BasicController; -import org.olat.core.id.Identity; - -/** - * - * Description:<br> - * TODO: Class Description for PolicyController - * - */ -public class PolicyController extends BasicController { - - private TableController tableCtr; - - - /** - * caller of this constructor must make sure only olat admins come here - * - * @param ureq - * @param wControl - * @param identity - */ - public PolicyController(UserRequest ureq, WindowControl wControl, Identity identity) { - super(ureq, wControl); - - List<Policy> entries = BaseSecurityManager.getInstance().getPoliciesOfIdentity(identity); - TableDataModel<Policy> tdm = new PolicyTableDataModel(entries); - - TableGuiConfiguration tableConfig = new TableGuiConfiguration(); - - tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); - listenTo(tableCtr); - - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.secgroup", 0, null, ureq.getLocale(), ColumnDescriptor.ALIGNMENT_RIGHT)); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.policyimpl", 1, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceimplkey", 2, null, ureq.getLocale(), ColumnDescriptor.ALIGNMENT_RIGHT)); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.resourceimpltype", 3, null, ureq.getLocale())); - tableCtr.setTableDataModel(tdm); - - putInitialPanel(tableCtr.getInitialComponent()); - } - - public void event(UserRequest ureq, Component source, Event event) { - // no component events to listen to - } - - protected void doDispose() { - // - } - - private static class PolicyTableDataModel extends DefaultTableDataModel<Policy> { - - public PolicyTableDataModel(List<Policy> entries) { - super(entries); - } - - public int getColumnCount() { - // group key, permission, resource - return 4; - } - - public final Object getValueAt(int row, int col) { - Policy o = getObject(row); - switch(col) { - case 0: return o.getSecurityGroup().getKey(); - case 1: return o.getPermission(); - case 2: return o.getOlatResource().getResourceableId(); - case 3: return o.getOlatResource().getResourceableTypeName(); - } - return o; - } - } -} \ No newline at end of file diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_ar.properties deleted file mode 100644 index 5b3514d17dcb595f69944b1993d55bb1036be31e..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_ar.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Feb 22 11:02:29 CET 2010 -table.header.policyimpl=\u0633\u064A\u0627\u0633\u0629 -table.header.resourceimplkey=\u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u0635\u062F\u0631 -table.header.resourceimpltype=\u0646\u0648\u0639 \u0627\u0644\u0645\u0635\u062F\u0631 -table.header.secgroup=\u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0629 diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_bg.properties deleted file mode 100644 index 879a2bad1c24a82e4be5ee066e05626bd2dd6b02..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_bg.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon May 25 22:32:51 CEST 2009 -table.header.policyimpl=\u041F\u043E\u043B\u0438\u0442\u0438\u043A\u0430 -table.header.resourceimplkey=\u041A\u043B\u044E\u0447 \u0437\u0430 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B -table.header.resourceimpltype=\u0412\u0438\u0434 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B -table.header.secgroup=\u041A\u043B\u044E\u0447 \u0437\u0430 \u0433\u0440\u0443\u043F\u0430 diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_cs.properties deleted file mode 100644 index 6f82f20d2a93208e948e0f883a37a3db5db59af3..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_cs.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:13 CET 2009 -table.header.policyimpl=Politika -table.header.resourceimplkey=Zdrojov\u00FD kl\u00ED\u010D -table.header.resourceimpltype=Typ zdroje -table.header.secgroup=Skupinov\u00FD kl\u00ED\u010D diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_da.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_da.properties deleted file mode 100644 index 96044d50abf16202d2776365199bd4c02ac3d7b0..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_da.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:08 CET 2009 -table.header.policyimpl=Politik -table.header.resourceimplkey=Ressource n\u00F8gle -table.header.resourceimpltype=Ressource type -table.header.secgroup=Gruppen\u00F8gle diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_de.properties deleted file mode 100644 index 0ffe8cd0061a458d1b0b12b2edfa202659764283..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_de.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:03 CET 2009 -table.header.policyimpl=Policy -table.header.resourceimplkey=Resource-Key -table.header.resourceimpltype=Resource-Type -table.header.secgroup=GroupKey diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_el.properties deleted file mode 100644 index b8fba9929a588d11726523de40f968e200dbc225..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_el.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:15 CET 2009 -table.header.policyimpl=\u03A0\u03BF\u03BB\u03B9\u03C4\u03B9\u03BA\u03AE -table.header.resourceimplkey=\u039A\u03BB\u03B5\u03B9\u03B4\u03AF \u03C0\u03CC\u03C1\u03BF\u03C5 -table.header.resourceimpltype=\u03A4\u03CD\u03C0\u03BF\u03C2 \u03C0\u03CC\u03C1\u03BF\u03C5 -table.header.secgroup=\u039A\u03BB\u03B5\u03B9\u03B4\u03AF \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_en.properties deleted file mode 100644 index 61f555900778e3b1f721ff74364222c6dfb89ca1..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_en.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:17 CET 2009 -table.header.policyimpl=Policy -table.header.resourceimplkey=Resource key -table.header.resourceimpltype=Resource type -table.header.secgroup=Group key diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_es.properties deleted file mode 100644 index 574eee016fef363607d4c55ff3dcfec650d86f80..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_es.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:20 CET 2009 -table.header.policyimpl=Policy -table.header.resourceimplkey=Clave de recurso -table.header.resourceimpltype=Tipo de recurso -table.header.secgroup=Clave de grupo diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_fa.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_fa.properties deleted file mode 100644 index 34446ce38c42535c5477626be2ebd57921447edf..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_fa.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:12 CET 2009 -table.header.policyimpl=Policy -table.header.resourceimplkey=Resource key -table.header.resourceimpltype=Resource type -table.header.secgroup=Group key diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_fr.properties deleted file mode 100644 index 6e8fa15097ce373cebf0a0235f94a822f2c60a90..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_fr.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:07 CET 2009 -table.header.policyimpl=Policy -table.header.resourceimplkey=Resource-Key -table.header.resourceimpltype=Resource-Type -table.header.secgroup=GroupKey diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_it.properties deleted file mode 100644 index 5e2b4805d30acc828a2350cad85439b25997e23c..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_it.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:09 CET 2009 -table.header.policyimpl=Polizza diritti -table.header.resourceimplkey=Chiave di risorsa -table.header.resourceimpltype=Tipo di risorsa -table.header.secgroup=Chiave di gruppo diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_jp.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_jp.properties deleted file mode 100644 index fe06ccdeecef1a46b4a1b44163ec627323dc4fde..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_jp.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:00 CET 2009 -table.header.policyimpl=\u30DD\u30EA\u30B7\u30FC -table.header.resourceimplkey=\u30EA\u30BD\u30FC\u30B9\u30AD\u30FC -table.header.resourceimpltype=\u30EA\u30BD\u30FC\u30B9\u30BF\u30A4\u30D7 -table.header.secgroup=\u30B0\u30EB\u30FC\u30D7\u30AD\u30FC diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_lt.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_lt.properties deleted file mode 100644 index 669de79171d228b1ae8f942c68a0e44b677673c7..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_lt.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:01 CET 2009 -table.header.policyimpl=Politika -table.header.resourceimplkey=Resurs\u0173 raktas -table.header.resourceimpltype=Resurs\u0173 tipas -table.header.secgroup=Grup\u0117s raktas diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_nl_NL.properties deleted file mode 100644 index aa05bbe487606bc9ec7cf06a0a26d861ef69ec00..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_nl_NL.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Thu Sep 08 16:42:42 CEST 2011 -table.header.policyimpl=Policy -table.header.resourceimplkey=Resource key -table.header.resourceimpltype=Resource type -table.header.secgroup=Group key diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pl.properties deleted file mode 100644 index b65962af91945df8214c9d6293355417fda093f0..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pl.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:16 CET 2009 -table.header.policyimpl=Polisa -table.header.resourceimplkey=Klucz zasobu -table.header.resourceimpltype=Typ zasobu -table.header.secgroup=Klucz grupy diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pt_BR.properties deleted file mode 100644 index 39f0dd5796971dc7fcfcb0584a1f582882ad6aa4..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pt_BR.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:53:59 CET 2009 -table.header.policyimpl=Pol\u00EDtica -table.header.resourceimplkey=Chave de recurso -table.header.resourceimpltype=Tipo de recurso -table.header.secgroup=Chave de grupo diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pt_PT.properties deleted file mode 100644 index 6f11187a06aa2399d862ee0c682dea838fd2450e..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_pt_PT.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:04 CET 2009 -table.header.policyimpl=Pol\u00EDtica -table.header.resourceimplkey=Chave de recurso -table.header.resourceimpltype=Tipo de recurso -table.header.secgroup=Chave de grupo diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_ru.properties deleted file mode 100644 index d3ba530aa7116470d1216f2f54755d9ff4fcf02f..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_ru.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:18 CET 2009 -table.header.policyimpl=Policy -table.header.resourceimplkey=Resource-Key -table.header.resourceimpltype=Resource-Type -table.header.secgroup=GroupKey diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_sq.properties deleted file mode 100644 index 1065a860db13dd3fe642c0718830f18057168cb5..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_sq.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:11 CET 2009 -table.header.policyimpl=Politika -table.header.resourceimplkey=Kodi i burimeve -table.header.resourceimpltype=Lloji i burimeve -table.header.secgroup=\u00C7el\u00EBsi i gruput diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_zh_CN.properties deleted file mode 100644 index dc741c88d6690f0b30fe8a9a43cebf5f029f77dc..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_zh_CN.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:02 CET 2009 -table.header.policyimpl=\u65B9\u9488 -table.header.resourceimplkey=\u8D44\u6E90\u5173\u952E\u5B57 -table.header.resourceimpltype=\u8D44\u6E90\u7C7B\u578B -table.header.secgroup=\u7FA4\u7EC4\u5173\u952E\u5B57 diff --git a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_zh_TW.properties deleted file mode 100644 index cf8550520e70228f14d79c2689e07f84d2b5dd39..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/policy/_i18n/LocalStrings_zh_TW.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Mar 02 09:54:05 CET 2009 -table.header.policyimpl=\u653F\u7B56 -table.header.resourceimplkey=\u8CC7\u6E90\u9375 -table.header.resourceimpltype=\u8CC7\u6E90\u985E\u578B -table.header.secgroup=\u7FA4\u7D44\u9375 diff --git a/src/main/java/org/olat/admin/sysinfo/MRTGStatsDispatcher.java b/src/main/java/org/olat/admin/sysinfo/MRTGStatsDispatcher.java deleted file mode 100644 index 58e5a7636e901586317b2af1372b9224517f4aa3..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/admin/sysinfo/MRTGStatsDispatcher.java +++ /dev/null @@ -1,637 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.admin.sysinfo; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; -import java.util.logging.Level; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.olat.admin.sysinfo.manager.SessionStatsManager; -import org.olat.basesecurity.BaseSecurity; -import org.olat.basesecurity.BaseSecurityManager; -import org.olat.basesecurity.Constants; -import org.olat.basesecurity.SecurityGroup; -import org.olat.commons.coordinate.cluster.jms.ClusterEventBus; -import org.olat.commons.coordinate.cluster.jms.SimpleProbe; -import org.olat.core.CoreSpringFactory; -import org.olat.core.commons.persistence.DBQueryImpl; -import org.olat.core.dispatcher.Dispatcher; -import org.olat.core.dispatcher.DispatcherModule; -import org.olat.core.gui.control.DefaultController; -import org.olat.core.gui.media.ServletUtil; -import org.olat.core.id.Identity; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; -import org.olat.core.util.SessionInfo; -import org.olat.core.util.UserSession; -import org.olat.core.util.coordinate.CoordinatorManager; -import org.olat.core.util.session.UserSessionManager; -import org.olat.course.CourseModule; -import org.olat.instantMessaging.InstantMessagingModule; -import org.olat.repository.RepositoryEntry; -import org.olat.repository.RepositoryManager; -import org.olat.testutils.codepoints.client.CodepointClient; -import org.olat.testutils.codepoints.client.CommunicationException; -import org.olat.testutils.codepoints.client.Probe; -import org.olat.testutils.codepoints.client.StatId; -import org.olat.testutils.codepoints.server.Codepoint; - -/** - * Description:<br> - * Wraps the request to get MRTGStatistics into a dispatcher. - * - * <P> - * Initial Date: 13.06.2006 <br> - * @author patrickb - */ -public class MRTGStatsDispatcher implements Dispatcher { - - private static final OLog log = Tracing.createLoggerFor(MRTGStatsDispatcher.class); - - // default allows monitoring only from localhost - // "*" means allow from any host (not recommended in real world setups) - private String monitoringHost = "127.0.0.1"; - private long lastErrorCount = 0; - private String instanceId; - - private CodepointClient codepointClient_; - private Probe dispatchProbe_; - private Probe doInSyncEnterProbe_; - private Probe doInSyncInsideProbe_; - private Probe dbQueryListProbe_; - - private CoordinatorManager coordinatorManager; - - /** - * [spring only] - */ - private MRTGStatsDispatcher(CoordinatorManager coordinatorManager) { - this.coordinatorManager = coordinatorManager; - try{ - codepointClient_ = Codepoint.getLocalLoopCodepointClient(); - dispatchProbe_ = codepointClient_.startProbingBetween( - "org.olat.core.dispatcher.DispatcherAction.execute-start", - "org.olat.core.dispatcher.DispatcherAction.execute-end"); - doInSyncEnterProbe_ = codepointClient_.startProbingBetween( - "org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync-before-sync.org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync", - "org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync-in-sync.org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync"); - doInSyncInsideProbe_ = codepointClient_.startProbingBetween( - "org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync-in-sync.org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync", - "org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync-after-sync.org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync"); - dbQueryListProbe_ = codepointClient_.startProbingBetween( - "org.olat.core.commons.persistence.DBQueryImpl.list-entry", - "org.olat.core.commons.persistence.DBQueryImpl.list-exit"); - dispatchProbe_.logifSlowerThan(8000, Level.WARNING); - doInSyncEnterProbe_.logifSlowerThan(200, Level.WARNING); - doInSyncInsideProbe_.logifSlowerThan(1000, Level.WARNING); - dbQueryListProbe_.logifSlowerThan(1300, Level.WARNING); - } catch(RuntimeException re) { - log.info("Certain MRTG Statistics will not be available since Codepoints are disabled"); - } catch (CommunicationException e) { - log.info("Certain MRTG Statistics will not be available since Codepoints are disabled"); - } - } - - /** - * @see org.olat.core.dispatcher.Dispatcher#execute(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String) - */ - @Override - public void execute(HttpServletRequest request, HttpServletResponse response) { - if(log.isDebug()){ - String uriPrefix = DispatcherModule.getLegacyUriPrefix(request); - log.debug("serving MRTGStats on uriPrefix [[["+uriPrefix+"]]]"); - } - returnMRTGStats(request, response); - } - - private String roundedStatValueOf(Probe probe, StatId statId) { - try{ - final int value = Math.round(probe.getStatValue(statId)*100)/100; - if (value>=0) { - return String.valueOf(value); - } else { - return "0"; - } - } catch (CommunicationException e) { - e.printStackTrace(System.out); - return "0"; - } - } - - private String roundedValueOf(long value) { - if (value>=0) { - return String.valueOf(value); - } else { - return "0"; - } - } - - /** - * @param request - * @param response - */ - private void returnMRTGStats(HttpServletRequest request, HttpServletResponse response) { - if (!request.getRemoteAddr().equals(monitoringHost) && !monitoringHost.equals("*")) { - // limit to allowed hosts - log.audit("Trying to access stats from other host than configured (" + monitoringHost + ") : " + request.getRemoteAddr()); - DispatcherModule.sendForbidden(request.getPathInfo(), response); - } - String command = request.getParameter("cmd"); - if (command == null) command = "users"; - StringBuilder result = new StringBuilder(); - int httpsCount = 0; - int activeSessionCnt = 0; - if (command.equals("users")) { // get user stats of (authenticated) usersessions - UserSessionManager sessionManager = CoreSpringFactory.getImpl(UserSessionManager.class); - Set<UserSession> userSessions = sessionManager.getAuthenticatedUserSessions(); - for (Iterator<UserSession> it_usess = userSessions.iterator(); it_usess.hasNext();) { - UserSession usess = it_usess.next(); - activeSessionCnt++; - SessionInfo sessInfo = usess.getSessionInfo(); - if (sessInfo.isSecure()) httpsCount++; - } - result.append(activeSessionCnt); // active authenticated sessions - result.append("\n"); - result.append(httpsCount); // ,,, of which are secure - result.append("\n0\n"); - result.append(instanceId); - } else if (command.equals("webdav")) { // get webdav stats of (authenticated) usersessions - UserSessionManager sessionManager = CoreSpringFactory.getImpl(UserSessionManager.class); - Set<UserSession> userSessions = sessionManager.getAuthenticatedUserSessions(); - int webdavcount = 0; - int securewebdavcount = 0; - for (Iterator<UserSession> it_usess = userSessions.iterator(); it_usess.hasNext();) { - UserSession usess = it_usess.next(); - SessionInfo sessInfo = usess.getSessionInfo(); - if (sessInfo.isWebDAV()) { - webdavcount++; - if (sessInfo.isSecure()) securewebdavcount++; - } - } - result.append(webdavcount); // webdav sessions - result.append("\n"); - result.append(securewebdavcount); // ,,, of which are secure - result.append("\n0\n"); - result.append(instanceId); - } else if (command.equals("imstats")) { // get Jabber info - if (CoreSpringFactory.getImpl(InstantMessagingModule.class).isEnabled()) { - result.append("0"); - result.append("\n"); - //result.append(InstantMessagingModule.getAdapter().countUsersRunningFlashClient()); - result.append(0); - result.append("\n0\n"); - result.append("-"); - } else { - result.append("0\n0\n0\n"); - result.append("-"); - } - } else if (command.equals("debug")) { // get debug stats - // IMPORTANT: do not call too often, since .size() of a weakhashmap may be an expensive operation. - // our mrtg default is: once every five minutes. - int controllerCnt = DefaultController.getControllerCount(); - result.append(controllerCnt); // active and not yet disposed - result.append("\n0\n0\n"); - result.append(instanceId); - - } else if (command.equals("mem")) { // get VM memory stats - Runtime r = Runtime.getRuntime(); - long totalMem = r.totalMemory(); - // Total used memory in megabyptes - result.append((totalMem - r.freeMemory())/1000000).append("\n"); - // Max available memory in VM in megabytes - result.append(r.maxMemory()/1000000).append("\n"); - result.append("0\n"); - result.append(instanceId); - - } else if (command.equals("proc")) { // get VM process stats - // Number of concurrent dispatching OLAT threads (concurrent user requests) - SessionStatsManager statsManager = CoreSpringFactory.getImpl(SessionStatsManager.class); - result.append(statsManager.getConcurrentCounter()).append("\n"); - // Number of active threads - ThreadGroup group = Thread.currentThread().getThreadGroup(); - Thread[] threads = new Thread[ group.activeCount() ]; - group.enumerate( threads, false ); - int counter = 0; - for ( Thread t : threads ) { - if (t == null) continue; - // http-8080-Processor and TP-Processor not precise, but good enough - if (t.getName().startsWith("http-") || t.getName().startsWith("ajp-") - || t.getName().indexOf("-Processor") > 0) { - counter++; - } - } - result.append(counter).append("\n"); - result.append("0\n"); - result.append(instanceId); - - } else if (command.equals("err")) { // get error stats - // Average number of errors per minute since last call - long currentErrorCount = Tracing.getErrorCount(); - long errorDifference = currentErrorCount - lastErrorCount; - - lastErrorCount = currentErrorCount; - result.append(errorDifference).append("\n"); - result.append("0\n0\n"); - result.append(instanceId); - - } else if (command.startsWith("dispatch")) { - - if (dispatchProbe_==null) { - result.append("0\n0\n0\n"); - } else { - if (command.equals("dispatchAvg")) { - result.append(roundedStatValueOf(dispatchProbe_, StatId.TOTAL_AVERAGE_TIME_ELAPSED)); - } else if (command.equals("dispatchMax")) { - result.append(roundedStatValueOf(dispatchProbe_, StatId.MAX_TIME_ELAPSED)); - } else if (command.equals("dispatchCnt")) { - result.append(roundedStatValueOf(dispatchProbe_, StatId.TOTAL_MEASUREMENTS_COUNT)); - } else if (command.equals("dispatchReset")) { - try { - dispatchProbe_.clearStats(); - } catch (CommunicationException e) { - e.printStackTrace(System.out); - // ignore otherwise - } - result.append("0"); - } - result.append("\n0\n0\n"); - } - result.append(instanceId); - - } else if (command.startsWith("dbQueryList")) { - - if (dbQueryListProbe_==null) { - result.append("0\n0\n0\n"); - } else { - if (command.equals("dbQueryListAvg")) { - result.append(roundedStatValueOf(dbQueryListProbe_, StatId.TOTAL_AVERAGE_TIME_ELAPSED)); - } else if (command.equals("dbQueryListMax")) { - result.append(roundedStatValueOf(dbQueryListProbe_, StatId.MAX_TIME_ELAPSED)); - } else if (command.equals("dbQueryListCnt")) { - result.append(roundedStatValueOf(dbQueryListProbe_, StatId.TOTAL_MEASUREMENTS_COUNT)); - } else if (command.equals("dbQueryListReset")) { - try { - dbQueryListProbe_.clearStats(); - } catch (CommunicationException e) { - e.printStackTrace(System.out); - // ignore otherwise - } - result.append("0"); - } - result.append("\n0\n0\n"); - } - result.append(instanceId); - - } else if (command.startsWith("doInSyncEnter")) { - - if (doInSyncEnterProbe_==null) { - result.append("0\n0\n0\n"); - } else { - if (command.equals("doInSyncEnterAvg")) { - result.append(roundedStatValueOf(doInSyncEnterProbe_, StatId.TOTAL_AVERAGE_TIME_ELAPSED)); - } else if (command.equals("doInSyncEnterMax")) { - result.append(roundedStatValueOf(doInSyncEnterProbe_, StatId.MAX_TIME_ELAPSED)); - } else if (command.equals("doInSyncEnterCnt")) { - result.append(roundedStatValueOf(doInSyncEnterProbe_, StatId.TOTAL_MEASUREMENTS_COUNT)); - } else if (command.equals("doInSyncEnterReset")) { - try { - doInSyncEnterProbe_.clearStats(); - } catch (CommunicationException e) { - e.printStackTrace(System.out); - // ignore otherwise - } - result.append("0"); - } - result.append("\n0\n0\n"); - } - result.append(instanceId); - - } else if (command.startsWith("doInSyncInside")) { - - if (doInSyncInsideProbe_==null) { - result.append("0\n0\n0\n"); - } else { - if (command.equals("doInSyncInsideAvg")) { - result.append(roundedStatValueOf(doInSyncInsideProbe_, StatId.TOTAL_AVERAGE_TIME_ELAPSED)); - } else if (command.equals("doInSyncInsideMax")) { - result.append(roundedStatValueOf(doInSyncInsideProbe_, StatId.MAX_TIME_ELAPSED)); - } else if (command.equals("doInSyncInsideCnt")) { - result.append(roundedStatValueOf(doInSyncInsideProbe_, StatId.TOTAL_MEASUREMENTS_COUNT)); - } else if (command.equals("doInSyncInsideReset")) { - try { - doInSyncInsideProbe_.clearStats(); - } catch (CommunicationException e) { - e.printStackTrace(System.out); - // ignore otherwise - } - result.append("0"); - } - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.startsWith("jmsDelivery")) { - - final ClusterEventBus clusterEventBus = (ClusterEventBus) coordinatorManager.getCoordinator().getEventBus(); - if (clusterEventBus==null) { - result.append("0\n0\n0\n"); - } else { - SimpleProbe probe = clusterEventBus.getMrtgProbeJMSDeliveryTime(); - if (command.equals("jmsDeliveryAvg")) { - result.append(roundedValueOf(probe.getAvg())); - } else if (command.equals("jmsDeliveryMax")) { - result.append(roundedValueOf(probe.getMax())); - } else if (command.equals("jmsDeliveryCnt")) { - result.append(roundedValueOf(probe.getNum())); - } else if (command.equals("jmsDeliveryReset")) { - probe.reset(); - result.append("0"); - } - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.startsWith("jmsProcessing")) { - - final ClusterEventBus clusterEventBus = (ClusterEventBus) coordinatorManager.getCoordinator().getEventBus(); - if (clusterEventBus==null) { - result.append("0\n0\n0\n"); - } else { - SimpleProbe probe = clusterEventBus.getMrtgProbeJMSProcessingTime(); - if (command.equals("jmsProcessingAvg")) { - result.append(roundedValueOf(probe.getAvg())); - } else if (command.equals("jmsProcessingMax")) { - result.append(roundedValueOf(probe.getMax())); - } else if (command.equals("jmsProcessingCnt")) { - result.append(roundedValueOf(probe.getNum())); - } else if (command.equals("jmsProcessingReset")) { - probe.reset(); - result.append("0"); - } - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.startsWith("jmsWaiting")) { - - final ClusterEventBus clusterEventBus = (ClusterEventBus) coordinatorManager.getCoordinator().getEventBus(); - if (clusterEventBus==null) { - result.append("0\n0\n0\n"); - } else { - SimpleProbe probe = clusterEventBus.getMrtgProbeJMSLoad(); - if (command.equals("jmsWaitingAvg")) { - result.append(roundedValueOf(probe.getAvg())); - } else if (command.equals("jmsWaitingMax")) { - result.append(roundedValueOf(probe.getMax())); - } else if (command.equals("jmsWaitingCnt")) { - result.append(roundedValueOf(probe.getNum())); - } else if (command.equals("jmsWaitingReset")) { - probe.reset(); - result.append("0"); - } - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.startsWith("jmsQueued")) { - - final ClusterEventBus clusterEventBus = (ClusterEventBus) coordinatorManager.getCoordinator().getEventBus(); - if (clusterEventBus==null) { - result.append("0\n0\n0\n"); - } else { - SimpleProbe probe = clusterEventBus.getMrtgProbeJMSEnqueueTime(); - if (command.equals("jmsQueuedAvg")) { - result.append(roundedValueOf(probe.getAvg())); - } else if (command.equals("jmsQueuedMax")) { - result.append(roundedValueOf(probe.getMax())); - } else if (command.equals("jmsQueuedCnt")) { - result.append(roundedValueOf(probe.getNum())); - } else if (command.equals("jmsQueuedReset")) { - probe.reset(); - result.append("0"); - } - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.equals("SecurityGroupMembershipImpl")) { // SecurityGroupMembershipImpl - org.olat.core.commons.persistence.SimpleProbe probe = DBQueryImpl.listTableStatsMap_.get("org.olat.basesecurity.SecurityGroupMembershipImpl"); - if (probe==null) { - result.append("0\n0\n0\n"); - } else { - result.append(roundedValueOf(probe.getSum())); - probe.reset(); - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.equals("BGAreaImpl")) { // BGAreaImpl - org.olat.core.commons.persistence.SimpleProbe probe = DBQueryImpl.listTableStatsMap_.get("org.olat.group.area.BGAreaImpl"); - if (probe==null) { - result.append("0\n0\n0\n"); - } else { - result.append(roundedValueOf(probe.getSum())); - probe.reset(); - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.equals("BusinessGroupImpl")) { // BusinessGroupImpl - org.olat.core.commons.persistence.SimpleProbe probe = DBQueryImpl.listTableStatsMap_.get("org.olat.group.BusinessGroupImpl"); - if (probe==null) { - result.append("0\n0\n0\n"); - } else { - result.append(roundedValueOf(probe.getSum())); - probe.reset(); - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.equals("OLATResourceImpl")) { // OLATResourceImpl - org.olat.core.commons.persistence.SimpleProbe probe = DBQueryImpl.listTableStatsMap_.get("org.olat.resource.OLATResourceImpl"); - if (probe==null) { - result.append("0\n0\n0\n"); - } else { - result.append(roundedValueOf(probe.getSum())); - probe.reset(); - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.equals("TheRest")) { // PolicyImpl - org.olat.core.commons.persistence.SimpleProbe probe = DBQueryImpl.listTableStatsMap_.get("THEREST"); - if (probe==null) { - result.append("0\n0\n0\n"); - } else { - result.append(roundedValueOf(probe.getSum())); - probe.reset(); - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.equals("PolicyImpl")) { // PolicyImpl - org.olat.core.commons.persistence.SimpleProbe probe = DBQueryImpl.listTableStatsMap_.get("THEREST"); - if (probe==null) { - result.append("0\n0\n0\n"); - } else { - result.append(roundedValueOf(probe.getSum())); - probe.reset(); - result.append("\n0\n0\n"); - } - result.append(instanceId); - - // dump details about all the non registered ones - Set<Entry<String, org.olat.core.commons.persistence.SimpleProbe>> entries = DBQueryImpl.listTableStatsMap_.entrySet(); - Set<Entry<String, org.olat.core.commons.persistence.SimpleProbe>> nonRegisteredEntries = new HashSet<Entry<String,org.olat.core.commons.persistence.SimpleProbe>>(); - long sum = 0; - for (Iterator<Entry<String, org.olat.core.commons.persistence.SimpleProbe>> it = entries.iterator(); it.hasNext();) { - Entry<String, org.olat.core.commons.persistence.SimpleProbe> entry = it.next(); - if (!DBQueryImpl.registeredTables_.contains(entry.getKey())) { - nonRegisteredEntries.add(entry); - sum+=entry.getValue().getSum(); - } - } - List<Entry<String, org.olat.core.commons.persistence.SimpleProbe>> list = new LinkedList<Entry<String, org.olat.core.commons.persistence.SimpleProbe>>(nonRegisteredEntries); - Collections.sort( - list, new Comparator<Entry<String, org.olat.core.commons.persistence.SimpleProbe>>() { - - public int compare( - Entry<String, org.olat.core.commons.persistence.SimpleProbe> o1, - Entry<String, org.olat.core.commons.persistence.SimpleProbe> o2) { - if (o1.getValue().getSum()>o2.getValue().getSum()) { - return 1; - } else if (o1.getValue().getSum()==o2.getValue().getSum()) { - return 0; - } else { - return -1; - } - } - - }); - for (Iterator<Entry<String, org.olat.core.commons.persistence.SimpleProbe>> it = list.iterator(); it.hasNext();) { - Entry<String, org.olat.core.commons.persistence.SimpleProbe> entry = it.next(); - log.info("MRTGStats: table '"+entry.getKey()+"' uses up "+entry.getValue().getSum()+"ms of a total of "+sum+"ms, which is "+Math.round(1000.0*entry.getValue().getSum()/sum)/10+"%"); - entry.getValue().reset(); - } - } else if (command.equals("LifeCycleEntry")) { // LifeCycleEntry - org.olat.core.commons.persistence.SimpleProbe probe = DBQueryImpl.listTableStatsMap_.get("org.olat.commons.lifecycle.LifeCycleEntry"); - if (probe==null) { - result.append("0\n0\n0\n"); - } else { - result.append(roundedValueOf(probe.getSum())); - probe.reset(); - result.append("\n0\n0\n"); - } - result.append(instanceId); - } else if (command.equals("usercount")) { // get number of useraccounts counter - BaseSecurity secMgr = BaseSecurityManager.getInstance(); - SecurityGroup olatuserGroup = secMgr.findSecurityGroupByName(Constants.GROUP_OLATUSERS); - int users = secMgr.countIdentitiesOfSecurityGroup(olatuserGroup); - long disabled = secMgr.countIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_LOGIN_DENIED); - result.append(users-disabled).append("\n"); // number of active users - result.append(disabled).append("\n"); // number of disabled users - result.append("0\n"); - result.append(instanceId); - - } else if (command.equals("usercountmonthly")) { // get number of different users logged in during last month and last half year - BaseSecurity secMgr = BaseSecurityManager.getInstance(); - Calendar lastLoginLimit = Calendar.getInstance(); - lastLoginLimit.add(Calendar.MONTH, -1); - result.append(secMgr.countUniqueUserLoginsSince(lastLoginLimit.getTime())).append("\n"); - lastLoginLimit.add(Calendar.MONTH, -5); // -1 -5 = -6 for half a year - result.append(secMgr.countUniqueUserLoginsSince(lastLoginLimit.getTime())).append("\n"); - result.append("0\n"); - result.append(instanceId); - - } else if (command.equals("usercountdaily")) { // get number of different users logged in during last day and last week - BaseSecurity secMgr = BaseSecurityManager.getInstance(); - Calendar lastLoginLimit = Calendar.getInstance(); - lastLoginLimit.add(Calendar.DAY_OF_YEAR, -1); - result.append(secMgr.countUniqueUserLoginsSince(lastLoginLimit.getTime())).append("\n"); - lastLoginLimit.add(Calendar.DAY_OF_YEAR, -6); // -1 - 6 = -7 for last week - result.append(secMgr.countUniqueUserLoginsSince(lastLoginLimit.getTime())).append("\n"); - result.append("0\n"); - result.append(instanceId); - - } else if (command.equals("usercountsince")) { // get number of different users logged in since a period which is specified by parameter date - BaseSecurity secMgr = BaseSecurityManager.getInstance(); - String dateParam = request.getParameter("date"); - if (dateParam==null) { - result.append("date parameter missing. add date=yyyy-MM-dd\n"); - } - else { - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - try { - Date mydate = df.parse(dateParam); - result.append(secMgr.countUniqueUserLoginsSince(mydate)).append("\n"); - } catch (ParseException e) { - result.append("date parameter format error. expected: yyyy-MM-dd\n"); - } - - result.append("0\n0\n"); - result.append(instanceId); - } - - } else if (command.equals("coursecount")) { // get number of activated courses - RepositoryManager repoMgr = RepositoryManager.getInstance(); - int allCourses = repoMgr.countByTypeLimitAccess(CourseModule.ORES_TYPE_COURSE, RepositoryEntry.ACC_OWNERS); - int publishedCourses = repoMgr.countByTypeLimitAccess(CourseModule.ORES_TYPE_COURSE, RepositoryEntry.ACC_USERS); - result.append(allCourses).append("\n"); // number of all courses - result.append(publishedCourses).append("\n"); // number of published courses - result.append("0\n"); - result.append(instanceId); - } - - ServletUtil.serveStringResource(request, response, result.toString()); - } - - /** - * Setter for Spring configuration - * @param monitoringHost - */ - public void setMonitoringHost(String monitoringHost) { - this.monitoringHost = monitoringHost; - } - - /** - * Spring getter - * @return - */ - public String getMonitoringHost() { - return monitoringHost; - } - - public void setInstanceId(String instanceId) { - this.instanceId = instanceId; - } - - - - -} diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java index 7632ed3ad572fee098c65d47e5c1694a4cbbab8b..e8a8366702612fffb04c9aed1e12eb2b601464aa 100644 --- a/src/main/java/org/olat/admin/user/UserAdminController.java +++ b/src/main/java/org/olat/admin/user/UserAdminController.java @@ -27,7 +27,6 @@ package org.olat.admin.user; import java.util.List; -import org.olat.admin.policy.PolicyController; import org.olat.admin.user.course.CourseOverviewController; import org.olat.admin.user.groups.GroupOverviewController; import org.olat.basesecurity.Authentication; @@ -79,17 +78,14 @@ import org.olat.user.UserPropertiesController; */ public class UserAdminController extends BasicController implements Activateable2 { - // NLS support - private static final String NLS_ERROR_NOACCESS_TO_USER = "error.noaccess.to.user"; private static final String NLS_FOUND_PROPERTY = "found.property"; - private static final String NLS_EDIT_UPROFILE = "edit.uprofile"; + private static final String NLS_EDIT_UPROFILE = "edit.uprofile"; private static final String NLS_EDIT_UPREFS = "edit.uprefs"; private static final String NLS_EDIT_UPWD = "edit.upwd"; private static final String NLS_EDIT_UAUTH = "edit.uauth"; private static final String NLS_EDIT_UPROP = "edit.uprop"; - private static final String NLS_EDIT_UPOLICIES = "edit.upolicies"; private static final String NLS_EDIT_UROLES = "edit.uroles"; private static final String NLS_EDIT_UQUOTA = "edit.uquota"; private static final String NLS_VIEW_GROUPS = "view.groups"; @@ -303,12 +299,6 @@ public class UserAdminController extends BasicController implements Activateable userTabP.addTab(translate(NLS_EDIT_UPROP), propertiesCtr.getInitialComponent()); } - Boolean canPolicies = BaseSecurityModule.USERMANAGER_ACCESS_TO_POLICIES; - if (canPolicies.booleanValue() || isOlatAdmin) { - policiesCtr = new PolicyController(ureq, getWindowControl(), identity); - userTabP.addTab(translate(NLS_EDIT_UPOLICIES), policiesCtr.getInitialComponent()); - } - Boolean canStartGroups = BaseSecurityModule.USERMANAGER_CAN_START_GROUPS; grpCtr = new GroupOverviewController(ureq, getWindowControl(), identity, canStartGroups); listenTo(grpCtr); diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_ar.properties index 30b19dd4d2f8347b770c9330bedeacdfe50966a1..0dedbd3265a577692a699fe7bd82837fb8cdd19e 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_ar.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_ar.properties @@ -21,7 +21,6 @@ content.usermgmt.title=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u0633\u content.usermgmt.userfound=\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645 edit.uauth=\u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0627\u062A edit.uhomepage=\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u062A\u0639\u0627\u0631\u0641 -edit.upolicies=\u062D\u0642\u0648\u0642 edit.uprefs=\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u0646\u0638\u0627\u0645 edit.uprofile=\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062E\u0635\u0649 \u0644\u0644\u0645\u0633\u062A\u062E\u062F\u0645 edit.uprop=\u062E\u0635\u0627\u0626\u0635 diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_bg.properties index 3c24abe74b68780482e08f345dc6dc6357765c4c..ba2b8ffcfa8a344b2e2fd07c17b2c3cba330b486 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_bg.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_bg.properties @@ -20,7 +20,6 @@ content.usermgmt.title=\u041C\u0435\u043D\u0438\u0434\u0436\u043C\u044A\u043D\u0 content.usermgmt.userfound=\u041C\u0435\u043D\u0430\u0436\u0438\u0440\u0430\u0439\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043D\u0430 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B edit.uauth=\u0410\u0432\u0442\u0435\u043D\u0442\u0438\u043A\u0430\u0446\u0438\u0438 edit.uhomepage=\u0412\u0438\u0437\u0438\u0442\u043D\u0430 \u043A\u0430\u0440\u0442\u0438\u0447\u043A\u0430 -edit.upolicies=\u041F\u0440\u0430\u0432\u0430 edit.uprefs=\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 edit.uprofile=\u041F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\u0441\u043A\u0438 \u043F\u0440\u043E\u0444\u0438\u043B edit.uprop=\u0425\u0430\u0440\u0430\u043A\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043A\u0438 diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_cs.properties index 8226e4216e52e3c7b6c3c6d1e50f6339fc36f5ab..935384db2afb743fd3d1b48451b1dcedb29d4a77 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_cs.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_cs.properties @@ -17,7 +17,6 @@ content.usermgmt.text1=Zde m\u016F\u017Eete m\u011Bnit a spravovat data u\u017Ei content.usermgmt.title=Spr\u00E1va u\u017Eivatele content.usermgmt.userfound=Spravovat u\u017Eivatelsk\u00E1 nastaven\u00ED edit.uauth=Ov\u011B\u0159en\u00ED -edit.upolicies=Pr\u00E1va edit.uprefs=Syst\u00E9mov\u00E1 nastaven\u00ED edit.uprofile=Profil u\u017Eivatele edit.uprop=Parametry diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_da.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_da.properties index 918c1e16b7306b954b05a8be97feb107342acec4..55d1408cb9efe7b6f2577de41bb7715c6df71ae5 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_da.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_da.properties @@ -12,7 +12,6 @@ content.usermgmt.text1=Her kan du \u00E6ndre eller administrere data for eksiste content.usermgmt.title=Brugeradministration content.usermgmt.userfound=Administrer brugerindstillinger edit.uauth=Autentifikationer -edit.upolicies=Rettigheder edit.uprefs=Systemindstillinger edit.uprofile=Brugerprofil edit.uprop=Egenskaber diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_de.properties index 610698fc59740a7065bc9f83ad91b18cd36615d4..cf0aefd2fc58e752bec14052845ef44f45e6a951 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_de.properties @@ -21,7 +21,6 @@ content.usermgmt.title=Benutzerverwaltung content.usermgmt.userfound=Benutzereinstellungen verwalten edit.uauth=Authentifizierungen edit.uhomepage=Visitenkarte -edit.upolicies=Rechte edit.uprefs=Systemeinstellungen edit.uprofile=Benutzerprofil edit.uprop=Properties diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_el.properties index 507a9cfc2fd11d42783ac3a08163e7eca43718a2..517bc5992ec177a90020cbf207b85d202a1ae5ed 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_el.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_el.properties @@ -21,7 +21,6 @@ content.usermgmt.title=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u0 content.usermgmt.userfound=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD edit.uauth=\u03A0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2 edit.uhomepage=\u039A\u03AC\u03C1\u03C4\u03B1 \u0395\u03C0\u03AF\u03C3\u03BA\u03B5\u03C8\u03B7\u03C2 -edit.upolicies=\u0394\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1 edit.uprefs=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03C3\u03C5\u03C3\u03C4\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 edit.uprofile=\u03A0\u03C1\u03BF\u03C6\u03AF\u03BB \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 edit.uprop=\u0399\u03B4\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties index ad1b492bddac1c8a24408487a073430f3dd69c58..419d264a03043cfac0caedee9ad1bafe5f7b8d0f 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties @@ -22,7 +22,6 @@ content.usermgmt.userfound=Manage user settings deselectall=$org.olat.core.gui.components.table\:uncheckall edit.uauth=Authentications edit.uhomepage=Visiting card -edit.upolicies=Rights edit.uprefs=System settings edit.uprofile=User profile edit.uprop=Properties diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_es.properties index 6361ab211edad945cbd0a836c8c39625954ca2d7..6b015f62c33bc69bc09ac43fd90fc23f06c79185 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_es.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_es.properties @@ -18,7 +18,6 @@ content.usermgmt.title=Gesti\u00F3n de usuarios content.usermgmt.userfound=Gestionar opciones y preferencias de usuario edit.uauth=Autentificaciones edit.uhomepage=Tarjeta de visitante -edit.upolicies=Permisos edit.uprefs=Opciones del sistema edit.uprofile=Perfil del usuario edit.uprop=Propiedades diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fa.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fa.properties index abbdd55b263f99ff391296149f70d7334e5fe352..7f198ded6508bb29da3e5677cec1156b8f103f5c 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fa.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fa.properties @@ -10,8 +10,7 @@ command.mail=\u0627\u0631\u0633\u0627\u0644 \u0627\u06CC\u0645\u06CC\u0644 \u062 content.usermgmt.text1=\u0634\u0645\u0627 \u062F\u0631 \u0627\u06CC\u0646 \u0642\u0633\u0645\u062A \u0645\u06CC \u062A\u0648\u0627\u0646\u06CC\u062F \u0627\u0637\u0644\u0627\u0639\u0627\u062A \u06A9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0648\u0644\u0627\u062A \u0631\u0627 \u0645\u062F\u06CC\u0631\u06CC\u062A \u06A9\u0646\u06CC\u062F. \u0644\u0637\u0641\u0627\u064B \u0646\u0627\u0645 \u0628\u0627 \u062C\u0633\u062A\u062C\u0648\u06CC \u0646\u0627\u0645 \u06A9\u0627\u0631\u0628\u0631 \u0634\u0631\u0648\u0639 \u0646\u0645\u0627\u06CC\u06CC\u062F content.usermgmt.title=\u0645\u062F\u06CC\u0631\u06CC\u062A \u06A9\u0627\u0631\u0628\u0631 content.usermgmt.userfound=\u0645\u062F\u06CC\u0631\u06CC\u062A \u062A\u0646\u0638\u06CC\u0645\u0627\u062A \u06A9\u0627\u0631\u0628\u0631 -edit.uauth=\u0627\u062A\u0635\u0627\u0644 \u0628\u0647 \u0633\u06CC\u0633\u062A\u0645 -edit.upolicies=\u062D\u0642\u0648\u0642 +edit.uauth=\u0627\u062A\u0635\u0627\u0644 \u0628\u0647 \u0633\u06CC\u0633\u062A\u0645 edit.uprefs=\u062A\u0646\u0638\u06CC\u0645\u0627\u062A \u0633\u06CC\u0633\u062A\u0645 edit.uprofile=\u067E\u0631\u0648\u0646\u062F\u0647 \u06A9\u0627\u0631\u0628\u0631 edit.uprop=\u0645\u0634\u062E\u0635\u0627\u062A diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fr.properties index 3e628dd2976483df37741a53fbd5825e2e63d617..980ee646d6bf56e53facfdd49e797042541f314c 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fr.properties @@ -22,7 +22,6 @@ content.usermgmt.userfound=G\u00E9rer les r\u00E9glages des utilisateurs deselectall=$org.olat.core.gui.components.table\:uncheckall edit.uauth=Authentifications edit.uhomepage=Cartes de visite -edit.upolicies=Droits edit.uprefs=Param\u00E8tres syst\u00E8me edit.uprofile=Profil utilisateur edit.uprop=Propri\u00E9t\u00E9s diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_it.properties index f39f88d1b041b17dfb9c19c6373a01c90ca990c0..afadcb62546bc26e2e470225ac23f9352cbcf42f 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_it.properties @@ -21,7 +21,6 @@ content.usermgmt.title=Gestione degli utenti content.usermgmt.userfound=Gestione delle preferenze degli utenti edit.uauth=Autenticazioni edit.uhomepage=Biglietto da vista -edit.upolicies=Diritti edit.uprefs=Preferenze di sistema edit.uprofile=Profilo d'utente edit.uprop=Attributi diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_jp.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_jp.properties index 7ba6aa7d031cd7a3f4a288f3702a6e7b51762269..e91f35df4cdcef17bdc64d8d767423ae2ec59595 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_jp.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_jp.properties @@ -21,7 +21,6 @@ content.usermgmt.title=\u30E6\u30FC\u30B6\u7BA1\u7406 content.usermgmt.userfound=\u30E6\u30FC\u30B6\u8A2D\u5B9A\u306E\u7BA1\u7406 edit.uauth=\u8A8D\u8A3C edit.uhomepage=\u8A2A\u554F\u30AB\u30FC\u30C9 -edit.upolicies=\u6A29\u9650 edit.uprefs=\u30B7\u30B9\u30C6\u30E0\u8A2D\u5B9A edit.uprofile=\u30E6\u30FC\u30B6\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB edit.uprop=\u30D7\u30ED\u30D1\u30C6\u30A3 diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_lt.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_lt.properties index d2990edeb439d17e98c92963ac2a22b521f7d390..53d47b56a63e9eadc88966f107e82fe9aa0894f9 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_lt.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_lt.properties @@ -11,7 +11,6 @@ content.usermgmt.text1=\u010Cia galite tvarkyti esam\u0173 OLAT naudotoj\u0173 d content.usermgmt.title=Naudotoj\u0173 valdymas content.usermgmt.userfound=Tvarkyti naudotojo nustatymus edit.uauth=Autentifikacija -edit.upolicies=Teis\u0117s edit.uprefs=Sisteminiai nustatymai edit.uprofile=Naudotojo sandara edit.uprop=Savyb\u0117s diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_nl_NL.properties index 269e841a60b27b78d06d0165003ef77cb923e333..9d9ecfec79c47bd69968ae81ddf1d07f3a0b5440 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_nl_NL.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_nl_NL.properties @@ -21,7 +21,6 @@ content.usermgmt.title=Gebruikersbeheer content.usermgmt.userfound=Gebruikerinstellingen beheren edit.uauth=Authenticaties edit.uhomepage=Visitekaartje -edit.upolicies=Rechten edit.uprefs=Systeeminstellingen edit.uprofile=Gebruikersprofiel edit.uprop=Properties diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pl.properties index 213d600da6340eb81fb55b0d82813f1647c6a52f..4c4f9a73a01498bf1c11c7ad0ea13738e97317ea 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pl.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pl.properties @@ -21,7 +21,6 @@ content.usermgmt.title=Zarz\u0105dzanie u\u017Cytkownikiem content.usermgmt.userfound=Zarz\u0105dzaj ustawieniami u\u017Cytkownika edit.uauth=Autentykacje edit.uhomepage=Wizyt\u00F3wka -edit.upolicies=Uprawnienia edit.uprefs=Ustawienia systemowe edit.uprofile=Profil u\u017Cytkownika edit.uprop=W\u0142a\u015Bciwo\u015Bci diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pt_BR.properties index aa717bbce96ee520d3d00c9188ef24bd2a203445..e79142350a27accf1d84f5e5e16cc904f7ae2610 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pt_BR.properties @@ -22,7 +22,6 @@ content.usermgmt.userfound=Gerenciar configura\u00E7\u00F5es de usu\u00E1rio deselectall=$org.olat.core.gui.components.table\:uncheckall edit.uauth=Authentications edit.uhomepage=Cart\u00E3o de visitas -edit.upolicies=Rights edit.uprefs=System settings edit.uprofile=User profile edit.uprop=Properties diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pt_PT.properties index d7485dc4bda543d4f5909a2cc49f7eafba69b425..d122cbda2b13ef26dc473cafa52eac1dc2b8a4b5 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pt_PT.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_pt_PT.properties @@ -12,7 +12,6 @@ content.usermgmt.text1=Aqui voc\u00EA pode modificar ou gerenciar dados de usu\u content.usermgmt.title=Gerenciamento do usu\u00E1rio content.usermgmt.userfound=Gerenciar configura\u00E7\u00F5es de usu\u00E1rio edit.uauth=Authentications -edit.upolicies=Rights edit.uprefs=System settings edit.uprofile=User profile edit.uprop=Properties diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_ru.properties index 11946532405d14e555cd3007d21047ae50f31e40..d50bcd63a46ffc2a6c55d70df79767a0233b23a6 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_ru.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_ru.properties @@ -12,7 +12,6 @@ content.usermgmt.text1=\u0417\u0434\u0435\u0441\u044C \u0412\u044B \u043C\u043E\ content.usermgmt.title=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 content.usermgmt.userfound=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F edit.uauth=\u0410\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438 -edit.upolicies=\u041F\u0440\u0430\u0432\u0430 edit.uprefs=\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 edit.uprofile=\u041F\u0440\u043E\u0444\u0438\u043B\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F edit.uprop=\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430 diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_sq.properties index b07965de2428b813f000c70283229f134e95fb19..b5e1cf41a657825de74167e8951a6cf09ac83ff0 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_sq.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_sq.properties @@ -12,7 +12,6 @@ content.usermgmt.text1=K\u00EBtu ju mund t'i ndryshoni ose t'i menaxhoni t\u00EB content.usermgmt.title=Drejtimi i shfryt\u00EBzuesve content.usermgmt.userfound=Drejto p\u00EBrcaktimet e shfryt\u00EBzuesve edit.uauth=Autentikimet -edit.upolicies=T\u00EB drejtat edit.uprefs=P\u00EBrcaktimet e sistemit edit.uprofile=Profili i shfryt\u00EBzuesit edit.uprop=Tiparet diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_zh_CN.properties index 97f8703c96f05c0276f1acd747eea2ee58ff1921..ace5f2c762667b3ce6a8ff30c4bf17c378095d57 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_zh_CN.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_zh_CN.properties @@ -21,7 +21,6 @@ content.usermgmt.title=\u7528\u6237\u7BA1\u7406 content.usermgmt.userfound=\u7BA1\u7406\u7528\u6237\u8BBE\u7F6E edit.uauth=\u9A8C\u8BC1 edit.uhomepage=\u8BBF\u95EE\u4FE1\u606F\u5361\u7247 -edit.upolicies=\u6743\u9650 edit.uprefs=\u7CFB\u7EDF\u8BBE\u7F6E edit.uprofile=\u7528\u6237\u8D44\u6599 edit.uprop=\u5C5E\u6027 diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_zh_TW.properties index cbbd34da675822642fe2c6041cb316aff9584978..73a9c920aaf93ffd252706b8c519b960090fd193 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_zh_TW.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_zh_TW.properties @@ -21,7 +21,6 @@ content.usermgmt.title=\u4F7F\u7528\u8005\u7BA1\u7406 content.usermgmt.userfound=\u7BA1\u7406\u4F7F\u7528\u8005\u8A2D\u5B9A edit.uauth=\u9A57\u8B49 edit.uhomepage=\u540D\u7247 -edit.upolicies=\u6B0A\u9650 edit.uprefs=\u7CFB\u7D71\u8A2D\u5B9A edit.uprofile=\u4F7F\u7528\u8005\u8CC7\u6599 edit.uprop=\u5C6C\u6027 diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityModule.java b/src/main/java/org/olat/basesecurity/BaseSecurityModule.java index b884a1cbbef0f5421edd88a80b183e3f7b7343dd..ea91a4c62b37f6ed7e5bb5e24d7a1d85d994d65f 100644 --- a/src/main/java/org/olat/basesecurity/BaseSecurityModule.java +++ b/src/main/java/org/olat/basesecurity/BaseSecurityModule.java @@ -49,7 +49,6 @@ public class BaseSecurityModule extends AbstractOLATModule { private static final String CONFIG_USERMANAGER_CAN_MODIFY_SUBSCRIPTIONS = "sysGroupUsermanager.canModifySubscriptions"; private static final String CONFIG_USERMANAGER_ACCESS_TO_QUOTA = "sysGroupUsermanager.accessToQuota"; private static final String CONFIG_USERMANAGER_ACCESS_TO_PROP = "sysGroupUsermanager.accessToProperties"; - private static final String CONFIG_USERMANAGER_ACCESS_TO_POLICIES = "sysGroupUsermanager.accessToPolicies"; private static final String CONFIG_USERMANAGER_ACCESS_TO_AUTH = "sysGroupUsermanager.accessToAuthentications"; private static final String CONFIG_USERMANAGER_CAN_MANAGE_POOLMANAGERS = "sysGroupUsermanager.canManagePoolmanagers"; private static final String CONFIG_USERMANAGER_CAN_MANAGE_GROUPMANAGERS = "sysGroupUsermanager.canManageGroupmanagers"; @@ -95,7 +94,6 @@ public class BaseSecurityModule extends AbstractOLATModule { public static Boolean USERMANAGER_CAN_MODIFY_SUBSCRIPTIONS = true; public static Boolean USERMANAGER_ACCESS_TO_QUOTA = true; public static Boolean USERMANAGER_ACCESS_TO_PROP = false; - public static Boolean USERMANAGER_ACCESS_TO_POLICIES = false; public static Boolean USERMANAGER_ACCESS_TO_AUTH = false; public static Boolean USERMANAGER_CAN_MANAGE_POOLMANAGERS = true; public static Boolean USERMANAGER_CAN_MANAGE_GROUPMANAGERS = true; @@ -162,7 +160,6 @@ public class BaseSecurityModule extends AbstractOLATModule { USERMANAGER_ACCESS_TO_QUOTA = getBooleanConfigParameter(CONFIG_USERMANAGER_ACCESS_TO_QUOTA, USERMANAGER_ACCESS_TO_QUOTA); USERMANAGER_ACCESS_TO_PROP = getBooleanConfigParameter(CONFIG_USERMANAGER_ACCESS_TO_PROP, USERMANAGER_ACCESS_TO_PROP); - USERMANAGER_ACCESS_TO_POLICIES = getBooleanConfigParameter(CONFIG_USERMANAGER_ACCESS_TO_POLICIES, USERMANAGER_ACCESS_TO_POLICIES); USERMANAGER_ACCESS_TO_AUTH = getBooleanConfigParameter(CONFIG_USERMANAGER_ACCESS_TO_AUTH, USERMANAGER_ACCESS_TO_AUTH); USERMANAGER_CAN_MANAGE_GROUPMANAGERS = getBooleanConfigParameter(CONFIG_USERMANAGER_CAN_MANAGE_GROUPMANAGERS, USERMANAGER_CAN_MANAGE_GROUPMANAGERS); diff --git a/src/main/java/org/olat/core/dispatcher/_spring/dispatcherContext.xml b/src/main/java/org/olat/core/dispatcher/_spring/dispatcherContext.xml index 91671b05cb744588dd84f627624dc48d5d659ee8..0b9a2db5ff0ff0a88d437b1372c6ab651e180181 100644 --- a/src/main/java/org/olat/core/dispatcher/_spring/dispatcherContext.xml +++ b/src/main/java/org/olat/core/dispatcher/_spring/dispatcherContext.xml @@ -31,9 +31,6 @@ <entry key="/mshib/"> <ref bean="shibmobilebean" /> </entry> - <entry key="/stats.html"> - <ref bean="statisticbean" /> - </entry> <entry key="/admin.html"> <ref bean="adminbean" /> </entry> @@ -172,13 +169,6 @@ </constructor-arg> </bean> - - <bean id="statisticbean" - class="org.olat.admin.sysinfo.MRTGStatsDispatcher"> - <constructor-arg ref="coordinatorManager" /> - <property name="monitoringHost" value="127.0.0.1" /> - <property name="instanceId" value="${instance.id}"/> - </bean> <bean id="secstaticlegacybean" class="org.olat.commons.servlets.StaticsLegacyDispatcher"> <property name="inputBufferSize" value="32768" /> diff --git a/src/test/java/org/olat/portfolio/sfqcodel.cc b/src/test/java/org/olat/portfolio/sfqcodel.cc deleted file mode 100644 index a6d22b3f9f875f69e9ee19dcacb38af1140bd786..0000000000000000000000000000000000000000 --- a/src/test/java/org/olat/portfolio/sfqcodel.cc +++ /dev/null @@ -1,494 +0,0 @@ -/* - * sfqCodel - Smart Flow Queuing, Controlled-Delay Active Queue Management - * with stochastic binning. Inspired by Eric Dumazaet's linux code, FQ_codel. - * This module was put together by Kathleen Nichols. - * For expediency, this originally combined codel.cc and some aspects of - * sfq.cc from the ns2 distribution, contributed by Curtis Villamizar, Feb, 1997. - * Notable differences from Eric's code: this uses packet-by-packet - * round-robining, which we believe to be more appropriate (more testing - * woud be useful), this simply tail drops if the buffer space is full and - * this should be changed to something that drops fullest bin first (as in - * Dumazaet's code), this code keeps an empty bin on the schedule for one - * cycle (effectively preventing a flow from getting to go "first" too - * quickly).. - * Van Jacobson contributed the hash to attempt to model linux kernel hash. - * This is experimental code, for implementation, see Dumazaet's code. - * - * Copyright (C) 2011-2012 Kathleen Nichols <nichols@pollere.com> - * - * Packets are hashed into 256 bins based on header - * Bins each have a separate CoDel manager - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions, and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The names of the authors may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * Alternatively, provided that this notice is retained in full, this - * software may be distributed under the terms of the GNU General - * Public License ("GPL") version 2, in which case the provisions of the - * GPL apply INSTEAD OF those given above. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <math.h> -#include <sys/types.h> -#include "config.h" -#include "template.h" -#include "random.h" -#include "flags.h" -#include "delay.h" -#include "sfqcodel.h" - -static class sfqCoDelClass : public TclClass { - public: - sfqCoDelClass() : TclClass("Queue/sfqCoDel") {} - TclObject* create(int, const char*const*) { - return (new sfqCoDelQueue); - } -} class_codel; - -sfqCoDelQueue::sfqCoDelQueue() : tchan_(0) -{ - bind("interval_", &interval_); - bind("target_", &target_); // target min delay in clock ticks - bind("curq_", &curq_); // current queue size in bytes - bind("d_exp_", &d_exp_); // current delay experienced in clock ticks - for(int i=0; i<MAXBINS; i++) { - bin_[i].q_ = new PacketQueue(); - bin_[i].first_above_time_ = -1; - bin_[i].dropping_ = 0; - bin_[i].count_ = 0; - bin_[i].newflag = 0; - bin_[i].index = i; - bin_[i].on_sched_ = 0; - } - pq_ = bin_[0].q_; //does ns need this? - reset(); -} - -void sfqCoDelQueue::reset() -{ - binsched_ = NULL; - curq_ = 0; - d_exp_ = 0.; - maxpacket_ = 256; - curlen_ = 0; - curq_ = 0; - Queue::reset(); -} - -// Add a new packet to the queue. The packet is dropped if the maximum queue -// size in pkts is exceeded. Otherwise just add a timestamp so dequeue can -// compute the sojourn time (all the work is done in the deque). -// More sophisticated approaches can prevent a single flow from taking over -// a limited buffer. - -void sfqCoDelQueue::enque(Packet* pkt) -{ - // check for tail drop on full buffer - if(curlen_ >= qlim_) { - drop(pkt); - } else { - HDR_CMN(pkt)->ts_ = Scheduler::instance().clock(); - curlen_++; - curq_ += HDR_CMN(pkt)->size(); - - // Determine which bin to enqueue the packet and add it to that bin. - // the bin's id comes from a hash of its header - unsigned int i = hash(pkt) % MAXBINS; - (bin_[i].q_)->enque(pkt); - - //if it's the only bin in use, set binsched_ - if(binsched_ == NULL) { - binsched_ = &(bin_[i]); - bin_[i].prev = &(bin_[i]); - bin_[i].next = bin_[i].prev; - bin_[i].newflag = 1; - bin_[i].on_sched_ = 1; - } else if( bin_[i].on_sched_ == 0) { - //if bin was not on the schedule, add to the list before continuing - // bins but after other new bins - bindesc* b = binsched_; - while(b->newflag == 1) { - if(b->next == binsched_) break; - b = b->next; - } - if(b->next == binsched_) { - //insert at end - b->next = &(bin_[i]); - bin_[i].prev = b; - bin_[i].next = binsched_; - binsched_->prev = &(bin_[i]); - } else { - //insert in front of b - bin_[i].next = b; - bin_[i].prev = b->prev; - (b->prev)->next = &(bin_[i]); - b->prev = &(bin_[i]); - if(b == binsched_) - binsched_ = &(bin_[i]); - } - bin_[i].newflag = 1; - bin_[i].on_sched_ = 1; - } - } -} - -extern "C" { -/* lookup3.c, by Bob Jenkins, May 2006, Public Domain. */ - -//#include <stdint.h> /* defines uint32_t etc */ -//#include <sys/param.h> /* attempt to define endianness */ -//#ifdef linux -//# include <endian.h> /* attempt to define endianness */ -//#endif - -/* - * My best guess at if you are big-endian or little-endian. This may - * need adjustment. - */ -#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \ - __BYTE_ORDER == __LITTLE_ENDIAN) || \ - (defined(i386) || defined(__i386__) || defined(__i486__) || \ - defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL)) -# define HASH_LITTLE_ENDIAN 1 -# define HASH_BIG_ENDIAN 0 -#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \ - __BYTE_ORDER == __BIG_ENDIAN) || \ - (defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel)) -# define HASH_LITTLE_ENDIAN 0 -# define HASH_BIG_ENDIAN 1 -#else -# define HASH_LITTLE_ENDIAN 0 -# define HASH_BIG_ENDIAN 0 -#endif - -#define hashsize(n) ((u_int32_t)1<<(n)) -#define hashmask(n) (hashsize(n)-1) -#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k)))) - -#define mix(a,b,c) \ -{ \ - a -= c; a ^= rot(c, 4); c += b; \ - b -= a; b ^= rot(a, 6); a += c; \ - c -= b; c ^= rot(b, 8); b += a; \ - a -= c; a ^= rot(c,16); c += b; \ - b -= a; b ^= rot(a,19); a += c; \ - c -= b; c ^= rot(b, 4); b += a; \ -} - -#define final(a,b,c) \ -{ \ - c ^= b; c -= rot(b,14); \ - a ^= c; a -= rot(c,11); \ - b ^= a; b -= rot(a,25); \ - c ^= b; c -= rot(b,16); \ - a ^= c; a -= rot(c,4); \ - b ^= a; b -= rot(a,14); \ - c ^= b; c -= rot(b,24); \ -} - -static inline u_int32_t jhash_3words( u_int32_t a, u_int32_t b, u_int32_t c, u_int32_t i) { - i += 0xdeadbeef + (3 << 2); - a += i; - b += i; - c += i; - mix(a, b, c); - final(a, b, c); - return c; -} - -#undef mix -#undef final - -} - -unsigned int sfqCoDelQueue::hash(Packet* pkt) -{ - hdr_ip* iph = hdr_ip::access(pkt); - return jhash_3words(iph->daddr(), iph->saddr(), - (iph->dport() << 16) | iph->sport(), 0); -} - -// return the time of the next drop relative to 't' -double sfqCoDelQueue::control_law(double t) -{ - return t + interval_ / sqrt(count_); -} - -// Internal routine to dequeue a packet. All the delay and min tracking -// is done here to make sure it's done consistently on every dequeue. -dodequeResult sfqCoDelQueue::dodeque(PacketQueue* q) -{ - double now = Scheduler::instance().clock(); - dodequeResult r = { NULL, 0 }; - - r.p = q->deque(); - if (r.p == NULL) { - return r; - } else { - // d_exp_ and curq_ are ns2 'traced variables' that allow the dynamic - // queue behavior that drives CoDel to be captured in a trace file for - // diagnostics and analysis. d_exp_ is the sojourn time and curq_ is - // the current total q size in bytes. - d_exp_ = now - HDR_CMN(r.p)->ts_; - curlen_--; - curq_ -= HDR_CMN(r.p)->size_; - if (maxpacket_ < HDR_CMN(r.p)->size_) - // keep track of the max packet size. - maxpacket_ = HDR_CMN(r.p)->size_; - - // To span a large range of bandwidths, CoDel essentially runs two - // different AQMs in parallel. One is sojourn-time-based and takes - // effect when target_ is larger than the time it takes to send a - // TCP MSS packet. The 1st term of the "if" does this. - // The other is backlog-based and takes effect when the time to send an - // MSS packet is >= target_. The goal here is to keep the output link - // utilization high by never allowing the queue to get smaller than - // the amount that arrives in a typical interarrival time (one MSS-sized - // packet arriving spaced by the amount of time it takes to send such - // a packet on the bottleneck). The 2nd term of the "if" does this. - // Note that we use the overall value of curq_, across all bins - if (d_exp_ < target_ || curq_ <= maxpacket_) { - // went below - stay below for at least interval - first_above_time_ = 0; - } else { - if (first_above_time_ == 0) { - //just went above from below. if still above at first_above_time - // will say it’s ok to drop - if ((now - drop_next_) < 8*interval_ && count_ > 1) - first_above_time_ = control_law(now); - else - first_above_time_ = now + interval_; - } else if (now >= first_above_time_) { - r.ok_to_drop = 1; - } - } - } - return r; -} - -// Get the next scheduled bin that has a non-empty queue and return its -// pointer. If it's not binsched_, update binsched_ to be this value. -// A null pointer means there is nothing to send on any bin. - -bindesc* sfqCoDelQueue::readybin() -{ - //get the next scheduled bin that has a non-empty queue, - // set the binsched_ to that bin, - // if none, return NULL - if(binsched_ == NULL) return NULL; - bindesc* b = binsched_; - - while((b->q_)->length() == 0) { - //clean up, remove bin from schedule - if(b->next == b) { - //means this was the only bin on the schedule, so empty the schedule - b->next = NULL; - b->prev = NULL; - b->on_sched_ = 0; - binsched_ = NULL; - return NULL; - } else { - b->on_sched_ = 0; - binsched_ = b->next; - binsched_->prev = b->prev; - (b->prev)->next = binsched_; - b->next = b->prev = NULL; - b = binsched_; - } - } - - return binsched_; -} - -void sfqCoDelQueue::removebin(bindesc* b) { - - while((b->q_)->length() == 0) { - //clean up, remove bin from schedule - if(b->next == b) { - //means this was the only bin on the schedule, so empty the schedule - b->next = NULL; - b->prev = NULL; - b->on_sched_ = 0; - binsched_ = NULL; - return; - } else { - b->on_sched_ = 0; - binsched_ = b->next; - binsched_->prev = b->prev; - (b->prev)->next = binsched_; - b->next = b->prev = NULL; - b = binsched_; - } - } -} - -// All of the work of CoDel is done here. There are two branches: In packet -// dropping state (meaning that the queue sojourn time has gone above target -// and hasn’t come down yet) check if it’s time to leave or if it’s time for -// the next drop(s). If not in dropping state, decide if it’s time to enter it -// and do the initial drop. - -Packet* sfqCoDelQueue::deque() -{ - double now = Scheduler::instance().clock();; - bindesc* b; - dodequeResult r; - - do { - //have to check all bins until find a packet (or there are none) - if( (b = readybin()) == NULL) return NULL; - b->newflag = 0; - first_above_time_ = b->first_above_time_; - drop_next_ = b->drop_next_; - count_ = b->count_; - dropping_ = b->dropping_; - - r = dodeque( b->q_ ); - if(r.p == NULL) printf("sfqCoDelQueue::deque(): error\n"); - - if (dropping_) { - if (! r.ok_to_drop) { - // sojourn time below target - leave dropping state - dropping_ = 0; - } - // It’s time for the next drop. Drop the current packet and dequeue - // the next. If the dequeue doesn't take us out of dropping state, - // schedule the next drop. A large backlog might result in drop - // rates so high that the next drop should happen now, hence the - // ‘while’ loop. - while (now >= drop_next_ && dropping_) { - drop(r.p); - r = dodeque(b->q_); -//in dropping state, drop elderly packets -//while (r.ok_to_drop && d_exp_ > 8*interval_) { -// drop(r.p); -// r = dodeque(b->q_); -//} - //if drop emptied queue, it gets to be new on next arrival - if(r.p == NULL) - removebin(b); - if (! r.ok_to_drop) { - // leave dropping state - dropping_ = 0; - } else { - // schedule the next drop. - ++(count_); - drop_next_ = control_law(drop_next_); - } - } - - // If we get here we’re not in dropping state. 'ok_to_drop' means that the - // sojourn time has been above target for interval so enter dropping state. - } else if (r.ok_to_drop) { - drop(r.p); - r = dodeque(b->q_); - b->newflag = 0; - //if drop emptied queue, it gets to be new on next arrival - if(r.p == NULL) - removebin(b); - dropping_ = 1; - - // If min went above target close to when it last went below, - // assume that the drop rate that controlled the queue on the - // last cycle is a good starting point to control it now. - // Note: didn't put count_ decay line in sfqcodel - count_ = (count_ > 2 && now - drop_next_ < 8*interval_)? count_ - 2 : 1; - drop_next_ = control_law(now); - } - b->count_ = count_; - b->first_above_time_ = first_above_time_; - b->drop_next_ = drop_next_; - b->dropping_ = dropping_; - } while (r.p == NULL) ; - - //if there's a packet to send need to advance bin schedule. If no packet to - // send, means this bin's queue is empty, so advance binsched_. - // so that binsched_ will be next one to send (or NULL) - if(binsched_ != NULL) binsched_ = binsched_->next; - - return (r.p); -} - -int sfqCoDelQueue::command(int argc, const char*const* argv) -{ - Tcl& tcl = Tcl::instance(); - if (argc == 2) { - if (strcmp(argv[1], "reset") == 0) { - reset(); - return (TCL_OK); - } - } else if (argc == 3) { - // attach a file for variable tracing - if (strcmp(argv[1], "attach") == 0) { - int mode; - const char* id = argv[2]; - tchan_ = Tcl_GetChannel(tcl.interp(), (char*)id, &mode); - if (tchan_ == 0) { - tcl.resultf("sfqCoDel trace: can't attach %s for writing", id); - return (TCL_ERROR); - } - return (TCL_OK); - } - // connect CoDel to the underlying queue - if (!strcmp(argv[1], "packetqueue-attach")) { -// delete q_; -// if (!(q_ = (PacketQueue*) TclObject::lookup(argv[2]))) -printf("error in command\n"); - return (TCL_ERROR); -// else { -// pq_ = q_; -// return (TCL_OK); -// } - } - } - return (Queue::command(argc, argv)); -} - -// Routine called by TracedVar facility when variables change values. -// Note that the tracing of each var must be enabled in tcl to work. -void -sfqCoDelQueue::trace(TracedVar* v) -{ - const char *p; - - if (((p = strstr(v->name(), "curq")) == NULL) && - ((p = strstr(v->name(), "d_exp")) == NULL) ) { - fprintf(stderr, "sfqCoDel: unknown trace var %s\n", v->name()); - return; - } - if (tchan_) { - char wrk[500]; - double t = Scheduler::instance().clock(); - if(*p == 'c') { - sprintf(wrk, "c %g %d", t, int(*((TracedInt*) v))); - } else if(*p == 'd') { - sprintf(wrk, "d %g %g %d %g", t, double(*((TracedDouble*) v)), count_, - count_? control_law(0.)*1000.:0.); - } - int n = strlen(wrk); - wrk[n] = '\n'; - wrk[n+1] = 0; - (void)Tcl_Write(tchan_, wrk, n+1); - } -} diff --git a/src/test/java/org/olat/portfolio/syncing_threads.c b/src/test/java/org/olat/portfolio/syncing_threads.c deleted file mode 100644 index f4d5bd27bb1d0d8f8a0645219a26661f304d1f5d..0000000000000000000000000000000000000000 --- a/src/test/java/org/olat/portfolio/syncing_threads.c +++ /dev/null @@ -1,94 +0,0 @@ -#include <pthread.h> -#include <stdlib.h> -#include <stdio.h> - -int running = 1; - -int thread1_waiting = 0; -pthread_t thread1; -pthread_cond_t thread1_cond; - -int thread2_waiting = 0; -pthread_t thread2; -pthread_cond_t thread2_cond; - -void* -thread1_func(void *arg){ - pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - - while(running){ - /* sleep 1 sec */ - usleep(1000000); - - pthread_mutex_lock(&mutex); - - if(!thread2_waiting){ - /* wait for thread 2 */ - thread1_waiting = 1; - - while(thread1_waiting){ - pthread_cond_wait(&thread1_cond, - &mutex); - } - - pthread_mutex_unlock(&mutex); - }else{ - /* wake up thread 2 */ - thread2_waiting = 0; - pthread_mutex_unlock(&mutex); - pthread_cond_signal(&thread2_cond); - } - } - - pthread_exit(NULL); -} - -void* -thread2_func(void *arg){ - pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - - while(running){ - /* sleep 1 sec */ - usleep(1000000); - - pthread_mutex_lock(&mutex); - - if(!thread1_waiting){ - /* wait for thread 2 */ - thread2_waiting = 1; - - while(thread2_waiting){ - pthread_cond_wait(&thread2_cond, - &mutex); - } - - pthread_mutex_unlock(&mutex); - }else{ - /* wake up thread 2 */ - thread1_waiting = 0; - pthread_mutex_unlock(&mutex); - pthread_cond_signal(&thread1_cond); - } - } - - pthread_exit(NULL); -} - -int -main(int argc, char **argv){ - printf("creating threads: hit any key to abort\n\0"); - - /* create threads */ - pthread_create(&thread1, - NULL, &thread1_func, - NULL); - pthread_create(&thread2, - NULL, &thread1_func, - NULL); - - /* wait for input and then abort */ - getchar(); - running = 0; - - return(0); -}