a50a22b3b8
leftovers from zuff :(
150 lines
4.2 KiB
SourcePawn
150 lines
4.2 KiB
SourcePawn
#include <sourcemod>
|
|
#include <filenetmessages>
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void OnPluginStart()
|
|
{
|
|
RegConsoleCmd("sm_request", Command_Request);
|
|
|
|
RegConsoleCmd("sm_create", Command_Create);
|
|
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
public Action Command_Request(int client, int argc)
|
|
{
|
|
FNM_RequestFile(client, "data/unloze/keychain.dat");
|
|
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose: We requested the file, client had it and we recieved it.
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void FNM_OnFileReceived(int client, const char[] filename, int transferid)
|
|
{
|
|
char sUserHash[32];
|
|
ReadUserHashFile(client, sUserHash, sizeof(sUserHash));
|
|
|
|
PrintToChatAll("Returned hash for %N: %s", client, sUserHash);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose: We requested the file, client didnt have it.
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void FNM_OnFileDenied(int client, const char[] filename, int transferid)
|
|
{
|
|
PrintToChatAll("Returned hash for %N: %s", client, "DEUS VULT");
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
public Action Command_Create(int client, int argc)
|
|
{
|
|
char sUserHash[32];
|
|
|
|
for(int i; i < 30; i++)
|
|
{
|
|
switch(GetRandomInt(1, 3))
|
|
{
|
|
// Numbers
|
|
case(1): sUserHash[i] = view_as<char>(GetRandomInt(48, 57));
|
|
|
|
//Capitals
|
|
case(2): sUserHash[i] = view_as<char>(GetRandomInt(65, 90));
|
|
|
|
//Letters
|
|
case(3): sUserHash[i] = view_as<char>(GetRandomInt(97, 122));
|
|
}
|
|
}
|
|
|
|
PrintToChatAll("Creating user hash for %N: %s", client, sUserHash);
|
|
|
|
SendUserHashFile(client, sUserHash);
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void SendUserHashFile(client, const char[] sHash)
|
|
{
|
|
if(FileExists("data/unloze/keychain.dat"))
|
|
{
|
|
LogError("%L hash file exists, stopping to prevent conflicts!", client);
|
|
return;
|
|
}
|
|
|
|
File fFile;
|
|
if((fFile = OpenFile("data/unloze/keychain.dat", "w")) != null)
|
|
{
|
|
fFile.WriteString(sHash, false);
|
|
fFile.Close();
|
|
}
|
|
else
|
|
{
|
|
LogError("%L failed to create hash file.", client);
|
|
return;
|
|
}
|
|
|
|
if(FNM_SendFile(client, "data/unloze/keychain.dat") == 0)
|
|
{
|
|
LogError("%L failed to send hash file.", client);
|
|
return;
|
|
}
|
|
|
|
if(!DeleteFile("data/unloze/keychain.dat"))
|
|
{
|
|
LogError("%L failed to delete hash file.", client);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void ReadUserHashFile(client, char[] sHash, int hashLength)
|
|
{
|
|
if(!FileExists("download/data/unloze/keychain.dat"))
|
|
{
|
|
LogError("%L hash file does not exists, unable to read!", client);
|
|
return;
|
|
}
|
|
|
|
File fFile;
|
|
if((fFile = OpenFile("download/data/unloze/keychain.dat", "r")) != null)
|
|
{
|
|
fFile.ReadString(sHash, hashLength);
|
|
fFile.Close();
|
|
}
|
|
else
|
|
{
|
|
LogError("%L failed to read hash file.", client);
|
|
return;
|
|
}
|
|
|
|
if(!DeleteFile("download/data/unloze/keychain.dat"))
|
|
{
|
|
LogError("%L failed to delete hash file.", client);
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose: Have yet to figure out when this fires.
|
|
//----------------------------------------------------------------------------------------------------
|
|
public void FNM_OnFileSent(int client, const char[] filename, int transferid)
|
|
{
|
|
PrintToServer("FNM_OnFileSent: %N -> %s", client, filename);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------------------------------
|
|
// Purpose: Client requested a file, so far only seems to fire for user_custom data files.
|
|
//----------------------------------------------------------------------------------------------------
|
|
public Action FNM_OnFileRequested(int client, const char[] filename, int transferid)
|
|
{
|
|
PrintToServer("FNM_OnFileRequested: %N -> %s", client, filename);
|
|
} |