Jump to content
Dwarden

ARMA 2: Operation Arrowhead - Linux Server beta 1.63.126652

Recommended Posts

Server binary

https://dl.dropboxusercontent.com/u/18463425/a2oa/a2oa-server-1.63.126652.tar.bz2

https://dl.dropboxusercontent.com/u/18463425/a2oa/a2oa-server-1.63.126652.tar.bz2

CRC32: DBF2C69E

MD5: 2C7C378C357876B2D46853EE957B8916

SHA-1: BCEE23C1A54B96550512E686B6D40A92A8DD5AA7

Changes:

STEAM libraries are now part of package

steam_appid.txt is part of archive

glibc 2.15 or newer needed (was 2.16 in previous server build, older isn't possible due to steamlib dependency)

some little irks related to nix libraries

Note:

* it requires Arma 2: Operation Arrowhead data to be updated to version 1.63 first in order to run properly.

Please provide us with feedback to this topic.

http://community.bistudio.com/wiki/ArmA:_Dedicated_Server

Arma 2: Operation Arrowhead - Linux Standalone Server 1.63

===============================================================

Copyrigt © 2010 Bohemia Interactive Studio. All rights reserved.

For more information please visit

http//community.bistudio.com/wiki/ArmA:_Dedicated_Server

Installation instructions:

==========================

1. Following programs must have been installed on your Linux-box:

tar, gcc. Optional: md5sum (for setup integrity check)

1a. On some verions of Linux (this was reported for RedHat 9

and Gentoo linux 2.4.20) the NSCD deamon must be installed to

run ArmA 2 server successfully. Caching of DNS would be sufficient.

2. Copy the whole "ArmA 2 Operation Arrowhead" directory from Windows

to some Linux-directory (arma2arrowhead). DON'T DO ANY DATA CONVERSIONS

(even "dos2unix" translation of text files is not necessary).

Example: you can use PKZIP (WinZip, PowerArchiver, etc.) on

Windows and "unzip" on Linux.

Don't use upper case letters in the ArmA2 directory name

(/home/bob/arma2arrowhead will be good, /home/bob/ArmA2ArrowHead

may cause some troubles).

ArmA2 directory should contain subdirectories "Addons", "Bin",

"Campaigns", etc.

3. Copy the "server-x.xx.tar.gz" (x.xx is version number) file into

the arma2arrowhead directory. Unpack and install it with commands:

arma2arrowhead$ tar -xjf server-x.xx.tar.bz2

arma2arrowhead$ ./install

Watch the messages - they will inform you whether your installation

is successful.

4. Dedicated server can be started in foreground:

arma2arrowhead$ ./server

Or in background:

o$ nohup ./server > out.txt 2> err.txt &

[1] <pid>

5. Running server can be stopped by executing:

$ kill -s SIGINT <pid>

Where <pid> is process-id of mother server thread (printed out in

"nohup" command).

6. ArmA2 ArrowHead server has a feature: command-line parameter

"-pid=<pid_file>". It causes creation of <pid_file> with

PID of root ArmA2 process. If IP port specified in "-port=<nn>"

parameter is busy (in usage), ArmA2 will terminate immediately

and <pid_file> won't be written..

7. The "arma2server" script is provided for automatic server

start/restart/status query/etc. Please be sure to edit

CONFIGURATION PARAMETERS in lines 12 to 18 !

After this is done, install (hard-link?) the script into

"/etc/rc.d/init.d/arma2server" file. After that it can be managed

by "chkconfig" (see info/man).

previous thread about 1.63.xxxxx linux server :

Edited by Dwarden

Share this post


Link to post
Share on other sites

Hi Dwarden,

thank you for that version.

I tried that Server binary and STEAM libraries on Debian wheezy.

First I got some error for updating GLIBC, but after the update of the GLIBC I tried to run your new Version.

I get the same log messages like postet for the last version.

WATCHDOG (6973): [sat Aug 9 18:47:23 CEST 2014] Starting server (port 2022)...

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

[s_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.

18:47:30 Dedizierter Host erstellt.

18:47:31 Host-Identität erstellt.

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

Setting breakpad minidump AppID = 33930

If I try to download this server by steamcmd I get this error:

ERROR! Failed to install app '33930' (No subscription)

Is there a way to create a dedicated server version like Arma3?

Thx Pillord.

Update:

I tried to use the steam libs from the arma3 dedecated server, there are 2 more libs in arma3

libtier0_s.so

libvstdlib_s.so

but same result.

Edited by Pillord
Update

Share this post


Link to post
Share on other sites

silent update to fix ^ above ;) (as expected the appID number was wrong)

Share this post


Link to post
Share on other sites

Hi Dwarden,

thx for your post.

I looked for other AppID's on Steam at this link: http://steamdb.info/search/?a=app&q=Arma+2&type=-1&category=0

I found this ID's 33905 and 33903, but i got the same results.

WATCHDOG (20764): [sun Aug 10 15:49:52 CEST 2014] Starting server (port 2022)...

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

[s_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.

15:49:59 Dedizierter Host erstellt.

15:49:59 Host-Identität erstellt.

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

Setting breakpad minidump AppID = 33935

and

WATCHDOG (20820): [sun Aug 10 15:51:11 CEST 2014] Starting server (port 2022)...

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

[s_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.

15:51:17 Dedizierter Host erstellt.

15:51:18 Host-Identität erstellt.

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

Setting breakpad minidump AppID = 33932

Can you tell me the secret AppID? ;-)

I tried the other AppID 33935 now, same result.

WATCHDOG (21417): [sun Aug 10 16:31:51 CEST 2014] Starting server (port 2022)...

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

[s_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.

16:31:59 Dedizierter Host erstellt.

16:32:00 Host-Identität erstellt.

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

Setting breakpad minidump AppID = 33935

Steamcmd:

ERROR! Failed to install app '33935' (No subscription)
Edited by Pillord
Update

Share this post


Link to post
Share on other sites

@dwarden, server is listed ingame and connect works flawless. :D

hostos: ubuntu server 12.04 lts

only "bug"/"problem":

the steamport doesn't work.

arma2oaserver: PORT=2302

server.cfg: steamport = 8767;

i checked the reporting @api.steampowered.com

"addr": "X.X.X.X:27016",

"gmsindex": 65534,

"appid": 33930,

"gamedir": "arma2arrowpc",

"region": -1,

"secure": false,

"lan": false,

"gameport": 2302,

"specport": 0

the steamport @server.cfg doesn't work, i think this can be a problem if there are any other server running like multiple hl2 servers cause they use 27015 etc by default. a working function to set a custom steamport would be great.

but anyways, working a2 server again is huge success :D

Edited by yxman

Share this post


Link to post
Share on other sites

Hello!

Please sorry my english.

But i have net truble.

Linux: xUbuntu 14.04

$ uname -a
Linux linkinpunk-pc 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 i686 i686 GNU/Linux

and i try run arma 2 oa server with mod's from this topic.

I install Steam, and auth.

Install arma 2 oa with 1.63 (from windows steam).

Run tolower.

Configure starting script:

export LD_LIBRARY_PATH=.:/usr/lib:$LD_LIBRARY_PATH;./server -port=8192 -netlog -server -mod="@dayz_epoch;@dayz_epoch_server;" -config="cfgdayz/server.cfg" -cfg="cfgdayz/basic.cfg" -beta="expansion/beta;expansion/beta/expansion" -noSound -noPause -world=Chernarus -profiles=cfgdayz -name=cfgdayz -cpucount=2 -exThreads=3 -showscripterrors -pid=8192.pid 2>&1 | ./writer.pl

And run it:

etting breakpad minidump AppID = 33930
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198149629425 [API loaded no]
Item STR_EQUIP_NAME_41 listed twice
Item STR_EQUIP_DESC_41 listed twice
Updating base class ->NonStrategic, by Ca\config.bin/CfgVehicles/HouseBase/
Updating base class ->HouseBase, by Ca\config.bin/CfgVehicles/Ruins/
Updating base class ->DestructionEffects, by Ca\config.bin/CfgVehicles/House/DestructionEffects/
Updating base class ->FlagCarrierCore, by ca\ca_pmc\config.bin/CfgVehicles/FlagCarrier/
Updating base class ->VehicleMagazine, by ca\weapons\config.bin/CfgMagazines/14Rnd_FFAR/
Updating base class ->PistolCore, by ca\weapons\config.bin/cfgWeapons/Pistol/
Updating base class ->LauncherCore, by ca\weapons\config.bin/cfgWeapons/RocketPods/
Updating base class ->RocketPods, by ca\weapons\config.bin/cfgWeapons/FFARLauncher/
Updating base class ->Default, by ca\weapons\config.bin/cfgWeapons/ItemCore/
Updating base class ->Citizen, by ca\characters2\config.bin/CfgVehicles/Citizen1/
Updating base class ->SkodaBase, by ca\wheeled\config.bin/CfgVehicles/car_sedan/
Updating base class ->UH60_Base, by ca\air\config.bin/CfgVehicles/MH60S/
Updating base class ->House, by ca\misc3\config.bin/CfgVehicles/Land_Fire/
Updating base class ->House, by ca\misc3\config.bin/CfgVehicles/Land_A_tent/
Updating base class ->Camp_base, by ca\misc3\config.bin/CfgVehicles/ACamp/
Updating base class ->Car, by ca\wheeled2\lada\config.bin/CfgVehicles/Lada_base/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_Lamp_Small_EP1/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_Lamp_Street1_EP1/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_Lamp_Street2_EP1/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_Lampa_Ind_EP1/
Updating base class StreetLamp_EP1->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_PowLines_Conc2L_EP1/
Updating base class StreetLamp_BaseMediumOrange->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_sidl/
Updating base class StreetLamp_BaseMediumOrange->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_sidl_2/
Updating base class StreetLamp_BaseMediumOrange->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_sidl_3/
Updating base class StreetLamp_BaseWeakYellow->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_ind/
Updating base class StreetLamp_BaseWeakYellow->StreetLamp, by z\addons\dayz_code\config.bin/CfgNonAIVehicles/Land_lampa_ind_zebr/
Updating base class RscStandardDisplay->, by z\addons\dayz_code\config.bin/RscDisplayStart/
Updating base class RscShortcutButton->RscShortcutButtonMain, by z\addons\dayz_code\config.bin/RscDisplayMain/controls/CA_Exit/
Updating base class RscText->, by z\addons\dayz_code\config.bin/RscTitles/Default/
Updating base class zZombie_Base->zZombie_new_Base, by z\addons\dayz_code\config.bin/CfgVehicles/z_villager1/
Updating base class zZombie_Base->zZombie_new_Base, by z\addons\dayz_code\config.bin/CfgVehicles/z_worker1/
Updating base class Soldier_Crew_PMC->Soldier_Bodyguard_M4_PMC, by z\addons\dayz_code\config.bin/CfgVehicles/SurvivorW2_DZ/
Updating base class HighCommand->Logic, by z\addons\dayz_code\config.bin/CfgVehicles/HighCommandSubordinate/
Updating base class ->ViewOptics, by z\addons\dayz_code\config.bin/CfgVehicles/Mi17_base/Turrets/MainTurret/ViewOptics/
Updating base class HouseBase->, by z\addons\dayz_code\config.bin/CfgVehicles/House/
Updating base class NonStrategic->BuiltItems, by z\addons\dayz_code\config.bin/CfgVehicles/Fort_RazorWire/
Updating base class MeleeHatchet->MeleeWeapon, by z\addons\dayz_code\config.bin/CfgWeapons/MeleeCrowbar/
Updating base class VehicleMagazine->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/29Rnd_30mm_AGS30/
Updating base class VehicleMagazine->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/48Rnd_40mm_MK19/
Updating base class 4000Rnd_762x51_M134->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/2000Rnd_762x51_M134/
Updating base class VehicleMagazine->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/100Rnd_127x99_M2/
Updating base class VehicleMagazine->CA_Magazine, by z\addons\dayz_code\config.bin/CfgMagazines/50Rnd_127x107_DSHKM/
Updating base class Hatchet_Swing->Melee_Swing, by z\addons\dayz_code\config.bin/CfgMagazines/crowbar_swing/
Updating base class CA_Magazine->Melee_Swing, by z\addons\dayz_code\config.bin/CfgMagazines/Hatchet_Swing/
Updating base class Land_HouseV_1I2->House, by zero_buildings\config.cpp/CfgVehicles/Land_HouseV_1L2/
Updating base class Land_HouseV_1I2->House, by zero_buildings\config.cpp/CfgVehicles/Land_HouseV_3I3/
Updating base class ->Plane, by ca\air2\mv22\config.bin/CfgVehicles/MV22/
Updating base class ViewOptics->, by ca\air2\uh1y\config.bin/CfgVehicles/UH1_Base/Turrets/MainTurret/ViewOptics/
Updating base class ->HouseBase, by ca\misc_e\config.bin/CfgVehicles/House/
Updating base class ->Land_CamoNet_EAST, by ca\misc_e\config.bin/CfgVehicles/Land_CamoNet_EAST_EP1/
Updating base class ->Land_CamoNetB_EAST, by ca\misc_e\config.bin/CfgVehicles/Land_CamoNetB_EAST_EP1/
Updating base class ->Sign_1L_Noentry, by ca\misc_e\config.bin/CfgVehicles/Sign_1L_Noentry_EP1/
Updating base class ->Sign_circle, by ca\misc_e\config.bin/CfgVehicles/Helper_Base_EP1/
Updating base class ->Rifle, by ca\weapons_baf\config.bin/cfgWeapons/BAF_AS50_scoped/
Updating base class ->Rifle, by ca\weapons_e\config.bin/cfgWeapons/M60A4_EP1/
Updating base class ->M249, by ca\weapons_e\config.bin/cfgWeapons/M249_EP1/
Updating base class ->M249, by ca\weapons_e\config.bin/cfgWeapons/M249_m145_EP1/
Updating base class ->m107, by ca\weapons_e\m107\config.bin/CfgWeapons/m107_TWS_EP1/
Updating base class ->M240, by ca\weapons_e\m240\config.bin/CfgWeapons/m240_scoped_EP1/
Updating base class ->V3S_Base, by ca\wheeled_e\v3s\config.bin/CfgVehicles/V3S_Base_EP1/
Updating base class ->V3S_Base_EP1, by ca\wheeled_e\v3s\config.bin/CfgVehicles/V3S_Refuel_TK_GUE_EP1/
Updating base class House->DZE_OpenHouse, by warehouse\config.bin/CfgVehicles/Land_Ind_Pec_03/
Updating base class ->C130J_base, by ca\air_e\config.bin/CfgVehicles/C130J_US_EP1/
Updating base class ->Helicopter, by ca\air_e\ah6j\config.bin/CfgVehicles/AH6_Base_EP1/
Updating base class ->Plane, by ca\air_e\an2\config.bin/CfgVehicles/An2_Base_EP1/
Updating base class ->CH47_base_EP1, by ca\air_e\ch47\config.bin/CfgVehicles/CH_47F_EP1/
Updating base class ViewOptics->, by ca\air_e\uh1h\config.bin/CfgVehicles/UH1H_base/Turrets/MainTurret/ViewOptics/
Updating base class ->Soldier_Base_PMC, by ca\characters_pmc\config.bin/cfgVehicles/Soldier_Crew_PMC/
Updating base class ->Soldier_Base_PMC, by ca\characters_pmc\config.bin/cfgVehicles/Soldier_TL_PMC/
Updating base class ->Soldier_Base_PMC, by ca\characters_pmc\config.bin/cfgVehicles/Soldier_Bodyguard_M4_PMC/
Updating base class ->Soldier_Base_PMC, by ca\characters_pmc\config.bin/cfgVehicles/Soldier_Bodyguard_AA12_PMC/
Updating base class ->BAF_Soldier_MTP, by ca\characters_w_baf\config.bin/CfgVehicles/BAF_Soldier_W/
Updating base class ->BAF_Soldier_L_MTP, by ca\characters_w_baf\config.bin/CfgVehicles/BAF_Soldier_L_W/
Updating base class ->BAF_Soldier_Officer_MTP, by ca\characters_w_baf\config.bin/CfgVehicles/BAF_Soldier_Officer_W/
Updating base class ->BAF_Soldier_SniperH_MTP, by ca\characters_w_baf\config.bin/CfgVehicles/BAF_Soldier_SniperH_W/
Updating base class ->M113Ambul_Base, by ca\tracked_e\m113\config.bin/CfgVehicles/M113Ambul_UN_EP1/
Updating base class ->M113_Base, by ca\tracked_e\m113\config.bin/CfgVehicles/M113_UN_EP1/
Updating base class ->M113Ambul_Base, by ca\tracked_e\m113\config.bin/CfgVehicles/M113Ambul_TK_EP1/
Updating base class ->M113_Base, by ca\tracked_e\m113\config.bin/CfgVehicles/M113_TK_EP1/
Updating base class ->Helicopter, by ca\air_d_baf\config.bin/CfgVehicles/BAF_Merlin_HC3_D/
0:25:20 Dedicated host created.
0:25:21 Host identity created.

But i can't connect to my server.

And i check openned ports when server is run, but port 8192 not openned:

root@linkinpunk-pc:~# sudo netstat -tnlp
Ðктивные ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚Ð¾Ð¼ (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1018/dnsmasq    
tcp        0      0 127.0.0.1:3350          0.0.0.0:*               LISTEN      1003/xrdp-sesman
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      859/sshd        
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      2495/cupsd      
tcp        0      0 0.0.0.0:27036           0.0.0.0:*               LISTEN      5803/steam      
tcp        0      0 0.0.0.0:27037           0.0.0.0:*               LISTEN      5803/steam      
tcp        0      0 0.0.0.0:3389            0.0.0.0:*               LISTEN      988/xrdp        
tcp        0      0 127.0.0.1:57343         0.0.0.0:*               LISTEN      5803/steam      
tcp        0      0 0.0.0.0:6210            0.0.0.0:*               LISTEN      1418/X11rdp     
tcp        0      0 0.0.0.0:6211            0.0.0.0:*               LISTEN      2098/X11rdp     
tcp        0      0 127.0.0.1:6502          0.0.0.0:*               LISTEN      1608/murmurd    
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      970/mysqld      
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      3033/x11vnc     
tcp6       0      0 :::22                   :::*                    LISTEN      859/sshd        
tcp6       0      0 ::1:631                 :::*                    LISTEN      2495/cupsd      
tcp6       0      0 :::64738                :::*                    LISTEN      1608/murmurd    
tcp6       0      0 :::5900                 :::*                    LISTEN      3033/x11vnc     

And when i try to connect to my server, i have "Waiting for host" long time...

Any idea?

P.S. Please sorry my english.

Share this post


Link to post
Share on other sites

linkinpunk,

the -t option of netstat makes it display only TCP sockets, the server uses only UDP. You need to use -unlp in this case

Share this post


Link to post
Share on other sites

Why libary path? Copy over patched 1.63 steam version to linux, convert dirs, extract the latest beta server, run ./install ./tolower:

server.cfg

//
// server.cfg
//
// comments are written with "//" in front of them.


// GLOBAL SETTINGS
steamport = 8767;
hostname = "yourhostname";		// The name of the server that shall be displayed in the public server list
password = "password";					// Password for joining, eg connecting to the server
passwordAdmin = "youradminpasswd";				// Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
//reportingIP = "armedass.master.gamespy.com";	// For ArmA1 publicly list your server on GameSpy. Leave empty for private servers
//reportingIP = "arma2pc.master.gamespy.com";	// For ArmA2 publicly list your server on GameSpy. Leave empty for private servers
//reportingIP = "arma2oapc.master.gamespy.com";	// For Arma2: Operation Arrowhead  //this option is deprecated since A2: OA version 1.63
//reportingIP = "arma3" //not used at all
logFile = "server_console.log";			// Tells ArmA-server where the logfile should go and what it should be called


// WELCOME MESSAGE ("message of the day")
// It can be several lines, separated by comma
// Empty messages "" will not be displayed at all but are only for increasing the interval
motd[] = {
"", "",  
"",
""
};
motdInterval = 5;				// Time interval (in seconds) between each message


// JOINING RULES
checkfiles[] = {};				// Outdated.
maxPlayers = 64;				// Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
kickDuplicate = 1;				// Each ArmA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
verifySignatures = 0;				// Verifies .pbos against .bisign files. Valid values 0 (disabled), 1 (prefer v2 sigs but accept v1 too) and 2 (only v2 sigs are allowed). 
equalModRequired = 0;				// Outdated. If set to 1, player has to use exactly the same -mod= startup parameter as the server.
//requiredBuild = 12345				// Require clients joining to have at least build 12345 of game, preventing obsolete clients to connect


// VOTING
voteMissionPlayers = 1;				// Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold = 0.33;				// 33% or more players need to vote for something, for example an admin or a new map, to become effective


// INGAME SETTINGS
disableVoN = 1;					// If set to 1, Voice over Net will not be available
vonCodecQuality = 0;				// since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz is 21-30
persistent = 1;					// If 1, missions still run on even after the last player disconnected.
timeStampFormat = "short";			// Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
BattlEye = 0;					// Server to use BattlEye system
allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; //only allow files with those extensions to be loaded via loadFile command (since Arma 3 build 1.19.124216)
allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; //only allow files with those extensions to be loaded via preprocessFile/preprocessFileLineNumber commands (since Arma 3 build 1.19.124323)


// SCRIPTING ISSUES
onUserConnected = "";				//
onUserDisconnected = "";			//
doubleIdDetected = "";				//
//regularCheck = "{}";				//  Server checks files from time to time by hashing them and comparing the hash to the hash values of the clients. //deprecated

// SIGNATURE VERIFICATION
onUnsignedData = "kick (_this select 0)";	// unsigned data detected
onHackedData = "ban (_this select 0)";		// tampering of the signature detected
onDifferentData = "";				// data with a valid signature, but different version than the one present on server detected


Launchscript (arma2oaserver):

#!/bin/bash
#
# armaserver: ArmA 2 Linux Dedicated Server Control Script
#  (c) 2010 BIStudio
#  ArmA 2 binary version must be 1.04 or later
#

#=======================================================================
#========               CONFIGURATION PARAMETERS                ========
#======== MUST BE EDITED MANUALLY TO FIT YOUR SYSTEM PARAMETERS ========
#=======================================================================
ARMA_DIR=/home/$user/$armadir
CONFIG=server.cfg
PORT=$yourport (2302 etc)
PIDFILE=${ARMA_DIR}/${PORT}.pid
RUNFILE=${ARMA_DIR}/${PORT}.run
LOGFILE=${ARMA_DIR}/log.${PORT}.txt
SERVER=${ARMA_DIR}/server
OTHERPARAMS='-cpucount=4 -noLogs -@yourmod1;@yourmod2'
#=======================================================================
ulimit -c 1000000

case "$1" in


   start)
if [ -f ${RUNFILE} ]; then
    $0 stop
fi
echo "Starting ArmA 2 server..."
# file to mark we want server running...	
echo "go" >${RUNFILE}
# launch the background watchdog process to run the server
nohup </dev/null >/dev/null $0 watchdog &
;;

   stop)
echo "Stopping ArmA 2 server..."
if [ -f ${RUNFILE} ]; then
# ask watcher process to exit by deleting its runfile...
    rm -f ${RUNFILE}
fi
# and terminate ArmA 2 server process
if [ -f ${PIDFILE} ]; then
    kill -TERM $(< ${PIDFILE})
    if [ -f ${PIDFILE} ]; then
	rm -f ${PIDFILE}
    fi
fi
;;


   status)
if [ -f ${RUNFILE} ]; then
    echo "Server should be running..."
else
    echo "Server should not be running..."
fi
if [ -f ${PIDFILE} ]; then
    PID=$(< ${PIDFILE})
    echo "PID file exists (PID=${PID})..."
    if [ -f /proc/${PID}/cmdline ]; then
	echo "Server process seems to be running..."
    fi
fi
;;


   check)
