Jump to content
Sign in to follow this  
Doolittle

Global Server Config

Recommended Posts

Quote[/b] ]This removes mission makers control over their own creations and might even break the missions, no?

I mean someone might bother to make realistic weapon loadouts for an infantry squad and the players just cheat their way by spawning a crate full of SF kit.

Changing things like visibility, weather conditions, time of day, etc can and will "break" missions (both functionality and design) confused_o.gif .

Quote[/b] ]Although this 'tool' is very nicly made and has a lot of options, imho i think as Heatseeker mentioned is maybe not as good as it looks. Don't get me wrong, it is nice to see people like you keep making this kind of stuff...

But imho it should be editable in the flow as there isn't a general setting that can win for all. It would be nice to play a certain mission at nighttime (if mission doesn't contain timeselector) or add fog or whatever setting is availible, but it would be better if you can modify it at all times. Haven't tested it or checked with others that tested it, but afaik you will proberbly restart the server to take new settings active.

Just my opinion.

I agree, but at the end of the day its up to the server admin. If they wish to cheat their way through missions, so be it. It just goes to show that mission was very well made biggrin_o.gif

I wont lose any sleep if people abuse my missions, its how I play the missions on our server that matters the most smile_o.gif

Keep up the great work Doolittle!! notworthy.gif

I'm a very happy man now I can get rid of these XAM cheats biggrin_o.gif

Share this post


Link to post
Share on other sites

Nice.

Please hide sourcecode from Public, cheaters may find it usefull too.

Share this post


Link to post
Share on other sites

Here's something more advanced which lets you pick and choose what mods you want people to have loaded:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">"

private [""_denyPatches"", ""_allowPatches"", ""_myIn"", ""_cfg"", ""_str"", ""_boot"", ""_i""];

_denyPatches = [""XAM_classes""];

_allowPatches = [];

_myIn = {

private [""_ret""];

_ret = false;

{

if (_x == _this select 0) exitWith {_ret = true};

} forEach (_this select 1);

_ret;

};

_cfg = configFile / ""CfgPatches""; _str = """"; _boot = false;

for [{_i = 0}, {_i < count _cfg}, {_i = _i + 1}] do {

if (not ([configName (_cfg select _i), [""access"", ""CAData"", ""CAAnimals"", ""CA_Anims"", ""CA_Anims_Char"", ""CABuildings"", ""CAIntroAnims"", ""CALanguage"", ""CAMiscUS"", ""CA_Missions"", ""CA_Missions_Armory1"", ""CAPlants"", ""CARoads"", ""CARocks"", ""CASigns"", ""CASounds"", ""CAFonts"", ""CAVoice"", ""CAWeapons"", ""CAUI"", ""CAWeapons3"", ""CAweapons3_aks74pso"", ""CAweapons3_ksvk"", ""CAweapons3_m107"", ""CAweapons3_m16a4"", ""CAweapons3_m16a4_acg"", ""CAweapons3_m16a4_gl"", ""CACharacters"", ""CAMisc"", ""Sara"", ""CATracked"", ""CAWater"", ""CAweapons3_m16a4_acg_gl"", ""CAWheeled"", ""CAAir"", ""Desert"", ""CAWeapons3_ammocrates"", ""CAWheeled3"", ""CAWheeled3_M1030"", ""CAWheeled3_TT650"", ""CAA10"", ""CAAir3"", ""CAAir3_Su34""]] call myIn)) then {

if (([configName (_cfg select _i), _denyPatches] call myIn) or (count _allowPatches > 0 and not ([configName (_cfg select _i), _allowPatches] call myIn))) then {

[playerSide, ""Base""] sideChat format [""You are not allowed to have %1 loaded"", configName (_cfg select _i)];

_boot = true;

};

_str = _str + configName (_cfg select _i) + "" "";

};

};

if (_boot) then {

player setVehicleInit format [""[playerSide, """"Base""""] sideChat """"%1 has these mods loaded: %2"""""", name player, _str];

processInitCommands;

[] spawn {

[playerSide, ""Base""] sideChat ""Please leave now or you will be locked up in 20 seconds"";

sleep 10;

[playerSide, ""Base""] sideChat ""10 seconds left!"";

sleep 10;

[playerSide, ""Base""] sideChat ""Sorry! Now you must ALT-F4"";

while {true} do {disableUserInput true};

};

} else {

[playerSide, ""Base""] sideChat format [""You have these mods loaded: %1"", _str];

};

" call CreateLogicCode;

Notice the <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">_denyPatches = [""XAM_classes""];

_allowPatches = [];

If you put anythig in _denyPatches and they have it then they will be keyboard locked up in 20 seconds. If you put anything in _allowPatches then they must have it and nothing else or they will be locked up as well. (It would be nice if BIS gave us the ability to disconnect them instead)

Sample globalserver.sqf

Doolittle

Share this post


Link to post
Share on other sites
Nice.

Please hide sourcecode from Public, cheaters may find it usefull too.

This is a server side script? I don't think making it non-public available would do much as they can't do anything to it while it's on the server.

Plus its custom for each server anyway, unless the server tells everyone its source, a cheater won't know what it does.

Share this post


Link to post
Share on other sites

Hmm it doesn't seem to work confused_o.gif

I copied what you put in the above Doolittle to disable the XAM mod, but when I connect to my server with XAM, it says in sidechat... "YOU HAVE THESE MODS LOADED" then nothing else happens??

Am I suppose to edit something?

Share this post


Link to post
Share on other sites

This checks to make sure no one has addons that use event handlers.

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">"

private [""_cfg"", ""_str"", ""_i"", ""_j"", ""_k"", ""_tmp""];

_cfg = configFile / ""CfgVehicles"";

_str = """";

for [{_i = 0}, {_i < count _cfg}, {_i = _i + 1}] do {

_tmp = _cfg select _i;

if (isClass _tmp) then {

for [{_j = 0}, {_j < count (_cfg select _i)}, {_j = _j + 1}] do {

_tmp = (_cfg select _i) select _j;

if (isClass _tmp and configName _tmp == ""EventHandlers"") then {

for [{_k = 0}, {_k < count ((_cfg select _i) select _j)}, {_k = _k + 1}] do {

_tmp = ((_cfg select _i) select _j) select _k;

if (isText _tmp) then {_str = _str + getText _tmp};

};

};

};

};

};

if (not isServer and _str != ""(_this select 0) setFlagTexture """"\ca\misc\data\usa_vlajka.pac""""(_this select 0) setFlagTexture """"\ca\misc\data\jih_vlajka.paa""""(_this select 0) setFlagTexture """"\ca\misc\data\sever_vlajka.paa""""(_this select 0) inflame true[(_this select 0)] exec """"ca\misc\scripts\PopUpTarget.sqs"""""") then {

player setVehicleInit format [""[playerSide, """"Base""""] sideChat """"%1 is using a mod with an event in it"""""", name player];

processInitCommands;

[] spawn {

[playerSide, ""Base""] sideChat ""Please leave now or you will be locked up in 20 seconds"";

sleep 10;

[playerSide, ""Base""] sideChat ""10 seconds left!"";

sleep 10;

[playerSide, ""Base""] sideChat ""Sorry! Now you must ALT-F4"";

while {true} do {disableUserInput true};

};

} else {

[playerSide, ""Base""] sideChat ""You have no mods with events in them"";

};

" call CreateLogicCode;

sample_globalserver.sqf

Note some addons may use events a lot like adding effects, etc. so we will need to sort this out. Adding this code may remove a lot of people from your server that use addons. sad_o.gif I am posting this for help... if anyone out there knows what I mean and what I realized last night. (No not that, the other thing)

I trust everyone is running a server with this in their server.cfg?

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">checkFiles[] = {

"Dta\bin.pbo",

"Dta\core.pbo",

"AddOns\A10\config.bin", "AddOns\A10\config.cpp",

"AddOns\air3\config.bin", "AddOns\air3\config.cpp",

"AddOns\air\config.bin", "AddOns\air\config.cpp",

"AddOns\animals\config.bin", "AddOns\animals\config.cpp",

"AddOns\Anims\config.bin", "AddOns\Anims\config.cpp",

"AddOns\buildings\config.bin", "AddOns\buildings\config.cpp",

"AddOns\Ca\config.bin", "AddOns\Ca\config.cpp",

"AddOns\characters\config.bin", "AddOns\characters\config.cpp",

"AddOns\desert\config.bin", "AddOns\desert\config.cpp",

"AddOns\IntroAnims\config.bin", "AddOns\IntroAnims\config.cpp",

"AddOns\language\config.bin", "AddOns\language\config.cpp",

"AddOns\misc\config.bin", "AddOns\misc\config.cpp",

"AddOns\miscUS\config.bin", "AddOns\miscUS\config.cpp",

"AddOns\missions\config.bin", "AddOns\missions\config.cpp",

"AddOns\plants\config.bin", "AddOns\plants\config.cpp",

"AddOns\roads\config.bin", "AddOns\roads\config.cpp",

"AddOns\rocks\config.bin", "AddOns\rocks\config.cpp",

"AddOns\sara\config.bin", "AddOns\sara\config.cpp",

"AddOns\signs\config.bin", "AddOns\signs\config.cpp",

"AddOns\sounds\config.bin", "AddOns\sounds\config.cpp",

"AddOns\tracked\config.bin", "AddOns\tracked\config.cpp",

"AddOns\ui\config.bin", "AddOns\ui\config.cpp",

"AddOns\UIFonts\config.bin", "AddOns\UIFonts\config.cpp",

"AddOns\voice\config.bin", "AddOns\voice\config.cpp",

"AddOns\water\config.bin", "AddOns\water\config.cpp",

"AddOns\weapons3\config.bin", "AddOns\weapons3\config.cpp",

"AddOns\weapons\config.bin", "AddOns\weapons\config.cpp",

"AddOns\wheeled3\config.bin", "AddOns\wheeled3\config.cpp",

"AddOns\wheeled\config.bin", "AddOns\wheeled\config.cpp"

};

Doolittle

Share this post


Link to post
Share on other sites

anims, characters and ui --PBO-- is modified by 1.08 hotfix and QC. Didn't check if it is the config.cpp or other files. Only to let you know. smile_o.gif

Share this post


Link to post
Share on other sites
What mods did it report? Did it show XAM_CLASSES as one?

All it comes up with is...

"YOU HAVE THESE MODS LOADED" in sidechat, those are the exact words. It doesn't tell you which mod you have loaded.

Share this post


Link to post
Share on other sites
This checks to make sure no one has addons that use event handlers.

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">"

private [""_cfg"", ""_str"", ""_i"", ""_j"", ""_k"", ""_tmp""];

_cfg = configFile / ""CfgVehicles"";

_str = """";

for [{_i = 0}, {_i < count _cfg}, {_i = _i + 1}] do {

_tmp = _cfg select _i;

if (isClass _tmp) then {

for [{_j = 0}, {_j < count (_cfg select _i)}, {_j = _j + 1}] do {

_tmp = (_cfg select _i) select _j;

if (isClass _tmp and configName _tmp == ""EventHandlers"") then {

for [{_k = 0}, {_k < count ((_cfg select _i) select _j)}, {_k = _k + 1}] do {

_tmp = ((_cfg select _i) select _j) select _k;

if (isText _tmp) then {_str = _str + getText _tmp};

};

};

};

};

};

if (not isServer and _str != ""(_this select 0) setFlagTexture """"\ca\misc\data\usa_vlajka.pac""""(_this select 0) setFlagTexture """"\ca\misc\data\jih_vlajka.paa""""(_this select 0) setFlagTexture """"\ca\misc\data\sever_vlajka.paa""""(_this select 0) inflame true[(_this select 0)] exec """"ca\misc\scripts\PopUpTarget.sqs"""""") then {

player setVehicleInit format [""[playerSide, """"Base""""] sideChat """"%1 is using a mod with an event in it"""""", name player];

processInitCommands;

[] spawn {

[playerSide, ""Base""] sideChat ""Please leave now or you will be locked up in 20 seconds"";

sleep 10;

[playerSide, ""Base""] sideChat ""10 seconds left!"";

sleep 10;

[playerSide, ""Base""] sideChat ""Sorry! Now you must ALT-F4"";

while {true} do {disableUserInput true};

};

} else {

[playerSide, ""Base""] sideChat ""You have no mods with events in them"";

};

" call CreateLogicCode;

sample_globalserver.sqf

Note some addons may use events a lot like adding effects, etc. so we will need to sort this out. Adding this code may remove a lot of people from your server that use addons. sad_o.gif I am posting this for help... if anyone out there knows what I mean and what I realized last night. (No not that, the other thing)

I trust everyone is running a server with this in their server.cfg?

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">checkFiles[] = {

"Dta\bin.pbo",

"Dta\core.pbo",

"AddOns\A10\config.bin", "AddOns\A10\config.cpp",

"AddOns\air3\config.bin", "AddOns\air3\config.cpp",

"AddOns\air\config.bin", "AddOns\air\config.cpp",

"AddOns\animals\config.bin", "AddOns\animals\config.cpp",

"AddOns\Anims\config.bin", "AddOns\Anims\config.cpp",

"AddOns\buildings\config.bin", "AddOns\buildings\config.cpp",

"AddOns\Ca\config.bin", "AddOns\Ca\config.cpp",

"AddOns\characters\config.bin", "AddOns\characters\config.cpp",

"AddOns\desert\config.bin", "AddOns\desert\config.cpp",

"AddOns\IntroAnims\config.bin", "AddOns\IntroAnims\config.cpp",

"AddOns\language\config.bin", "AddOns\language\config.cpp",

"AddOns\misc\config.bin", "AddOns\misc\config.cpp",

"AddOns\miscUS\config.bin", "AddOns\miscUS\config.cpp",

"AddOns\missions\config.bin", "AddOns\missions\config.cpp",

"AddOns\plants\config.bin", "AddOns\plants\config.cpp",

"AddOns\roads\config.bin", "AddOns\roads\config.cpp",

"AddOns\rocks\config.bin", "AddOns\rocks\config.cpp",

"AddOns\sara\config.bin", "AddOns\sara\config.cpp",

"AddOns\signs\config.bin", "AddOns\signs\config.cpp",

"AddOns\sounds\config.bin", "AddOns\sounds\config.cpp",

"AddOns\tracked\config.bin", "AddOns\tracked\config.cpp",

"AddOns\ui\config.bin", "AddOns\ui\config.cpp",

"AddOns\UIFonts\config.bin", "AddOns\UIFonts\config.cpp",

"AddOns\voice\config.bin", "AddOns\voice\config.cpp",

"AddOns\water\config.bin", "AddOns\water\config.cpp",

"AddOns\weapons3\config.bin", "AddOns\weapons3\config.cpp",

"AddOns\weapons\config.bin", "AddOns\weapons\config.cpp",

"AddOns\wheeled3\config.bin", "AddOns\wheeled3\config.cpp",

"AddOns\wheeled\config.bin", "AddOns\wheeled\config.cpp"

};

Doolittle

Yeah thats pretty much what we have with the checkfile's bit above doolittle.

Just regarding what Gaffa said yeah we have being having a spot of bother with this xam code;

Quote[/b] ]"

setViewDistance 1300;

setTerrainGrid 50;

sleep 3;

titleText [format [""Welcome to the game, %1"", name player], ""PLAIN""];

" call CreateLogicCode;

"

if (isClass (configFile / ""CfgPatches"" / ""XAM_classes"")) then {

player sideChat ""You are running XAM. Please leave now or you will be locked up in 30 seconds."";

[] spawn {

sleep 20;

player sideChat ""10 seconds left!"";

sleep 10;

player sideChat ""Sorry! Now you must ALT-F4"";

while {true} do {disableUserInput true};

};

};

" call CreateLogicCode;

Doesn't seem to lock them out though.

Like the idea of the other code snippets above being able to allow normal mods like sound mods to run, but stopping people running other customs like weapons, recoil, and such because when people start over righting core game files and stuff, there's no way of really knowing what they are bloody doing.

but with regards to the event handles wouldn't this stop such mod packs like eu.sixsence, or arma effects etc that would to me come across as legitimate mods?

We don't mind mods within reason, but if mods in question are going to cause our server to b0rk all the time then where going to haft to filter them.

Another reason why I think BI should have a universal mod folder in the arma directory, that the engine refers to stop people over righting core game files for Pete's sake.

Client says left, server says right, client says left left left server b0rks.

Share this post


Link to post
Share on other sites
I trust everyone is running a server with this in their server.cfg?

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">checkFiles[] = {

"Dta\bin.pbo",

"Dta\core.pbo",

"AddOns\A10\config.bin", "AddOns\A10\config.cpp",

"AddOns\air3\config.bin", "AddOns\air3\config.cpp",

"AddOns\air\config.bin", "AddOns\air\config.cpp",

"AddOns\animals\config.bin", "AddOns\animals\config.cpp",

"AddOns\Anims\config.bin", "AddOns\Anims\config.cpp",

"AddOns\buildings\config.bin", "AddOns\buildings\config.cpp",

"AddOns\Ca\config.bin", "AddOns\Ca\config.cpp",

"AddOns\characters\config.bin", "AddOns\characters\config.cpp",

"AddOns\desert\config.bin", "AddOns\desert\config.cpp",

"AddOns\IntroAnims\config.bin", "AddOns\IntroAnims\config.cpp",

"AddOns\language\config.bin", "AddOns\language\config.cpp",

"AddOns\misc\config.bin", "AddOns\misc\config.cpp",

"AddOns\miscUS\config.bin", "AddOns\miscUS\config.cpp",

"AddOns\missions\config.bin", "AddOns\missions\config.cpp",

"AddOns\plants\config.bin", "AddOns\plants\config.cpp",

"AddOns\roads\config.bin", "AddOns\roads\config.cpp",

"AddOns\rocks\config.bin", "AddOns\rocks\config.cpp",

"AddOns\sara\config.bin", "AddOns\sara\config.cpp",

"AddOns\signs\config.bin", "AddOns\signs\config.cpp",

"AddOns\sounds\config.bin", "AddOns\sounds\config.cpp",

"AddOns\tracked\config.bin", "AddOns\tracked\config.cpp",

"AddOns\ui\config.bin", "AddOns\ui\config.cpp",

"AddOns\UIFonts\config.bin", "AddOns\UIFonts\config.cpp",

"AddOns\voice\config.bin", "AddOns\voice\config.cpp",

"AddOns\water\config.bin", "AddOns\water\config.cpp",

"AddOns\weapons3\config.bin", "AddOns\weapons3\config.cpp",

"AddOns\weapons\config.bin", "AddOns\weapons\config.cpp",

"AddOns\wheeled3\config.bin", "AddOns\wheeled3\config.cpp",

"AddOns\wheeled\config.bin", "AddOns\wheeled\config.cpp"

};

Doolittle

Probably a noob question, but is that the only correct way to check files?

I ask that since you ask it so "clearly" (I trust everyone is running a server).

On our server I check this: <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">{

"dta\bin.pbo",

"Addons\wheeled3.pbo",

"Addons\weapons3.pbo",

"Addons\A10.pbo",

"Addons\weapons\config.cpp",

"Addons\weapons\config.bin",

"Addons\wheeled\config.cpp",

"Addons\wheeled\config.bin",

"Addons\tracked\config.cpp",

"Addons\tracked\config.bin",

"Addons\sara\config.cpp",

"Addons\sara\config.bin",

"Addons\air\config.cpp",

"Addons\air\config.bin",

"Addons\miscUS\config.cpp",

"Addons\miscUS\config.bin"

};

Do you recommend I use your check files instead cause it checks more and different files?

Just curious, I dont want to discuss this and make this go offtopic. I just want to be sure I understand you correctly I am not checking the correct files. smile_o.gif

Share this post


Link to post
Share on other sites

That's our server.cfg:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">hostname="[ 2ndTry ]";

passwordAdmin="...";

password="...";

motd[]=

{

"2ndTry Server - hosted by painFac"

};

motdInterval=7;

voteThreshold=0.50;

voteMissionPlayers=1;

equalModRequired=0;

verifySignatures=1;

RegularCheck="{}";

onHackedData="kick (_this select 0)";

onDifferentData="{}";

//onDifferentData = "kick (_this select 0)";

checkfiles[]={"dta\core.pbo","dta\bin.pbo"};

kickduplicate=1;

disableVON=1;

vonCodecQuality=1;

logFile="server_console.log";

reportingIP="armedass.master.gamespy.com";

MaxMsgSend=128;

MaxSizeGuaranteed=512;

MinErrorToSend=0.01;

MinBandwidth=131072;

MaxBandwidth=;

MaxCustomFileSize=50000;

maxPlayers=64;

persistent=1;

For more info see here.

Share this post


Link to post
Share on other sites
MaxMsgSend=128;

MaxSizeGuaranteed=512;

MinErrorToSend=0.01;

MinBandwidth=131072;

MaxBandwidth=;

MaxCustomFileSize=50000;

Shouldnt that be in your arma.cfg (profile) of the server?

Share this post


Link to post
Share on other sites

The server was set up by a friend of mine.

Actually I am not sure if it works.

We have:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">arma_server.exe -config=server.cfg

According to BIKI: ArmA:_Dedicated_Server I guess in our case the

server.cfg is the arma.cfg, as with the -config param you can

rename the file and/or point to a different location of the line.

Good point Foxhound, lets see how this turns out. smile_o.gif

PS:

YourServerUser.ArmAprofile is a completely different file (AFAIK).

That one is for difficulty settings.

Share this post


Link to post
Share on other sites

arma.cfg needs the bandwidth settings

server.cfg needs the server settings, passwords, missions etc

username.armaprofile needs the per-difficulty settings

Share this post


Link to post
Share on other sites
arma.cfg needs the bandwidth settings

server.cfg needs the server settings, passwords, missions etc

username.armaprofile needs the per-difficulty settings

Thanks for the confirmation. Thats how I have set up our server as well.

Share this post


Link to post
Share on other sites
What mods did it report? Did it show XAM_CLASSES as one?

All it comes up with is...

"YOU HAVE THESE MODS LOADED" in sidechat, those are the exact words. It doesn't tell you which mod you have loaded.

Okay, I fixed that (see sample_globalserver.sqf). It's just it saw you had NO mods loaded so it shouldn't have said anything.

Share this post


Link to post
Share on other sites
arma.cfg needs the bandwidth settings

server.cfg needs the server settings, passwords, missions etc

username.armaprofile needs the per-difficulty settings

some off topic stuff but... biggrin_o.gif

and all can be referred to specific files in any folder using

-profiles= , -config= , -cfg=

parameters in the server startup.

Share this post


Link to post
Share on other sites

What would the command be to say, drop an ammo crate with all the weapons and loads of ammo?

Is there a list of commands we can send to createlogiccode? (I'm an ArmA newb) yay.gif

Share this post


Link to post
Share on other sites

I putted the SQF in arma root folder and the .pbo in the addon folder.

Should work than?

But it doesnt huh.gif

I get error about the the script and shows the blackbox in upper left corner.

How is this possible.

And yes where can i get a list with command so i can add and delete stuff?

Share this post


Link to post
Share on other sites

Is it possible to use GSC in conjunction with RUG DSAI sounds?

http://www.flashpoint1985.com/cgi-bin....80;st=0

The scripts add ambient chatter to troops similar to those seen in ECP for OFP. At the moment you have to add the scripts to a mission but couldn't this be done usings GSC?

Would be awesome to have this running on all clients just by adding the scripts to the GSC config!!!

Share this post


Link to post
Share on other sites

so the maker aint alive anymore or what?

or is there somebody else who knows the solution?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×