Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Neubewertung der OSSL-Funktionen
#11
So, dank zeitaufwändigen Support musste ich feststellen, das ich leider einiges wieder rückgägig machen muss. Mir als Simbetreiber fehlen inzwischen viele möglichkeiten mich selbst als OSSL nutzter einzutragen und in manchen fällen ist die Vordefiniereung komplet daneben. Die Iindividualisierung der OSSL rechte ist leider verlohren gegangen.

Das Arriba vielleicht die default Einstellungen ändert, ist OK, aber wer welche OSSL Funktionen nutzten darf/muss alleine dem Simbetreiber überlassen werden.

Beispiele:
- Als Simbetreiber möchte ich zugriff auf osConsoleCommand haben, aber blos nicht die Regionbesitzter
- Nicht alle betriebssystem unterstützen von haus aus die dynamic/draw funktionen, d.h. man muss jetzt alle einzeln deaktivieren oder im betriebsystem die fehlenden sachen nachinstallieren (hab solch einen Serverfall)
- Als Simbetreiber möchte ich auch auf einer Kundenregion osKickAvatar nutzten dürfen
- Meine armen Sandboxen, osInviteToGroup/osEjectFromGroup darf nur von Parcel/Estate/Owner/Simbetreiber ausgeführt werden... (Bsp Mall mit Sandbox)


Da müssen wir uns also nochmal gedanken drüber machen ob es so wie jetzt wirklich sin macht Wink Ich find jedenfalls um einiges schlechter als vorher.

Gruß
Michelle
Zitieren
#12
Die Individualisierung war vorher schon verloren. Die meisten Funktionen haben vorher bereits dem Rechtesystem nicht vertraut.

Es gab nur wenige Funktionen bei denen das Rechtesystem nicht bereits durch andere Abfragen ausgehebelt war.
Diese waren osRegionNotice, osKickAvatar, osSetSunParam und osSetWindParam.

@Michelle: interessanterweise fügst du dich aber aus technischen Gründen als zusätzlicher God ein und genau da bekommst auch osKickAvatar Rechte

anbei ein Diff zwischen Vanilla und Arriba.
Sehr schön zu sehen, dass ich die meisten Abfragen nur entfernt habe.
Die meisten Rechte-Abfragen waren bereits vorher in der Form da.
Ich habe mir nur die Mühe gemacht, diese mal zusammenzuschreiben.