echo -n "ArmA 2 directory: ${ARMA_DIR} "
if [ -d ${ARMA_DIR} ]; then
    echo "OK"
else
    echo "MISSING!"
fi

echo -n "Server executable: ${SERVER} "
if [ -x ${SERVER} ]; then
    echo "OK"
else
    echo "ERROR!"
fi

echo "Port number: ${PORT}"

echo -n "Config file: ${CONFIG} "
if [ -f ${CONFIG} ]; then
    echo "OK"
else
    echo "MISSING!"
fi

echo "PID file: ${PIDFILE}"
echo "RUN file: ${RUNFILE}"

;;

   restart)
$0 stop
$0 start
       ;;

   watchdog)
# this is a background watchdog process. Do not start directly
while [ -f ${RUNFILE} ]; do
# launch the server...
    cd ${ARMA_DIR}
    echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Starting server (port ${PORT})..."
    ${SERVER} >>${LOGFILE} 2>&1 -server -config=${CONFIG} -port=${PORT} -pid=${PIDFILE} ${OTHERPARAMS}
    if [ -f ${RUNFILE} ]; then
	echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server died, waiting to restart..."
	sleep 5s
    else
	echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server shutdown intentional, watchdog terminating"
    fi
done    
;;
   *)
echo "$0 (start|stop|restart|status|check)"
;;
esac

