#294 Add SQL support for EAC

This commit is contained in:
Ulrich Block 2014-02-01 15:07:29 +01:00
parent a1fb034371
commit 9071e2a5bd
9 changed files with 181 additions and 97 deletions

View File

@ -117,7 +117,7 @@
<resync>Resyncronisation</resync>
<root>Rootserver</root>
<saturday>Samstag</saturday>
<server>Gameserver Adresse</server>
<server>Adresse</server>
<serverinstalled>Installierte Gameserver</serverinstalled>
<servername>Servername</servername>
<serverrestart>Der Gameserver wird neu gestartet</serverrestart>

View File

@ -12,6 +12,7 @@
<max_connections_per_hour>Maximale Verbindungen je Stunde</max_connections_per_hour>
<max_userconnections_per_hour>Maximale User Verbindungen je Stunde</max_userconnections_per_hour>
<password>Passwort</password>
<table>Tabelle</table>
<usage>Belegung</usage>
<user>Benutzername</user>
</sprache>

View File

@ -11,6 +11,7 @@
<max_connections_per_hour>Maksimalt forbindelser i timen</max_connections_per_hour>
<max_userconnections_per_hour>Maksimalt brugerforbindelser i timen</max_userconnections_per_hour>
<password>Adgangskode</password>
<table>Table</table>
<usage>Brug</usage>
<user>Brugernavn</user>
</sprache>

View File

@ -12,6 +12,7 @@
<max_connections_per_hour>Maximum connections per hour</max_connections_per_hour>
<max_userconnections_per_hour>Maximum userconnections per hour</max_userconnections_per_hour>
<password>Password</password>
<table>Table</table>
<usage>Usage</usage>
<user>Username</user>
</sprache>

View File