Code:
28,37d27
< using System;
< using System.Collections;
< using System.Collections.Generic;
< using System.IO;
< using System.Reflection;
< using System.Runtime.Remoting.Lifetime;
< using System.Text;
< using System.Net;
< using System.Threading;
< using System.Xml;
38a29
> using Nini.Config;
41,42d31
< using Nini.Config;
< using OpenSim;
44,45d32
<
< using OpenSim.Framework.Console;
48,50d34
< using OpenSim.Region.ScriptEngine.Shared;
< using OpenSim.Region.ScriptEngine.Shared.Api.Plugins;
< using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
53c37
< using TPFlags = OpenSim.Framework.Constants.TeleportFlags;
---
> using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
55c39,44
< using GridRegion = OpenSim.Services.Interfaces.GridRegion;
---
> using System;
> using System.Collections;
> using System.Collections.Generic;
> using System.Reflection;
> using System.Runtime.Remoting.Lifetime;
> using System.Text;
57c46,47
<
---
> using System.Threading;
> using GridRegion = OpenSim.Services.Interfaces.GridRegion;
65a56
> using TPFlags = OpenSim.Framework.Constants.TeleportFlags;
138d128
<         internal bool m_OSFunctionsEnabled = false;
155,157d144
<             if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false))
<                 m_OSFunctionsEnabled = true;
<
253,255d239
<             if (!m_OSFunctionsEnabled)
<                 OSSLError(String.Format("{0} permission denied.  All OS functions are disabled.", function)); // throws
<
436,437d419
<             CheckThreatLevel(ThreatLevel.High, "osSetTerrainHeight");
<
443d424
<             CheckThreatLevel(ThreatLevel.High, "osTerrainSetHeight");
469d449
<             CheckThreatLevel(ThreatLevel.None, "osGetTerrainHeight");
475d454
<             CheckThreatLevel(ThreatLevel.None, "osTerrainGetHeight");
494,495c473,477
<             ITerrainModule terrainModule = World.RequestModuleInterface<ITerrainModule>();
<             if (terrainModule != null) terrainModule.TaintTerrain();
---
>             if (World.Permissions.CanIssueEstateCommand(m_host.OwnerID, false))
>             {
>                 ITerrainModule terrainModule = World.RequestModuleInterface<ITerrainModule>();
>                 if (terrainModule != null) terrainModule.TaintTerrain();
>             }
500,507d481
<             // This is High here because region restart is not reliable
<             // it may result in the region staying down or becoming
<             // unstable. This should be changed to Low or VeryLow once
<             // The underlying functionality is fixed, since the security
<             // as such is sound
<             //
<             CheckThreatLevel(ThreatLevel.High, "osRegionRestart");
<
541,546d514
<             // This implementation provides absolutely no security
<             // It's high griefing potential makes this classification
<             // necessary
<             //
<             CheckThreatLevel(ThreatLevel.VeryHigh, "osRegionNotice");
<
549c517,519
<             IDialogModule dm = World.RequestModuleInterface<IDialogModule>();
---
>             if (World.Permissions.CanIssueEstateCommand(m_host.OwnerID, false))
>             {
>                 IDialogModule dm = World.RequestModuleInterface<IDialogModule>();
551,552c521,523
<             if (dm != null)
<                 dm.SendGeneralAlert(msg);
---
>                 if (dm != null)
>                     dm.SendGeneralAlert(msg);
>             }
586,587d556
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetDynamicTextureURL");
<
608,609d576
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetDynamicTextureURLBlend");
<
630,631d596
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetDynamicTextureURLBlendFace");
<
652,653d616
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetDynamicTextureData");
<
681,682d643
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetDynamicTextureDataBlend");
<
710,711d670
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetDynamicTextureDataBlendFace");
<
738,739d696
<             CheckThreatLevel(ThreatLevel.Severe, "osConsoleCommand");
<
742d698
<             // For safety, we add another permission check here, and don't rely only on the standard OSSL permissions
754,755d709
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetPrimFloatOnWater");
<
858,860d811
<             // Threat level None because this is what can already be done with the World Map in the viewer
<             CheckThreatLevel(ThreatLevel.None, "osTeleportOwner");
<
871,872d821
<             CheckThreatLevel(ThreatLevel.None, "osTeleportOwner");
<
903,905d851
<             // threat level is None as we could get this information with an
<             // in-world script as well, just not as efficient
<             CheckThreatLevel(ThreatLevel.None, "osGetAgents");
935c881
<                     lock (m_host.TaskInventory)
---
>                     foreach (KeyValuePair<UUID, TaskInventoryItem> inv in m_host.TaskInventory)
937c883
<                         foreach (KeyValuePair<UUID, TaskInventoryItem> inv in m_host.TaskInventory)
---
>                         if (inv.Value.Name == animation)
939,944c885,887
<                             if (inv.Value.Name == animation)
<                             {
<                                 if (inv.Value.Type == (int)AssetType.Animation)
<                                     animID = inv.Value.AssetID;
<                                 continue;
<                             }
---
>                             if (inv.Value.Type == (int)AssetType.Animation)
>                                 animID = inv.Value.AssetID;
>                             continue;
999,1000d941
<             CheckThreatLevel(ThreatLevel.None, "osMovePen");
<
1008,1009d948
<             CheckThreatLevel(ThreatLevel.None, "osDrawLine");
<
1017,1018d955
<             CheckThreatLevel(ThreatLevel.None, "osDrawLine");
<
1026,1027d962
<             CheckThreatLevel(ThreatLevel.None, "osDrawText");
<
1035,1036d969
<             CheckThreatLevel(ThreatLevel.None, "osDrawEllipse");
<
1044,1045d976
<             CheckThreatLevel(ThreatLevel.None, "osDrawRectangle");
<
1053,1054d983
<             CheckThreatLevel(ThreatLevel.None, "osDrawFilledRectangle");
<
1062,1063d990
<             CheckThreatLevel(ThreatLevel.None, "osDrawFilledPolygon");
<
1081,1082d1007
<             CheckThreatLevel(ThreatLevel.None, "osDrawPolygon");
<
1100,1101d1024
<             CheckThreatLevel(ThreatLevel.None, "osSetFontSize");
<
1109,1110d1031
<             CheckThreatLevel(ThreatLevel.None, "osSetFontName");
<
1118,1119d1038
<             CheckThreatLevel(ThreatLevel.None, "osSetPenSize");
<
1127,1128d1045
<             CheckThreatLevel(ThreatLevel.None, "osSetPenColor");
<            
1137d1053
<             CheckThreatLevel(ThreatLevel.None, "osSetPenColour");
1147,1148d1062
<             CheckThreatLevel(ThreatLevel.None, "osSetPenCap");
<
1156,1157d1069
<             CheckThreatLevel(ThreatLevel.None, "osDrawImage");
<
1165d1076
<             CheckThreatLevel(ThreatLevel.VeryLow, "osGetDrawStringSize");
1180a1092
>         /*
1192a1105
>         */
1196c1109,1113
<             CheckThreatLevel(ThreatLevel.High, "osSetRegionWaterHeight");
---
>             if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
>             {
>                 OSSLShoutError("osSetSunParam can only be used by estate managers or owner");
>                 return;
>             }
1211c1128,1132
<             CheckThreatLevel(ThreatLevel.High, "osSetRegionSunSettings");
---
>             if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
>             {
>                 OSSLShoutError("osSetSunParam can only be used by estate managers or owner");
>                 return;
>             }
1236c1157,1161
<             CheckThreatLevel(ThreatLevel.High, "osSetEstateSunSettings");
---
>             if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
>             {
>                 OSSLShoutError("osSetSunParam can only be used by estate managers or owner");
>                 return;
>             }
1249c1174
<             World.EstateDataService.StoreEstateSettings(World.RegionInfo.EstateSettings);
---
>             World.RegionInfo.EstateSettings.Save();
1260,1261d1184
<             CheckThreatLevel(ThreatLevel.None, "osGetCurrentSunHour");
<
1279d1201
<             CheckThreatLevel(ThreatLevel.None, "osSunGetParam");
1286d1207
<             CheckThreatLevel(ThreatLevel.None, "osGetSunParam");
1307d1227
<             CheckThreatLevel(ThreatLevel.None, "osSunSetParam");
1314c1234,1239
<             CheckThreatLevel(ThreatLevel.None, "osSetSunParam");
---
>             if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
>             {
>                 OSSLShoutError("osSetSunParam can only be used by estate managers or owner");
>                 return;
>             }
>
1331d1255
<             CheckThreatLevel(ThreatLevel.None, "osWindActiveModelPluginName");
1345d1268
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetWindParam");
1347a1271,1276
>             if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
>             {
>                 OSSLShoutError("osSetWindParam can only be used by estate managers or owner");
>                 return;
>             }
>
1376c1305,1310
<             CheckThreatLevel(ThreatLevel.High, "osParcelJoin");
---
>             if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
>             {
>                 OSSLShoutError("osSetSunParam can only be used by estate managers or owner");
>                 return;
>             }
>
1389c1323,1328
<             CheckThreatLevel(ThreatLevel.High, "osParcelSubdivide");
---
>             if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
>             {
>                 OSSLShoutError("osSetSunParam can only be used by estate managers or owner");
>                 return;
>             }
>
1402,1405c1341,1342
<             const string functionName = "osParcelSetDetails";
<             CheckThreatLevel(ThreatLevel.High, functionName);
<             OSSLDeprecated(functionName, "osSetParcelDetails");
<             SetParcelDetails(pos, rules, functionName);
---
>             OSSLDeprecated("osParcelSetDetails", "osSetParcelDetails");
>             SetParcelDetails(pos, rules);
1410,1412c1347
<             const string functionName = "osSetParcelDetails";
<             CheckThreatLevel(ThreatLevel.High, functionName);
<             SetParcelDetails(pos, rules, functionName);
---
>             SetParcelDetails(pos, rules);
1415c1350
<         private void SetParcelDetails(LSL_Vector pos, LSL_List rules, string functionName)
---
>         private void SetParcelDetails(LSL_Vector pos, LSL_List rules)
1455,1457c1390,1394
<                         CheckThreatLevel(ThreatLevel.VeryHigh, functionName);
<                         if (UUID.TryParse(arg, out uuid))
<                             newLand.OwnerID = uuid;
---
>                         if (World.Permissions.CanIssueEstateCommand(m_host.OwnerID, false))
>                         {
>                             if (UUID.TryParse(arg, out uuid))
>                                 newLand.OwnerID = uuid;
>                         }
1461,1463c1398,1402
<                         CheckThreatLevel(ThreatLevel.VeryHigh, functionName);
<                         if (UUID.TryParse(arg, out uuid))
<                             newLand.GroupID = uuid;
---
>                         if (World.Permissions.CanIssueEstateCommand(m_host.OwnerID, false))
>                         {
>                             if (UUID.TryParse(arg, out uuid))
>                                 newLand.GroupID = uuid;
>                         }
1467,1470c1406,1411
<                         CheckThreatLevel(ThreatLevel.VeryHigh, functionName);
<                         newLand.ClaimDate = Convert.ToInt32(arg);
<                         if (newLand.ClaimDate == 0)
<                             newLand.ClaimDate = Util.UnixTimeSinceEpoch();
---
>                         if (World.Permissions.CanIssueEstateCommand(m_host.OwnerID, false))
>                         {
>                             newLand.ClaimDate = Convert.ToInt32(arg);
>                             if (newLand.ClaimDate == 0)
>                                 newLand.ClaimDate = Util.UnixTimeSinceEpoch();
>                         }
1485,1486d1425
<             CheckThreatLevel(ThreatLevel.None, "osList2Double");
<
1503,1504d1441
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetParcelMediaURL");
<
1517,1520d1453
<             // What actually is the difference to the LL function?
<             //
<             CheckThreatLevel(ThreatLevel.VeryLow, "osSetParcelSIPAddress");
<
1651,1652d1583
<             CheckThreatLevel(ThreatLevel.None, "osParseJSONNew");
<
1669,1670d1599
<             CheckThreatLevel(ThreatLevel.None, "osParseJSON");
<
1702d1630
<             CheckThreatLevel(ThreatLevel.Low, "osMessageObject");
1744d1671
<             CheckThreatLevel(ThreatLevel.High, "osMakeNotecard");
1770a1698,1705
>             byte[] a;
>             byte[] b;
>             byte[] c;
>
>             b = Util.UTF8.GetBytes(data);
>
>             a = Util.UTF8.GetBytes(
>                 "Linden text version 2\n{\nLLEmbeddedItems version 1\n{\ncount 0\n}\nText length " + b.Length.ToString() + "\n");
1772,1775c1707
<             int textLength = data.Length;
<             data
<                 = "Linden text version 2\n{\nLLEmbeddedItems version 1\n{\ncount 0\n}\nText length "
<                     + textLength.ToString() + "\n" + data + "}\n";
---
>             c = Util.UTF8.GetBytes("}");
1777c1709,1714
<             asset.Data = Util.UTF8.GetBytes(data);
---
>             byte[] d = new byte[a.Length + b.Length + c.Length];
>             Buffer.BlockCopy(a, 0, d, 0, a.Length);
>             Buffer.BlockCopy(b, 0, d, a.Length, b.Length);
>             Buffer.BlockCopy(c, 0, d, a.Length + b.Length, c.Length);
>
>             asset.Data = d;
1872,1873c1809
<                 string data = Encoding.UTF8.GetString(a.Data);
<                 NotecardCache.Cache(assetID, data);
---
>                 NotecardCache.Cache(assetID, a.Data);
1894d1829
<             CheckThreatLevel(ThreatLevel.VeryHigh, "osGetNotecardLine");
1922d1856
<             CheckThreatLevel(ThreatLevel.VeryHigh, "osGetNotecard");
1952d1885
<             CheckThreatLevel(ThreatLevel.VeryHigh, "osGetNumberOfNotecardLines");
1968d1900
<             CheckThreatLevel(ThreatLevel.Low, "osAvatarName2Key");
1984d1915
<             CheckThreatLevel(ThreatLevel.Low, "osKey2Name");
2086d2016
<             CheckThreatLevel(ThreatLevel.Moderate, "osGetGridNick");
2103d2032
<             CheckThreatLevel(ThreatLevel.Moderate, "osGetGridName");
2120d2048
<             CheckThreatLevel(ThreatLevel.Moderate, "osGetGridLoginURI");
2137d2064
<             CheckThreatLevel(ThreatLevel.Moderate, "osGetGridHomeURI");
2159d2085
<             CheckThreatLevel(ThreatLevel.Moderate, "osGetGridGatekeeperURI");
2195d2120
<             CheckThreatLevel(ThreatLevel.VeryLow, "osFormatString");
2203d2127
<             CheckThreatLevel(ThreatLevel.VeryLow, "osMatchString");
2245d2168
<             CheckThreatLevel(ThreatLevel.VeryLow, "osReplaceString");
2270d2192
<             CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationDate");
2278d2199
<             CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationTime");
2286d2206
<             CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationID");
2307d2226
<             CheckThreatLevel(ThreatLevel.High, "osGetLinkPrimitiveParams");
2335,2336d2253
<             CheckThreatLevel(ThreatLevel.VeryLow, "osForceCreateLink");
<
2345,2346d2261
<             CheckThreatLevel(ThreatLevel.VeryLow, "osForceBreakLink");
<
2355,2356d2269
<             CheckThreatLevel(ThreatLevel.VeryLow, "osForceBreakAllLinks");
<
2365d2277
<             CheckThreatLevel(ThreatLevel.None, "osIsNpc");
2456d2367
<             CheckThreatLevel(ThreatLevel.High, "osNpcSaveAppearance");
2478d2388
<             CheckThreatLevel(ThreatLevel.High, "osNpcLoadAppearance");
2510d2419
<             CheckThreatLevel(ThreatLevel.None, "osNpcGetOwner");
2532d2440
<             CheckThreatLevel(ThreatLevel.High, "osNpcGetPos");
2556d2463
<             CheckThreatLevel(ThreatLevel.High, "osNpcMoveTo");
2575d2481
<             CheckThreatLevel(ThreatLevel.High, "osNpcMoveToTarget");
2600d2505
<             CheckThreatLevel(ThreatLevel.High, "osNpcGetRot");
2616c2521
<                     return new LSL_Rotation(sp.GetWorldRotation());
---
>                     return new LSL_Rotation(sp.WorldRotation);
2624d2528
<             CheckThreatLevel(ThreatLevel.High, "osNpcSetRot");
2646d2549
<             CheckThreatLevel(ThreatLevel.High, "osNpcStopMoveToTarget");
2668d2570
<             CheckThreatLevel(ThreatLevel.High, "osNpcSay");
2685d2586
<             CheckThreatLevel(ThreatLevel.High, "osNpcShout");
2702d2602
<             CheckThreatLevel(ThreatLevel.High, "osNpcSit");
2719d2618
<             CheckThreatLevel(ThreatLevel.High, "osNpcStand");
2736d2634
<             CheckThreatLevel(ThreatLevel.High, "osNpcRemove");
2753d2650
<             CheckThreatLevel(ThreatLevel.High, "osNpcPlayAnimation");
2768d2664
<             CheckThreatLevel(ThreatLevel.High, "osNpcStopAnimation");
2783d2678
<             CheckThreatLevel(ThreatLevel.High, "osNpcWhisper");
2800d2694
<             CheckThreatLevel(ThreatLevel.High, "osNpcTouch");
2805c2699
<             if (module != null || (linkNum < 0 && linkNum != ScriptBaseClass.LINK_THIS))
---
>             if (module != null && (linkNum < 0 && linkNum != ScriptBaseClass.LINK_THIS))
2845d2738
<             CheckThreatLevel(ThreatLevel.High, "osOwnerSaveAppearance");
2904d2796
<             CheckThreatLevel(ThreatLevel.None, "osGetMapTexture");
2934,2935d2825
<             ScriptSleep(1000);
<
2962d2851
<             CheckThreatLevel(ThreatLevel.None, "osGetRegionSize");
3011c2900
<             CheckThreatLevel(ThreatLevel.Severe, "osKickAvatar");
---
>             EstateSettings estate = World.RegionInfo.EstateSettings;
3013a2903,2908
>             if (!estate.IsEstateManagerOrOwner(m_host.OwnerID))
>             {
>                 OSSLShoutError("You are not Estate Owner or Estate Manager");
>                 return;
>             }
>
3030d2924
<             CheckThreatLevel(ThreatLevel.None, "osGetHealth");
3045c2939
<             Vector3 pos = m_host.GetWorldPosition();
---
>             Vector3 pos = m_host.WorldPosition;
3075c2969
<             if (presence != null && World.ScriptDanger(m_host.LocalId, m_host.GetWorldPosition()))
---
>             if (presence != null && World.ScriptDanger(m_host.LocalId, m_host.WorldPosition))
3151d3044
<             CheckThreatLevel(ThreatLevel.None, "osGetAvatarList");
3175d3067
<             CheckThreatLevel(ThreatLevel.VeryLow, "osUnixTimeToTimestamp");
3195c3087
<             lock (m_host.TaskInventory)
---
>             foreach (KeyValuePair<UUID, TaskInventoryItem> inv in m_host.TaskInventory)
3197c3089
<                 foreach (KeyValuePair<UUID, TaskInventoryItem> inv in m_host.TaskInventory)
---
>                 if (inv.Value.Name == item)
3199,3202c3091
<                     if (inv.Value.Name == item)
<                     {
<                         return inv.Value.Description.ToString();
<                     }
---
>                     return inv.Value.Description.ToString();
3216d3104
<             CheckThreatLevel(ThreatLevel.VeryLow, "osInviteToGroup");
3251d3138
<             CheckThreatLevel(ThreatLevel.VeryLow, "osEjectFromGroup");
3286,3287d3172
<             CheckThreatLevel(ThreatLevel.High, "osSetTerrainTexture");
<
3291c3176
<             if (World.Permissions.IsGod(m_host.OwnerID))
---
>             if (World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
3316,3317d3200
<             CheckThreatLevel(ThreatLevel.High, "osSetTerrainTextureHeight");
<
3321c3204
<             if (World.Permissions.IsGod(m_host.OwnerID))
---
>             if (World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
3601d3483
<             CheckThreatLevel(ThreatLevel.None, "osIsUUID");
3616d3497
<             CheckThreatLevel(ThreatLevel.None, "osMin");
3630d3510
<             CheckThreatLevel(ThreatLevel.None, "osMax");
3638d3517
<             CheckThreatLevel(ThreatLevel.None, "osGetRezzingObject");
3650,3651d3528
<             CheckThreatLevel(ThreatLevel.High, "osSetContentType");
<
3744d3620
<             CheckThreatLevel(ThreatLevel.Low, "osListenRegex");
3792d3667
<             CheckThreatLevel(ThreatLevel.Low, "osRegexIsMatch");

So wie ich das aktuell sehe, bin ich der erste der das mal zusammengeschrieben hat und auch bereit ist, den Zusammenhang zugänglich zu beschreiben.
Bei den OpenSim Devs scheint ja genau dieses zu fehlen als Auflistung. Dennoch sind bis auf die von mir benannten Funktionen alle anderen seit langem schon in entsprechender Form abgeprüft.

Auch osConsoleCommand hat in der Vanilla genau die Abfrage seit langem die du jetzt anmäkelst.
Allerdings macht es hier definitiv Sinn osConsoleCommand weiter einschränken zu können, daher kommt diese Abfrage wieder rein.

Zitat:- Nicht alle betriebssystem unterstützen von haus aus die dynamic/draw funktionen, d.h. man muss jetzt alle einzeln deaktivieren oder im betriebsystem die fehlenden sachen nachinstallieren (hab solch einen Serverfall)

welche Betriebssysteme finden bitte noch Anwendung derzeit ausser Linux und Windows?
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#13
Betriebsysteme, da habe ich derzeit 2 mal Debian anzubieten, bei denen die Draw/SetDynamic ähnlichen Funktionen außer Fehlermeldungen vom System weiterleiten nicht funktionieren. Es könnte eine Einstellung vom Serveranbieter sein, keine Ahnung, jedenfalls funktioniert es bis heute nicht.

Ich hatte halt gestern den Fall, wo jemand dank den Veränderungen eine meiner Sanboxen mit osInviteToGroup missbrauchen durfte. Hatte halt in der ini noch brav meine Alten einstellungen die auf pracelowner/admins eingeschränkt waren. Sowas wäre mit den alten Einstellungen nicht möglich gewesen und hab erst nach langen Grübeln und probieren dann die OSSLs unter die lupe genommen.

Stimmt schon das ich mich als zusätzlichen God einfüge, was aber nicht heisst das alle die im Supportteam sind zwangsweise auch die selben Rechte auf alle Funktionen erhalten sollen. Sicherlich kann man jetzt sagen, dass man sein Supportteam vertrauen kann (sollte), aber man muss desshalb nicht gleich der Sekretärin die Rechte auf alles geben.

Wenn ich die Wahl hätte, würde ich alle OSSL Grundsätzlich in der standard ini deaktivieren. Das Rechtesystem würde ich auf die ini Einstellung beschränken und die im Code verankerten entfernen. Somit wäre die größmögliche Flexibilität vorhanden und beim Einstellen der jeweiligen OSSL muss man sich für die optimale Einstellung im Einzelfall selbst entscheiden. In der ini gibts dann nur noch Empfehlungen für die "Durchschnittsregion". Bei standardmäßigen Deaktivieren der Funktion gibts auch keine Überraschungen nach einem Update wenns neue Funktionen gibt die man evtl überlesen hat.

Gruß
Michelle
Zitieren
#14
Ich kann auch im Grunde 80% der Funktionen einfach mal ausbauen und keiner wird sie vermissen. Weil genau durch diese andauernde Beschränken diese Funktionen in Richtung absurdum geführt werden.

Es gibt sicherlich ein paar Funktionen denen man eine Beschränkbarkeit hinzufügen könnte, wenn es hier sinnvolle Begründungen gibt.

Im letzten Absatz sagst du es! Man kann sie glatt gleich komplett ausbauen, da ja wegen unvorhersagbarer Verfügbarkeit ad absurdum geführt sind.

Im Übrigen osInviteToGroup funktioniert nur bei Leuten die als Owner des Objekts auch das Recht haben neue Leute in eine Gruppe einzuladen.

Code:
// object owner has to be in that group and required permissions
            GroupMembershipData member = groupsModule.GetMembershipData(m_host.GroupID, m_host.OwnerID);
            if (member == null || (member.GroupPowers & (ulong)GroupPowers.Invite) == 0) return ScriptBaseClass.FALSE;

Im Grunde hat dieser die betreffende Funktion gar nicht benötigt. Er konnte es ganz einfach über den Viewer durchführen.
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren
#15
Das eigentliche Problem ist aber das Addons.Groups Modul welches alles in Caches halt. Selbst wenn der Nutzer nicht mehr gridseitig in der Gruppe ist, so glaubt die Sim das durchaus noch. Je nachdem wie gut der Cache abräumt.
Die ganze Welt ist ein Irrenhaus und wir sind nur die Kandidaten  ;)
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste