OwN-3m-All 1 year ago
parent
commit
fde993301c

+ 5 - 1
README.md

@@ -1 +1,5 @@
-# OGP-Install-Easily-Guide-Source
+# OGP-Install-Easily-Guide-Source
+
+This repo contains the source for the install OGP easily guides.
+
+https://opengamepanel.org/install_guide/index.html

+ 257 - 0
web_src/agent.html

@@ -0,0 +1,257 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>Open Game Panel (OGP) :: Agent Install Guide</title>
+		<link type="text/css" rel="stylesheet" href="css/style.css"/>
+		<link type="text/css" rel="stylesheet" href="scripts/syntax/shCore.css"/>
+		<link type="text/css" rel="stylesheet" href="scripts/syntax/shThemeDefault.css"/>
+		<script type="text/javascript" src="scripts/jquery.js"></script>
+		<script type="text/javascript" src="scripts/instructions.js"></script>
+		<script type="text/javascript" src="scripts/syntax/shCore.js"></script>
+		<script type="text/javascript" src="scripts/syntax/shBrushBash.js"></script>
+		<script type="text/javascript">
+			SyntaxHighlighter.config.space = " ";
+			SyntaxHighlighter.all();
+		</script>
+	</head>
+	<body>
+		<h2 class="mainTitle center">Open Game Panel (OGP) :: <span class="red">Agent Install Guide</span></h2>
+		<h5 class="center"><a href="panel.html">Click Here for the OGP Panel Install Guide</a></h5>
+		<p>Note:&nbsp; If you run into any issues with any of the commands presented to you in this guide (such as in the case where a package cannot be found), do NOT worry and please continue on to the next line or command.&nbsp; The installation will succeed even if some packages fail to install.&nbsp; This happens because package names change in different operating system versions and these instructions are grouped generically.</p>
+		<h3 class="subTitle smallMarg">Select Your Operating System:</h3>
+		<select class="osSelect">
+			<option value="centos">CentOS</option>
+			<option value="debian">Debian</option>
+			<option value="redhat">RedHat</option>
+			<option value="rocky">Rocky Linux</option>
+			<option value="ubuntu" selected>Ubuntu</option>
+			<option value="windows">Windows</option>			
+		</select>
+		
+		<h3 class="hideItem subTitle hide osVersion noHideOsVersion smallMarg">Select OS Version:</h3>
+		<select class="hideItem osVersionSelect osVersion hide noHideOsVersion">
+		
+		</select>
+		
+		<hr class="hideItem hide osVersionRemoveHide spacer" />
+		
+		<!-- Debian Extra -->
+		
+		<div class="hideItem hide debian8 debian9 debian10 debian11 debian12">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If sudo is not installed automatically on your installation of Debian, switch to the root user using the below command:</p>
+			
+			<pre class="brush: bash;">su -
+apt-get install sudo
+usermod -aG sudo "{REPLACE_WITH_YOUR_LINUX_USERNAME}"</pre>	
+			
+		</div>
+		
+		<div class="hideItem hide debian11 debian12">
+			<h4 class="selectedOSItem">Additional Requirements for <span class="osText"></span></h4>
+			<p>Unlike other Linux distros, Debian doesn't set the $PATH variable correctly for everyday users.&nbsp; Fix it by using the below script:</p>
+			<p>First, login as root:</p>
+			<pre class="custom">su</pre>
+			<p>Run the below commands as root:</p>
+
+			<pre class="brush: bash;">whiUsermod=$(which usermod)
+if [ -z "$whiUsermod" ]; then
+	mkdir -p /root/backup/etc
+	cp /etc/profile /root/backup/etc
+	sed -i 's#PATH=".*"#PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/usr/local/sbin"#g' /etc/profile
+	source /etc/profile
+fi</pre>
+
+			<p>Reboot for the changes to apply!</p>
+			<pre class="brush: bash;">shutdown -r now</pre>
+
+		</div>
+		
+		<!-- End Debian Extra -->
+		
+		<div class="hideItem hide debian8 debian9 debian10 debian11 debian12">
+			<h4 class="selectedOSItem">OGP Agent Packages for <span class="osText"></span></h4>
+
+			<p>Before we can install the deb package for the OGP Agent, we need to install some prerequisites by running the following commands:</p>
+			
+			<pre class="brush: bash;">sudo apt-get install libxml-parser-perl libpath-class-perl perl-modules screen rsync sudo e2fsprogs unzip subversion pure-ftpd libarchive-zip-perl libc6 libgcc1 git curl
+sudo apt-get install libc6-i386
+sudo apt-get install lib32gcc1
+sudo apt-get install lib32gcc-s1
+sudo apt-get install libhttp-daemon-perl
+sudo apt-get install libarchive-extract-perl</pre>
+		</div>
+		
+		<div class="hideItem hide ubuntu14 ubuntu16 ubuntu18 ubuntu20 ubuntu22">
+			<h4 class="selectedOSItem">OGP Agent Packages for <span class="osText"></span></h4>
+
+			<p>Before we can install the deb package for the OGP Agent, we need to install some prerequisites by running the following commands:</p>
+			
+			<pre class="brush: bash;">sudo apt-get update
+sudo apt-get upgrade
+sudo apt-get install libxml-parser-perl libpath-class-perl perl-modules screen rsync sudo e2fsprogs unzip subversion libarchive-extract-perl pure-ftpd libarchive-zip-perl libc6 libgcc1 git curl
+sudo apt-get install libc6-i386
+sudo apt-get install libgcc1:i386
+sudo apt-get install lib32gcc1
+sudo apt-get install lib32gcc-s1
+sudo apt-get install libhttp-daemon-perl</pre>
+		</div>
+
+		<div class="hideItem hide ubuntu14 ubuntu16 ubuntu18 ubuntu20 ubuntu22 debian8 debian9 debian10 debian11 debian12">
+			<p>
+				Now, we can download and install the OGP Agent DEB package:
+			</p>
+			<pre class="brush: bash;">wget -N "https://github.com/OpenGamePanel/Easy-Installers/raw/master/Linux/Debian-Ubuntu/ogp-agent-latest.deb" -O "ogp-agent-latest.deb"
+sudo dpkg -i "ogp-agent-latest.deb"</pre>
+
+		</div>
+
+
+		<div class="hideItem hide ubuntu14 ubuntu16 ubuntu18 ubuntu20 ubuntu22 debian8 debian9 debian10 debian11 debian12">
+			<p>The OGP agent user (with sudo access) will be created automatically for you by the installer with a random password. To view the automatically generated encryption key, OGP username, and OGP user password, run the following command:</p>
+			<pre class="brush: bash;">sudo cat /root/ogp_user_password</pre>
+			<p>You'll need the encryption key for the panel.</p>
+		</div>
+
+
+		<div class="hideItem hide rocky9 redhat9">
+			<h4 class="selectedOSItem">OGP Agent Packages for <span class="osText"></span></h4>
+			<p>Install the needed packages for the OGP agent by running the commands below:</p>
+			<pre class="brush: bash;">sudo yum -y update
+sudo dnf install epel-release
+sudo yum -y install epel-release wget subversion git
+sudo dnf config-manager --set-enabled crb
+sudo dnf --enablerepo=crb -y install perl-HTTP-Daemon
+sudo yum install -y perl-HTTP-Daemon perl-LWP-Protocol-http10 proftpd proftpd-utils perl-ExtUtils-MakeMaker glibc.i686 glibc libgcc_s.so.1 perl-IO-Compress-Bzip2
+sudo dnf -y install perl-CPAN
+sudo cpan Archive::Extract
+sudo yum -y install screen perl-Path-Class perl-XML-Parser</pre>
+
+		</div>
+		
+		<div class="hideItem hide centos8">
+			<h4 class="selectedOSItem">OGP Agent Packages for <span class="osText"></span></h4>
+			<p>Install the needed packages for the OGP agent by running the commands below:</p>
+			<pre class="brush: bash;">sudo yum -y update
+sudo dnf install epel-release
+sudo yum -y install epel-release wget subversion git
+sudo dnf config-manager --set-enabled powertools
+sudo dnf --enablerepo=powertools -y install perl-HTTP-Daemon
+sudo yum install -y perl-HTTP-Daemon perl-LWP-Protocol-http10 proftpd proftpd-utils perl-ExtUtils-MakeMaker glibc.i686 glibc libgcc_s.so.1 perl-IO-Compress-Bzip2
+sudo dnf -y install perl-CPAN
+sudo cpan Archive::Extract
+sudo yum -y install screen perl-Path-Class perl-XML-Parser</pre>
+
+		</div>
+		
+		<div class="hideItem hide centos7">
+			<h4 class="selectedOSItem">OGP Agent Packages for <span class="osText"></span></h4>
+			<p>Install the needed packages for the OGP agent by running the commands below:</p>
+			<pre class="brush: bash;">sudo yum -y update
+sudo yum -y install epel-release wget subversion git
+sudo yum install -y perl-HTTP-Daemon perl-LWP-Protocol-http10 proftpd proftpd-utils perl-ExtUtils-MakeMaker glibc.i686 glibc libgcc_s.so.1 perl-IO-Compress-Bzip2
+sudo yum install -y perl-Archive-Extract</pre>
+		</div>
+		
+		<div class="hideItem hide centos6">
+			<h4 class="selectedOSItem">OGP Agent Packages for <span class="osText"></span></h4>
+			<p>Install the needed packages for the OGP agent by running the commands below:</p>
+			<pre class="brush: bash;">sudo yum -y update
+sudo yum -y install epel-release wget subversion git
+sudo yum install -y perl-libwww-perl proftpd proftpd-utils perl-ExtUtils-MakeMaker glibc.i686 glibc libgcc_s.so.1 perl-IO-Compress-Bzip2
+sudo yum install -y perl-Archive-Extract</pre>
+		</div>
+		
+		<div class="hideItem hide centos6 centos7 centos8 rocky9 redhat9">
+		
+			<p>Now, we can download and install the OGP Agent RPM package:</p>
+
+			<pre class="brush: bash;">sudo yum -y install chkconfig
+wget -N "https://github.com/OpenGamePanel/Easy-Installers/raw/master/Linux/CentOS/ogp_agent_rpm-1.0.0-1.noarch.rpm" -O "ogp_agent.rpm"
+sudo yum install -y "ogp_agent.rpm"
+sudo service ogp_agent restart
+sudo chkconfig proftpd on
+sudo service ogp_agent restart</pre>
+
+			<p>The agent needs to be restarted twice since it will most likely update to using systemd.</p>
+		
+		</div>
+		
+		<div class="hideItem hide centos6">
+			<h4 class="selectedOSItem"><span class="osText"></span> ProFTPD Final Step</h4>
+
+			<p>To get ProFTPD working in CentOS 6 (only applies to version 6), run this command:</p>
+	
+			<pre class="brush: bash;">sudo sed -i "s/^LoadModule\( \)*mod_auth_file.c/#LoadModule mod_auth_file.c/g" "/etc/proftpd.conf"
+sudo service proftpd restart</pre>
+
+			<p>If you don't do this, FTP functionality in the panel may not work correctly on CentOS 6</p>
+			
+		</div>
+			
+			
+		<div class="hideItem hide centos6 centos7 centos8 rocky9 redhat9">
+			<h4 class="selectedOSItem"><span class="osText"></span> Final Information</h4>
+			
+			<p>To retrieve your automatically generated encryption key (needed by the panel), run this command:</p>
+
+			<pre class="brush: bash;">sudo cat /root/ogp_enc_key</pre>
+
+			<p>To retrieve the automatically generated OGP user password (with sudo access), run this command:</p>
+
+			<pre class="brush: bash;">sudo cat /root/ogp_user_sudo_pass</pre>
+
+			<p>The OGP username is ogp_agent</p>
+			
+		</div>
+		
+		<div class="hideItem hide win64">
+			<h4 class="selectedOSItem"><span class="osText"></span> FileZilla Instructions</h4>
+			
+			<p>If you want OGP to manage FTP accounts, you will need to download and install FileZilla Server. Install FileZilla Server to the default directory. Do this before installing the agent. Leave all of FileZilla's settings to their default values during installation or you may have problems!</p>
+
+			<p>DO NOT USE NEWER VERSIONS OF FileZilla Server. Only <a href="https://download.filezilla-project.org/server/FileZilla_Server-0_9_60_2.exe" target="_blank">version 0_9_60_2</a> [<a href="https://opengamepanel.org/files/FileZilla_Server-0_9_60_2.exe" target="_blank">Mirror</a>] is supported.
+
+			<p>Make sure to <span class="bold">run the installer as an administrator user</span>!&nbsp; You can do this by right-clicking on the executable and clicking on "Run as administrator".</p>
+			
+			<h4 class="selectedOSItem"><span class="osText"></span> Install Instructions</h4>
+			
+			<p>If you haven't done so already, <a href="images/create_admin_user_cyg_server.png" target="_blank">create an administrative user with the username of cyg_server</a> with a password that never expires and can't be changed.</p>
+
+			<p>To install, download and run the Windows x64 installer:</p>
+			
+			<h4 class="selectedOSItem"><a href="https://raw.githubusercontent.com/OpenGamePanel/Easy-Installers/master/Windows/OGP%20Agent%2064bit%20Setup.exe" target="_blank">Download Open Game Panel (OGP) Agent Setup for Windows 64-bit (x64)</a></h4>
+			
+			<p>Make sure to <span class="bold">run the installer as an administrator user</span>!&nbsp; You can do this by right-clicking on the executable and clicking on "Run as administrator".</p>			
+
+			<p>This package installs all of the Cygwin dependencies automatically. Simply execute the installer and follow the instructions.</p>
+
+			<p><span class="bold">DO NOT install</span> the OGP Agent or OGP Panel Cygwin files to <span class="bold">C:\Program Files\ or C:\Program Files (x86)</span> due to Windows permissions issues.</p>
+
+			<p><span class="bold">It is recommended</span> to use <span class="bold">the default of C:\OGP or C:\OGP64</span> depending on your OS for best results.</p>
+			
+		</div>
+		
+		<div class="hideItem hide win32">
+			<h4 class="selectedOSItem"><span class="osText"></span> Install Instructions</h4>
+			
+			<p>If you haven't done so already, <a href="images/create_admin_user_cyg_server.png" target="_blank">create an administrative user with the username of cyg_server</a> with a password that never expires and can't be changed.</p>
+
+			<p>To install, download and run the Windows x86 installer:</p>
+			
+			<h4 class="selectedOSItem"><a href="https://raw.githubusercontent.com/OpenGamePanel/Easy-Installers/master/Windows/OGP%20Agent%20Setup.exe" target="_blank">Download Open Game Panel (OGP) Agent Setup for Windows 32-bit (x86)</a></h4>
+			
+			<p>Make sure to <span class="bold">run the installer as an administrator user</span>!&nbsp; You can do this by right-clicking on the executable and clicking on "Run as administrator".</p>
+			
+			<p>This package installs all of the Cygwin dependencies automatically. Simply execute the installer and follow the instructions.</p>
+			
+			<p>FileZilla is not needed on x86 versions of Windows since the Cygwin FTP package works out of the box. FileZilla Server is only recommended for 64-bit versions of Windows paired along with the OGP Agent.</p>
+
+			<p><span class="bold">DO NOT install</span> the OGP Agent or OGP Panel Cygwin files to <span class="bold">C:\Program Files\ or C:\Program Files (x86)</span> due to Windows permissions issues.</p>
+
+			<p><span class="bold">It is recommended</span> to use <span class="bold">the default of C:\OGP or C:\OGP64</span> depending on your OS for best results.</p>
+			
+		</div>
+		
+	</body>
+</html>

+ 88 - 0
web_src/css/style.css

@@ -0,0 +1,88 @@
+html{
+	display: table;
+	height: 100%;
+	width: 100%;
+}
+			
+body{
+	margin: 0px;
+	display: table-cell;
+	height: 100%;
+	width: 100%;
+	vertical-align: top;
+	text-align: left;
+	padding: 1em;
+	
+	font-family: Helvetica, "Trebuchet MS", sans-serif;
+	font-size: 24px;
+}
+
+select{
+	font-family: Helvetica, "Trebuchet MS", sans-serif;
+	font-size: 24px;
+}
+
+.hide{display: none;}
+
+.selectedOSItem{
+		
+}
+
+h2{
+	font-size: 42px;
+}
+
+h3{
+	font-size: 36px;
+}
+
+h4 {
+	font-size: 30px;
+}
+
+.noMarg{
+	margin: 0px;
+}
+
+.smallMarg{
+	margin-top: 8px;
+	margin-bottom: 8px;
+}
+
+.center{
+	text-align: center;
+}
+
+.bold{
+	font-weight: bold;
+}
+
+.red{
+	color: red;
+}
+
+.green{
+	color: green;
+}
+
+pre.custom{
+	padding-left: 3em; 
+	background-color: silver;
+	display: inline-block;
+	padding-right: 3em;
+	margin-top: 0px;
+	margin-bottom: 0px;
+}
+
+.fifty{
+	width: 50%;
+}
+
+.inline-block{
+	display: inline-block;
+	vertical-align: top;
+}
+
+.purple{
+	color: purple;
+}

