Perms in Objekten

Scarlett Earp
Scarlett Earp
 Member edited August 2014 in Technical Support
Hallo zusammen,

vielleicht hat jemand von Euch, die ein oder andere Idee...

Derzeit hab ich Probleme mit den Perms bei den Objekten (nomody, nocopy,notrans), diese ändern sich seit einigen Tagen automatisch. Jedoch brauch ich die Einstellungen der Objekte der Perms, so im Inventar und auch Inworld.

Nun ist es so, dass die Objekte im Inventar als FullPerm angezeigt werden und Inworld richtig mit den Perms die es haben sollte . Nur benötige ich diese Objekte auch im Inventar als richtig angezeigt.

Beim ersten mal ins Inventar nehmen, funktioniert es, und bei den Objekte sind die richtigen Perms vorhanden , doch nach einem Reset / Relog ändern sich diese.

Ich habe bereits einiges versucht:

- Objekte neu angepasst der perms
- Test mit mehreren Avataren
- andere Vanilla Sim
- Arriba Sim

Jedoch verlaufen alle Test auf das gleiche Hinaus, am Ende werden alle Objekte als FULLPERM im Inventar angezeigt. :(

Mich stellt sich die Frage gibt es eine Möglichkeit, wo man einstellen kann, dass die Perms sich nicht verändern?

LG Scarlett

Comments

  • Victor Clary
    Victor Clary
     Member edited 2:33PM
    Hi Scarlett,

    das geht ja noch bei mir wird fast alles als Full Perm im Inventar angezeigt, und beim rezzen sind es nicht mehr meine Objekte laut der Rechte. Ich bin jetzt dabei alles neu zu bauen.

    Victor :(
  • bertl
    bertl
     Member edited 2:33PM
    Hi Scarlett,

    die Frage die sich mir stellt ist: Ändern sich tatsächlich die Rechte oder ändert sich die Darstellung nach einem Relog. Ich tippe auf letzteres, weil möglicherweise die Rechte nämlich immer so waren, lediglich nicht "richtig" dargestellt werden. So weit ich den Kontext verstehe, sind das ja Objekte im Inventar, die von einem Programm erzeugt werden. Mein Analyse-Weg wäre jetzt der, auf der Datenbank die Rechte zu prüfen direkt nachdem das Programm das Objekt erzeugt hat:

    Hier ein Beispiel, die Bedeutung der Bitmaske die die Rechte repräsentiert müsste ich erst recherchieren:
    mysql> select inventoryName, inventoryNextPermissions, inventoryCurrentPermissions from inventoryitems where assetID="8b212dab-a289-4129-84b1-c98e2e55d923";
    +---------------+--------------------------+-----------------------------+
    | inventoryName | inventoryNextPermissions | inventoryCurrentPermissions |
    +---------------+--------------------------+-----------------------------+
    | Primitive     |                   532480 |                      581639 |
    +---------------+--------------------------+-----------------------------+
    1 row in set (0.00 sec)
    

    Dann wie du beschreibst Relog und dann: Ist das jetzt anders?
    Wenn ja liegt ein Fehler im Sim-Code vor, darf ja nicht wirklich sein, wenn nein (aber anders dargestellt im Viewer) haben wir eine Abweichung zwischen "Sein" und "Schein" und man müsste genauer einsteigen, was da beim Erzeugen (durch das Programm) geschieht.

    lG Bert.
  • bertl
    bertl
     Member edited 2:33PM
    Nachtrag: Ich stelle da mal was zusammen an Screenshots, das die Sachlage etwas anschaulicher macht, dauert etwas ;)
  • Sheera Khan
    Sheera Khan
     Moderator edited 2:33PM
    Cool :-)

    *wartet gespannt*

    Sheera
  • bertl
    bertl
     Member edited 2:33PM
    Also jetzat, ich bin ja der völlige Chaot, eigentlich wollte ich in den Baumarkt wegen Ytong-Mörtel, aber eh kein Geld grad ^^, dann hab ich auf dem Grid diverse unverträgliche Versionen rennen, so dass eine Inventar-Übergabe von 0.7.6 nach 0.8-dev nicht klappte, aber irgendwie geht das schon alles +lach+. Nun denn in "medias res" wie der Neapolitaner sagt, wir dröseln die Rechtestruktur auf von OpenSim:

    Der Herr "anatol wurst" legt einen Prim an, nennt den "Eindeutig2", nimmt ihn auf und schaut sich die Rechte an:
    rechteTest-OriginalInventarNachTake.JPG.
    Dann übergibt er diesen Prim an den Herrn "Bert Mandelkern" und der schaut sich das Ding auch an:
    rechteTest-KopieUebergeben.JPG
    So weit so gut, ich schätze die Rechte die Scarlett braucht sehen so in etwa aus wie die letzteren.
    Also NoModify, NoCopy, vielleicht auch noch "NoTransfer", ist aber jetzt ohne Belang für die weitere Analyse.
    In der Datenbank sieht das nun folgendermaßen aus, und unser schöner Prim-Name hilft nun das Ding zu finden:
    rechteTest-DatenbankNachUebergabe.JPG
    Wir sehen also nun vier seltsame Zahlen die irgendwie Rechte repräsentieren.
    Hierzu werden üblicherweise Bit bzw Hex-Masken verwendet, für die Rechte ist das folgende (von OpenSim.org):
    permissionMask.JPG
    Sieht jetzt furchtbar kompliziert aus, ist es aber nicht, alles simples Addieren in Hex.
    Wir haben ja die Wunsch-Rechte (wie oben geschrieben mal angenommen) von 532487, das ist in Hex "82007", ohne jetzt darüber weiter zu grübeln Subtrahieren wir mal vom Original "581639" das was schließlich beim Empfänger ankommt, also 532487, und kommen auf 49152. Das wiederum als Hex ergibt "C000", und jetzt schauen wir in die Maske: Das kann man zusammenstellen aus "4000" und "8000" und just das Modify und das Copy sind diejenigen die fehlen beim Empfänger, bingo. Das ist gerade der Witz an solchen Masken, dass sich Ergebnisse immer nur aus ganz bestimmten Werten zusammenstellen lassen.
    Das nochmal als Bild (beim eventuellen Nachrechnen immer daran denken erst NACH dem Rechnen auf Hex umzustellen im Calculator):
    rechteTest-MaskeAufgedroeselt.JPG

    Langer Rede kurzer Sinn: Bitte mal direkt nach Übergabe durch das Programm in der Datenbank prüfen, ob dort der gewünschte Wert "532487" - oder, wenn auch noch ohne Transfer "524295" (also in Hex 80007, weil auch noch 2000 subtrahiert werden muss, die Differenz zwischen Original und Kopie ist dann E000 welches sich wiederum nur aus 2000 und 4000 und 8000 zusammenstellen lässt). Und wenn das der Fall ist: Ändert sich tatsächlich durch Ausloggen / Einloggen ein Recht also der Wert für "inventoryCurrentPermissions" beim entsprechenden Avatar? Sollte das wirklich der Fall sein könnte man (bei Linux) einen Patcher mitlaufen lassen, aber das sprengt jetzt den Rahmen hier.

    Viel Erfolg liebe Scarlett, toi toi toi. :)
  • Lena Vanilli
    Lena Vanilli
     Administrator edited 2:33PM
    Huhu zusammen,

    ich hatte Scarlett versprochen, dass ich mir das auch einmal anschaue. Habe aber bislang auch noch nix gefunden, was die 'Ursache sein könnte. Vielleicht müssen wir da doch tiefer in den Code rein bzw. andere Versionen testen und und das Ergebnis vergleichen.

    Manche werden sich noch daran erinnern, dass ich mal ein Tool gescriptet habe, mit dem man in OAR's und IAR's die Owner und auch die Rechte frei ändern. Das würde bei manchen Problemen hier erstmal helfen, aber aus verständlichen Gründen möchte ich dieses Tool nur für absolute Ausnahmen einsetzen. Und schon garnicht publizieren. ;)

    Aber ich glaube, es wäre ganz gut, wenn wir die Rechte im Inventory-Tool sichtbar machen. Das würde schon mal Vieles erleichtern. Ich mach mich da gleich mal dran . ;) Vielleicht könnt ihr Inworld-Experten damit ja was anfangen. ;)

    Viele Grüße
    Lena
  • Sheera Khan
    Sheera Khan
     Moderator edited 2:33PM
    Huhu Lena,

    das wäre cool! Könnte man die Rechte dann vielleicht sogar gleich änderbar machen?

    Ciaooo

    Sheera
  • Sheera Khan
    Sheera Khan
     Moderator edited 2:33PM
    Huhu Bertl,

    mal so ganz blond gefragt: diese DB-Abfragen gehen aber doch nur, wenn man Zugriff auf seine Asset-DB hat, oder? D.h. auf einer Stand-Alone oder einem Mini-Grid. In Metro werden diese Daten aber doch in dem zentralen Asset-Server gespeichert, und da kommen wir doch so direkt nicht dran?

    Ciaooo

    Sheera
  • bertl
    bertl
     Member edited 2:33PM
    Heyho Sheera,

    gar nicht blond, zumindest nicht gefragt, du hast natürlich völlig Recht, ich Depp.
    Hab da gar nicht drüber nachgedacht. Aber vom Prinzip her ist es das was geprüft werden müsste.
    Daher könnte Lenas Tool sehr hilfreich sein bei der Untersuchung.
    Danke sehr für die Frage, +kopfschüttel-über-mich-selbst+ :)

    Ciao, Bert.
  • Scarlett Earp
    Scarlett Earp
     Member edited 2:33PM
    huhu zusammen,

    um noch einmal genauer zu erklären wie sich dass ganze abspielt, benutze ich einfach mal Bert sein Anfangsbeispiel:

    Der Herr "anatol wurst" legt einen Prim an, nennt den "Eindeutig2", nimmt ihn auf und schaut sich die Rechte an:
    rechteTest-OriginalInventarNachTake.JPG.

    Dann übergibt er diesen Prim an den Herrn "Bert Mandelkern" und der schaut sich das Ding auch an:
    rechteTest-KopieUebergeben.JPG


    In meinem Fall ist der Herr "anatol Wurst" der Primgeber. und Herr "Bert Mandelkorn" der Empfänger des Prims.

    Soweit so gut, dass erstmal so wie es Bert darstellt funktioniert, einwandfrei.
    Nun muss aber, aus unterschiedlichen Gründen der Geber reseten bzw auch neustarten.
    Danach wenden sich Herr "Bert Mandelkorn" erneut an den Primgeber zu um einen weiteren Prim zu erhalten.
    Der Geber gibt diesen Prim wie zuvor an den Herrn "Bert Mandelkorn" .

    Doch ist dieser Prim nicht mehr so im Inventar rechteTest-KopieUebergeben.JPG sondern so rechteTest-OriginalInventarNachTake.JPG.

    Nun kann Herr "Bert Mandelkorn" den Prim in unzähligen Mengen rezzen und behält diese jedoch weiter im Inventar, schaut man sich jedoch nun die gerezzt Prims Inworld an, haben die Prims wie zuvor gewünscht die richtigen Perms.

    Doch das ist leider nicht der Sinn und Zweck des Ganzen. :(
  • bertl
    bertl
     Member edited 2:33PM
    Verstehe Scarlett :)
    Das wird schon klappen, Kopf hoch :)
    Hier mal auf die Schnelle was zusammengeklöppelt um Rechte abzufragen wenn man keinen Robust-Zugriff hat.
    Muss man natürlich Datenbank-Name, Username und Kennwort eintragen.
    Ist auch sicherlich noch fehlerbehaftet, nur mal so 'hingeschnudelt' ;)
    <?php
    session_start();
    echo "<html>\n";
    echo "<head>\n";
    echo "<title>PrimInfos</title>\n";
    echo "</head>\n";
    echo "<body>\n";
    echo "<form method=\"post\" action='' enctype=\"multipart/form-data\">";
    echo "<br>Name:";
    echo "<input type='name' name='name'>";
    echo "<input type='submit' name='Submit' value='Senden'>";
    echo "</form>\n";
    $mysqli = new mysqli("localhost", "username", "passwort", "dbname");
    if (mysqli_connect_errno()) {
       printf("Connect failed: %s\n", mysqli_connect_error());
       exit();
    }
    if (isset($_POST["name"])) {
       $suchName = $_POST["name"];
       echo "<br>Suche nach Prims mit Namensbestandteil '$suchName' ...<br>";
       $cmd = "select Firstname, LastName, inventoryName, inventoryCurrentPermissions from inventoryitems join UserAccounts on PrincipalID = avatarID where inventoryName like \"%$suchName%\"";
       #echo "<br>fuehre aus: $cmd<p>";
       if ($result = $mysqli->query("$cmd")) {
          $countv = $result->num_rows;
          if ($countv > 0) {
             echo "<table border=1>\n";
             echo "<tr><th>Vorname</th><th>Nachname</th><th>InventarName</th><th>RechteDezimal</th>";
             echo "<th>Dam</th><th>Mov</th><th>Copy</th><th>Mod</th><th>Trans</th><th></th></tr>\n";
             while ($ergebnis = $result->fetch_object()) {
                $fn  = $ergebnis->Firstname;
                $ln  = $ergebnis->LastName;
                $in  = $ergebnis->inventoryName;
                $icp = $ergebnis->inventoryCurrentPermissions;
                $icpC = $icp;
                if ($icpC > hexdec("00100000")) { $dam = "T"; $icpC = $icpC - hexdec("00100000"); } else { $dam = "F"; }
                if ($icpC > hexdec("00080000")) { $mov = "T"; $icpC = $icpC - hexdec("00080000"); } else { $mov = "F"; }
                if ($icpC > hexdec("00008000")) { $cop = "T"; $icpC = $icpC - hexdec("00008000"); } else { $cop = "F"; }
                if ($icpC > hexdec("00004000")) { $mod = "T"; $icpC = $icpC - hexdec("00004000"); } else { $mod = "F"; }
                if ($icpC > hexdec("00002000")) { $tra = "T"; $icpC = $icpC - hexdec("00002000"); } else { $tra = "F"; }
                echo "<tr><td>$fn</td><td>$ln</td><td>$in</td><td>$icp</td>";
                echo "<td>$dam</td><td>$mov</td><td>$cop</td><td>$mod</td><td>$tra</td><td>$icpC</td></tr>\n";
             }
             echo "</table>\n";
          }
          $result->close();
       }
    }
    $mysqli->close();
    ?>
    </body>
    </html>
    
    Kann man hier ausprobieren. Hab aus Datenschutzgründen dabei allerdings den Namen von Bert und Anatol fest verdrahtet. Gibt man z.B. "Eindeutig" als Namen ein, dann erhält man folgende Tabelle:
    abfrage-beispiel.JPG
    Die dem Beispiel von weiter oben angelehnt ist. Dabei bedeutet: "Dam" = "Damage" ... (selbsterklärend) und hinten folgt eine Kontrollausgabe der restlichen Bits, da fehlt noch was, keine Ahnung lol. "T" steht jeweils für "true" und "F" für "false".
  • Lena Vanilli
    Lena Vanilli
     Administrator edited 2:33PM
    Huhu ihr Permission-Geschädigten!

    Ich habe mal die Darstellung der Permissions im Inventory-Tool http://metropolis.hypergrid.org/inventory.php eingefügt. Da könnt ihr jetzt die Permissions für Base, Owner, NextUser, Group und Everyone vergleichen. Ich hoffe, es hilft euch bei der Suche nach der Ursache.

    Wenn ihr das Fehlverhalten eingrenzen könnt, sollten wir nochmal drüber sprechen, ob wir ggf. das OS-Permission-Modul anpassen sollten.

    Viele Grüße
    Lena
  • Scarlett Earp
    Scarlett Earp
     Member edited 2:33PM
    hallo Lena,

    Danke Lena für das Inventory -Tool. Ich hab mir eben das ganze einmal angesehen.

    LG Scarlett
Sign In or Register to comment.

Welcome

It looks like you're new here. If you want to get involved, click one of these buttons!

Discussions

© Copyright 2017 - Metropolis Metaversum
All times are GMT