Skip to content

Commit

Permalink
MirrorNetworking
Browse files Browse the repository at this point in the history
  • Loading branch information
GraphicEdit committed Dec 10, 2023
1 parent 1a5fdf7 commit 864193a
Show file tree
Hide file tree
Showing 1,277 changed files with 96,479 additions and 3 deletions.
Binary file added DarkFlow/Assets/Art/3D/Chars/Idle.fbx
Binary file not shown.
109 changes: 109 additions & 0 deletions DarkFlow/Assets/Art/3D/Chars/Idle.fbx.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions DarkFlow/Assets/Tools/Mirror.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions DarkFlow/Assets/Tools/Mirror/Authenticators.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

192 changes: 192 additions & 0 deletions DarkFlow/Assets/Tools/Mirror/Authenticators/BasicAuthenticator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Mirror.Authenticators
{
[AddComponentMenu("Network/ Authenticators/Basic Authenticator")]
[HelpURL("https://mirror-networking.gitbook.io/docs/components/network-authenticators/basic-authenticator")]
public class BasicAuthenticator : NetworkAuthenticator
{
[Header("Server Credentials")]
public string serverUsername;
public string serverPassword;

[Header("Client Credentials")]
public string username;
public string password;

readonly HashSet<NetworkConnection> connectionsPendingDisconnect = new HashSet<NetworkConnection>();

#region Messages

public struct AuthRequestMessage : NetworkMessage
{
// use whatever credentials make sense for your game
// for example, you might want to pass the accessToken if using oauth
public string authUsername;
public string authPassword;
}

public struct AuthResponseMessage : NetworkMessage
{
public byte code;
public string message;
}

#endregion

#region Server

/// <summary>
/// Called on server from StartServer to initialize the Authenticator
/// <para>Server message handlers should be registered in this method.</para>
/// </summary>
public override void OnStartServer()
{
// register a handler for the authentication request we expect from client
NetworkServer.RegisterHandler<AuthRequestMessage>(OnAuthRequestMessage, false);
}

/// <summary>
/// Called on server from StopServer to reset the Authenticator
/// <para>Server message handlers should be unregistered in this method.</para>
/// </summary>
public override void OnStopServer()
{
// unregister the handler for the authentication request
NetworkServer.UnregisterHandler<AuthRequestMessage>();
}

/// <summary>
/// Called on server from OnServerConnectInternal when a client needs to authenticate
/// </summary>
/// <param name="conn">Connection to client.</param>
public override void OnServerAuthenticate(NetworkConnectionToClient conn)
{
// do nothing...wait for AuthRequestMessage from client
}

/// <summary>
/// Called on server when the client's AuthRequestMessage arrives
/// </summary>
/// <param name="conn">Connection to client.</param>
/// <param name="msg">The message payload</param>
public void OnAuthRequestMessage(NetworkConnectionToClient conn, AuthRequestMessage msg)
{
//Debug.Log($"Authentication Request: {msg.authUsername} {msg.authPassword}");

if (connectionsPendingDisconnect.Contains(conn)) return;

// check the credentials by calling your web server, database table, playfab api, or any method appropriate.
if (msg.authUsername == serverUsername && msg.authPassword == serverPassword)
{
// create and send msg to client so it knows to proceed
AuthResponseMessage authResponseMessage = new AuthResponseMessage
{
code = 100,
message = "Success"
};

conn.Send(authResponseMessage);

// Accept the successful authentication
ServerAccept(conn);
}
else
{
connectionsPendingDisconnect.Add(conn);

// create and send msg to client so it knows to disconnect
AuthResponseMessage authResponseMessage = new AuthResponseMessage
{
code = 200,
message = "Invalid Credentials"
};

conn.Send(authResponseMessage);

// must set NetworkConnection isAuthenticated = false
conn.isAuthenticated = false;

// disconnect the client after 1 second so that response message gets delivered
StartCoroutine(DelayedDisconnect(conn, 1f));
}
}

IEnumerator DelayedDisconnect(NetworkConnectionToClient conn, float waitTime)
{
yield return new WaitForSeconds(waitTime);

// Reject the unsuccessful authentication
ServerReject(conn);

yield return null;

// remove conn from pending connections
connectionsPendingDisconnect.Remove(conn);
}

#endregion

#region Client

/// <summary>
/// Called on client from StartClient to initialize the Authenticator
/// <para>Client message handlers should be registered in this method.</para>
/// </summary>
public override void OnStartClient()
{
// register a handler for the authentication response we expect from server
NetworkClient.RegisterHandler<AuthResponseMessage>(OnAuthResponseMessage, false);
}

/// <summary>
/// Called on client from StopClient to reset the Authenticator
/// <para>Client message handlers should be unregistered in this method.</para>
/// </summary>
public override void OnStopClient()
{
// unregister the handler for the authentication response
NetworkClient.UnregisterHandler<AuthResponseMessage>();
}

/// <summary>
/// Called on client from OnClientConnectInternal when a client needs to authenticate
/// </summary>
public override void OnClientAuthenticate()
{
AuthRequestMessage authRequestMessage = new AuthRequestMessage
{
authUsername = username,
authPassword = password
};

NetworkClient.Send(authRequestMessage);
}

/// <summary>
/// Called on client when the server's AuthResponseMessage arrives
/// </summary>
/// <param name="msg">The message payload</param>
public void OnAuthResponseMessage(AuthResponseMessage msg)
{
if (msg.code == 100)
{
//Debug.Log($"Authentication Response: {msg.message}");

// Authentication has been accepted
ClientAccept();
}
else
{
Debug.LogError($"Authentication Response: {msg.message}");

// Authentication has been rejected
ClientReject();
}
}

#endregion
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 864193a

Please sign in to comment.