BIN
web_src/images/create_admin_user_cyg_server.png


+ 25 - 0
web_src/index.html

@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>Open Game Panel (OGP) :: Install Guide</title>
+		<link type="text/css" rel="stylesheet" href="css/style.css"/>
+		<link type="text/css" rel="stylesheet" href="scripts/syntax/shCore.css"/>
+		<link type="text/css" rel="stylesheet" href="scripts/syntax/shThemeDefault.css"/>
+		<script type="text/javascript" src="scripts/jquery.js"></script>
+		<script type="text/javascript" src="scripts/instructions.js"></script>
+		<script type="text/javascript" src="scripts/syntax/shCore.js"></script>
+		<script type="text/javascript" src="scripts/syntax/shBrushBash.js"></script>
+		<script type="text/javascript">
+			SyntaxHighlighter.config.space = " ";
+			SyntaxHighlighter.all();
+		</script>
+	</head>
+	<body>
+		<h2 class="mainTitle center">Open Game Panel (OGP) :: <span class="purple">Install Guide</span></h2>
+		<div class="fifty inline-block center">
+			<h3><a href="agent.html" class="red">Agent Installation Guide</a></h3>
+		</div><div class="fifty inline-block center">
+			<h3><a href="panel.html" class="green">Panel Installation Guide</a></h3>
+		</div>
+	</body>
+</html>

+ 369 - 0
web_src/panel.html