Share this post


Link to post
Share on other sites
silent update to fix ^ above ;) (as expected the appID number was wrong)

Not sure if it was fixed but appID should be 33930 not 33935.

Share this post


Link to post
Share on other sites
Not sure if it was fixed but appID should be 33930 not 33935.

argh not fixed , on it

Edited by Dwarden

Share this post


Link to post
Share on other sites

tell me if now the server and 33930 appid works ;)

Share this post


Link to post
Share on other sites
tell me if now the server and 33930 appid works ;)

Hi Dwarden,

here is my result:

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

[s_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.

22:38:54 Dedizierter Host erstellt.

22:38:54 Host-Identität erstellt.

[s_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

Setting breakpad minidump AppID = 33930

Share this post


Link to post
Share on other sites

Hi, I have some troubles with the installation and the configuration of the server. :(

It runs on an Ubuntu Server 14.04 amd64.

In first time I copy the directory under C:\Program Files\Bohemia Interactive\Arma 2 and I rename it as arma2server.

Then I put in the a2oa-server-1.63.112555.tar.bz2 and I upload the directory on my server with winSCP.

I follow the readme instructions :

- unpack the .tar.bz2 and install it

- then I edit the arma2oaserver with these parameters :

#=======================================================================
#========               CONFIGURATION PARAMETERS                ========
#======== MUST BE EDITED MANUALLY TO FIT YOUR SYSTEM PARAMETERS ========
#=======================================================================
ARMA_DIR=/opt/arma2server
CONFIG=arma2oa.cfg
PORT=2302
PIDFILE=${ARMA_DIR}/${PORT}.pid
RUNFILE=${ARMA_DIR}/${PORT}.run
LOGFILE=${ARMA_DIR}/log.${PORT}.txt
SERVER=${ARMA_DIR}/server
OTHERPARAMS=-cpucount=2
#=======================================================================

- I start the server with "./server"

But I have a lot of errors like :

Warning Message: Addon 'CACharacters_BAF' requires addon 'CA_E'

Warning Message: Addon 'CACharacters_BAF' requires addon 'CACharacters_E_Head'

Warning Message: Addon 'CACharacters_BAF' requires addon 'CACharacters_E_Head'

Warning Message: Addon 'CACharacters_BAF_Head' requires addon 'CACharacters_E_Head'

Warning Message: Addon 'CACharacters_PMC_Head' requires addon 'CACharacters_E_Head'

Warning Message: Addon 'CA_BAF' requires addon 'CA_E'

Warning Message: Addon 'CA_Dubbing_Baf' requires addon 'CA_DubbingRadio_E'

Warning Message: Addon 'CA_DubbingRadio_PMC' requires addon 'CA_DubbingRadio_E'

Warning Message: Addon 'CALanguage_PMC' requires addon 'CA_E'

Warning Message: Addon 'CALanguage_missions_PMC' requires addon 'CA_E'

Warning Message: Addon 'CA_Missions2_PMC' requires addon 'CAAir_E'

Warning Message: Addon 'CA_Missions_BAF' requires addon 'CA_Missions_E'

Warning Message: Addon 'ProvingGrounds_PMC' requires addon 'CA_E'

Warning Message: Addon 'ProvingGrounds_PMC' requires addon 'CARoads_E'

Warning Message: Addon 'ProvingGrounds_PMC' requires addon 'CARocks_E'

Warning Message: Addon 'ProvingGrounds_PMC' requires addon 'CAStructures_E'

Warning Message: Addon 'ProvingGrounds_PMC' requires addon 'CAMisc_E'

Warning Message: Addon 'Shapur_BAF' requires addon 'CA_E'

Warning Message: Addon 'Shapur_BAF' requires addon 'CARoads_E'

Warning Message: Addon 'Shapur_BAF' requires addon 'CARocks_E'

Warning Message: Addon 'Shapur_BAF' requires addon 'CAStructures_E'

Warning Message: Addon 'Shapur_BAF' requires addon 'CAMisc_E'

Or :

Warning Message: No entry 'bin\config.bin/CfgDifficulties/Veteran.autoreload'.

Warning Message: '/' is not a value

Warning Message: No entry 'bin\config.bin/CfgDifficulties/Veteran.animSpeedCoef'.

Warning Message: '/' is not a value

Warning Message: No entry 'bin\config.bin/CfgDifficulties/Veteran/Flags.CameraShake'.

Warning Message: []: '/' not an array

Cannot evaluate '' - no file

Warning Message: []: '/' not an array

Cannot evaluate '' - no file

Warning Message: No entry 'bin\config.bin/CfgDifficulties/Mercenary.recoilCoef'.

Warning Message: '/' is not a value

Warning Message: No entry 'bin\config.bin/CfgDifficulties/Mercenary.autoreload'.

Warning Message: '/' is not a value

Warning Message: No entry 'bin\config.bin/CfgDifficulties/Mercenary.animSpeedCoef'.

Warning Message: '/' is not a value

Warning Message: No entry 'bin\config.bin/CfgDifficulties/Mercenary/Flags.CameraShake'.

Warning Message: []: '/' not an array

Cannot evaluate '' - no file

Warning Message: []: '/' not an array

Cannot evaluate '' - no file

No entry '.\ArmA2OA.cfg.3D_Performance'.

20:21:30 Dedicated host created.

Speaker not found, patched to first Male01EN

The end of the log file :

Warning Message: No entry 'bin\config.bin/CfgWrapperUI/Cursors/Arrow.shadow'.

Warning Message: '/' is not a value

Warning: preNLOD format in object

Very old object loaded.

Warning Message: Bad file format ().

WATCHDOG (23411): [jeudi 21 août 2014, 20:21:31 (UTC+0200)] Server died, waiting to restart...

WATCHDOG (23411): [jeudi 21 août 2014, 20:21:36 (UTC+0200)] Starting server (port 2302)...

Warning Message: No entry '.\ArmA2OA.cfg.3D_Performance'.

Warning Message: '/' is not a value

Warning Message: No entry '.\ArmA2OA.cfg.adapter'.

Warning Message: '/' is not a value

Warning Message: No entry '.\ArmA2OA.cfg.Resolution_Bpp'.

Warning Message: '/' is not a value

Warning Message: No entry 'bin\config.bin/CfgInGameUI/MPTable.shadow'.

Warning Message: '/' is not a value

Here the arma2oa.cfg :

hostname="MyHostName";
password="MyPassWord";
passwordAdmin="MyAdminPassWord";
logFile="server_console.log";
motd[]=
{
"",
"Hello World !",
""
};
motdInterval=2;
checkfiles[]={};
maxPlayers=10;
kickDuplicate=1;
verifySignatures=2;
equalModRequired=0;
voteMissionPlayers=1;
voteThreshold=0.33000001;
disableVoN=1;
vonCodecQuality=0;
persistent=1;
timeStampFormat="short";
BattlEye=1;
allowedLoadFileExtensions[]=
{
"hpp",
"sqs",
"sqf",
"fsm",
"cpp",
"paa",
"txt",
"xml",
"inc",
"ext",
"sqm",
"ods",
"fxy",
"lip",
"csv",
"kb",
"bik",
"bikb",
"html",
"htm",
"biedi"
};
allowedPreprocessFileExtensions[]=
{
"hpp",
"sqs",
"sqf",
"fsm",
"cpp",
"paa",
"txt",
"xml",
"inc",
"ext",
"sqm",
"ods",
"fxy",
"lip",
"csv",
"kb",
"bik",
"bikb",
"html",
"htm",
"biedi"
};
allowedHTMLLoadExtensions[]=
{
"htm",
"html"
};
onUserConnected="";
onUserDisconnected="";
doubleIdDetected="";
onUnsignedData="kick (_this select 0)";
onHackedData="ban (_this select 0)";
onDifferentData="";
class Missions
{
};
Windowed=0;

Could you help me ? :)

Thank you.

Edited by mleb-49

Share this post


Link to post
Share on other sites

I have some news, I have solved the issues above.

I had to write : "./server -cfg=arma2oa.cfg -config=server.cfg -name=server -port=2302 -mod=expansion".

Moreover when I launched ./install the program didn't convert /Expansions to /expansions. It has created a new directory /expansions.

And sub-directory into /Expansions were not converted. So I had to put them into /expansions and rename them without uppercases.

But now I have a new error : "Data file too short '' /opt/arma2server/pmc\addons\modules_pmc.pbo'. Expected -1509106028 B, got 77762 B"

Any idea ?

EDIT : I have found some links about my problem on Google but it's for steam version and I have a non-steam version :(

EDIT 2 : If it helps I post my arma2oa.cfg, server.cfg and arma2oaserver file :

arma2oa.cfg :

// These options are created by default
language="French";
adapter=-1;
3D_Performance=1.000000;
Resolution_W=800;
Resolution_H=600;
Resolution_Bpp=32;


// These options are important for performance tuning

MinBandwidth = 131072;			// Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
MaxBandwidth = 10000000000;		// Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.

MaxMsgSend = 128;			// Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
MaxSizeGuaranteed = 512;		// Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
MaxSizeNonguaranteed = 256;		// Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256

MinErrorToSend = 0.001;			// Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
MinErrorToSendNear = 0.01;		// Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01

MaxCustomFileSize = 0;			// (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.

server.cfg :

hostname="Serveur";
password="***";
passwordAdmin="****";
logFile="server.log";
motd[]=
{
"",
"Hello Word !",
""
};
motdInterval=2;
checkfiles[]={};
maxPlayers=10;
kickDuplicate=1;
verifySignatures=2;
equalModRequired=0;
voteMissionPlayers=1;
voteThreshold=0.33000001;
disableVoN=1;
vonCodecQuality=0;
persistent=1;
timeStampFormat="short";
BattlEye=1;
allowedLoadFileExtensions[]=
{
"hpp",
"sqs",
"sqf",
"fsm",
"cpp",
"paa",
"txt",
"xml",
"inc",
"ext",
"sqm",
"ods",
"fxy",
"lip",
"csv",
"kb",
"bik",
"bikb",
"html",
"htm",
"biedi"
};
allowedPreprocessFileExtensions[]=
{
"hpp",
"sqs",
"sqf",
"fsm",
"cpp",
"paa",
"txt",
"xml",
"inc",
"ext",
"sqm",
"ods",
"fxy",
"lip",
"csv",
"kb",
"bik",
"bikb",
"html",
"htm",
"biedi"
};
allowedHTMLLoadExtensions[]=
{
"htm",
"html"
};
onUserConnected="";
onUserDisconnected="";
doubleIdDetected="";
onUnsignedData="kick (_this select 0)";
onHackedData="ban (_this select 0)";
onDifferentData="";
class Missions
{
};
Windowed=0;

arma2oaserver file :

#!/bin/bash
#
# armaserver: ArmA 2 Linux Dedicated Server Control Script
#  (c) 2010 BIStudio
#  ArmA 2 binary version must be 1.04 or later
#

#=======================================================================
#========               CONFIGURATION PARAMETERS                ========
#======== MUST BE EDITED MANUALLY TO FIT YOUR SYSTEM PARAMETERS ========
#=======================================================================
ARMA_DIR=/opt/arma2server
CONFIG=server.cfg
PORT=2302
PIDFILE=${ARMA_DIR}/${PORT}.pid
RUNFILE=${ARMA_DIR}/${PORT}.run
LOGFILE=${ARMA_DIR}/log.${PORT}.txt
SERVER=${ARMA_DIR}/server
OTHERPARAMS=-cpucount=2
#=======================================================================
ulimit -c 1000000

case "$1" in


   start)
if [ -f ${RUNFILE} ]; then
    $0 stop
fi
echo "Starting ArmA 2 server..."
# file to mark we want server running...	
echo "go" >${RUNFILE}
# launch the background watchdog process to run the server
nohup </dev/null >/dev/null $0 watchdog &
;;

   stop)