@ -1,4 +1,5 @@
<?php
/**
* File: eac.php.
* Author: Ulrich Block
@ -39,12 +40,17 @@ if ((!isset($admin_id) or $main != 1) or (isset($admin_id) and !$pa['eac'])) {
header('Location: admin.php');
die('No acces');
}
include(EASYWIDIR . '/stuff/keyphrasefile.php');
$sprache = getlanguagefile('roots',$user_language,$reseller_id);
$gssprache = getlanguagefile('gserver',$user_language,$reseller_id);
$sprache = getlanguagefile('roots', $user_language, $reseller_id);
$gssprache = getlanguagefile('gserver', $user_language, $reseller_id);
$mysprache = getlanguagefile('mysql', $user_language, $reseller_id);
$loguserid = $admin_id;
$logusername = getusername($admin_id);
$logusertype = 'admin';
if ($reseller_id == 0) {
$logreseller = 0;
$logsubuser = 0;
@ -56,12 +62,16 @@ if ($reseller_id == 0) {
}
$logreseller = 0;
}
if ($ui->w('action', 4, 'post') and !token(true)) {
$template_file = $spracheResponse->token;
} else if (!$ui->w('action', 4, 'post')) {
$pselect = $sql->prepare("SELECT `active`,`ip`,AES_DECRYPT(`port`,:aeskey) AS `dport`,AES_DECRYPT(`user`,:aeskey) AS `duser`,AES_DECRYPT(`pass`,:aeskey) AS `dpass`,`publickey`,`keyname`,`cfgdir`,`normal_3`,`normal_4`,`hlds_3`,`hlds_4`,`hlds_5`,`hlds_6` FROM `eac` WHERE resellerid=:reseller_id LIMIT 1");
$pselect->execute(array(':aeskey' => $aeskey,':reseller_id' => $reseller_id));
foreach ($pselect->fetchAll() as $row) {
$query = $sql->prepare("SELECT *,AES_DECRYPT(`port`,:aeskey) AS `dport`,AES_DECRYPT(`user`,:aeskey) AS `duser`,AES_DECRYPT(`pass`,:aeskey) AS `dpass` FROM `eac` WHERE resellerid=:reseller_id LIMIT 1");
$query->execute(array(':aeskey' => $aeskey,':reseller_id' => $reseller_id));
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$eac_active = $row['active'];
$eac_ip = $row['ip'];
$eac_port = $row['dport'];
@ -76,70 +86,34 @@ if ($ui->w('action', 4, 'post') and !token(true)) {
$eac_publickey = $row['publickey'];
$eac_keyname = $row['keyname'];
$eac_cfgdir = $row['cfgdir'];
$type = $row['type'];
$mysql_server = $row['mysql_server'];
$mysql_port = $row['mysql_port'];
$mysql_db = $row['mysql_db'];
$mysql_table = $row['mysql_table'];
$mysql_user = $row['mysql_user'];
$mysql_password = $row['mysql_password'];
}
$template_file = "admin_eac.tpl";
} else if ($ui->w('action', 4, 'post')=="md") {
$fail = 0;
if (!wpreg_check($ui->post['publickey'], 1)) {
$fail = 1;
}
if (!active_check($ui->post['active'])) {
$fail = 1;
}
if (!isip($ui->post['ip'],"all")) {
$fail = 1;
}
if (!isid($ui->post['port'],"5")) {
$fail = 1;
}
if (!uname_check($ui->post['user'],"20")) {
$fail = 1;
}
if ($fail!="1") {
if (isset($ui->post['normal_3'])) {
$normal_3=active_check($ui->post['normal_3']);
} else {
$normal_3="N";
}
if (isset($ui->post['normal_4'])) {
$normal_4=active_check($ui->post['normal_4']);
} else {
$normal_4="N";
}
if (isset($ui->post['hlds_3'])) {
$hlds_3=active_check($ui->post['hlds_3']);
} else {
$hlds_3="N";
}
if (isset($ui->post['hlds_4'])) {
$hlds_4=active_check($ui->post['hlds_4']);
} else {
$hlds_4="N";
}
if (isset($ui->post['hlds_5'])) {
$hlds_5=active_check($ui->post['hlds_5']);
} else {
$hlds_5="N";
}
if (isset($ui->post['hlds_6'])) {
$hlds_6=active_check($ui->post['hlds_6']);
} else {
$hlds_6="N";
}
$keyname = $ui->startparameter('keyname','post');
$publickey = $ui->post['publickey'];
$active = $ui->post['active'];
$ip = $ui->post['ip'];
$port = $ui->post['port'];
$user = $ui->post['user'];
$pass = $ui->startparameter('pass','post');
$cfgdir = $ui->folder('cfgdir','post');
$pupdate = $sql->prepare("UPDATE `eac` SET `active`=:active,`ip`=:ip,`port`=AES_ENCRYPT(:port, :aeskey),`user`=AES_ENCRYPT(:user, :aeskey),`pass`=AES_ENCRYPT(:pass, :aeskey),`publickey`=:publickey,`keyname`=:keyname,`cfgdir`=:cfgdir,`normal_3`=:normal_3,`normal_4`=:normal_4,`hlds_3`=:hlds_3,`hlds_4`=:hlds_4,`hlds_5`=:hlds_5,`hlds_6`=:hlds_6 WHERE resellerid=:reseller_id");
$pupdate->execute(array(':active' => $active,':ip' => $ip,':port' => $port,':aeskey' => $aeskey,':user' => $user,':pass' => $pass,':publickey' => $publickey,':keyname' => $keyname,':cfgdir' => $cfgdir,':normal_3' => $normal_3,':normal_4' => $normal_4,':hlds_3' => $hlds_3,':hlds_4' => $hlds_4,':hlds_5' => $hlds_5,':hlds_6' => $hlds_6,':reseller_id' => $reseller_id));
$template_file = $spracheResponse->table_add;
$loguseraction="%mod% %eac%";
$insertlog->execute();
} else {
$template_file = 'admin_404.tpl';
}
$template_file = 'admin_eac.tpl';
} else if ($ui->w('action', 4, 'post') == 'md') {
$normal_3 = ($ui->active('normal_3', 'post')) ? $ui->active('normal_3', 'post') : 'N';
$normal_4 = ($ui->active('normal_4', 'post')) ? $ui->active('normal_4', 'post') : 'N';
$hlds_3 = ($ui->active('hlds_3', 'post')) ? $ui->active('hlds_3', 'post') : 'N';
$hlds_4 = ($ui->active('hlds_4', 'post')) ? $ui->active('hlds_4', 'post') : 'N';
$hlds_5 = ($ui->active('hlds_5', 'post')) ? $ui->active('hlds_5', 'post') : 'N';
$hlds_6 = ($ui->active('hlds_6', 'post')) ? $ui->active('hlds_6', 'post') : 'N';
$query = $sql->prepare("UPDATE `eac` SET `active`=:active,`ip`=:ip,`port`=AES_ENCRYPT(:port, :aeskey),`user`=AES_ENCRYPT(:user, :aeskey),`pass`=AES_ENCRYPT(:pass, :aeskey),`publickey`=:publickey,`keyname`=:keyname,`cfgdir`=:cfgdir,`normal_3`=:normal_3,`normal_4`=:normal_4,`hlds_3`=:hlds_3,`hlds_4`=:hlds_4,`hlds_5`=:hlds_5,`hlds_6`=:hlds_6,`type`=:type,`mysql_server`=:mysql_server,`mysql_port`=:mysql_port,`mysql_db`=:mysql_db,`mysql_table`=:mysql_table,`mysql_user`=:mysql_user,`mysql_password`=:mysql_password WHERE resellerid=:reseller_id");
$query->execute(array(':active' => $ui->active('active', 'post'), ':ip' => $ui->ip4('ip', 'post'), ':port' => $ui->port('port', 'post'), ':aeskey' => $aeskey, ':user' => $ui->pregw('user', 255, 'post'), ':pass' => $ui->password('pass', 255, 'post') ,':publickey' => $ui->active('publickey', 'post'), ':keyname' => $ui->startparameter('keyname', 'post'), ':cfgdir' => $ui->folder('cfgdir','post'), ':normal_3' => $normal_3, ':normal_4' => $normal_4, ':hlds_3' => $hlds_3, ':hlds_4' => $hlds_4, ':hlds_5' => $hlds_5, ':hlds_6' => $hlds_6, ':type' => $ui->w('type', 1, 'post'), ':mysql_server' => $ui->w('mysql_server', 255, 'post'), ':mysql_port' => $ui->port('mysql_port', 'post'), ':mysql_db' => $ui->w('mysql_db', 255, 'post'), ':mysql_table' => $ui->w('mysql_table', 255, 'post'), ':mysql_user' => $ui->startparameter('mysql_user', 'post'), ':mysql_password' => $ui->password('mysql_password', 255, 'post'), ':reseller_id' => $reseller_id));
if ($query->rowCount() > 0) {
$template_file = $spracheResponse->table_add;
$loguseraction="%mod% %eac%";
$insertlog->execute();
} else {
$template_file = $spracheResponse->error_table;
}
}

View File

@ -539,54 +539,114 @@ if (!function_exists('gsrestart')) {
function eacchange($what, $serverid, $rcon, $reseller_id) {
global $sql;
global $dbConnect;
$subfolder = '';
$parameter = '';
$query = $sql->prepare("SELECT `active`,`cfgdir` FROM `eac` WHERE `resellerid`=? LIMIT 1");
$query = $sql->prepare("SELECT `active`,`cfgdir`,`type`,`mysql_server`,`mysql_port`,`mysql_db`,`mysql_table`,`mysql_user`,`mysql_password` FROM `eac` WHERE `resellerid`=? LIMIT 1");
$query->execute(array($reseller_id));
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$cfgdir = $row['cfgdir'];
$active = $row['active'];
$type = $row['type'];
$mysql_server = $row['mysql_server'];
$mysql_port = $row['mysql_port'];
$mysql_db = $row['mysql_db'];
$mysql_table = $row['mysql_table'];
$mysql_user = $row['mysql_user'];
$mysql_password = $row['mysql_password'];
$query = $sql->prepare("SELECT g.`serverip`,g.`port`,s.`anticheat`,t.`shorten` FROM `gsswitch` g LEFT JOIN `serverlist` s ON g.`serverid`=s.`id` LEFT JOIN `servertypes` t ON s.`servertype`=t.`id` WHERE g.`id`=? AND g.`resellerid`=? LIMIT 1");
$query->execute(array($serverid, $reseller_id));
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$gsip = $row['serverip'];
$gsport = $row['port'];
$sqlParameter = 0;
if ($row['anticheat'] == 3) {
$parameter = '';
} else if ($row['anticheat'] == 4) {
$parameter = '-2';
$sqlParameter = 2;
} else if ($row['anticheat'] == 5) {
$parameter = '-1';
$sqlParameter = 1;
} else if ($row['anticheat'] == 6) {
$parameter = '-3';
$sqlParameter = 3;
}
$gameID = 0;
if ($row['shorten'] == 'cstrike' or $row['shorten'] == 'czero') {
$subfolder = 'hl1';
$gameID = 1;
} else if ($row['shorten'] == 'css' or $row['shorten'] == 'tf') {
$subfolder = 'hl2';
$gameID = 2;
} else if ($row['shorten'] == 'csgo') {
$subfolder = 'csgo';
$gameID = 4;
}
$file = $cfgdir . '/' . $subfolder . '/' . $gsip . '-' . $gsport;
$file = preg_replace('/\/\//', '/', $file);
if ($type == 'M') {
if ($what == 'change') {
$ssh2cmd = 'echo "'.$gsip . ':' . $gsport . '-' . $rcon . $parameter . '" > '.$file;
} else if ($what == 'remove') {
$ssh2cmd='rm -f '.$file;
}
$mysql_port = (port($mysql_port)) ? $mysql_port : 3306;
if (isset($ssh2cmd) and $active == 'Y') {
if (!function_exists('ssh2_execute')) {
include(EASYWIDIR . '/stuff/functions_ssh_exec.php');
$eacSql = new PDO("mysql:host=${mysql_server};dbname=${mysql_db};port=${mysql_port}", $mysql_user, $mysql_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
if ($dbConnect['debug'] == 1) {
$eacSql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
if (isset($ssh2cmd)) {
ssh2_execute('eac', $reseller_id, $ssh2cmd);
$query = $eacSql->prepare("SELECT 1 FROM `" . $mysql_table . "` WHERE `IP`=? LIMIT 1");
$query->execute(array($gsip . ':' . $gsport));
$entryExists = $query->rowCount();
if ($entryExists > 0 and $what == 'change') {
$query = $eacSql->prepare("UPDATE `" . $mysql_table . "` SET `GAME`=?,`RCONPWD`=?,`FLAGS`=?,`EAC_ENABLED`=1 WHERE `IP`=? LIMIT 1");
$query->execute(array($gameID, $rcon, $sqlParameter, $gsip . ':' . $gsport));
} else if ($entryExists == 0 and $what == 'change') {
$query = $eacSql->prepare("INSERT INTO `" . $mysql_table . "` (`GAME`,`IP`,`RCONPWD`,`FLAGS`,`EAC_ENABLED`) VALUES (?,?,?,?,1)");
$query->execute(array($gameID, $gsip . ':' . $gsport, $rcon, $sqlParameter));
} else if ($entryExists > 0 and $what == 'remove') {
$query = $eacSql->prepare("DELETE FROM `" . $mysql_table . "` WHERE `IP`=?");
$query->execute(array($gsip . ':' . $gsport));
}
} else {
$file = $cfgdir . '/' . $subfolder . '/' . $gsip . '-' . $gsport;
$file = preg_replace('/\/\//', '/', $file);
if ($what == 'change') {
$ssh2cmd = 'echo "' . $gsip . ':' . $gsport . '-' . $rcon . $parameter . '" > '.$file;
} else if ($what == 'remove') {
$ssh2cmd = 'rm -f ' . $file;
}
if (isset($ssh2cmd) and $active == 'Y') {
if (!function_exists('ssh2_execute')) {
include(EASYWIDIR . '/stuff/functions_ssh_exec.php');
}
if (isset($ssh2cmd)) {
ssh2_execute('eac', $reseller_id, $ssh2cmd);
}
}
}
}

View File

@ -183,6 +183,13 @@ $query = "CREATE TABLE IF NOT EXISTS `eac` (
`hlds_5` enum('Y','N') DEFAULT 'Y',
`hlds_6` enum('Y','N') DEFAULT 'Y',
`notified` int(11) unsigned DEFAULT 0,
`type` enum('M','S') DEFAULT 'S',
`mysql_server` varchar(255) DEFAULT NULL,
`mysql_port` int(5) unsigned,
`mysql_db` varchar(255) DEFAULT NULL,
`mysql_table` varchar(255) DEFAULT NULL,
`mysql_user` varchar(255) DEFAULT NULL,
`mysql_password` blob,
`resellerid` int(10) unsigned DEFAULT 0,
PRIMARY KEY (`id`),KEY(`resellerid`)
) ENGINE=InnoDB";

View File

@ -217,6 +217,13 @@ $defined['eac'] = array('id' => array("Type"=>"int(10) unsigned","Null"=>"NO","K
'hlds_4' => array("Type"=>"enum('Y','N')","Null"=>"YES","Key"=>"","Default"=>"Y","Extra"=>""),
'hlds_5' => array("Type"=>"enum('Y','N')","Null"=>"YES","Key"=>"","Default"=>"Y","Extra"=>""),
'hlds_6' => array("Type"=>"enum('Y','N')","Null"=>"YES","Key"=>"","Default"=>"Y","Extra"=>""),
'type' => array("Type"=>"enum('M','S')","Null"=>"YES","Key"=>"","Default"=>"S","Extra"=>""),
'mysql_server' => array("Type"=>"varchar(255)","Null"=>"YES","Key"=>"","Default"=>"","Extra"=>""),
'mysql_port' => array("Type"=>"int(5) unsigned","Null"=>"YES","Key"=>"","Default"=>"","Extra"=>""),
'mysql_db' => array("Type"=>"varchar(255)","Null"=>"YES","Key"=>"","Default"=>"","Extra"=>""),
'mysql_table' => array("Type"=>"varchar(255)","Null"=>"YES","Key"=>"","Default"=>"","Extra"=>""),
'mysql_user' => array("Type"=>"varchar(255)","Null"=>"YES","Key"=>"","Default"=>"","Extra"=>""),
'mysql_password' => array("Type"=>"blob","Null"=>"YES","Key"=>"","Default"=>"","Extra"=>""),
'notified' => array("Type"=>"int(11) unsigned","Null"=>"YES","Key"=>"","Default"=>"0","Extra"=>""),
'resellerid' => array("Type"=>"int(10) unsigned","Null"=>"YES","Key"=>"MUL","Default"=>"0","Extra"=>"")
);

View File

@ -22,18 +22,27 @@
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputType"><?php echo $gssprache->type;?></label>
<div class="controls">
<select id="inputType" name="type" onchange="SwitchShowHideRows(this.value)">
<option value="M">MySQL</option>
<option value="S" <?php if ($type=='S') echo 'selected="selected"'; ?>>SSH2</option>
</select>
</div>
</div>
<div class="S switch<?php if($type=='M') echo 'display_none';?> control-group">
<label class="control-label" for="inputIP"><?php echo $sprache->haupt_ip;?></label>
<div class="controls"><input id="inputIP" type="text" name="ip" value="<?php echo $eac_ip?>" maxlength="15" required="required"></div>
<div class="controls"><input id="inputIP" type="text" name="ip" value="<?php echo $eac_ip;?>" maxlength="15" required="required"></div>
</div>
<div class="control-group">
<div class="S switch<?php if($type=='M') echo 'display_none';?> control-group">
<label class="control-label" for="inputPortSSH2"><?php echo $sprache->ssh_port;?></label>
<div class="controls"><input id="inputPortSSH2" type="text" name="port" value="<?php echo $eac_port?>" maxlength="5" required="required"></div>
<div class="controls"><input id="inputPortSSH2" type="text" name="port" value="<?php echo $eac_port;?>" maxlength="5" required="required"></div>
</div>
<div class="control-group">
<div class="S switch<?php if($type=='M') echo 'display_none';?> control-group">
<label class="control-label" for="inputUserSSH2"><?php echo $sprache->ssh_user;?></label>
<div class="controls"><input id="inputUserSSH2" type="text" name="user" value="<?php echo $eac_user?>" maxlength="15" required="required"></div>
<div class="controls"><input id="inputUserSSH2" type="text" name="user" value="<?php echo $eac_user;?>" maxlength="15" required="required"></div>
</div>
<div class="control-group">
<div class="S switch<?php if($type=='M') echo 'display_none';?> control-group">
<label class="control-label" for="inputKeyuseSSH2"><?php echo $sprache->keyuse;?></label>
<div class="controls">
<select id="inputKeyuseSSH2" name="publickey">
@ -43,24 +52,48 @@
</select>
</div>
</div>
<div class="control-group">
<div class="S switch<?php if($type=='M') echo 'display_none';?> control-group">
<label class="control-label" for="inputPassSSH2"><?php echo $sprache->ssh_pass;?></label>
<div class="controls"><input id="inputPassSSH2" type="password" name="pass" value="<?php echo $eac_pass?>"></div>
<div class="controls"><input id="inputPassSSH2" type="password" name="pass" value="<?php echo $eac_pass;?>"></div>
</div>
<div class="control-group">
<div class="S switch<?php if($type=='M') echo 'display_none';?> control-group">
<label class="control-label" for="inputKeynameSSH2"><?php echo $sprache->keyname;?></label>
<div class="controls"><input id="inputKeynameSSH2" type="text" name="keyname" maxlength="20" value="<?php echo $eac_keyname;?>"></div>
</div>
<div class="control-group">
<div class="S switch<?php if($type=='M') echo 'display_none';?> control-group">
<label class="control-label" for="inputCFGDir"><?php echo $sprache->cfgdir;?></label>
<div class="controls"><input id="inputCFGDir" type="text" name="cfgdir" value="<?php echo $eac_cfgdir?>" required></div>
<div class="controls"><input id="inputCFGDir" type="text" name="cfgdir" value="<?php echo $eac_cfgdir;?>" ></div>
</div>
<div class="M switch<?php if($type=='S') echo 'display_none';?> control-group">
<label class="control-label" for="inputMysqlServer">MySQL <?php echo $gssprache->server;?></label>
<div class="controls"><input id="inputMysqlServer" type="text" name="mysql_server" value="<?php echo $mysql_server;?>"></div>
</div>
<div class="M switch<?php if($type=='S') echo 'display_none';?> control-group">
<label class="control-label" for="inputMysqlPort">MySQL <?php echo $gssprache->port;?></label>
<div class="controls"><input id="inputMysqlPort" type="text" name="mysql_port" value="<?php echo $mysql_port;?>"></div>
</div>
<div class="M switch<?php if($type=='S') echo 'display_none';?> control-group">
<label class="control-label" for="inputMysqlDB">MySQL <?php echo $mysprache->dbname;?></label>
<div class="controls"><input id="inputMysqlDB" type="number" name="mysql_db" value="<?php echo $mysql_db;?>"></div>
</div>
<div class="M switch<?php if($type=='S') echo 'display_none';?> control-group">
<label class="control-label" for="inputMysqlTable">MySQL <?php echo $mysprache->table;?></label>
<div class="controls"><input id="inputMysqlTable" type="number" name="mysql_table" value="<?php echo $mysql_table;?>"></div>
</div>
<div class="M switch<?php if($type=='S') echo 'display_none';?> control-group">
<label class="control-label" for="inputMysqlUser">MySQL <?php echo $mysprache->user;?></label>
<div class="controls"><input id="inputMysqlUser" type="number" name="mysql_user" value="<?php echo $mysql_user;?>"></div>
</div>
<div class="M switch<?php if($type=='S') echo 'display_none';?> control-group">
<label class="control-label" for="inputMysqlPassword">MySQL <?php echo $mysprache->password;?></label>
<div class="controls"><input id="inputMysqlPassword" type="number" name="mysql_password" value="<?php echo $mysql_password;?>"></div>
</div>
<div class="control-group">
<label class="control-label" for="inputSrcdsCOD4War">SRCDS/COD4 <?php echo $gssprache->war?></label>
<label class="control-label" for="inputSrcdsCOD4War">SRCDS <?php echo $gssprache->war?></label>
<div class="controls"><input id="inputSrcdsCOD4War" type="checkbox" name="normal_3" value="Y" <?php if ($normal_3=='Y') echo 'checked="checked"'; ?>></div>
</div>
<div class="control-group">
<label class="control-label" for="inputSrcdsCOD4Pub">SRCDS/COD4 Public</label>
<label class="control-label" for="inputSrcdsCOD4Pub">SRCDS Public</label>
<div class="controls"><input id="inputSrcdsCOD4Pub" type="checkbox" name="normal_4" value="Y" <?php if ($normal_4=='Y') echo 'checked="checked"'; ?>></div>
</div>
<div class="control-group">