From 7665d702a2de5a773c72a40fb94017c56718e878 Mon Sep 17 00:00:00 2001 From: Frank Harris Date: Thu, 2 Jul 2026 18:12:10 -0500 Subject: [PATCH] cleanup --- Cfg/Preferences.pm | 2 - Cfg/Preferences.pm.default | 2 - Cfg/bash_prefs.cfg.default | 2 +- DEVELOPMENT | 2 +- EHCP/updatePass.php | 2 +- Frontier/Daemon/{OGP => GSP}/Forking.pm | 8 +- README.md | 6 +- agent_conf.sh | 8 +- docs/PANEL_INTEGRATION.md | 2 +- documentation/agent-guide.md | 12 +- ogp_agent.pl => gsp_agent.pl | 128 +++++++++--------- gsp_agent_run | 2 +- ogp_screenrc => gsp_screenrc | 0 ogp_screenrc_bk => gsp_screenrc_bk | 0 includes/{ogp_agent.init => gsp_agent.init} | 6 +- ...{ogp_agent.init.dbn => gsp_agent.init.dbn} | 8 +- ...gent.init.gentoo => gsp_agent.init.gentoo} | 6 +- .../{ogp_agent.init.rh => gsp_agent.init.rh} | 6 +- install.sh | 2 +- ogp_agent_run | 5 - startups/173.208.236.122-5400 | 2 +- systemd/ogp_agent.service | 18 --- 22 files changed, 97 insertions(+), 132 deletions(-) rename Frontier/Daemon/{OGP => GSP}/Forking.pm (94%) rename ogp_agent.pl => gsp_agent.pl (98%) rename ogp_screenrc => gsp_screenrc (100%) rename ogp_screenrc_bk => gsp_screenrc_bk (100%) rename includes/{ogp_agent.init => gsp_agent.init} (84%) rename includes/{ogp_agent.init.dbn => gsp_agent.init.dbn} (94%) rename includes/{ogp_agent.init.gentoo => gsp_agent.init.gentoo} (83%) rename includes/{ogp_agent.init.rh => gsp_agent.init.rh} (97%) delete mode 100755 ogp_agent_run delete mode 100644 systemd/ogp_agent.service diff --git a/Cfg/Preferences.pm b/Cfg/Preferences.pm index a85cf79..f3678fa 100644 --- a/Cfg/Preferences.pm +++ b/Cfg/Preferences.pm @@ -2,10 +2,8 @@ screen_log_local => '1', delete_logs_after => '30', gsp_manages_ftp => '1', - ogp_manages_ftp => '1', ftp_method => 'PureFTPd', gsp_autorestart_server => '1', - ogp_autorestart_server => '1', protocol_shutdown_waittime => '10', linux_user_per_game_server => '1', PortValidationEnabled => '1', diff --git a/Cfg/Preferences.pm.default b/Cfg/Preferences.pm.default index a85cf79..f3678fa 100644 --- a/Cfg/Preferences.pm.default +++ b/Cfg/Preferences.pm.default @@ -2,10 +2,8 @@ screen_log_local => '1', delete_logs_after => '30', gsp_manages_ftp => '1', - ogp_manages_ftp => '1', ftp_method => 'PureFTPd', gsp_autorestart_server => '1', - ogp_autorestart_server => '1', protocol_shutdown_waittime => '10', linux_user_per_game_server => '1', PortValidationEnabled => '1', diff --git a/Cfg/bash_prefs.cfg.default b/Cfg/bash_prefs.cfg.default index 104546a..b53cf35 100644 --- a/Cfg/bash_prefs.cfg.default +++ b/Cfg/bash_prefs.cfg.default @@ -1,7 +1,7 @@ agent_auto_update=0 agent_update_repo_url=http://forge.runlevelsystems.com/dev/GSP.git agent_update_branch=Panel-unstable -agent_update_raw_url=http://forge.runlevelsystems.com/dev/GSP/raw/branch/Panel-unstable/Agent-Linux/ogp_agent.pl +agent_update_raw_url=http://forge.runlevelsystems.com/dev/GSP/raw/branch/Panel-unstable/Agent-Linux/gsp_agent.pl run_pureftpd=1 ftp_port=21 ftp_ip=0.0.0.0 diff --git a/DEVELOPMENT b/DEVELOPMENT index aa7ee42..93eabd0 100644 --- a/DEVELOPMENT +++ b/DEVELOPMENT @@ -2,4 +2,4 @@ GSP Agent NOTES: Before committing code it is recommended to execute perltidy: -$ perltidy -b -gnu ogp_agent.pl +$ perltidy -b -gnu gsp_agent.pl diff --git a/EHCP/updatePass.php b/EHCP/updatePass.php index 640c788..2e925b0 100644 --- a/EHCP/updatePass.php +++ b/EHCP/updatePass.php @@ -25,7 +25,7 @@ if (isset($_GET['password'])) { if (!isset($ftp_username) || !isset($ftp_pass)) { $errorCount++; - $errors[] = "No FTP accounts could be modified! Updated username and password were not sent by the OGP upload functions."; + $errors[] = "No FTP accounts could be modified! Updated username and password were not sent by the GSP upload functions."; } else { if ($errorCount == 0) { diff --git a/Frontier/Daemon/OGP/Forking.pm b/Frontier/Daemon/GSP/Forking.pm similarity index 94% rename from Frontier/Daemon/OGP/Forking.pm rename to Frontier/Daemon/GSP/Forking.pm index 49fa315..ef51d27 100644 --- a/Frontier/Daemon/OGP/Forking.pm +++ b/Frontier/Daemon/GSP/Forking.pm @@ -1,4 +1,4 @@ -package Frontier::Daemon::OGP::Forking; +package Frontier::Daemon::GSP::Forking; # $Id: Forking.pm,v 1.6 2004/01/23 19:48:33 tcaine Exp $ use strict; @@ -14,7 +14,7 @@ use HTTP::Status; # most of this routine comes directly from Frontier::Daemon sub new { - my $class = shift; + my $class = shift; my %args = @_; my $encoding = delete $args{encoding}; my $self = $class->SUPER::new( %args ); @@ -39,14 +39,14 @@ ACCEPT: if ( not defined $pid ) { warn "fork() failed: $!"; $conn = undef; - } + } else { my $request = $conn->get_request; if ($request) { if ($request->method eq 'POST' && $request->url->path eq '/RPC2') { ${*$self}{'response'}->content( ${*$self}{'decode'}->serve( - $request->content, + $request->content, ${*$self}{'methods'}, ) ); diff --git a/README.md b/README.md index 12cf74d..c40d5ca 100644 --- a/README.md +++ b/README.md @@ -6,19 +6,19 @@ Perl-based Linux execution agent for GameServer Panel. The agent receives signed - install directory: `/home/gameserver/GSP` - run script: `gsp_agent_run` -- legacy run wrapper: `ogp_agent_run` +- legacy run wrapper: `gsp_agent_run` - systemd service: `gsp_agent.service` - config directory: `/home/gameserver/GSP/Cfg/` - main log: `/home/gameserver/GSP/gsp_agent.log` - screen logs: `/home/gameserver/GSP/screenlogs/` - server-content runtime: `/home/gameserver/GSP/_gsp_content/` -Legacy OGP script names are retained only where the Panel or older installs may still expect them. +Legacy GSP script names are retained only where the Panel or older installs may still expect them. ## Guided Install ```bash -chmod +x install_agent_prereqs.sh install.sh agent_conf.sh gsp_agent_run ogp_agent_run +chmod +x install_agent_prereqs.sh install.sh agent_conf.sh gsp_agent_run gsp_agent_run sudo ./install_agent_prereqs.sh sudo ./install.sh ``` diff --git a/agent_conf.sh b/agent_conf.sh index 449c783..af4a148 100755 --- a/agent_conf.sh +++ b/agent_conf.sh @@ -24,7 +24,7 @@ Options: --listen-ip IP Agent bind IP. Default: ${DEFAULT_IP} --listen-port PORT Agent bind port. Default: ${DEFAULT_PORT} --sudo-password VALUE Optional sudo password for legacy sudo_exec flows. - --web-api-url URL Panel ogp_api.php URL. + --web-api-url URL Panel gsp_api.php URL. --agent-event-url URL Panel agent_event_receiver.php URL. --remote-server-id ID Panel remote server ID. --ftp-managed 0|1 Whether GSP should manage FTP accounts. Default: 1 @@ -130,7 +130,7 @@ if [ "$guided" -eq 1 ]; then key="${key:-$(ask_secret "Agent key/shared secret")}" listen_ip="$(ask "Listen IP" "$listen_ip")" listen_port="$(ask "Listen port" "$listen_port")" - web_api_url="$(ask "Panel API URL, usually https://panel.example.com/ogp_api.php" "$web_api_url")" + web_api_url="$(ask "Panel API URL, usually https://panel.example.com/gsp_api.php" "$web_api_url")" agent_event_url="$(ask "Panel event receiver URL, usually https://panel.example.com/agent_event_receiver.php" "$agent_event_url")" remote_server_id="$(ask "Panel remote server ID" "$remote_server_id")" ftp_managed="$(ask "Manage FTP accounts? 1=yes, 0=no" "$ftp_managed")" @@ -181,10 +181,8 @@ cat > "$prefsfile" < '${screen_log_local}', delete_logs_after => '${delete_logs_after}', gsp_manages_ftp => '${ftp_managed}', - ogp_manages_ftp => '${ftp_managed}', ftp_method => '${ftp_method}', gsp_autorestart_server => '${auto_restart}', - ogp_autorestart_server => '${auto_restart}', protocol_shutdown_waittime => '${protocol_shutdown_waittime}', linux_user_per_game_server => '${linux_user_per_game_server}', PortValidationEnabled => '1', @@ -197,7 +195,7 @@ cat > "$bashprefsfile" < '/home/gameserver/GSP/gsp_agent.log'` @@ -179,7 +179,7 @@ Service failed: - run `sudo systemctl status gsp_agent` - run `sudo journalctl -u gsp_agent -f` -- run `perl -c /home/gameserver/GSP/ogp_agent.pl` +- run `perl -c /home/gameserver/GSP/gsp_agent.pl` Config missing or invalid: diff --git a/ogp_agent.pl b/gsp_agent.pl similarity index 98% rename from ogp_agent.pl rename to gsp_agent.pl index febd44a..f662878 100644 --- a/ogp_agent.pl +++ b/gsp_agent.pl @@ -1,8 +1,7 @@ #!/usr/bin/perl # # GameServer Panel Linux Agent -# Forked from the Open Game Panel agent. -# Copyright (C) 2008 - 2018 The OGP Development Team +# Copyright (C) 2008 - 2018 The GSP Development Team # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -24,7 +23,7 @@ use strict; use Cwd; # Fast way to get the current directory use lib getcwd(); -use Frontier::Daemon::OGP::Forking; # Forking XML-RPC server +use Frontier::Daemon::GSP::Forking; # Forking XML-RPC server use File::Copy; # Simple file copy functions use File::Copy::Recursive qw(fcopy rcopy dircopy fmove rmove dirmove pathempty pathrmdir) @@ -76,7 +75,7 @@ use constant SCREEN_LOG_LOCAL => $Cfg::Preferences{screen_log_local}; use constant DELETE_LOGS_AFTER => $Cfg::Preferences{delete_logs_after}; use constant LINUX_USER_PER_GAME_SERVER => $Cfg::Preferences{linux_user_per_game_server}; use constant AGENT_PID_FILE => - Path::Class::File->new(AGENT_RUN_DIR, 'ogp_agent.pid'); + Path::Class::File->new(AGENT_RUN_DIR, 'gsp_agent.pid'); use constant AGENT_RSYNC_GENERIC_LOG => Path::Class::File->new(AGENT_RUN_DIR, 'rsync_update_generic.log'); use constant STEAM_LICENSE_OK => "Accept"; @@ -97,14 +96,14 @@ use constant AGENT_EVENTS_DIR => use constant AGENT_EVENT_QUEUE_FILE => Path::Class::File->new(AGENT_EVENTS_DIR, 'pending-events.jsonl'); use constant SCREENRC_FILE => - Path::Class::File->new(AGENT_RUN_DIR, 'ogp_screenrc'); + Path::Class::File->new(AGENT_RUN_DIR, 'gsp_screenrc'); use constant SCREENRC_FILE_BK => - Path::Class::File->new(AGENT_RUN_DIR, 'ogp_screenrc_bk'); + Path::Class::File->new(AGENT_RUN_DIR, 'gsp_screenrc_bk'); use constant SCREENRC_TMP_FILE => - Path::Class::File->new(AGENT_RUN_DIR, 'ogp_screenrc.tmp'); + Path::Class::File->new(AGENT_RUN_DIR, 'gsp_screenrc.tmp'); use constant SCREEN_TYPE_HOME => "HOME"; use constant SCREEN_TYPE_UPDATE => "UPDATE"; -use constant SERVER_RUNNER_USER => "ogp_server_runner"; +use constant SERVER_RUNNER_USER => "gsp_server_runner"; use constant FD_DIR => Path::Class::Dir->new(AGENT_RUN_DIR, 'FastDownload'); use constant FD_ALIASES_DIR => Path::Class::Dir->new(FD_DIR, 'aliases'); use constant FD_PID_FILE => Path::Class::File->new(FD_DIR, 'fd.pid'); @@ -187,7 +186,7 @@ sub agent_event_panel_url if(defined($Cfg::Config{web_api_url}) && $Cfg::Config{web_api_url} ne "") { my $url = $Cfg::Config{web_api_url}; - $url =~ s/ogp_api\.php(?:\?.*)?$/agent_event_receiver.php/; + $url =~ s/gsp_api\.php(?:\?.*)?$/agent_event_receiver.php/; return $url if($url =~ /agent_event_receiver\.php$/); $url =~ s/\/+$//; return "$url/agent_event_receiver.php"; @@ -227,7 +226,8 @@ sub cleanup_server_content_pid_group_without_decrypt my ($pid_file, $wanted_role, $as_user) = @_; return if(!-f $pid_file); my @remaining; - if(!open(my $in, '<', $pid_file)) + my $in; + if(!open($in, '<', $pid_file)) { logger "Could not read server content PID file $pid_file: $!"; return; @@ -249,7 +249,7 @@ sub cleanup_server_content_pid_group_without_decrypt sudo_exec_without_decrypt("kill -KILL $pid >/dev/null 2>&1 || true", $as_user); next; } - push(@remaining, $original) if($role ne "watchdog" && $role ne "app"); + push(@remaining, $original); } close($in); if(open(my $out, '>', $pid_file)) @@ -706,7 +706,7 @@ if(-e Path::Class::File->new(FD_DIR, 'Settings.pm')) } } -my $d = Frontier::Daemon::OGP::Forking->new( +my $d = Frontier::Daemon::GSP::Forking->new( methods => { is_screen_running => \&is_screen_running, server_status => \&server_status, @@ -919,13 +919,13 @@ sub get_home_pids sub create_screen_id { my ($screen_type, $home_id) = @_; - return sprintf("OGP_%s_%09d", $screen_type, $home_id); + return sprintf("GSP_%s_%09d", $screen_type, $home_id); } sub create_screen_cmd { my ($screen_id, $exec_cmd) = @_; - $exec_cmd = replace_OGP_Env_Vars($screen_id, "", "", $exec_cmd); + $exec_cmd = replace_GSP_Env_Vars($screen_id, "", "", $exec_cmd); return sprintf('export WINEDEBUG="fixme-all" && export DISPLAY=:1 && screen -d -m -t "%1$s" -c ' . SCREENRC_FILE . ' -S %1$s %2$s', $screen_id, $exec_cmd); @@ -937,7 +937,7 @@ sub create_screen_cmd_loop my ($screen_id, $exec_cmd, $envVars, $skipLoop, $status_hint_file) = @_; my $server_start_bashfile = $screen_id . "_startup_scr.sh"; - $exec_cmd = replace_OGP_Env_Vars($screen_id, "", "", $exec_cmd); + $exec_cmd = replace_GSP_Env_Vars($screen_id, "", "", $exec_cmd); # Allow file to be overwritten if(-e $server_start_bashfile){ @@ -1004,8 +1004,8 @@ sub create_screen_cmd_loop sub handle_lock_command_line{ my ($command) = @_; if(defined $command && $command ne ""){ - if ($command =~ m/{OGP_LOCK_FILE}/) { - $command =~ s/{OGP_LOCK_FILE}\s*//g; + if ($command =~ m/{GSP_LOCK_FILE}/) { + $command =~ s/{GSP_LOCK_FILE}\s*//g; return secure_path_without_decrypt("chattr+i", $command); } } @@ -1013,7 +1013,7 @@ sub handle_lock_command_line{ return 0; } -sub replace_OGP_Env_Vars{ +sub replace_GSP_Env_Vars{ # This function replaces constants from environment variables set in the XML my ($screen_id, $homeid, $homepath, $exec_cmd, $game_key) = @_; @@ -1027,7 +1027,7 @@ sub replace_OGP_Env_Vars{ # If the install file exists, the game can be auto updated, else it will be ignored by the game for improper syntax # To generate the install file, the "Install/Update via Steam" button must be clicked on at least once! if(-e $fullPath){ - $exec_cmd =~ s/{OGP_STEAM_CMD_DIR}/$steamCMDPath/g; + $exec_cmd =~ s/{GSP_STEAM_CMD_DIR}/$steamCMDPath/g; $exec_cmd =~ s/{STEAMCMD_INSTALL_FILE}/$steamInsFile/g; } } @@ -1035,7 +1035,7 @@ sub replace_OGP_Env_Vars{ # Handle home directory replacement if(defined $homepath && $homepath ne ""){ - $exec_cmd =~ s/{OGP_HOME_DIR}/$homepath/g; + $exec_cmd =~ s/{GSP_HOME_DIR}/$homepath/g; } # Handle global game shared directory replacement @@ -1047,7 +1047,7 @@ sub replace_OGP_Env_Vars{ { logger "Could not create " . $shared_path . " directory $!.", 1; } - $exec_cmd =~ s/{OGP_GAME_SHARED_DIR}/$shared_path/g; + $exec_cmd =~ s/{GSP_GAME_SHARED_DIR}/$shared_path/g; } return $exec_cmd; @@ -1573,12 +1573,12 @@ sub universal_start_without_decrypt my $owner = SERVER_RUNNER_USER; my $group = SERVER_RUNNER_USER; - my $ogpAgentGroup = `whoami`; + my $gspAgentGroup = `whoami`; my $screen_id = create_screen_id(SCREEN_TYPE_HOME, $home_id); my $status_hint_file = get_status_hint_path($home_id); - chomp $ogpAgentGroup; + chomp $gspAgentGroup; if(defined LINUX_USER_PER_GAME_SERVER && LINUX_USER_PER_GAME_SERVER eq "1"){ $owner = "gamehome" . $home_id; @@ -1596,12 +1596,12 @@ sub universal_start_without_decrypt } } - # Fix perms on ogp_agent user's homedir so that other users can access their owned files within this dir - my $fixOGPHomeDirCommand = 'chmod -R ug+rwx $( getent passwd "' . $ogpAgentGroup . '" | cut -d: -f6 )'; - sudo_exec_without_decrypt($fixOGPHomeDirCommand); + # Fix perms on the GSP agent user's homedir so other users can access owned files within this dir. + my $fixGSPHomeDirCommand = 'chmod -R ug+rwx $( getent passwd "' . $gspAgentGroup . '" | cut -d: -f6 )'; + sudo_exec_without_decrypt($fixGSPHomeDirCommand); - $fixOGPHomeDirCommand = 'find "$( getent passwd "' . $ogpAgentGroup . '" | cut -d: -f6 )" -type d -print0 | xargs -0 chmod o+x'; - sudo_exec_without_decrypt($fixOGPHomeDirCommand); + $fixGSPHomeDirCommand = 'find "$( getent passwd "' . $gspAgentGroup . '" | cut -d: -f6 )" -type d -print0 | xargs -0 chmod o+x'; + sudo_exec_without_decrypt($fixGSPHomeDirCommand); # Some game require that we are in the directory where the binary is. my $game_binary_dir = Path::Class::Dir->new($home_path, $run_dir); @@ -1638,7 +1638,7 @@ sub universal_start_without_decrypt my @prestartenvvars = split /[\r\n]+/, $envVars; my $envVarStr = ""; foreach my $line (@prestartenvvars) { - $line = replace_OGP_Env_Vars("", $home_id, $home_path, $line, $game_key); + $line = replace_GSP_Env_Vars("", $home_id, $home_path, $line, $game_key); if($line ne ""){ logger "Configuring environment variable: $line"; $envVarStr .= "$line\n"; @@ -1694,8 +1694,8 @@ sub universal_start_without_decrypt my $run_before_start; prepare_server_content_runtime_without_decrypt($home_path); - # Replace any OGP variables found in the command line - $startup_cmd = replace_OGP_Env_Vars($screen_id, $home_id, $home_path, $startup_cmd, $game_key); + # Replace any GSP variables found in the command line + $startup_cmd = replace_GSP_Env_Vars($screen_id, $home_id, $home_path, $startup_cmd, $game_key); if($file_extension eq ".exe" or $file_extension eq ".bat") { @@ -1706,7 +1706,7 @@ sub universal_start_without_decrypt $command = "taskset -c $cpu wine $server_exe $startup_cmd"; } - if(preference_enabled('gsp_autorestart_server', 'ogp_autorestart_server', '1')){ + if(preference_enabled('gsp_autorestart_server', 'gsp_autorestart_server', '1')){ $cli_bin = create_screen_cmd_loop($screen_id, $command, $envVars, undef, $status_hint_file); }else{ $cli_bin = create_screen_cmd_loop($screen_id, $command, $envVars, 1); @@ -1721,7 +1721,7 @@ sub universal_start_without_decrypt $command = "taskset -c $cpu $startup_cmd"; } - if(preference_enabled('gsp_autorestart_server', 'ogp_autorestart_server', '1')){ + if(preference_enabled('gsp_autorestart_server', 'gsp_autorestart_server', '1')){ $cli_bin = create_screen_cmd_loop($screen_id, $command, $envVars, undef, $status_hint_file); }else{ $cli_bin = create_screen_cmd_loop($screen_id, $command, $envVars, 1); @@ -1736,7 +1736,7 @@ sub universal_start_without_decrypt $command = "taskset -c $cpu ./$server_exe $startup_cmd"; } - if(preference_enabled('gsp_autorestart_server', 'ogp_autorestart_server', '1')){ + if(preference_enabled('gsp_autorestart_server', 'gsp_autorestart_server', '1')){ $cli_bin = create_screen_cmd_loop($screen_id, $command, $envVars, undef, $status_hint_file); }else{ $cli_bin = create_screen_cmd_loop($screen_id, $command, $envVars, 1); @@ -2929,7 +2929,7 @@ sub lock_additional_files_logic{ my $commandStr = ""; $filesToLock = startup_comma_format_to_multiline($filesToLock); - $filesToLock = replace_OGP_Env_Vars("", "", $homedir, $filesToLock); + $filesToLock = replace_GSP_Env_Vars("", "", $homedir, $filesToLock); my @filesToProcess = split /[\r\n]+/, $filesToLock; foreach my $line (@filesToProcess) { my $fullPath = $homedir . "/" . $line; @@ -2993,7 +2993,7 @@ sub multiline_to_startup_comma_format{ my ($multiLineVar) = @_; $multiLineVar =~ s/,//g; # commas are invalid anyways in bash $multiLineVar =~ s/[\r]+//g; - $multiLineVar =~ s/[\n]+/{OGPNEWLINE}/g; + $multiLineVar =~ s/[\n]+/{GSPNEWLINE}/g; return $multiLineVar; } @@ -3005,7 +3005,7 @@ sub multiline_to_bash_commands{ sub startup_comma_format_to_multiline{ my ($multiLineVar) = @_; - $multiLineVar =~ s/{OGPNEWLINE}/\n/g; + $multiLineVar =~ s/{GSPNEWLINE}/\n/g; return $multiLineVar; } @@ -4236,19 +4236,19 @@ sub collect_and_insert_process_samples chomp($session); next unless $session; - # Extract server name from screen session name (format: OGP_HOME_000001518 or similar) + # Extract server name from screen session name (format: GSP_HOME_000001518 or similar) my $server_name = $session; my $server_path = '/'; - # Try to extract home_id from OGP screen session and map to server_id - if ($session =~ /OGP_HOME_0*(\d+)/) { + # Try to extract home_id from GSP screen session and map to server_id + if ($session =~ /GSP_HOME_0*(\d+)/) { my $home_id = $1; if (exists $home_id_to_server_id{$home_id}) { $server_name = $home_id_to_server_id{$home_id}; # Use actual server ID } else { $server_name = "GameServer_Home_$home_id"; # Fallback to home_id } - } elsif ($session =~ /OGP_\w+_(.+)/) { + } elsif ($session =~ /GSP_\w+_(.+)/) { $server_name = $1; } elsif ($session =~ /(\d+)\.(.+)/) { $server_name = $2; @@ -4316,7 +4316,7 @@ sub collect_and_insert_process_samples # Avoid duplicates by checking if we already processed this PID next if grep { $_->{pid} == $pid } @processes; - # Only process if this executable has a startup file (is managed by OGP) + # Only process if this executable has a startup file (is managed by GSP) if (exists $startup_executables{$exe_name}) { my $startup_info = $startup_executables{$exe_name}; # Use the actual server ID from the startup file @@ -4326,7 +4326,7 @@ sub collect_and_insert_process_samples my $proc_info = get_process_info($pid, $server_name, $server_path); push @processes, $proc_info if $proc_info; } - # If no startup file exists for this executable, we skip it (not managed by OGP) + # If no startup file exists for this executable, we skip it (not managed by GSP) } } @@ -4873,7 +4873,7 @@ sub ftp_mgr $password =~ s/('+)/'\"$1\"'/g; $home_path =~ s/('+)/'\"$1\"'/g; - if(preference_enabled('gsp_manages_ftp', 'ogp_manages_ftp', '1')){ + if(preference_enabled('gsp_manages_ftp', 'gsp_manages_ftp', '1')){ if( defined($Cfg::Preferences{ftp_method}) && $Cfg::Preferences{ftp_method} eq "IspConfig") { use constant ISPCONFIG_DIR => Path::Class::Dir->new(AGENT_RUN_DIR, 'IspConfig'); @@ -4935,7 +4935,7 @@ sub ftp_mgr chmod 0777, 'ehcp_ftp_log.txt'; - # In order to access the FTP files, the vsftpd user needs to be added to the ogp group + # In order to access the FTP files, the vsftpd user needs to be added to the GSP group sudo_exec_without_decrypt("usermod -a -G '$gid' ftp"); sudo_exec_without_decrypt("usermod -a -G '$gid' vsftpd"); sudo_exec_without_decrypt("usermod -a -G '$gidTwo' ftp"); @@ -5565,8 +5565,8 @@ if command -v rsync >/dev/null 2>&1; then else (cd "\$SRC" && tar --exclude='./Cfg' --exclude='./ServerFiles' --exclude='./Schedule' --exclude='./logs' --exclude='./screenlogs' --exclude='./steamcmd' --exclude='./startups' --exclude='./tmp' --exclude='./shared' --exclude='./component_backups' --exclude='./*.pid' -cf - .) | (cd "\$DEST" && tar -xf -) >> "\$LOG" 2>&1 || fail "tar copy failed" fi -if [ -f "\$DEST/ogp_agent.pl" ]; then - perl -c "\$DEST/ogp_agent.pl" >> "\$LOG" 2>&1 || fail "Updated ogp_agent.pl failed syntax validation" +if [ -f "\$DEST/gsp_agent.pl" ]; then + perl -c "\$DEST/gsp_agent.pl" >> "\$LOG" 2>&1 || fail "Updated gsp_agent.pl failed syntax validation" fi if [ -n "\$POST_UPDATE" ]; then (cd "\$DEST" && bash -lc "\$POST_UPDATE") >> "\$LOG" 2>&1 || fail "post-update command failed" @@ -5576,20 +5576,14 @@ sleep 2 if command -v systemctl >/dev/null 2>&1 && systemctl list-unit-files 2>/dev/null | grep -q '^gsp_agent\\.service'; then systemctl restart gsp_agent.service >> "\$LOG" 2>&1 && exit 0 fi -if command -v systemctl >/dev/null 2>&1 && systemctl list-unit-files 2>/dev/null | grep -q '^ogp_agent\\.service'; then - systemctl restart ogp_agent.service >> "\$LOG" 2>&1 && exit 0 -fi cd "\$DEST" || exit 0 if [ -f gsp_agent_run.pid ]; then kill "\$(cat gsp_agent_run.pid)" >/dev/null 2>&1 || true; fi -if [ -f ogp_agent_run.pid ]; then kill "\$(cat ogp_agent_run.pid)" >/dev/null 2>&1 || true; fi -if [ -f ogp_agent.pid ]; then kill "\$(cat ogp_agent.pid)" >/dev/null 2>&1 || true; fi +if [ -f gsp_agent.pid ]; then kill "\$(cat gsp_agent.pid)" >/dev/null 2>&1 || true; fi sleep 2 if [ -f gsp_agent_run ]; then screen -d -m -t "gsp_agent" -c $screenrc_q -S gsp_agent bash gsp_agent_run -pidfile gsp_agent_run.pid >> "\$LOG" 2>&1 || true -elif [ -f ogp_agent_run ]; then - screen -d -m -t "gsp_agent" -c $screenrc_q -S gsp_agent bash ogp_agent_run -pidfile gsp_agent_run.pid >> "\$LOG" 2>&1 || true else - screen -d -m -t "gsp_agent" -c $screenrc_q -S gsp_agent perl ogp_agent.pl >> "\$LOG" 2>&1 || true + screen -d -m -t "gsp_agent" -c $screenrc_q -S gsp_agent perl gsp_agent.pl >> "\$LOG" 2>&1 || true fi log "restart attempted" rm -rf "\$TMP" @@ -5620,9 +5614,9 @@ sub agent_restart if ($dec_check eq 'restart') { chdir AGENT_RUN_DIR; - if(-e "gsp_agent_run.pid" || -e "ogp_agent_run.pid") - { - my $run_pid_file = -e "gsp_agent_run.pid" ? "gsp_agent_run.pid" : "ogp_agent_run.pid"; + if(-e "gsp_agent_run.pid") + { + my $run_pid_file = "gsp_agent_run.pid"; my $init_pid = `cat $run_pid_file`; chomp($init_pid); @@ -5630,10 +5624,10 @@ sub agent_restart { my $or_exist = ""; my $rm_pid_file = ""; - if(-e "ogp_agent.pid") + if(-e "gsp_agent.pid") { - $rm_pid_file = " ogp_agent.pid"; - my $agent_pid = `cat ogp_agent.pid`; + $rm_pid_file = " gsp_agent.pid"; + my $agent_pid = `cat gsp_agent.pid`; chomp($agent_pid); if( kill 0, $agent_pid ) { @@ -5645,10 +5639,10 @@ sub agent_restart my $restart = "echo -n \"Stopping GSP Agent...\"\n". "kill $init_pid\n". "while [ -e /proc/$init_pid $or_exist ];do echo -n .;sleep 1;done\n". - "rm -f gsp_agent_run.pid ogp_agent_run.pid $rm_pid_file\necho \" [OK]\"\n". + "rm -f gsp_agent_run.pid $rm_pid_file\necho \" [OK]\"\n". "echo -n \"Starting GSP Agent...\"\n". "screen -d -m -t \"gsp_agent\" -c \"" . SCREENRC_FILE . "\" -S gsp_agent bash gsp_agent_run -pidfile gsp_agent_run.pid\n". - "while [ ! -e gsp_agent_run.pid -o ! -e ogp_agent.pid ];do echo -n .;sleep 1;done\n". + "while [ ! -e gsp_agent_run.pid -o ! -e gsp_agent.pid ];do echo -n .;sleep 1;done\n". "echo \" [OK]\"\n". "rm -f tmp_restart.sh\n". "exit 0\n"; @@ -6650,8 +6644,8 @@ sub generate_post_install_scripts ' if [ -z "$installed_path" ] && [ -e "$mods_full_path/$mod_id" ];then installed_path="$mods_full_path/$mod_id";fi'."\n". ' installed_folder="$(basename "$installed_path")"'."\n". " install_time=\"\$(date '+%Y-%m-%d %H:%M:%S')\"\n". - ' printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n" "${mod_string[$i]}" "$mod_id" "${mod_name[$i]}" "$installed_folder" "$installed_path" "$workshop_id" "installed" "$install_time" "$install_time" > "${mods_info_home_path}${mod_id}.ogpmod"'."\n". - ' printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n" "${mod_string[$i]}" "$mod_id" "${mod_name[$i]}" "$installed_folder" "$installed_path" "$workshop_id" "installed" "$install_time" "$install_time" > "${mods_info_path}${mod_string[$i]}.ogpmod"'."\n". + ' printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n" "${mod_string[$i]}" "$mod_id" "${mod_name[$i]}" "$installed_folder" "$installed_path" "$workshop_id" "installed" "$install_time" "$install_time" > "${mods_info_home_path}${mod_id}.gspmod"'."\n". + ' printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n" "${mod_string[$i]}" "$mod_id" "${mod_name[$i]}" "$installed_folder" "$installed_path" "$workshop_id" "installed" "$install_time" "$install_time" > "${mods_info_path}${mod_string[$i]}.gspmod"'."\n". ' i=$(expr $i + 1)'."\n". 'done'."\n". 'write_workshop_status completed "Workshop install completed"'."\n". @@ -6678,7 +6672,7 @@ sub get_workshop_mods_info() my @mods_info; while(my $mod_info_file = readdir(MODS_INFO_DIR)) { - if($mod_info_file =~ /\.ogpmod$/) + if($mod_info_file =~ /\.gspmod$/) { my $mod_info_file_path = Path::Class::File->new($mods_info_dir_path, $mod_info_file); if(open(my $fh, '<:encoding(UTF-8)', $mod_info_file_path)) @@ -6687,7 +6681,7 @@ sub get_workshop_mods_info() chomp $row; if($row ne "") { - my ($string_name, $ext) = split(/\.ogp/, $mod_info_file); + my ($string_name, $ext) = split(/\.gsp/, $mod_info_file); if(index($row, "\t") >= 0) { push @mods_info, $row; diff --git a/gsp_agent_run b/gsp_agent_run index 936739c..b7015cb 100755 --- a/gsp_agent_run +++ b/gsp_agent_run @@ -3,7 +3,7 @@ set -euo pipefail AGENTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -AGENT="${AGENTDIR}/ogp_agent.pl" +AGENT="${AGENTDIR}/gsp_agent.pl" PID_FILE="" TIMEOUT=10 diff --git a/ogp_screenrc b/gsp_screenrc similarity index 100% rename from ogp_screenrc rename to gsp_screenrc diff --git a/ogp_screenrc_bk b/gsp_screenrc_bk similarity index 100% rename from ogp_screenrc_bk rename to gsp_screenrc_bk diff --git a/includes/ogp_agent.init b/includes/gsp_agent.init similarity index 84% rename from includes/ogp_agent.init rename to includes/gsp_agent.init index 4994d84..92bc645 100644 --- a/includes/ogp_agent.init +++ b/includes/gsp_agent.init @@ -2,14 +2,14 @@ # Generic Init script if we can't find what kind of Linux we're on -agent_dir=OGP_AGENT_DIR -agent_user=OGP_USER +agent_dir=GSP_AGENT_DIR +agent_user=GSP_USER # Start function. start() { echo "Starting GSP Agent..." cd $agent_dir - su -c "screen -d -m -t gsp_agent -c ogp_screenrc -S gsp_agent ./gsp_agent_run -pidfile gsp_agent_run.pid" $agent_user &> $agent_dir/gsp_agent.svc & + su -c "screen -d -m -t gsp_agent -c gsp_screenrc -S gsp_agent ./gsp_agent_run -pidfile gsp_agent_run.pid" $agent_user &> $agent_dir/gsp_agent.svc & echo } diff --git a/includes/ogp_agent.init.dbn b/includes/gsp_agent.init.dbn similarity index 94% rename from includes/ogp_agent.init.dbn rename to includes/gsp_agent.init.dbn index d9310a8..5654a5d 100644 --- a/includes/ogp_agent.init.dbn +++ b/includes/gsp_agent.init.dbn @@ -1,7 +1,7 @@ #!/bin/bash # ### BEGIN INIT INFO -# Provides: ogp_agent +# Provides: gsp_agent # Required-Start: $all # Required-Stop: $all # Should-Start: $all @@ -13,8 +13,8 @@ ### END INIT INFO # -agent_dir=OGP_AGENT_DIR -agent_user=OGP_USER +agent_dir=GSP_AGENT_DIR +agent_user=GSP_USER # # main() @@ -90,7 +90,7 @@ start() { fi cd $agent_dir - out=$(su -c "screen -d -m -t gsp_agent -c ogp_screenrc -S gsp_agent ./gsp_agent_run -pidfile gsp_agent_run.pid" $agent_user >/dev/null 2>&1) + out=$(su -c "screen -d -m -t gsp_agent -c gsp_screenrc -S gsp_agent ./gsp_agent_run -pidfile gsp_agent_run.pid" $agent_user >/dev/null 2>&1) return 0 } diff --git a/includes/ogp_agent.init.gentoo b/includes/gsp_agent.init.gentoo similarity index 83% rename from includes/ogp_agent.init.gentoo rename to includes/gsp_agent.init.gentoo index 64657fa..2991c11 100644 --- a/includes/ogp_agent.init.gentoo +++ b/includes/gsp_agent.init.gentoo @@ -4,8 +4,8 @@ # GF: Config is in $agent_dir/Cfg/Config.pm -agent_dir=OGP_AGENT_DIR -agent_user=OGP_USER +agent_dir=GSP_AGENT_DIR +agent_user=GSP_USER depend() { need net @@ -13,7 +13,7 @@ depend() { start() { ebegin "Starting GSP Agent" - start-stop-daemon --verbose --chdir $agent_dir --start --background --user $agent_user -e PWD="$agent_dir" --exec screen -d -m -t gsp_agent -c ogp_screenrc -S gsp_agent ./gsp_agent_run -pidfile gsp_agent_run.pid + start-stop-daemon --verbose --chdir $agent_dir --start --background --user $agent_user -e PWD="$agent_dir" --exec screen -d -m -t gsp_agent -c gsp_screenrc -S gsp_agent ./gsp_agent_run -pidfile gsp_agent_run.pid eend $? "Failed to start GSP Agent" } diff --git a/includes/ogp_agent.init.rh b/includes/gsp_agent.init.rh similarity index 97% rename from includes/ogp_agent.init.rh rename to includes/gsp_agent.init.rh index ec3e94f..d55b782 100644 --- a/includes/ogp_agent.init.rh +++ b/includes/gsp_agent.init.rh @@ -8,8 +8,8 @@ # chkconfig: 2345 88 10 # description: Startup/shutdown script for the GSP Agent -agent_dir=OGP_AGENT_DIR -agent_user=OGP_USER +agent_dir=GSP_AGENT_DIR +agent_user=GSP_USER service=gsp_agent # Source function library. @@ -100,7 +100,7 @@ start() { fi cd $agent_dir - su -c "screen -d -m -t gsp_agent -c ogp_screenrc -S gsp_agent ./gsp_agent_run -pidfile gsp_agent_run.pid" $agent_user &> $agent_dir/gsp_agent.svc & + su -c "screen -d -m -t gsp_agent -c gsp_screenrc -S gsp_agent ./gsp_agent_run -pidfile gsp_agent_run.pid" $agent_user &> $agent_dir/gsp_agent.svc & echo -n "started successfully." bold=`tput bold` normal=`tput sgr0` diff --git a/install.sh b/install.sh index 5d58f3f..9df4f89 100755 --- a/install.sh +++ b/install.sh @@ -167,7 +167,7 @@ mkdir -p \ touch "${INSTALL_DIR}/_gsp_content/runtime/server_content.pids" -chmod +x "${INSTALL_DIR}/gsp_agent_run" "${INSTALL_DIR}/ogp_agent_run" "${INSTALL_DIR}/agent_conf.sh" "${INSTALL_DIR}/install_agent_prereqs.sh" 2>/dev/null || true +chmod +x "${INSTALL_DIR}/gsp_agent_run" "${INSTALL_DIR}/agent_conf.sh" "${INSTALL_DIR}/install_agent_prereqs.sh" 2>/dev/null || true chown -R "${AGENT_USER}:${AGENT_USER}" "$INSTALL_DIR" echo diff --git a/ogp_agent_run b/ogp_agent_run deleted file mode 100755 index fecb8f8..0000000 --- a/ogp_agent_run +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -echo "ogp_agent_run is a legacy compatibility wrapper. Use gsp_agent_run for new GSP installs." >&2 -exec "${SCRIPT_DIR}/gsp_agent_run" "$@" diff --git a/startups/173.208.236.122-5400 b/startups/173.208.236.122-5400 index 85d9fac..3b143de 100644 --- a/startups/173.208.236.122-5400 +++ b/startups/173.208.236.122-5400 @@ -1 +1 @@ -1518,/home/gameserver/1518,srcds_run,,-game cstrike -pidfile ../ogp_game_startup.pid +map cs_assault +ip 173.208.236.122 -port 5400 +maxplayers 64 -condebug -nohltv -tickrate "64",5400,173.208.236.122,NA,0,,,css_linux32,console.loggameserver@gs-kansascity-01 \ No newline at end of file +1518,/home/gameserver/1518,srcds_run,,-game cstrike -pidfile ../gsp_game_startup.pid +map cs_assault +ip 173.208.236.122 -port 5400 +maxplayers 64 -condebug -nohltv -tickrate "64",5400,173.208.236.122,NA,0,,,css_linux32,console.loggameserver@gs-kansascity-01 \ No newline at end of file diff --git a/systemd/ogp_agent.service b/systemd/ogp_agent.service deleted file mode 100644 index 5f8761f..0000000 --- a/systemd/ogp_agent.service +++ /dev/null @@ -1,18 +0,0 @@ -# Legacy compatibility unit. New installs should use gsp_agent.service. - -[Unit] -Description=GameServer Panel Linux Agent legacy service alias -After=network-online.target -Wants=network-online.target - -[Service] -Type=simple -User={GSP_AGENT_USER} -Group={GSP_AGENT_USER} -WorkingDirectory={GSP_AGENT_PATH} -ExecStart={GSP_AGENT_PATH}/gsp_agent_run -pidfile {GSP_AGENT_PATH}/gsp_agent_run.pid -Restart=on-failure -RestartSec=10 - -[Install] -WantedBy=multi-user.target