echo "Stopping ArmA 2 server..."
if [ -f ${RUNFILE} ]; then
# ask watcher process to exit by deleting its runfile...
    rm -f ${RUNFILE}
fi
# and terminate ArmA 2 server process
if [ -f ${PIDFILE} ]; then
    kill -TERM $(< ${PIDFILE})
    if [ -f ${PIDFILE} ]; then
	rm -f ${PIDFILE}
    fi
fi
;;


   status)
if [ -f ${RUNFILE} ]; then
    echo "Server should be running..."
else
    echo "Server should not be running..."
fi
if [ -f ${PIDFILE} ]; then
    PID=$(< ${PIDFILE})
    echo "PID file exists (PID=${PID})..."
    if [ -f /proc/${PID}/cmdline ]; then
	echo "Server process seems to be running..."
    fi
fi
;;


   check)
echo -n "ArmA 2 directory: ${ARMA_DIR} "
if [ -d ${ARMA_DIR} ]; then
    echo "OK"
else
    echo "MISSING!"
fi

echo -n "Server executable: ${SERVER} "
if [ -x ${SERVER} ]; then
    echo "OK"
else
    echo "ERROR!"
fi

echo "Port number: ${PORT}"

echo -n "Config file: ${CONFIG} "
if [ -f ${CONFIG} ]; then
    echo "OK"