@@ -0,0 +1,369 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>Open Game Panel (OGP) :: Panel Install Guide</title>
+		<link type="text/css" rel="stylesheet" href="css/style.css"/>
+		<link type="text/css" rel="stylesheet" href="scripts/syntax/shCore.css"/>
+		<link type="text/css" rel="stylesheet" href="scripts/syntax/shThemeDefault.css"/>
+		<script type="text/javascript" src="scripts/jquery.js"></script>
+		<script type="text/javascript" src="scripts/instructions.js"></script>
+		<script type="text/javascript" src="scripts/syntax/shCore.js"></script>
+		<script type="text/javascript" src="scripts/syntax/shBrushBash.js"></script>
+		<script type="text/javascript">
+			SyntaxHighlighter.config.space = " ";
+			SyntaxHighlighter.all();
+		</script>
+	</head>
+	<body>
+		<h2 class="mainTitle center">Open Game Panel (OGP) :: <span class="green">Panel Install Guide</span></h2>
+		<h5 class="center"><a href="agent.html">Click Here for the OGP Agent Install Guide</a></h5>
+		<p>Note:&nbsp; If you run into any issues with any of the commands presented to you in this guide (such as in the case where a package cannot be found), do NOT worry and please continue on to the next line or command.&nbsp; The installation will succeed even if some packages fail to install.&nbsp; This happens because package names change in different operating system versions and these instructions are grouped generically.</p>
+		<h3 class="subTitle smallMarg">Select Your Operating System:</h3>
+		<select class="osSelect">
+			<option value="centos">CentOS</option>
+			<option value="debian">Debian</option>
+			<option value="redhat">RedHat</option>
+			<option value="rocky">Rocky Linux</option>
+			<option value="ubuntu" selected>Ubuntu</option>
+			<option value="windows">Windows</option>			
+		</select>
+		
+		<h3 class="hideItem subTitle hide osVersion noHideOsVersion smallMarg">Select OS Version:</h3>
+		<select class="hideItem osVersionSelect osVersion hide noHideOsVersion">
+		
+		</select>
+		
+		<hr class="hideItem hide osVersionRemoveHide spacer" />
+		
+		<div class="hideItem hide ubuntu14">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Ubuntu 14.04 or lower, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php5 php5-gd php5-xmlrpc php5-curl php5-mysql php-pear mysql-server libapache2-mod-php5 git</pre>
+		</div>
+		
+		<div class="hideItem hide ubuntu16">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Ubuntu 16.04, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php7.0 php7.0-gd php7.0-zip libapache2-mod-php7.0 php7.0-curl php7.0-mysql php7.0-xmlrpc php-pear mysql-server php7.0-mbstring php-gettext git php-bcmath</pre>
+		</div>
+		
+		<div class="hideItem hide ubuntu18">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Ubuntu 18.04, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php7.2 php7.2-gd php7.2-zip libapache2-mod-php7.2 php7.2-curl php7.2-mysql php7.2-xmlrpc php-pear mysql-server php7.2-mbstring php-gettext git php-bcmath</pre>
+		</div>
+		
+		<div class="hideItem hide ubuntu20">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Ubuntu 20.04, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php7.4 php7.4-gd php7.4-zip libapache2-mod-php7.4 php7.4-curl php7.4-mysql php7.4-xmlrpc php-pear mariadb-server-10.3 php7.4-mbstring git php-bcmath</pre>
+			<p>After installing mariadb-server-10.3, run this command to get MySQL to bind on all addresses:</p>
+			<pre class="brush: bash;">sudo sed -i "s/^bind-address.*/bind-address=0.0.0.0/g" "/etc/mysql/mariadb.conf.d/50-server.cnf"</pre>
+		</div>
+		
+		<div class="hideItem hide ubuntu22">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Ubuntu 22.04, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php8.1 php8.1-gd php8.1-zip libapache2-mod-php8.1 php8.1-curl php8.1-mysql php8.1-xmlrpc php-pear mariadb-server-10.6 php8.1-mbstring git php-bcmath</pre>
+			<p>After installing mariadb-server-10.6, run this command to get MySQL to bind on all addresses:</p>
+			<pre class="brush: bash;">sudo sed -i "s/^bind-address.*/bind-address=0.0.0.0/g" "/etc/mysql/mariadb.conf.d/50-server.cnf"</pre>
+		</div>
+		
+		<!-- Debian Extra -->
+		
+		<div class="hideItem hide debian8 debian9 debian10 debian11 debian12">
+			<h4 class="selectedOSItem">Sudo Requirements for <span class="osText"></span></h4>
+			<p>If sudo is not installed automatically on your installation of Debian, switch to the root user using the below command:</p>
+			
+			<pre class="brush: bash;">su -
+apt-get install sudo
+usermod -aG sudo "{REPLACE_WITH_YOUR_LINUX_USERNAME}"</pre>	
+			
+		</div>
+		
+		<div class="hideItem hide debian11 debian12">
+			<h4 class="selectedOSItem">Additional Requirements for <span class="osText"></span></h4>
+			<p>Unlike other Linux distros, Debian doesn't set the $PATH variable correctly for everyday users.&nbsp; Fix it by using the below script:</p>
+			<p>First, login as root:</p>
+			<pre class="custom">su</pre>
+			<p>Run the below commands as root:</p>
+
+			<pre class="brush: bash;">whiUsermod=$(which usermod)
+if [ -z "$whiUsermod" ]; then
+	mkdir -p /root/backup/etc
+	cp /etc/profile /root/backup/etc
+	sed -i 's#PATH=".*"#PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/usr/local/sbin"#g' /etc/profile
+	source /etc/profile
+fi</pre>
+
+			<p>Reboot for the changes to apply!</p>
+			<pre class="brush: bash;">shutdown -r now</pre>
+
+		</div>
+		
+		<div class="hideItem hide debian10">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Debian 10, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php7.3 php7.3-gd php7.3-zip libapache2-mod-php7.3 php7.3-curl php7.3-mysql php7.3-xmlrpc php-pear mariadb-server php7.3-mbstring php-gettext git php-bcmath</pre>
+		</div>
+		
+		<div class="hideItem hide debian9">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Debian 9, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php7.0 php7.0-gd php7.0-zip libapache2-mod-php7.0 php7.0-curl php7.0-mysql php7.0-xmlrpc php-pear mysql-server php7.0-mbstring php-gettext git php-bcmath</pre>
+		</div>
+		
+		<div class="hideItem hide debian8">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Debian 8, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php5 php5-gd php5-xmlrpc php5-curl php5-mysql php-pear mysql-server libapache2-mod-php5 git</pre>
+		</div>
+		
+		<div class="hideItem hide debian12">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Debian 12, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php8.2 php8.2-gd php8.2-zip libapache2-mod-php8.2 php8.2-curl php8.2-mysql php8.2-xmlrpc php-pear mariadb-server php8.2-mbstring git php-bcmath</pre>
+			<p>After installing mariadb-server, run this command to get MySQL to bind on all addresses:</p>
+			<pre class="brush: bash;">sudo sed -i "s/^bind-address.*/bind-address=0.0.0.0/g" "/etc/mysql/mariadb.conf.d/50-server.cnf"</pre>
+		</div>
+		
+		<div class="hideItem hide debian11">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>If you are running Debian 11, run the following commands in a terminal:</p>
+			<pre class="brush: bash;">sudo apt-get install apache2 curl subversion php7.4 php7.4-gd php7.4-zip libapache2-mod-php7.4 php7.4-curl php7.4-mysql php7.4-xmlrpc php-pear mariadb-server php7.4-mbstring git php-bcmath</pre>
+			<p>After installing mariadb-server, run this command to get MySQL to bind on all addresses:</p>
+			<pre class="brush: bash;">sudo sed -i "s/^bind-address.*/bind-address=0.0.0.0/g" "/etc/mysql/mariadb.conf.d/50-server.cnf"</pre>
+		</div>
+		
+		<div class="hideItem hide ubuntu14 ubuntu16 ubuntu18 ubuntu20 ubuntu22 debian8 debian9 debian10 debian11 debian12">
+			<h4 class="selectedOSItem">Configuring the Database for <span class="osText"></span></h4>
+			<p>After installing the prereqs, make sure the root MySQL account has been setup by running this command (may not apply to older versions of Debian / Ubuntu):</p>
+			<pre class="brush: bash;">sudo mysql_secure_installation</pre>
+			<p>When installing MySQL / MariaDB, make sure you answer the following questions like this:</p>
+
+			<pre class="brush: bash;">Switch to unix_socket authentication [Y/n] n (no, don't do this)
+Change the root password? [Y/n] y (yes, do this, and write down the password you use)</pre>
+
+			<p>During this process, you will be prompted to set a root user password. Please choose something secure and write it down, as the installer will ask you for it to create the initial OGP database later.</p>
+			<p>Be sure to write down the root password you used somewhere, as it will be used in the next step!</p>
+			
+			<p>After installing and setting the root password for MySQL / MariaDB server, you can install the phpmyadmin package and configure it (optional):</p>
+			
+			<pre class="brush: bash;">sudo apt-get install phpmyadmin</pre>
+		</div>
+		
+		<div class="hideItem hide ubuntu14 ubuntu16 ubuntu18 ubuntu20 ubuntu22 debian8 debian9 debian10 debian11 debian12">
+			<h4 class="selectedOSItem">Installing the Panel Package for <span class="osText"></span></h4>
+			<p>Now, we can download and install the latest OGP Web Panel DEB package:</p>
+
+			<pre class="brush: bash;">wget -N "https://github.com/OpenGamePanel/Easy-Installers/raw/master/Linux/Debian-Ubuntu/ogp-panel-latest.deb" -O "ogp-panel-latest.deb"
+sudo dpkg -i "ogp-panel-latest.deb"</pre>
+
+			<p>Once this is done, open the browser and go to http://{IP_OF_SERVER_OR_localhost}/index.php</p>
+			<p>Try http://127.0.0.1/index.php if localhost doesn't work.</p>
+
+			<p>You will be prompted to complete the OGP Panel installation. When asked for database information, please use the following:</p>
+
+			<p>MySQL Host = "localhost"<br />
+				MySQL User = "ogpuser"<br />
+				MySQL Database Name = "ogp_panel"</p>
+				
+			<p>
+				You'll also need your database password which can be found by running the following command:
+			</p>
+
+			<pre class="brush: bash;">sudo cat /root/ogp_panel_mysql_info</pre>
+
+			<p>The password is what follows after "OGPDBPass=" as illustrated below:</p>
+
+			<pre class="brush: bash;">OGPDBPass=SampleDBPass</pre>
+
+			<p>Once you've completed the web panel installation, you need to add the server that will be running the game servers to the web panel software. You will need the IP address of the server running the agent (127.0.0.1 if on the same machine), and the encryption key for that machine which you can obtain by running the following command on that server:</p>
+
+			<pre class="brush: bash;">sudo cat /root/ogp_user_password</pre>
+
+			<p>The encryption key is what follows after "ogpEnc=" as illustrated below:</p>
+
+			<pre class="brush: bash;">ogpEnc=sampl13eKey</pre>
+
+			<p>Once the panel has been installed, please run the panel update functionality by logging in as the admin account created during installation.</p>
+
+			<p>Hover over the "Administration" tab, and then click on "Update Panel" in the drop-down. Then click on the "Update" button.</p>
+
+		</div>
+		
+		<div class="hideItem hide rocky9 redhat9 centos6 centos7 centos8">
+			<h4 class="selectedOSItem">Global Installation Notes for <span class="osText"></span></h4>
+			<p>When installing MySQL / MariaDB, make sure you answer the following questions like this:</p>
+
+			<pre class="brush: bash;">Switch to unix_socket authentication [Y/n] n (no, don't do this)
+Change the root password? [Y/n] y (yes, do this, and write down the password you use)</pre>
+
+			<p>During the MySQL installation, you will be prompted to set a root user password. Set a password for the root account, and write down the password you use, as you will need it later.</p>
+
+		</div>
+		
+		<div class="hideItem hide rocky9 redhat9">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>Run the following commands in a terminal to install the needed dependency packages:</p>
+			<pre class="brush: bash;">sudo yum -y update
+sudo dnf install epel-release
+sudo yum -y install epel-release wget subversion git
+sudo yum -y install mariadb-server
+sudo service mariadb restart
+sudo mysql_secure_installation
+sudo dnf config-manager --set-enabled crb
+sudo yum -y install php
+sudo yum -y install php-pear
+sudo yum -y install php-devel
+sudo yum -y install php-mysqlnd php-json php-zip php-bcmath</pre>
+		</div>
+		
+		<div class="hideItem hide centos8">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>Run the following commands in a terminal to install the needed dependency packages:</p>
+			<pre class="brush: bash;">sudo yum -y update
+sudo dnf install epel-release
+sudo yum -y install epel-release wget subversion git
+sudo yum -y install mariadb-server
+sudo service mariadb restart
+sudo mysql_secure_installation
+sudo dnf config-manager --set-enabled powertools
+sudo yum -y install php php-xmlrpc php-mysqlnd php-json php-zip php-bcmath</pre>
+		</div>
+		
+		<div class="hideItem hide centos7">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>Run the following commands in a terminal to install the needed dependency packages:</p>
+			<pre class="brush: bash;">sudo yum -y install epel-release wget subversion git
+sudo yum -y install mariadb-server
+sudo service mariadb restart
+sudo mysql_secure_installation
+sudo yum -y install php php-xmlrpc php-mysql phpMyAdmin</pre>
+		</div>
+		
+		<div class="hideItem hide centos6">
+			<h4 class="selectedOSItem">Prerequisites for <span class="osText"></span></h4>
+			<p>Run the following commands in a terminal to install the needed dependency packages:</p>
+			<pre class="brush: bash;">sudo yum -y install epel-release wget subversion git
+sudo yum -y install mysql-server
+sudo service mysqld restart
+sudo mysql_secure_installation
+sudo chkconfig mysqld on
+sudo yum -y install php php-xmlrpc php-mysql phpMyAdmin</pre>
+		</div>
+		
+		
+		<div class="hideItem hide rocky9 redhat9 centos6 centos7 centos8">
+			<h4 class="selectedOSItem">Installing the OGP Panel Package for <span class="osText"></span></h4>
+			<p>Now, we can download and install the OGP Web Panel RPM:</p>
+			<pre class="brush: bash;">wget -N "https://github.com/OpenGamePanel/Easy-Installers/raw/master/Linux/CentOS/ogp_panel_rpm-1.0.0-1.noarch.rpm" -O "ogp_panel.rpm"
+sudo yum -y install "ogp_panel.rpm"</pre>
+
+			<p>Patience. It may take between 5 and 10 minutes before this step completes!</p>
+
+			<p>Run the following bash script to create a database, user, and password for the OGP web panel software:</p>
+
+			<pre class="brush: bash;">sudo bash /var/www/html/create_db.sh</pre>
+
+			<p>After running the script, restart your server! This is very important. If you do NOT restart, you will have problems completing the web installation.</p>
+			
+			<pre class="brush: bash;">sudo shutdown -r now</pre>
+
+			<p>Once the server has been restarted, open a browser such as Firefox. Go to http://localhost or access it remotely by using your server's IP address http://{IP}/.</p>
+			
+			<p>Try http://127.0.0.1 if localhost doesn't work.</p>
+
+			<p>You will be prompted to complete the installation. When asked for the database information, use the following:</p>
+
+			<p>
+MySQL Host = "localhost"<br />
+MySQL User = "ogpuser"<br />
+MySQL Database Name = "ogp_panel"
+</p>
+			<p>You'll need the database password which you can obtain by running this command:</p>
+
+			<pre class="brush: bash;">sudo cat /root/ogp_panel_mysql_info</pre>
+
+			<p>Once you've completed the web panel installation, you need to add the server that will be running the game servers to the web panel software. You will need the IP address of the server running the agent (127.0.0.1 if on the same machine), and the encryption key for that machine which you can obtain by running the following command on that server:</p>
+
+			<p>Get your OGP Encryption Key:</p>
+
+			<pre class="brush: bash;">sudo cat /root/ogp_enc_key</pre>
+
+		</div>
+		
+		<div class="hideItem hide centos6">
+			<h4 class="selectedOSItem"><span class="osText"></span> iptables Firewall Issues</h4>
+			<p>If the OGP Panel Setup webpage won't load, try adjusting your iptables rules.</p>
+
+			<p>For some reason, CentOS 6 sets its default firewall policy to reject. To make your life easier, you might want to remove the reject rule by running the following (applies to CentOS 6 ONLY):</p>
+
+			<pre class="brush: bash;">sudo iptables -D INPUT 5
+sudo service iptables save
+sudo service iptables restart</pre>
+
+			<p>Or, if you want to keep the default policy, at the minimum, you may want to run this (adjust eth0 if necessary for your system):</p>
+			
+			<pre class="brush: bash;">sudo iptables -I INPUT 5 -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
+sudo iptables -I INPUT 5 -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
+sudo service iptables save
+sudo service iptables restart</pre>
+
+		</div>
+		
+		<div class="hideItem hide win64">
+			
+			<h4 class="selectedOSItem"><span class="osText"></span> Install Instructions</h4>
+			
+			<p>If you haven't done so already, <a href="images/create_admin_user_cyg_server.png" target="_blank">create an administrative user with the username of cyg_server</a> with a password that never expires and can't be changed.</p>
+
+			<p>To install, download and run the Windows x64 installer:</p>
+			
+			<h4 class="selectedOSItem"><a href="https://raw.githubusercontent.com/OpenGamePanel/Easy-Installers/master/Windows/OGP%20Panel%2064bit%20Setup.exe" target="_blank">Download Open Game Panel (OGP) Panel Setup for Windows 64-bit (x64)</a></h4>
+			
+			<p>Make sure to <span class="bold">run the installer as an administrator user</span>!&nbsp; You can do this by right-clicking on the executable and clicking on "Run as administrator".</p>
+			
+			<p>This package installs all of the Cygwin dependencies automatically. Simply execute the installer and follow the instructions.</p>
+			
+			<p>After the server has been rebooted, browse to http://localhost/ or http://127.0.0.1 to install and configure the web panel.&nbsp; Use the following values for the various configuration fields<br /><br />
+
+Database Hostname: localhost<br />
+Database Username: root<br />
+Database Name: ogp_panel<br />
+Database Password: The root MySQL user password you created during installation.</p>
+
+			<p><span class="bold">DO NOT install</span> the OGP Agent or OGP Panel Cygwin files to <span class="bold">C:\Program Files\ or C:\Program Files (x86)</span> due to Windows permissions issues.</p>
+
+			<p><span class="bold">It is recommended</span> to use <span class="bold">the default of C:\OGP or C:\OGP64</span> depending on your OS for best results.</p>
+			
+		</div>
+		
+		<div class="hideItem hide win32">
+			<h4 class="selectedOSItem"><span class="osText"></span> Install Instructions</h4>
+			
+			<p>If you haven't done so already, <a href="images/create_admin_user_cyg_server.png" target="_blank">create an administrative user with the username of cyg_server</a> with a password that never expires and can't be changed.</p>
+
+			<p>To install, download and run the Windows x86 installer:</p>
+			
+			<h4 class="selectedOSItem"><a href="https://raw.githubusercontent.com/OpenGamePanel/Easy-Installers/master/Windows/OGP%20Panel%20Setup.exe" target="_blank">Download Open Game Panel (OGP) Panel Setup for Windows 32-bit (x86)</a></h4>
+			
+			<p>Make sure to <span class="bold">run the installer as an administrator user</span>!&nbsp; You can do this by right-clicking on the executable and clicking on "Run as administrator".</p>
+			
+			<p>This package installs all of the Cygwin dependencies automatically. Simply execute the installer and follow the instructions.</p>
+			
+			<p>After the server has been rebooted, browse to http://localhost/ or http://127.0.0.1 to install and configure the web panel.&nbsp; Use the following values for the various configuration fields<br /><br />
+
+Database Hostname: localhost<br />
+Database Username: root<br />
+Database Name: ogp_panel<br />
+Database Password: The root MySQL user password you created during installation.</p>
+
+			<p><span class="bold">DO NOT install</span> the OGP Agent or OGP Panel Cygwin files to <span class="bold">C:\Program Files\ or C:\Program Files (x86)</span> due to Windows permissions issues.</p>
+
+			<p><span class="bold">It is recommended</span> to use <span class="bold">the default of C:\OGP or C:\OGP64</span> depending on your OS for best results.</p>
+			
+		</div>
+		
+	</body>
+</html>

+ 94 - 0
web_src/scripts/instructions.js

@@ -0,0 +1,94 @@
+$(document).ready(function(e){
+	bind();
+	checkLocalStorage();
+	$('.osSelect').trigger('change');
+	checkLocalStorageArch();
+	getUrlParams();
+});
+
+function bind(){
+	$('.osSelect').change(function(e){
+		localStorage.setItem('prevOs', $(this).val());
+		
+		var selected = $(this).val();
+		$('.hideItem').removeClass('hide').addClass('hide');
+		
+		$('.osVersionSelect').html('');
+		
+		if(selected == "ubuntu"){
+			$('.osVersionSelect').html('').html('<option value="">&nbsp; &nbsp; &nbsp; &nbsp; </option><option value="ubuntu14">14.04</option><option value="ubuntu16">16.04</option><option value="ubuntu18">18.04</option><option value="ubuntu20">20.04</option><option value="ubuntu22">22.04</option>');
+		}else if(selected == "debian"){
+			$('.osVersionSelect').html('').html('<option value="">&nbsp; &nbsp; &nbsp; &nbsp; </option><option value="debian8">8</option><option value="debian9">9</option><option value="debian10">10</option><option value="debian11">11</option><option value="debian12">12</option>');
+		}else if(selected == "rocky"){
+			$('.osVersionSelect').html('').html('<option value="">&nbsp; &nbsp; &nbsp; &nbsp; </option><option value="rocky9">9</option>');
+		}else if(selected == "redhat"){
+			$('.osVersionSelect').html('').html('<option value="">&nbsp; &nbsp; &nbsp; &nbsp; </option><option value="redhat9">9</option>');
+		}else if(selected == "centos"){
+			$('.osVersionSelect').html('').html('<option value="">&nbsp; &nbsp; &nbsp; &nbsp; </option><option value="centos6">6</option><option value="centos7">7</option><option value="centos8">8</option>');
+		}else if(selected == "windows"){
+			$('.osVersionSelect').html('').html('<option value="">&nbsp; &nbsp; &nbsp; &nbsp; </option><option value="win64">64-Bit (x64)</option><option value="win32">32-Bit (x86)</option>');
+		}
+		
+		$('.noHideOsVersion').removeClass('hide');
+	
+	});
+	
+	$('.osVersionSelect').change(function(e){
+		localStorage.setItem('prevArch', $(this).val());
+		
+		var selected = $(this).val();
+		$('.hideItem').not('.noHideOsVersion').removeClass('hide').addClass('hide');
+		if(selected){
+			$('.osVersionRemoveHide').removeClass('hide');
+			$('.' + selected).removeClass('hide');
+			$('.selectedOSItem .osText').text($('.osSelect option:selected').text() + " " + $('.osVersionSelect option:selected').text());
+		}
+	});
+}
+
+$.urlParam = function(name){
+    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
+    if (results==null){
+       return null;
+    }
+    else{
+       return decodeURI(results[1]) || 0;
+    }
+};
+
+function getUrlParams(){
+	var showall = $.urlParam('all');
+	if(showall){
+		$('.hideItem').removeClass('hide');
+	}else{
+		var os = $.urlParam('os');
+		if(os){
+			$('.osSelect').val(os);
+		}
+		$('.osSelect').trigger('change');
+		checkLocalStorageArch();
+	}
+}
+
+function checkLocalStorage(){
+	var prevOS = localStorage.getItem('prevOs');
+	
+	if(prevOS){
+		$('.osSelect').val(prevOS).trigger('change');
+		checkLocalStorageArch();
+	}else{
+		if(!$('.osSelect').val()){
+			$('.osSelect').val('ubuntu').trigger('change');
+			checkLocalStorageArch();
+		}
+	}
+	
+	
+}
+
+function checkLocalStorageArch(){
+	var prevArch = localStorage.getItem('prevArch');
+	if(prevArch){
+		$('.osVersionSelect').val(prevArch).trigger('change');
+	}
+}

File diff suppressed because it is too large
+ 1 - 0
web_src/scripts/jquery.js


+ 59 - 0
web_src/scripts/syntax/shBrushBash.js

@@ -0,0 +1,59 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+	// CommonJS
+	typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+	function Brush()
+	{
+		var keywords =	'if fi then elif else for do done until while break continue case function return in eq ne ge le';
+		var commands =  'alias apropos awk basename bash bc bg builtin bzip2 cal cat cd cfdisk chgrp chmod chown chroot' +
+						'cksum clear cmp comm command cp cron crontab csplit cut date dc dd ddrescue declare df ' +
+						'diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval ' +
+						'exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format ' +
+						'free fsck ftp gawk getopts grep groups gzip hash head history hostname id ifconfig ' +
+						'import install join kill less let ln local locate logname logout look lpc lpr lprint ' +
+						'lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools ' +
+						'mv netstat nice nl nohup nslookup open op passwd paste pathchk ping popd pr printcap ' +
+						'printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice ' +
+						'remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown ' +
+						'sleep sort source split ssh strace su sudo sum symlink sync tail tar tee test time ' +
+						'times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias ' +
+						'uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir ' +
+						'vi watch wc whereis which who whoami Wget xargs yes'
+						;
+
+		this.regexList = [
+			{ regex: /^#!.*$/gm,											css: 'preprocessor bold' },
+			{ regex: /\/[\w-\/]+/gm,										css: 'plain' },
+			{ regex: SyntaxHighlighter.regexLib.singleLinePerlComments,		css: 'comments' },		// one line comments
+			{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,			css: 'string' },		// double quoted strings
+			{ regex: SyntaxHighlighter.regexLib.singleQuotedString,			css: 'string' },		// single quoted strings
+			{ regex: new RegExp(this.getKeywords(keywords), 'gm'),			css: 'keyword' },		// keywords
+			{ regex: new RegExp(this.getKeywords(commands), 'gm'),			css: 'functions' }		// commands
+			];
+	}
+
+	Brush.prototype	= new SyntaxHighlighter.Highlighter();
+	Brush.aliases	= ['bash', 'shell'];
+
+	SyntaxHighlighter.brushes.Bash = Brush;
+
+	// CommonJS
+	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();

+ 65 - 0
web_src/scripts/syntax/shBrushCSharp.js

@@ -0,0 +1,65 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+	// CommonJS
+	typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+	function Brush()
+	{
+		var keywords =	'abstract as base bool break byte case catch char checked class const ' +
+						'continue decimal default delegate do double else enum event explicit ' +
+						'extern false finally fixed float for foreach get goto if implicit in int ' +
+						'interface internal is lock long namespace new null object operator out ' +
+						'override params private protected public readonly ref return sbyte sealed set ' +
+						'short sizeof stackalloc static string struct switch this throw true try ' +
+						'typeof uint ulong unchecked unsafe ushort using virtual void while';
+
+		function fixComments(match, regexInfo)
+		{
+			var css = (match[0].indexOf("///") == 0)
+				? 'color1'
+				: 'comments'
+				;
+			
+			return [new SyntaxHighlighter.Match(match[0], match.index, css)];
+		}
+
+		this.regexList = [
+			{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	func : fixComments },		// one line comments
+			{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },			// multiline comments
+			{ regex: /@"(?:[^"]|"")*"/g,								css: 'string' },			// @-quoted strings
+			{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },			// strings
+			{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },			// strings
+			{ regex: /^\s*#.*/gm,										css: 'preprocessor' },		// preprocessor tags like #region and #endregion
+			{ regex: new RegExp(this.getKeywords(keywords), 'gm'),		css: 'keyword' },			// c# keyword
+			{ regex: /\bpartial(?=\s+(?:class|interface|struct)\b)/g,	css: 'keyword' },			// contextual keyword: 'partial'
+			{ regex: /\byield(?=\s+(?:return|break)\b)/g,				css: 'keyword' }			// contextual keyword: 'yield'
+			];
+		
+		this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+	};
+
+	Brush.prototype	= new SyntaxHighlighter.Highlighter();
+	Brush.aliases	= ['c#', 'c-sharp', 'csharp'];
+
+	SyntaxHighlighter.brushes.CSharp = Brush;
+
+	// CommonJS
+	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+

+ 91 - 0
web_src/scripts/syntax/shBrushCss.js

@@ -0,0 +1,91 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+	// CommonJS
+	typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+	function Brush()
+	{
+		function getKeywordsCSS(str)
+		{
+			return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
+		};
+	
+		function getValuesCSS(str)
+		{
+			return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
+		};
+
+		var keywords =	'ascent azimuth background-attachment background-color background-image background-position ' +
+						'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
+						'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
+						'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
+						'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
+						'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
+						'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
+						'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
+						'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
+						'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
+						'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
+						'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
+						'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
+						'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
+
+		var values =	'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
+						'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
+						'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+
+						'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
+						'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
+						'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
+						'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
+						'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
+						'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
+						'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
+						'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
+						'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
+						'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
+						'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
+
+		var fonts =		'[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
+	
+		this.regexList = [
+			{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },	// multiline comments
+			{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },	// double quoted strings
+			{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },	// single quoted strings
+			{ regex: /\#[a-fA-F0-9]{3,6}/g,								css: 'value' },		// html colors
+			{ regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g,				css: 'value' },		// sizes
+			{ regex: /!important/g,										css: 'color3' },	// !important
+			{ regex: new RegExp(getKeywordsCSS(keywords), 'gm'),		css: 'keyword' },	// keywords
+			{ regex: new RegExp(getValuesCSS(values), 'g'),				css: 'value' },		// values
+			{ regex: new RegExp(this.getKeywords(fonts), 'g'),			css: 'color1' }		// fonts
+			];
+
+		this.forHtmlScript({ 
+			left: /(&lt;|<)\s*style.*?(&gt;|>)/gi, 
+			right: /(&lt;|<)\/\s*style\s*(&gt;|>)/gi 
+			});
+	};
+
+	Brush.prototype	= new SyntaxHighlighter.Highlighter();
+	Brush.aliases	= ['css'];
+
+	SyntaxHighlighter.brushes.CSS = Brush;
+
+	// CommonJS
+	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();

+ 52 - 0
web_src/scripts/syntax/shBrushJScript.js

@@ -0,0 +1,52 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+	// CommonJS
+	typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+	function Brush()
+	{
+		var keywords =	'break case catch continue ' +
+						'default delete do else false  ' +
+						'for function if in instanceof ' +
+						'new null return super switch ' +
+						'this throw true try typeof var while with'
+						;
+
+		var r = SyntaxHighlighter.regexLib;
+		
+		this.regexList = [
+			{ regex: r.multiLineDoubleQuotedString,					css: 'string' },			// double quoted strings
+			{ regex: r.multiLineSingleQuotedString,					css: 'string' },			// single quoted strings
+			{ regex: r.singleLineCComments,							css: 'comments' },			// one line comments
+			{ regex: r.multiLineCComments,							css: 'comments' },			// multiline comments
+			{ regex: /\s*#.*/gm,									css: 'preprocessor' },		// preprocessor tags like #region and #endregion
+			{ regex: new RegExp(this.getKeywords(keywords), 'gm'),	css: 'keyword' }			// keywords
+			];
+	
+		this.forHtmlScript(r.scriptScriptTags);
+	};
+
+	Brush.prototype	= new SyntaxHighlighter.Highlighter();
+	Brush.aliases	= ['js', 'jscript', 'javascript'];
+
+	SyntaxHighlighter.brushes.JScript = Brush;
+
+	// CommonJS
+	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();

+ 57 - 0
web_src/scripts/syntax/shBrushJava.js

@@ -0,0 +1,57 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+	// CommonJS
+	typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+	function Brush()
+	{
+		var keywords =	'abstract assert boolean break byte case catch char class const ' +
+						'continue default do double else enum extends ' +
+						'false final finally float for goto if implements import ' +
+						'instanceof int interface long native new null ' +
+						'package private protected public return ' +
+						'short static strictfp super switch synchronized this throw throws true ' +
+						'transient try void volatile while';
+
+		this.regexList = [
+			{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	css: 'comments' },		// one line comments
+			{ regex: /\/\*([^\*][\s\S]*)?\*\//gm,						css: 'comments' },	 	// multiline comments
+			{ regex: /\/\*(?!\*\/)\*[\s\S]*?\*\//gm,					css: 'preprocessor' },	// documentation comments
+			{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },		// strings
+			{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },		// strings
+			{ regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi,				css: 'value' },			// numbers
+			{ regex: /(?!\@interface\b)\@[\$\w]+\b/g,					css: 'color1' },		// annotation @anno
+			{ regex: /\@interface\b/g,									css: 'color2' },		// @interface keyword
+			{ regex: new RegExp(this.getKeywords(keywords), 'gm'),		css: 'keyword' }		// java keyword
+			];
+
+		this.forHtmlScript({
+			left	: /(&lt;|<)%[@!=]?/g, 
+			right	: /%(&gt;|>)/g 
+		});
+	};
+
+	Brush.prototype	= new SyntaxHighlighter.Highlighter();
+	Brush.aliases	= ['java'];
+
+	SyntaxHighlighter.brushes.Java = Brush;
+
+	// CommonJS
+	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();

+ 72 - 0
web_src/scripts/syntax/shBrushPerl.js

@@ -0,0 +1,72 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+	// CommonJS
+	typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+	function Brush()
+	{
+		// Contributed by David Simmons-Duffin and Marty Kube
+	
+		var funcs = 
+			'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' + 
+			'chroot close closedir connect cos crypt defined delete each endgrent ' + 
+			'endhostent endnetent endprotoent endpwent endservent eof exec exists ' + 
+			'exp fcntl fileno flock fork format formline getc getgrent getgrgid ' + 
+			'getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr ' + 
+			'getnetbyname getnetent getpeername getpgrp getppid getpriority ' + 
+			'getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid ' + 
+			'getservbyname getservbyport getservent getsockname getsockopt glob ' + 
+			'gmtime grep hex index int ioctl join keys kill lc lcfirst length link ' + 
+			'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' + 
+			'oct open opendir ord pack pipe pop pos print printf prototype push ' + 
+			'quotemeta rand read readdir readline readlink readpipe recv rename ' + 
+			'reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl ' + 
+			'semget semop send setgrent sethostent setnetent setpgrp setpriority ' + 
+			'setprotoent setpwent setservent setsockopt shift shmctl shmget shmread ' + 
+			'shmwrite shutdown sin sleep socket socketpair sort splice split sprintf ' + 
+			'sqrt srand stat study substr symlink syscall sysopen sysread sysseek ' + 
+			'system syswrite tell telldir time times tr truncate uc ucfirst umask ' + 
+			'undef unlink unpack unshift utime values vec wait waitpid warn write';
+    
+		var keywords =  
+			'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' +
+			'for foreach goto if import last local my next no our package redo ref ' + 
+			'require return sub tie tied unless untie until use wantarray while';
+    
+		this.regexList = [
+			{ regex: new RegExp('#[^!].*$', 'gm'),					css: 'comments' },
+			{ regex: new RegExp('^\\s*#!.*$', 'gm'),				css: 'preprocessor' }, // shebang
+			{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,	css: 'string' },
+			{ regex: SyntaxHighlighter.regexLib.singleQuotedString,	css: 'string' },
+			{ regex: new RegExp('(\\$|@|%)\\w+', 'g'),				css: 'variable' },
+			{ regex: new RegExp(this.getKeywords(funcs), 'gmi'),	css: 'functions' },
+			{ regex: new RegExp(this.getKeywords(keywords), 'gm'),	css: 'keyword' }
+		    ];
+
+		this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
+	}
+
+	Brush.prototype	= new SyntaxHighlighter.Highlighter();
+	Brush.aliases		= ['perl', 'Perl', 'pl'];
+
+	SyntaxHighlighter.brushes.Perl = Brush;
+
+	// CommonJS
+	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();

+ 88 - 0
web_src/scripts/syntax/shBrushPhp.js

@@ -0,0 +1,88 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+	// CommonJS
+	typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+	function Brush()
+	{
+		var funcs	=	'abs acos acosh addcslashes addslashes ' +
+						'array_change_key_case array_chunk array_combine array_count_values array_diff '+
+						'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
+						'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
+						'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
+						'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
+						'array_push array_rand array_reduce array_reverse array_search array_shift '+
+						'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
+						'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
+						'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
+						'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
+						'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
+						'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
+						'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
+						'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
+						'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
+						'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
+						'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
+						'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
+						'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
+						'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
+						'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
+						'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
+						'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
+						'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
+						'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
+						'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
+						'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
+						'parse_ini_file parse_str parse_url passthru pathinfo print readlink realpath rewind rewinddir rmdir '+
+						'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
+						'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
+						'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
+						'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
+						'strtoupper strtr strval substr substr_compare';
+
+		var keywords =	'abstract and array as break case catch cfunction class clone const continue declare default die do ' +
+						'else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach ' +
+						'function include include_once global goto if implements interface instanceof namespace new ' +
+						'old_function or private protected public return require require_once static switch ' +
+						'throw try use var while xor ';
+		
+		var constants	= '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';
+
+		this.regexList = [
+			{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	css: 'comments' },			// one line comments
+			{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },			// multiline comments
+			{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },			// double quoted strings
+			{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },			// single quoted strings
+			{ regex: /\$\w+/g,											css: 'variable' },			// variables
+			{ regex: new RegExp(this.getKeywords(funcs), 'gmi'),		css: 'functions' },			// common functions
+			{ regex: new RegExp(this.getKeywords(constants), 'gmi'),	css: 'constants' },			// constants
+			{ regex: new RegExp(this.getKeywords(keywords), 'gm'),		css: 'keyword' }			// keyword
+			];
+
+		this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
+	};
+
+	Brush.prototype	= new SyntaxHighlighter.Highlighter();
+	Brush.aliases	= ['php'];
+
+	SyntaxHighlighter.brushes.Php = Brush;
+
+	// CommonJS
+	typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();

+ 236 - 0
web_src/scripts/syntax/shCore.css

@@ -0,0 +1,236 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+  -moz-border-radius: 0 0 0 0 !important;
+  -webkit-border-radius: 0 0 0 0 !important;
+  background: none !important;
+  border: 0 !important;
+  bottom: auto !important;
+  float: none !important;
+  height: auto !important;
+  left: auto !important;
+  line-height: 1.1em !important;
+  margin: 0 !important;
+  outline: 0 !important;
+  overflow: visible !important;
+  padding: 0 !important;
+  position: static !important;
+  right: auto !important;
+  text-align: left !important;
+  top: auto !important;
+  vertical-align: baseline !important;
+  width: auto !important;
+  box-sizing: content-box !important;
+  font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+  font-weight: normal !important;
+  font-style: normal !important;
+  font-size: 1em !important;
+  min-height: inherit !important;
+  min-height: auto !important;
+}
+
+.syntaxhighlighter {
+  box-sizing: border-box;
+  width: 95vw !important;
+  margin: 1em 0em 1em 0em !important;
+  position: relative !important;
+  overflow: auto !important;
+  max-height: 50vh !important;
+  padding-bottom: 10px;
+  min-width: 760px !important;
+  font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+  overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+  font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+  font-style: italic !important;
+}
+.syntaxhighlighter .line {
+  white-space: pre !important;
+}
+.syntaxhighlighter table {
+  width: 100% !important;
+}
+.syntaxhighlighter table caption {
+  text-align: left !important;
+  padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+  width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+  position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+  box-sizing: border-box !important;
+  position: absolute !important;
+  left: 0 !important;
+  top: 0 !important;
+  width: 100% !important;
+  height: 100% !important;
+  border: none !important;
+  background: white !important;
+  padding-left: 1em !important;
+  overflow: hidden !important;
+  white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+  text-align: right !important;
+  padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+  padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+  padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+  display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+  display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+  padding: 0.1em 0.8em 0em 0.8em !important;
+  font-size: 1em !important;
+  position: static !important;
+  width: auto !important;
+  height: auto !important;
+}
+
+.toolbar{
+	display: none;
+	cursor: normal;
+}
+
+.syntaxhighlighter.collapsed .toolbar span {
+  display: inline !important;
+  margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+  padding: 0 !important;
+  display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+  display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+  position: absolute !important;
+  right: 1px !important;
+  top: 1px !important;
+  width: 11px !important;
+  height: 11px !important;
+  font-size: 10px !important;
+  z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+  display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+  display: block !important;
+  text-align: center !important;
+  text-decoration: none !important;
+  padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+  display: none !important;
+}
+.syntaxhighlighter.ie {
+  font-size: .9em !important;
+  padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+  line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+  padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+  background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+  color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+  color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+  display: none !important;
+}
+.syntaxhighlighter.printing a {
+  text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+  color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+  color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+  color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+  color: #006699 !important;
+  font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+  color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+  color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+  color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+  color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+  color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+  font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+  color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+  color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+  color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+  color: black !important;
+}

File diff suppressed because it is too large
+ 21 - 0
web_src/scripts/syntax/shCore.js


+ 117 - 0
web_src/scripts/syntax/shThemeDefault.css

@@ -0,0 +1,117 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ * 
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+  background-color: white !important;
+}
+.syntaxhighlighter .line.alt1 {
+  background-color: white !important;
+}
+.syntaxhighlighter .line.alt2 {
+  background-color: white !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+  background-color: #e0e0e0 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+  color: black !important;
+}
+.syntaxhighlighter table caption {
+  color: black !important;
+}
+.syntaxhighlighter .gutter {
+  color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+  border-right: 3px solid #6ce26c !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+  background-color: #6ce26c !important;
+  color: white !important;
+}
+.syntaxhighlighter.printing .line .content {
+  border: none !important;
+}
+.syntaxhighlighter.collapsed {
+  overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+  color: blue !important;
+  background: white !important;
+  border: 1px solid #6ce26c !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+  color: blue !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+  color: red !important;
+}
+.syntaxhighlighter .toolbar {
+  color: white !important;
+  background: #6ce26c !important;
+  border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+  color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+  color: black !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+  color: black !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+  color: #008200 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+  color: blue !important;
+}
+.syntaxhighlighter .keyword {
+  color: #006699 !important;
+}
+.syntaxhighlighter .preprocessor {
+  color: gray !important;
+}
+.syntaxhighlighter .variable {
+  color: #aa7700 !important;
+}
+.syntaxhighlighter .value {
+  color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+  color: #ff1493 !important;
+}
+.syntaxhighlighter .constants {
+  color: #0066cc !important;
+}
+.syntaxhighlighter .script {
+  font-weight: bold !important;
+  color: #006699 !important;
+  background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+  color: gray !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+  color: #ff1493 !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+  color: red !important;
+}
+
+.syntaxhighlighter .keyword {
+  font-weight: bold !important;
+}

Some files were not shown because too many files changed in this diff