nathan-fiscaletti / TeamSpeak-Integration-Issue-Tracker

Issue tracker repository for the Invision Community TeamSpeak Integration Application
0 stars 0 forks source link

[BUG] TeamSpeak Sync issue #16

Closed LostkingZ closed 4 years ago

LostkingZ commented 4 years ago

Do you own the TS3 Integration application? https://invisioncommunity.com/profile/558110-lostking329/

Describe the bug Today my community moved the Teamspeak server from its host to a VPS box to manage it easily however upon linking the application back up to the new TeamSpeak and using the snapshot feature to paste the perms, channel etc the application did not keep the same ID's for the ranks so it began assigning random members random tags that the new ID's matched up with on mass.

you can see in the following screenshot that it looks to have corrupted the role sync completely and via the ACP you can't change the roles back as the save button doesn't seem to work on most of the ranks in the ACP.

Screenshots http://prntscr.com/rwcs7q

http://prntscr.com/rwcy3p

Desktop (please complete the following information):

Additional context N/A

LostkingZ commented 4 years ago

I believe the issue is when the snapshot is taken the snapshot doesn't save the ID's of the groups so when they are pasted back in they are assigned new ID's which the application then re-links to "Unknown" or another group that randomly was given the same ID as a previous group originally.

LostkingZ commented 4 years ago

[UPDATE] After deleting all the known group associations so the bot would stop spamming people with random groups in the TeamSpeak server when I go to create a new group association I am unable to click the "Save" button. any ideas? - http://prntscr.com/rwdc9v

LostkingZ commented 4 years ago

Also tried removing the application and installing it from fresh but that seems to have had no effect, I'm still unable to click "Save" when I go to make a group association.

nathan-fiscaletti commented 4 years ago

This sounds like it's an issue with TeamSpeak, but not with this integration. When taking a snapshot using TeamSpeak3, we simply use the SERVERSNAPSHOTCREATE query command. (Documentation for this query command can be found here. Unfortunately, server snapshots don't retain group IDs. This means, you will have to re-do your group associations to have the new group IDs. Unfortunately, the integration is unable to compensate for this shortcoming in the official TeamSpeak software.

nathan-fiscaletti commented 4 years ago

I will make an additional issue for adding a disclaimer to the snapshots section of the application to avoid this happening in the future.

LostkingZ commented 4 years ago

ah ok cool, I have tried deleting the groups in the assiciation however when I come to re-make them it will not allow me to save them? any ideas?

nathan-fiscaletti commented 4 years ago

Does it give any kind of error message or anything like that?

LostkingZ commented 4 years ago

No, the "Save" button doesn't seem to work as it has no effect.

LostkingZ commented 4 years ago

http://prntscr.com/rwfkz1

LostkingZ commented 4 years ago

http://prntscr.com/rwflfb

nathan-fiscaletti commented 4 years ago

Now it sounds like an issue with IPS itself. Can you check the javascript console log for anything when you try to hit "Save"? Can you also try logging out and back in, and perhaps uninstalling / re-installing the TS3 application?

LostkingZ commented 4 years ago

I have tried to re-install the application however it doesn't seem to have worked. I notice that the list of groups on the server is not being re-produced correctly if that's something to do with it. http://prntscr.com/rwfouq http://prntscr.com/rwfp03

LostkingZ commented 4 years ago

I am unsure how I would go about checking the javascript console log.

LostkingZ commented 4 years ago

I tried using google chrome and was able to view the error causing it from what I can gather. http://prntscr.com/rwuopc http://prntscr.com/rwupiu http://prntscr.com/rwuppz

Any ideas? @nathan-fiscaletti

nathan-fiscaletti commented 4 years ago

I have tried to re-install the application however it doesn't seem to have worked. I notice that the list of groups on the server is not being re-produced correctly if that's something to do with it. http://prntscr.com/rwfouq http://prntscr.com/rwfp03

Which part is not being re-produced correctly? You might talk to IPS about why the button isn't submitting. There is nothing particularly wrong in the application. The logic behind that button is purely IPS's Forms system not functioning properly.

As a last resort, after uninstalling the application try completely removing the ts3integration tables from your database (there are several). This will wipe ALL of your configuration for the TS3 application, however it may resolve your issue.

LostkingZ commented 4 years ago