else
    echo "MISSING!"
fi

echo "PID file: ${PIDFILE}"
echo "RUN file: ${RUNFILE}"

;;

   restart)
$0 stop
$0 start
       ;;

   watchdog)
# this is a background watchdog process. Do not start directly
while [ -f ${RUNFILE} ]; do
# launch the server...
    cd ${ARMA_DIR}
    echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Starting server (port ${PORT})..."
    ${SERVER} >>${LOGFILE} 2>&1 -server -config=${CONFIG} -port=${PORT} -pid=${PIDFILE} ${OTHERPARAMS}
    if [ -f ${RUNFILE} ]; then
	echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server died, waiting to restart..."
	sleep 5s
    else
	echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server shutdown intentional, watchdog terminating"
    fi
done    
;;
   *)
echo "$0 (start|stop|restart|status|check)"
;;
esac

EDIT 3 : I have compared checksums between the local modules_pmc.pbo and the file on the server. And they are the same.

EDIT 4 : I found how to resolve my problem.

I have read on an other topic that folders PMC, BAF and ACR shouldn't be present on the server. I have deleted all of them and I have no more problem !

Edited by mleb-49

Share this post


Link to post
Share on other sites

Question: are .so extensions supported in Arma2 on Linux? Wiki says it is supported in Arma3, does this mean that the extension code has not been/will not be backported to Arma2?

