├── LICENSE ├── README.md └── csfmanager ├── clientarea ├── csfmanager.tpl ├── csfmanagerallow.tpl ├── csfmanagerallowconfirm.tpl ├── csfmanagerallowemail.tpl ├── csfmanageremailkeys.tpl ├── csfmanagererror.tpl ├── csfmanagerfirewall.tpl ├── csfmanagerproducts.tpl ├── csfmanagerunblock.tpl ├── csfmanagerwhitelisted.tpl ├── css │ └── jquery.tooltip.css └── javascript │ └── jquery.tooltip.pack.js ├── csfmanager.php ├── css └── style.css ├── hooks.php ├── images ├── delete.png ├── flags │ ├── ad.png │ ├── ae.png │ ├── af.png │ ├── ag.png │ ├── ai.png │ ├── al.png │ ├── am.png │ ├── an.png │ ├── ao.png │ ├── ar.png │ ├── as.png │ ├── at.png │ ├── au.png │ ├── aw.png │ ├── ax.png │ ├── az.png │ ├── ba.png │ ├── bb.png │ ├── bd.png │ ├── be.png │ ├── bf.png │ ├── bg.png │ ├── bh.png │ ├── bi.png │ ├── bj.png │ ├── bm.png │ ├── bn.png │ ├── bo.png │ ├── br.png │ ├── bs.png │ ├── bt.png │ ├── bv.png │ ├── bw.png │ ├── by.png │ ├── bz.png │ ├── ca.png │ ├── catalonia.png │ ├── cc.png │ ├── cd.png │ ├── cf.png │ ├── cg.png │ ├── ch.png │ ├── ci.png │ ├── ck.png │ ├── cl.png │ ├── cm.png │ ├── cn.png │ ├── co.png │ ├── cr.png │ ├── cs.png │ ├── cu.png │ ├── cv.png │ ├── cx.png │ ├── cy.png │ ├── cz.png │ ├── de.png │ ├── dj.png │ ├── dk.png │ ├── dm.png │ ├── do.png │ ├── dz.png │ ├── ec.png │ ├── ee.png │ ├── eg.png │ ├── eh.png │ ├── er.png │ ├── es.png │ ├── et.png │ ├── europeanunion.png │ ├── fam.png │ ├── fi.png │ ├── fj.png │ ├── fk.png │ ├── fm.png │ ├── fo.png │ ├── fr.png │ ├── ga.png │ ├── gb.png │ ├── gd.png │ ├── ge.png │ ├── gf.png │ ├── gh.png │ ├── gi.png │ ├── gl.png │ ├── gm.png │ ├── gn.png │ ├── gp.png │ ├── gq.png │ ├── gr.png │ ├── gs.png │ ├── gt.png │ ├── gu.png │ ├── gw.png │ ├── gy.png │ ├── hk.png │ ├── hm.png │ ├── hn.png │ ├── hr.png │ ├── ht.png │ ├── hu.png │ ├── id.png │ ├── ie.png │ ├── il.png │ ├── in.png │ ├── io.png │ ├── iq.png │ ├── ir.png │ ├── is.png │ ├── it.png │ ├── jm.png │ ├── jo.png │ ├── jp.png │ ├── ke.png │ ├── kg.png │ ├── kh.png │ ├── ki.png │ ├── km.png │ ├── kn.png │ ├── kp.png │ ├── kr.png │ ├── kw.png │ ├── ky.png │ ├── kz.png │ ├── la.png │ ├── lb.png │ ├── lc.png │ ├── li.png │ ├── lk.png │ ├── lr.png │ ├── ls.png │ ├── lt.png │ ├── lu.png │ ├── lv.png │ ├── ly.png │ ├── ma.png │ ├── mc.png │ ├── md.png │ ├── me.png │ ├── mg.png │ ├── mh.png │ ├── mk.png │ ├── ml.png │ ├── mm.png │ ├── mn.png │ ├── mo.png │ ├── mp.png │ ├── mq.png │ ├── mr.png │ ├── ms.png │ ├── mt.png │ ├── mu.png │ ├── mv.png │ ├── mw.png │ ├── mx.png │ ├── my.png │ ├── mz.png │ ├── na.png │ ├── nc.png │ ├── ne.png │ ├── nf.png │ ├── ng.png │ ├── ni.png │ ├── nl.png │ ├── no.png │ ├── np.png │ ├── nr.png │ ├── nu.png │ ├── nz.png │ ├── om.png │ ├── pa.png │ ├── pe.png │ ├── pf.png │ ├── pg.png │ ├── ph.png │ ├── pk.png │ ├── pl.png │ ├── pm.png │ ├── pn.png │ ├── pr.png │ ├── ps.png │ ├── pt.png │ ├── pw.png │ ├── py.png │ ├── qa.png │ ├── re.png │ ├── ro.png │ ├── rs.png │ ├── ru.png │ ├── rw.png │ ├── sa.png │ ├── sb.png │ ├── sc.png │ ├── scotland.png │ ├── sd.png │ ├── se.png │ ├── sg.png │ ├── sh.png │ ├── si.png │ ├── sj.png │ ├── sk.png │ ├── sl.png │ ├── sm.png │ ├── sn.png │ ├── so.png │ ├── sr.png │ ├── st.png │ ├── sv.png │ ├── sy.png │ ├── sz.png │ ├── tc.png │ ├── td.png │ ├── tf.png │ ├── tg.png │ ├── th.png │ ├── tj.png │ ├── tk.png │ ├── tl.png │ ├── tm.png │ ├── tn.png │ ├── to.png │ ├── tr.png │ ├── tt.png │ ├── tv.png │ ├── tw.png │ ├── tz.png │ ├── ua.png │ ├── ug.png │ ├── uk.png │ ├── um.png │ ├── us.png │ ├── uy.png │ ├── uz.png │ ├── va.png │ ├── vc.png │ ├── ve.png │ ├── vg.png │ ├── vi.png │ ├── vn.png │ ├── vu.png │ ├── wales.png │ ├── wf.png │ ├── ws.png │ ├── ye.png │ ├── yt.png │ ├── za.png │ ├── zm.png │ └── zw.png ├── loader.gif ├── minus.png ├── plus.png ├── success.png └── waiting-icon.png ├── includes ├── class_cpanel.php ├── class_firewall.php ├── functions.php └── ganon │ ├── gan_formatter.php │ ├── gan_node_html.php │ ├── gan_parser_html.php │ ├── gan_selector_html.php │ ├── gan_tokenizer.php │ └── ganon.php ├── lang ├── english.php └── hebrew.php ├── template ├── allowedlog_default.php ├── allowkeys_default.php ├── broadcast_apply.php ├── broadcast_default.php ├── broadcast_selectservers.php ├── broadcast_setconfig.php ├── firewall_default.php ├── firewall_manage.php ├── generatekey_default.php ├── message.php ├── overall_footer.php ├── overall_header.php └── settings_default.php └── views ├── allowedlog_default.php ├── allowkeys_default.php ├── broadcast_apply.php ├── broadcast_default.php ├── broadcast_selectservers.php ├── broadcast_send.php ├── broadcast_setconfig.php ├── firewall_default.php ├── firewall_manage.php ├── generatekey_default.php └── settings_default.php /README.md: -------------------------------------------------------------------------------- 1 | # WHMCS-CSF-Manager 2 | 3 | # Installation 4 | 5 | Upload the folder "csfmanager" (as is) to your WHMCS installtion. 6 | After uploaded, the full path to the module should be: “modules/addons/csfmanager“. 7 | 8 | Login to your WHMCS as admin user, and navigate to “Setup” -> “Addon modules“. 9 | 10 | Find the “Jetserver CSF Manager” module, and activate it. 11 | 12 | Now go back to “Jetserver CSF Manager”, click “Configure” and set the admin role groups that can access the module. 13 | Save your changes and your module is all set. 14 | 15 | You will be able to access it throught the “Addons” top menu. 16 | 17 | By default, CSF Manager will use all servers listed under “Setup” -> “Product / Services” -> “Servers“. 18 | 19 | If wanted, you can limit the servers from the “Settings” tab. 20 | 21 | # More Information 22 | 23 | https://docs.jetapps.com/category/whmcs-addons/csf-manager 24 | -------------------------------------------------------------------------------- /csfmanager/clientarea/csfmanager.tpl: -------------------------------------------------------------------------------- 1 | {if $package} 2 |
{$error}
11 | {/foreach} 12 |{$success}
19 | {/foreach} 20 |{$error}
5 | {/foreach} 6 |{$success}
13 | {/foreach} 14 |{$ADDONLANG.recipient} | 16 |{$ADDONLANG.expiration} | 17 |{$ADDONLANG.remained_clicks} | 18 |{$ADDONLANG.status} | 19 |20 | | ||||
---|---|---|---|---|---|---|---|---|
{$allowkey.key_recipient} {$allowkey.key_email} |
26 | {if $allowkey.key_cancelled or $allowkey.key_clicks_remained lte 0 or $allowkey.key_expired}
27 | - | 28 |- | 29 |{if $allowkey.key_cancelled}{$ADDONLANG.cancelled}{elseif $allowkey.key_expired}{$ADDONLANG.expired}{elseif $allowkey.key_clicks_remained <= 0}{$ADDONLANG.fullyused}{/if} | 30 |31 | {else} 32 | | {$allowkey.key_expire} | 33 |{$allowkey.key_clicks_remained} | 34 |Active | 35 |36 | {$ADDONLANG.cancel} 37 | {$ADDONLANG.resend} 38 | | 39 | {/if} 40 |
{$error}
5 | {/foreach} 6 |{$success}
13 | {/foreach} 14 |{$ADDONLANG.firewalldetails} | 7 |8 | |
---|---|
{$ADDONLANG.server}: | 13 |{$server} | 14 |
{$ADDONLANG.firewallstatus}: | 17 |{if $status}{$status}{else}{$ADDONLANG.nostatus}{/if} | 18 |
{$ADDONLANG.openedportsall}: | 21 |{if $open_ports}{$open_ports}{else}{$ADDONLANG.noports}{/if} | 22 |
{$ADDONLANG.blockedcountries}: | 25 |
26 | {foreach from=$denied_countries item=country}
27 | |
32 |
{$ADDONLANG.openedportscountries}: | 35 |
36 | {$ADDONLANG.ports}: {if $allowed_countries_ports}{$allowed_countries_ports}{else}{$ADDONLANG.noports}{/if} 37 | {$ADDONLANG.countries}: 38 | {foreach from=$allowed_countries item=country} 39 | |
44 |
{$LANG.orderproduct} | 16 | 17 |
---|
{$service.group} - {$service.product}{if $service.domain} {$service.domain}{/if} |
23 |
24 |
{$ADDONLANG.youripblocked|sprintf:$cip}
39 |{$ADDONLANG.blockreason} | 46 |{$ADDONLANG.blockdate} | 47 |{$ADDONLANG.expirationdate} | 48 |
---|---|---|
{$reason.Notes} | 55 |{$reason.Date} | 56 |{$ADDONLANG.never} | 57 |
{$reason.Notes} | 64 |{$reason.Date} | 65 |{$ADDONLANG.never} | 66 |
{$reason.Notes} | 71 |{$reason.Date} | 72 |{$reason.Expiration} | 73 |
{$ADDONLANG.youripok|sprintf:$cip}
89 |{$ADDONLANG.ip} | 16 |{$ADDONLANG.time} | 17 |{$ADDONLANG.expiration} | 18 |{$ADDONLANG.reason} | 19 |20 | |
---|---|---|---|---|
{$allowedip.ip} | 26 |{$allowedip.time} | 27 |{$allowedip.expiration} | 28 |{$allowedip.reason} | 29 |30 | {$ADDONLANG.remove} 31 | | 32 |
lang('client'); ?> | 44 |lang('server'); ?> | 45 |lang('ip'); ?> | 46 |lang('time'); ?> | 47 |lang('expirationdate'); ?> | 48 |lang('reason'); ?> | 49 |50 | |
---|---|---|---|---|---|---|
54 | 55 | 56 | 57 | lang('clientdeleted'), $allowed_ip['clientid']); ?> 58 | 59 | | 60 |61 | | 62 | | 63 | | 64 | | 65 | |
66 | &action=delete&id=">
67 | ![]() |
70 |
lang('client'); ?> | 56 |lang('server'); ?> | 57 |lang('recipientname'); ?> | 58 |lang('recipientemail'); ?> | 59 |lang('key'); ?> | 60 |lang('expirationdate'); ?> | 61 |lang('remained'); ?> | 62 |63 | | 64 | | ||
---|---|---|---|---|---|---|---|---|---|---|
68 | 69 | 70 | 71 | lang('clientdeleted'), $allow_key['user_id']); ?> 72 | 73 | | 74 |75 | | 76 | | 77 | | 78 | 79 | | lang('cancelled'); ?> | 80 | 81 |82 | time()) { ?> 83 | 84 | 85 | lang('expired'); ?> 86 | 87 | | 88 |89 | 0) { ?> 90 | 91 | 92 | lang('fullyused'); ?> 93 | 94 | | 95 | 96 |
97 | time() && $allow_key['key_clicks_remained'] > 0) { ?>
98 | &action=resend&id=">
99 | ![]() |
103 |
104 | time() && $allow_key['key_clicks_remained'] > 0) { ?>
105 | &action=cancel&id=">
106 | ![]() ![]() |
114 |
Plugin Version
6 | -------------------------------------------------------------------------------- /csfmanager/template/overall_header.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |"; 116 | print_r($select('option')); 117 | exit; 118 | } 119 | 120 | $output['data']['configForm'] .= $div->html(); 121 | } 122 | 123 | return $output; 124 | } 125 | } 126 | 127 | ?> -------------------------------------------------------------------------------- /csfmanager/views/firewall_default.php: -------------------------------------------------------------------------------- 1 | true, 'message' => '', 'data' => array()); 22 | 23 | $instance = csfmanager::getInstance(); 24 | 25 | $output['data']['servers'] = array(); 26 | 27 | $sql = "SELECT * 28 | FROM tblservers 29 | " . (trim($instance->getConfig('servers', '')) ? "WHERE id IN (" . trim($instance->getConfig('servers', '')) . ")" : ''); 30 | $result = mysql_query($sql); 31 | 32 | while($server_details = mysql_fetch_assoc($result)) 33 | { 34 | $output['data']['servers'][$server_details['id']] = array_merge($server_details, array('password' => decrypt($server_details['password'], $cc_encryption_hash))); 35 | } 36 | mysql_free_result($result); 37 | 38 | return $output; 39 | } 40 | } 41 | 42 | ?> -------------------------------------------------------------------------------- /csfmanager/views/firewall_manage.php: -------------------------------------------------------------------------------- 1 | true, 'message' => '', 'data' => array()); 22 | 23 | $instance = csfmanager::getInstance(); 24 | 25 | $server_id = csfmanager::request_var('server_id', 0); 26 | 27 | $servers = array(); 28 | 29 | $sql = "SELECT * 30 | FROM tblservers 31 | " . (trim($instance->getConfig('servers', '')) ? "WHERE id IN (" . trim($instance->getConfig('servers', '')) . ")" : ''); 32 | $result = mysql_query($sql); 33 | 34 | while($server_details = mysql_fetch_assoc($result)) 35 | { 36 | $servers[$server_details['id']] = array_merge($server_details, array('password' => decrypt($server_details['password'], $cc_encryption_hash))); 37 | } 38 | mysql_free_result($result); 39 | 40 | $server_details = $servers[$server_id]; 41 | 42 | if(!isset($server_details)) 43 | { 44 | $output['success'] = false; 45 | $output['message'] = "The provided server not exists"; 46 | return $output; 47 | } 48 | 49 | $password = $server_details['password'] ? $server_details['password'] : $server_details['accesshash']; 50 | $password_type = $server_details['password'] ? 'plain' : 'hash'; 51 | 52 | $cpanel = new csfmanager_cpanel; 53 | 54 | $cpanel->setServer(($server_details['ipaddress'] ? $server_details['ipaddress'] : $server_details['hostname']), $server_details['username'], $password, $password_type); 55 | 56 | $response = $cpanel->whm('create_user_session', array( 57 | 'user' => $server_details['username'], 58 | 'service' => 'whostmgrd', 59 | )); 60 | 61 | if(!$response['success'] || !$response['output']['url']) 62 | { 63 | $output['success'] = false; 64 | $output['message'] = "Unable to create cPanel session." . ($response['message'] ? " cPanel Error: {$response['success']}" : ''); 65 | return $output; 66 | } 67 | 68 | $output['data']['iframe_url'] = $response['output']['url']; 69 | $output['data']['server_details'] = $server_details; 70 | 71 | return $output; 72 | } 73 | } 74 | 75 | ?> -------------------------------------------------------------------------------- /csfmanager/views/generatekey_default.php: -------------------------------------------------------------------------------- 1 | true, 'message' => '', 'data' => array()); 22 | 23 | $instance = csfmanager::getInstance(); 24 | 25 | $output['data']['generate'] = csfmanager::request_var('generate', array()); 26 | $output['data']['servers'] = array(); 27 | 28 | $sql = "SELECT * 29 | FROM tblservers 30 | " . (trim($instance->getConfig('servers', '')) ? "WHERE id IN (" . trim($instance->getConfig('servers', '')) . ")" : ''); 31 | $result = mysql_query($sql); 32 | 33 | while($server_details = mysql_fetch_assoc($result)) 34 | { 35 | $output['data']['servers'][$server_details['id']] = array_merge($server_details, array('password' => decrypt($server_details['password'], $cc_encryption_hash))); 36 | } 37 | mysql_free_result($result); 38 | 39 | $output['data']['clients'] = array(); 40 | 41 | $sql = "SELECT c.*, h.domain, p.id as product_id, s.id as server_id, h.id as hosting_id 42 | FROM tblclients as c 43 | INNER JOIN tblhosting as h 44 | ON h.userid = c.id 45 | INNER JOIN tblproducts as p 46 | ON p.id = h.packageid 47 | INNER JOIN tblservers as s 48 | ON s.id = h.server 49 | WHERE c.status = 'Active' 50 | AND h.domainstatus = 'Active' 51 | " . (trim($instance->getConfig('servers', '')) ? "AND s.id IN (" . trim($instance->getConfig('servers', '')) . ")" : '') . " 52 | AND p.type IN ('hostingaccount','reselleraccount','server') 53 | ORDER BY c.firstname ASC, c.lastname ASC, c.id ASC"; 54 | $result = mysql_query($sql); 55 | 56 | while($client_details = mysql_fetch_assoc($result)) 57 | { 58 | $output['data']['clients'][$client_details['id']] = $client_details; 59 | } 60 | mysql_free_result($result); 61 | 62 | return $output; 63 | } 64 | 65 | public function create() 66 | { 67 | global $cc_encryption_hash, $instance, $CONFIG; 68 | 69 | $output = $this->_default(); 70 | if(!$output['success']) return $output; 71 | $output['success'] = false; 72 | 73 | $instance = csfmanager::getInstance(); 74 | 75 | $client_id = intval($output['data']['generate']['clientid']) ? intval($output['data']['generate']['clientid']) : intval($output['data']['generate']['client']); 76 | 77 | if($output['data']['generate']['recipient'] && $output['data']['generate']['email'] && csfmanager::csfValidateEmail($output['data']['generate']['email']) && $client_id && isset($output['data']['clients'][$client_id]) && intval($output['data']['generate']['server']) && isset($output['data']['servers'][$output['data']['generate']['server']])) 78 | { 79 | $hashkey = md5($output['data']['generate']['email'] . rand() . time()); 80 | $sysurl = ($CONFIG["SystemSSLURL"] ? $CONFIG["SystemSSLURL"] : $CONFIG["SystemURL"]); 81 | $whitelist_url = "{$sysurl}/index.php?m=csfmanager&action=allow&key={$hashkey}"; 82 | $cancel_url = "{$sysurl}/index.php?m=csfmanager&action=cancel&key={$hashkey}"; 83 | $valid_days = 365; 84 | $valid_clicks = 10; 85 | 86 | $sendmail = csfmanager::sendCSFmail('CSF Manager Whitelist by Email', $output['data']['generate']['email'], $output['data']['generate']['recipient'], array( 87 | 'emailfullname' => $output['data']['generate']['recipient'], 88 | 'firstname' => $output['data']['clients'][$client_id]['firstname'], 89 | 'lastname' => $output['data']['clients'][$client_id]['lastname'], 90 | 'whitelist_url' => $whitelist_url, 91 | 'valid_days' => $valid_days, 92 | 'valid_clicks' => $valid_clicks, 93 | 'cancel_url' => $cancel_url, 94 | 'signature' => nl2br(html_entity_decode($CONFIG['Signature'])), 95 | )); 96 | 97 | if($sendmail['success']) 98 | { 99 | logActivity("Jetserver CSF Manager :: The admin sent allow ket to the recipient {$email} ({$fullname}) on behalf of Client ID: {$uid}"); 100 | 101 | $sql = "INSERT INTO mod_csfmanager_allow_keys (`user_id`,`server_id`,`product_id`,`key_hash`,`key_recipient`,`key_email`,`key_clicks_remained`,`key_expire`) VALUES 102 | ('{$client_id}','{$output['data']['clients'][$client_id]['server_id']}','{$output['data']['clients'][$client_id]['hosting_id']}','{$hashkey}','{$output['data']['generate']['recipient']}','{$output['data']['generate']['email']}',{$valid_clicks},'" . (time() + (60 * 60 * 24 * $valid_days)) . "')"; 103 | mysql_query($sql); 104 | 105 | $output['success'] = true; 106 | $output['message'] = $instance->lang('emailsent'); 107 | } 108 | else 109 | { 110 | $output['errormessages'][] = $sendmail['message']; 111 | } 112 | } 113 | else 114 | { 115 | if(!$output['data']['generate']['recipient']) $output['errormessages'][] = $instance->lang('emptyrecipientname'); 116 | if(!$output['data']['generate']['email']) $output['errormessages'][] = $instance->lang('emptyrecipientemail'); 117 | if($output['data']['generate']['email'] && !csfValidateEmail($generate['email'])) $output['errormessages'][] = $instance->lang('invalidrecipientemail'); 118 | if(!$client_id) $output['errormessages'][] = $instance->lang('emptyclient'); 119 | if($client_id && !isset($output['data']['clients'][$client_id])) $output['errormessages'][] = $instance->lang('invalidclient'); 120 | if(!intval($output['data']['generate']['server'])) $output['errormessages'][] = $instance->lang('emptyserver'); 121 | if(intval($output['data']['generate']['server']) && !isset($output['data']['servers'][$output['data']['generate']['server']])) $output['errormessages'][] = $instance->lang('invalidserver'); 122 | } 123 | 124 | return $output; 125 | } 126 | } 127 | 128 | ?> -------------------------------------------------------------------------------- /csfmanager/views/settings_default.php: -------------------------------------------------------------------------------- 1 | true, 'message' => '', 'data' => array()); 22 | 23 | $instance = csfmanager::getInstance(); 24 | 25 | $output['data']['servers'] = array(); 26 | 27 | $sql = "SELECT * 28 | FROM tblservers 29 | WHERE hostname != '' 30 | ORDER BY hostname ASC"; 31 | $result = mysql_query($sql); 32 | 33 | while($server_details = mysql_fetch_assoc($result)) 34 | { 35 | $output['data']['servers'][$server_details['id']] = array_merge(array('selected' => in_array($server_details['id'], explode(',', $instance->getConfig('servers'))) ? true : false), $server_details); 36 | } 37 | mysql_free_result($result); 38 | 39 | return $output; 40 | } 41 | 42 | public function save() 43 | { 44 | global $cc_encryption_hash, $instance; 45 | 46 | $output = $this->_default(); 47 | $output['success'] = false; 48 | 49 | $instance = csfmanager::getInstance(); 50 | 51 | $config_values = csfmanager::request_var('config', array()); 52 | 53 | if(is_array($config_values) && sizeof($config_values)) 54 | { 55 | foreach($config_values as $config_name => $config_value) 56 | { 57 | $current_value = $instance->getConfig($config_name, null); 58 | 59 | if(!isset($current_value)) continue; 60 | 61 | if($config_name == 'allowlength') $config_value = intval($config_value); 62 | if($config_name == 'allowlength_type') $config_value = in_array($config_value, array('seconds','minutes','hours','days')) ? $config_value : 'days'; 63 | 64 | $instance->setConfig($config_name, $config_value); 65 | } 66 | 67 | $selectedservers = csfmanager::request_var('selectedservers', array()); 68 | 69 | if(is_array($selectedservers) && sizeof($selectedservers)) 70 | { 71 | $newservers = array(); 72 | 73 | foreach($selectedservers as $server_id) 74 | { 75 | if(isset($output['data']['servers'][$server_id])) $newservers[] = $server_id; 76 | } 77 | 78 | $instance->setConfig('servers', (sizeof($newservers) ? implode(',', $newservers) : '')); 79 | } 80 | else 81 | { 82 | $instance->setConfig('servers', ''); 83 | } 84 | } 85 | 86 | $output['success'] = true; 87 | $output['message'] = $instance->lang('chagessaved'); 88 | 89 | return $output; 90 | } 91 | } 92 | 93 | ?> --------------------------------------------------------------------------------