I have spoken to IPS support and they have given me the following responce - http://prntscr.com/rwz4s9

LostkingZ commented 4 years ago

I have completely removed the application from the website and have looked in the database however there are no records visable for ts3integration

LostkingZ commented 4 years ago

Which part is not being re-produced correctly?

The order of the group showing up was incorrect however I have resolved that by re-making the groups on the TeamSpeak.

LostkingZ commented 4 years ago

I have had my in-house developer look into this issue and he has come to the conclusion that the error is with the form as the web page is saying that there are some input fields that are not filled out correctly, however, we have been able to bypass this error temporarily by using "novalidate" in the inspect element for the form so that the web page will allow you to click "Save".

it seems as though you might want to look into the required fields for the "Create New" in the Group Association section of the application to ensure that its infact working correctly and there is no code there that is causing the error preventing the user from saving the selection on the dropdown.

http://prntscr.com/rx16tl

nathan-fiscaletti commented 4 years ago

That section of the code is generated automatically by IPS' libraries, not by the TS3 integration application. So something seems off with your IPS installation. But i'm glad to hear you got it figured out on your end 👍

LostkingZ commented 4 years ago

Hi the IPS team refuses to look into my IPS installation as they firmly believe that the error is being caused by the TeamSpeak Integrations Application, would you be able to look into the section of your application that I mentioned in my last message to ensure that everything on the app is in order or speak with the IPS team about this as they will not deal with me about this issue as I am not the creator of the application.

nathan-fiscaletti commented 4 years ago

Would you be opposed to giving me ACP access to take a look myself at some point in the next few days? We can coordinate through PMs on the IPS forums if that works for you. I should be available Sunday April 12, from 11AM - 6PM CST, or we can find a time later in the week.

nathan-fiscaletti commented 4 years ago

One thing you might try doing is changing the "Group / Profile Field" selection and seeing if it makes a difference. Just before we start diving too deep.

Specifically, the code that saves the group association is overriding an IPS specific method and doing the following:

public function saveForm( $values ) {
    if ($values['ts3_association_pfield_type'] == 'profile_field') {
        if (empty($values['ts3_association_selected_pfield'])) {
            \IPS\Output::i()->redirect( 
                \IPS\Http\Url::internal(
                    'app=ts3integration'.
                    '&module=teamspeakranks'.
                    '&controller=RankConfiguration'.
                    '&do=addnew'.
                    '&error=Invalid profile field selected'
                )
            );
            return;
        }
        $this->type = 'profile_field';
        $this->group_id = null;
        $this->pfield_id = $values['ts3_association_selected_pfield'];
        $this->pfield_data = $values['core_pfield_'.$values['ts3_association_selected_pfield']];
        $this->ts_server_group = $values['ts3_association_server_group_id_value'];
        $this->save();
    } else if ($values['ts3_association_pfield_type'] == 'group') {
        if (empty($values['ts3_association_selected_group'])) {
            \IPS\Output::i()->redirect( 
                \IPS\Http\Url::internal(
                    'app=ts3integration'.
                    '&module=teamspeakranks'.
                    '&controller=RankConfiguration'.
                    '&do=addnew'.
                    '&error=Invalid group selected'
                )
            );
            return;
        }
        $this->type = 'group';
        $this->group_id = $values['ts3_association_selected_group'];
        $this->pfield_id = null;
        $this->pfield_data = null;
        $this->ts_server_group = $values['ts3_association_server_group_id_value'];
        $this->save();
    }
}

So the only think that could stop it from running is if $values['ts3_association_pfield_type'] is neither profile_field or group, which should be the ONLY two selectable values on the form.

However, if you are editing an existing one, it will read the value of the type field from the database table. Meaning if it stores a value other than profile_field or group it will not work. Which is why manually changing it may take affect.

$select = new \IPS\Helpers\Form\Select('ts3_association_pfield_type', ($this->id) ? $this->type : 'group', TRUE, [ . . .
LostkingZ commented 4 years ago

Would you be able to make this change to the application and push it out as a patch?

nathan-fiscaletti commented 4 years ago

It's not a change, it's an explanation. But i can try to take a look at your instance if you don't mind giving me ACP access.

LostkingZ commented 4 years ago

I have sent you a PM on Invision Community