Right now the DayZ mod can only run on Linux with a hack that replaces the hive interaction with, well, listening to diag_log messages in the server output and writing sqf files as a response. As you can imagine, this is not nice performance wise. A native hive port is not possible without loadable .so support in the Linux server engine.

Share this post


Link to post
Share on other sites

I'm not able to host a Combined Operations server. When I launch ./arma2oaserver, the server runs fine but only shows Arrowhead maps (Proving Grounds, Shapur, Takistan, etc). I'm trying to make a server to play the custom mission "Escape Chernarus" with some friends.

I followed this tutorial: http://tactical.nekromantix.com/wiki/doku.php?id=arma2:linux-dedicated-server-steam-install

I changed the App ID 33910 to 33900 because I was getting errors otherwise. I then have the following output:

arma2oaserver: http://pastebin.com/PakQeJCp

server.cfg: http://pastebin.com/YFMf7ZBq

ls -Rx1 /home/propslam/arma2/: http://pastebin.com/xuwQ5g14

log.2302.txt: http://pastebin.com/wxpGTkVR

I've spent at least 6 hours trying to get this server up and running. I would appreciate any help I can get.

I'm running Ubuntu 12.04.3 x64 on a Digital Ocean droplet

I created a standalone thread here: http://forums.bistudio.com/showthread.php?184734-Server-installed-with-SteamCMD-only-loading-Arrowhead-maps-and-content&p=2802383#post2802383

Edited by shoffing

Share this post


Link to post
Share on other sites
I'm not able to host a Combined Operations server. When I launch ./arma2oaserver, the server runs fine but only shows Arrowhead maps (Proving Grounds, Shapur, Takistan, etc). I'm trying to make a server to play the custom mission "Escape Chernarus" with some friends.

I followed this tutorial: http://tactical.nekromantix.com/wiki/doku.php?id=arma2:linux-dedicated-server-steam-install

I changed the App ID 33910 to 33900 because I was getting errors otherwise. I then have the following output:

arma2oaserver: http://pastebin.com/PakQeJCp

server.cfg: http://pastebin.com/YFMf7ZBq

ls -Rx1 /home/propslam/arma2/: http://pastebin.com/xuwQ5g14

log.2302.txt: http://pastebin.com/wxpGTkVR

I've spent at least 6 hours trying to get this server up and running. I would appreciate any help I can get.

I'm running Ubuntu 12.04.3 x64 on a Digital Ocean droplet

I created a standalone thread here: http://forums.bistudio.com/showthread.php?184734-Server-installed-with-SteamCMD-only-loading-Arrowhead-maps-and-content&p=2802383#post2802383

Hi!

I have some handy tips for you!

First don't waste your knowledge about Steam for this patch!

You need to update your PC Arma2oa or co Version to >1.63.

Then you need to upload all your lokal files from your arma2 install folder to your server. (If you have a windows-server too, than you can copy that files from there)

You need this folders:

addons

common

dta

expansion

keys

mpmissions

userconfig (if you want to use ace,acre...)

You don't need any .dll files, cause linux can't use them!

Then take care that all file are in lower case, you can use tolower from that patch-file . You need to compile the tolower.c with gcc first.

Create all config files:

https://community.bistudio.com/wiki/server.cfg (reportingIP= don't work anymore!)

https://community.bistudio.com/wiki/Arma2:_Startup_Parameters

https://community.bistudio.com/wiki/basic.cfg

https://community.bistudio.com/wiki/server.armaprofile

and edit your arma2oaserver and use this for starting your gameserver (don't forget to set chmod 0770 or like that)

If your server don't start, post your logfile into that Forum for support.

Pille

Edited by Pillord
Wrong refresh after relogin

Share this post


Link to post
Share on other sites

I highly recommend to follow official instructions posted in the first post of this thread. I had huge headache following necromantix's outdated instructions.

Share this post


Link to post
Share on other sites

Is there any direct link for an Operation Arrowhead Directory Download?

my upload is horrible and it would be immensely helpful if i could just use wget to get an already available download.

Share this post


Link to post
Share on other sites

Is there any direct link for an Operation Arrowhead Directory Download?

my upload is horrible and it would be immensely helpful if i could just use wget to get an already available download.

For what? What do you need? A "legal" pirate copy of the game?

I update my server (16.8 GB with addons) several times without complaining with 640 Kb UL

As for Steam copies it should be possible to DL everything to your server (passing your node)

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

×