sccp_manager
sccp_manager copied to clipboard
HTTP Country Locale Phone Provisioning Issue
Hello All:
I am trying to setup HTTP provisioning instead of TFTP due to decreasing the Cisco phone's boot-up time. I am not sure whether to post this issue here at sccp_manager
or under provision_sccp
, but the two are closely connected to each other.
To start off, I have installed chan_sccp
, sccp_manager
, and provision_sccp
in that order on a FreePBX 16 system with Asterisk 16. The Default Device Language has been set to English_United_States
and the Network Country is United_States
.
The phones can get most of the files (firmware, config, ringtones, wallpapers, etc.) via HTTP requests, but are unable to pull down the country-specific files, specifically the /United_States/g3-tones.xml
file. Between the index.php
file and the index.cnf
file located in the /tftpboot
folder, the Apache webserver is providing a link to the phone to g3-tones.xml
at /tftpboot/locales/languages/United_States/g3-tones.xml
but this should be at /tftpboot/locales/countries/United_States/g3-tones.xml
Here's where it becomes more difficult: sccp_manager
is looking for the language and country files to be located inside the 'locales'
folder of /tftpboot
to generate the device configuration files with, while provision_sccp
is using a 'language'
file (and no 'country'
file) directly on the root of the /tftpboot
folder (not nested within the 'locales'
folder).
No matter what I change in the index.cnf
file, I cannot modify or reroute the countries request (g3-tones.xml
) from the phone to the 'countries'
folder located in the 'locales'
folder. And yet, with debug set to on, the 'countries'
and 'languages'
values are at the correct location of /tftpboot/locales/countries
and /tftpboot/locales/languages
respectively.
I also noticed when setting the default_language
in index.cnf
, the value is /tftpboot/locales/English_United_States
but should be /tftpboot/locales/languages/English_United_States
. Adding a languages/
to the beginning when setting this value seems to correct this.
On the other hand, the TFTP re-writes/map file works as expected and I can always provision the files via TFTP; though much slower since the phones try to connect via HTTP first, then TFTP second.
So far, the current workaround I came up with is to temporarily disable the tftpboot.conf
Apache webserver, forcing the phones to update the initial firmware and config file over TFTP initially, and then re-enable the tftpboot.conf
Apache webserver. It appears that the phones only request the locale information once a firmware has been changed or updated, and I am sure the phones will operate just fine without the locale information downloaded; but it would be nice to have the best of both worlds.
I do realize that there is an open request to port the index.php
file into an Apache mod_rewrite
webserver config file, but is there anyone able to take a look at this issue to get it work with the current index.php/index.cnf
method for now to work with both sccp_manager
and provision_sccp together
?
Below are some config files and debug output if it helps anyone with the issue:
tftpboot.conf
Listen 6970
<VirtualHost *:6970>
DocumentRoot "/tftpboot"
ErrorLog /var/log/httpd/tftp.error.log
CustomLog /var/log/httpd/tftp.access.log combined
<Directory /tftpboot>
Options FollowSymlinks
AllowOverride none
Require all granted
RewriteEngine on
RewriteBase "/"
RewriteCond "/tftpboot/%{REQUEST_FILENAME}" !-f
RewriteCond "/tftpboot/%{REQUEST_FILENAME}" !-d
RewriteRule "(.*)" "index.php?id=$1" [PT,QSA]
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride all
Require all granted
</Directory>
<Location />
Require all granted
</Location>
Alias / "/tftpboot/"
</VirtualHost>
index.cnf
[main]
tftproot = /tftpboot
firmware = firmware
settings = settings
locales = locales
languages = languages
templates = templates
dialplan = dialplan
softkey = softkey
ringtones = ringtones
wallpapers = wallpapers
countries = countries
debug = 1
log = /tftpboot/provision.log
default_language = languages/English_United_States
index.php
<?php
//
// Written by Alex / github.com/PhantomVI
//
$base_path = realpath($_SERVER['DOCUMENT_ROOT']);
$base_config = Array(
'debug' => 1,
'tftproot' => $base_path,
'default_language' => 'English_United_States',
'firmware' => 'firmware', 'settings' => 'settings', 'wallpapers' => 'wallpapers', 'ringtones' => 'ringtones',
'locales' => 'locales', 'countries' => 'countries', 'languages' => 'languages'
);
$base_tree = Array('settings' => 'tftproot', 'wallpapers' => 'tftproot', 'ringtones'=>'tftproot',
'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => 'locales',
'countries' => 'locales', 'default_language' => 'locales');
# Merge config
$ini_array = parse_ini_file('index.cnf');
if (!empty($ini_array)) {
$config = array_merge($base_config, $ini_array);
}
foreach ($base_tree as $key => $value) {
if (!empty($config[$key])) {
if (substr($config[$key],0,1) != "/") {
$config[$key] = $config[$value].'/'.$config[$key];
}
}
}
#$config['tftproot'] = (!empty($config['tftproot'])) ? $config['tftproot'] : '/tftpboot';
# Fixup debug
$print_debug = (!empty($config['debug'])) ? $config['debug'] : 'off';
$print_debug = ($print_debug == 1) ? 'on' : $print_debug;
# Parse request
$request = $_REQUEST;
$req_file = !empty($request['id']) ? $request['id'] : '';
# directory content extensions map
$fw_suffix = array('.bin', '.loads', '.sbn', '.sb2', '.sbin', '.zz', '.zup', '.loads');
//$settings_suffix = array('cnf.xml');
$ringtones_list = array('distinctive.xml', 'ringlist.xml','distinctiveringlist.xml');
$ringtones_suffix = array('.raw', '.pcm', '.rwb');
$locale_list = array('-dictionary.', 'dictionary-ext.', '-dictionary.utf-8.', '-kate.xml', '-font.xml', '-font.dat','-tones.xml',
'be-sccp.jar', 'tc-sccp.jar', 'td-sccp.jar', 'ipc-sccp.jar', 'mk-sccp.jar', '_locale.loads', 'i-button-help.xml',
'tc-sip.jar', 'td-sipp.jar');
# Show debug output
if ($print_debug == 'on') {
print_r("<br> Config:<pre>");
print_r($config);
print("</pre>");
print_r("<br> Request:<br><pre>");
print_r($request);
print("</pre>");
}
# Start parsing the request
$req_file_full_path = '' ;
if (!empty($req_file)) {
$signed = FALSE;
$req_data_ar = explode('/', $req_file);
$req_data_len = count($req_data_ar) - 1;
$orig_req_file_name = end($req_data_ar);
$req_file_name = $orig_req_file_name;
if (strpos('.sgn;', strtolower($orig_req_file_name).';') !== FALSE) { // handle signed files
$signed = TRUE;
$req_file_name = basename($orig_req_file_name, '.sgn'); // strip signed part
}
if (file_exists($config['tftproot'].'/'.$req_file_name)) // prevent "/../...//" browsing - (eliminate back door)
{
$req_file_full_path = $config['tftproot'].'/'.$req_file_name;
}
else
{
$tmp_file = explode('.', $req_file_name);
if (strpos_array($req_file_name, $fw_suffix,'any') !== FALSE) { // Firmware file was requested
$firmware_list = find_all_files($config['firmware']);
$pos2 = strpos_array($firmware_list, $req_file_name, 'any'); // case unsensitive
if ($pos2 !== FALSE) { // Request Firmware
$req_file_full_path = $firmware_list[$pos2];
}
if ($print_debug == 'on'){ print_r('<br>Requested Firmware: '. $req_file_full_path. '<br>');}
}
else
{
$tmp_file = '';
//if (strpos_array($req_file_name, $settings_suffix, 'any') !== FALSE) { // Request Settings
if (strpos(strtolower($req_file_name), '.cnf.xml') !== FALSE) { // Request Settings
$tmp_file = $config['settings'].'/'.$req_file_name;
}
else if (strpos(strtolower($req_file), 'desktops/') !== FALSE) { // Request Wallpapers
$tmp_file = $config['wallpapers'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_file_name;
}
else if (strpos_array($ringtones_list, $req_file_name, 'any') !== FALSE) { // Request RingTones
$tmp_file = $config['ringtones'].'/'.$req_file_name;
if (!file_exists($tmp_file)) {
$tmp_file = $config['ringtones'].'/ringlist.xml';
}
}
else if(strpos_array($req_file_name, $ringtones_suffix,'any') !== FALSE) { // Firmware file was requested
$tmp_file = $config['ringtones'].'/'.$req_file_name;
}
else if (strpos_array($req_file, $locale_list, 'any') !== FALSE) { // Request Languages
if (!empty($req_data_ar[$req_data_len-1])) {
$tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_file_name;
} else {
$tmp_file = $config['default_language'].'/'. $req_file_name;
}
}
/*
else if (strpos(strtolower($req_file), '-tones.xml') !== FALSE) { // Request Countries
$tmp_file = $config['countries'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
}
else if (strpos(strtolower($req_file), '-dictionary.') !== FALSE) { // Request Countries
$tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
}
else if (strpos_array($req_file, $locale_list, 'any') !== FALSE) { // Request Languages
$tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
}
else if (strpos(strtolower($req_file), '-dictionary.jar') !== FALSE) { // Request Countries
$tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
}
*/
if ($print_debug == 'on'){ print_r('<br>File : '. $orig_req_file_name. ' not found.<br>');}
if (empty($tmp_file)) {
if (!empty($config['log'])) { to_log(array('GET ('.$req_file.'):'.$orig_req_file_name, 'no match found'),'E',$config['log']); }
header("HTTP/1.0 404 Not Found");
die('ERROR: no match found.');
}
$req_file_full_path = $tmp_file;
}
}
if (!empty($config['log'])) { to_log(array('GET ('.$req_file.') :'.$orig_req_file_name, 'Remap :'.$req_file_full_path),'i',$config['log']); }
if (!empty($req_file_full_path)) {
if ($signed) {
$req_file_full_path .= '.sgn';
}
if (!file_exists($req_file_full_path)) {
header("HTTP/1.0 404 Not Found");
die('Could not find:'. $req_file_full_path);
}
if ($print_debug == 'on'){ print_r('<br>Returning: '. $req_file_full_path. '<br>');}
file_force_download($req_file_full_path);
}
}
/*
* Helper functiosn
*/
function file_force_download($file) {
if (file_exists($file)) {
if (ob_get_level()) {
ob_end_clean();
}
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
if ($fd = fopen($file, 'rb')) {
while (!feof($fd)) {
print fread($fd, 1024);
}
fclose($fd);
}
exit;
}
}
/*
* Founds any string from array in array
*/
function strpos_array($haystack, $needles, $mode='any') {
if (is_array($needles)) {
foreach ($needles as $str) {
$pos = strpos_array($haystack, $str, $mode);
if ($pos !== FALSE) {
return $pos;
}
}
} else {
if (is_array($haystack)) {
foreach ($haystack as $key => $subtr) {
$pos = strpos_array($subtr, $needles, $mode);
if ($pos !== FALSE) {
return $key;
}
}
return FALSE;
} else {
if ($mode == 'any') {
return strpos(strtolower($haystack), strtolower($needles));
} else {
if ($mode == 'full') {
if ($haystack == $needles) {
return 0;
} else {
return FALSE;
}
} else {
return strpos($haystack, $needles);
}
}
}
}
return FALSE;
}
function to_log($text, $level='i', $file) {
switch (strtolower($level)) {
case 'e':
case 'error':
$level='ERROR';
break;
case 'i':
case 'info':
$level='INFO';
break;
case 'd':
case 'debug':
$level='DEBUG';
break;
default:
$level='INFO';
}
if (is_array($text)) {
$to_log = '';
foreach ($text as $value) {
$to_log .= $value."\t";
}
} else {
$to_log .= $text;
}
$_txt = date('d.m.Y h:i:s')."\t[".$level."]\t ".$to_log."\n";
if (empty($file)) {
error_log($_txt, 0);
} else {
error_log($_txt, 3, $file);
}
}
function find_all_files($dir, $file_mask=null, $mode='full'){
$result = NULL;
if (empty($dir) || (!file_exists($dir))) {
return $result;
}
$root = scandir($dir);
foreach($root as $value) {
if($value === '.' || $value === '..') {continue;}
if(is_file("$dir/$value")) {
$filter = FALSE;
if (!empty($file_mask)) {
if (is_array($file_mask)) {
foreach ($file_mask as $k){
if (strpos(strtolower($value), strtolower($k)) !== FALSE) {$filter = true;}
}
} else {
if (strpos(strtolower($value), strtolower($file_mask)) !== FALSE) {$filter = true;}
}
} else {$filter = true;}
if ($filter) {
if ($mode=='fileonly'){
$result[]="$value";
} else {
$result[]="$dir/$value";
}
} else {$result[]=null;}
continue;
}
$sub_fiend = find_all_files("$dir/$value", $file_mask, $mode);
if (!empty($sub_fiend)) {
foreach($sub_fiend as $sub_value) {
if (!empty($sub_value)) {
$result[]=$sub_value;
}
}
}
}
return $result;
}
/var/log/httpd/tftp.access.log
10.98.1.5 - - [28/Mar/2022:11:30:19 -0400] "GET /term61.default.loads HTTP/1.1" 200 648 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:20 -0400] "GET /jar41sccp.9-4-2ES26.sbn HTTP/1.1" 200 1630052 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:26 -0400] "GET /cnu41.9-4-2ES26.sbn HTTP/1.1" 200 556833 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:29 -0400] "GET /apps41.9-4-2ES26.sbn HTTP/1.1" 200 3157527 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:40 -0400] "GET /dsp41.9-4-2ES26.sbn HTTP/1.1" 200 562693 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:42 -0400] "GET /cvm41sccp.9-4-2ES26.sbn HTTP/1.1" 200 2219477 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /CTLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /ITLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /ITLFile.tlv HTTP/1.1" 404 666 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:26 -0400] "GET /SEP001E4A93748B.cnf.xml HTTP/1.1" 200 3373 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:54 -0400] "GET /SCCP41.9-4-2SR3-1S.loads HTTP/1.1" 200 652 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:57 -0400] "GET /jar41sccp.9-4-2ES26.sbn HTTP/1.1" 200 1630052 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:04 -0400] "GET /cnu41.9-4-2ES26.sbn HTTP/1.1" 200 556833 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:08 -0400] "GET /apps41.9-4-2ES26.sbn HTTP/1.1" 200 3157527 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:20 -0400] "GET /dsp41.9-4-2ES26.sbn HTTP/1.1" 200 562693 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:25 -0400] "GET /cvm41sccp.9-4-2ES26.sbn HTTP/1.1" 200 2219477 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /CTLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /ITLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /ITLFile.tlv HTTP/1.1" 404 666 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /SEP001E4A93748B.cnf.xml HTTP/1.1" 200 3373 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:51 -0400] "GET /English_United_States/mk-sccp.jar HTTP/1.1" 200 58726 "-" "-"
-->10.98.1.5 - - [28/Mar/2022:11:34:53 -0400] "GET /United_States/g3-tones.xml HTTP/1.1" 404 729 "-" "-"<--
/tftpboot/provision.log
28.03.2022 03:25:03 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:25:03 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:25:03 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:25:03 [INFO] GET (ToveLow-Habits.raw) :ToveLow-Habits.raw Remap :/tftpboot/ringtones/ToveLow-Habits.raw
28.03.2022 03:25:04 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:27:14 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:27:15 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:27:15 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:27:15 [INFO] GET (ToveLow-Habits.raw) :ToveLow-Habits.raw Remap :/tftpboot/ringtones/ToveLow-Habits.raw
28.03.2022 03:27:16 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:28:26 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:26 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:26 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:28:26 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:28:28 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:28:29 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:28:32 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:30:19 [INFO] GET (term61.default.loads) :term61.default.loads Remap :/tftpboot/firmware/7941/term61.default.loads
28.03.2022 03:30:20 [INFO] GET (jar41sccp.9-4-2ES26.sbn) :jar41sccp.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/jar41sccp.9-4-2ES26.sbn
28.03.2022 03:30:26 [INFO] GET (cnu41.9-4-2ES26.sbn) :cnu41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/cnu41.9-4-2ES26.sbn
28.03.2022 03:30:29 [INFO] GET (apps41.9-4-2ES26.sbn) :apps41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/apps41.9-4-2ES26.sbn
28.03.2022 03:30:40 [INFO] GET (dsp41.9-4-2ES26.sbn) :dsp41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/dsp41.9-4-2ES26.sbn
28.03.2022 03:30:42 [INFO] GET (cvm41sccp.9-4-2ES26.sbn) :cvm41sccp.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/cvm41sccp.9-4-2ES26.sbn
28.03.2022 03:32:25 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:32:25 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:32:25 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:32:26 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:32:54 [INFO] GET (SCCP41.9-4-2SR3-1S.loads) :SCCP41.9-4-2SR3-1S.loads Remap :/tftpboot/firmware/7941/SCCP41.9-4-2SR3-1S.loads
28.03.2022 03:32:57 [INFO] GET (jar41sccp.9-4-2ES26.sbn) :jar41sccp.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/jar41sccp.9-4-2ES26.sbn
28.03.2022 03:33:04 [INFO] GET (cnu41.9-4-2ES26.sbn) :cnu41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/cnu41.9-4-2ES26.sbn
28.03.2022 03:33:08 [INFO] GET (apps41.9-4-2ES26.sbn) :apps41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/apps41.9-4-2ES26.sbn
28.03.2022 03:33:20 [INFO] GET (dsp41.9-4-2ES26.sbn) :dsp41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/dsp41.9-4-2ES26.sbn
28.03.2022 03:33:25 [INFO] GET (cvm41sccp.9-4-2ES26.sbn) :cvm41sccp.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/cvm41sccp.9-4-2ES26.sbn
28.03.2022 03:34:43 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:34:43 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:34:43 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:34:43 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:34:51 [INFO] GET (English_United_States/mk-sccp.jar) :mk-sccp.jar Remap :/tftpboot/locales/languages/English_United_States/mk-sccp.jar
28.03.2022 03:34:53 [INFO] GET (United_States/g3-tones.xml) :g3-tones.xml Remap :/tftpboot/locales/languages/United_States/g3-tones.xml
28.03.2022 03:36:14 [INFO] GET (English_United_States/mk-sccp.jar) :mk-sccp.jar Remap :/tftpboot/locales/languages/English_United_States/mk-sccp.jar
28.03.2022 03:36:31 [INFO] GET (United_States/g3-tones.xml) :g3-tones.xml Remap :/tftpboot/locales/languages/United_States/g3-tones.xml
28.03.2022 03:36:31 [ERROR] GET (favicon.ico):favicon.ico no match found
28.03.2022 03:36:35 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:36:35 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:36:35 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:36:35 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:36:40 [INFO] GET (United_States/g3-tones.xml) :g3-tones.xml Remap :/tftpboot/locales/languages/United_States/g3-tones.xml
28.03.2022 04:37:23 [INFO] GET (United_States/g3-tones.xml) :g3-tones.xml Remap :/tftpboot/locales/languages/United_States/g3-tones.xml
/var/log/messages
Mar 28 11:38:42 freepbx in.tftpd[2080]: RRQ from 10.98.1.5 filename term61.default.loads remapped to firmware/7941/term61.default.loads
Mar 28 11:38:42 freepbx in.tftpd[2080]: Client 10.98.1.5 finished term61.default.loads
Mar 28 11:38:44 freepbx in.tftpd[2081]: RRQ from 10.98.1.5 filename jar41sccp.9-4-2ES26.sbn remapped to firmware/7941/jar41sccp.9-4-2ES26.sbn
Mar 28 11:38:47 freepbx in.tftpd[2081]: Client 10.98.1.5 finished jar41sccp.9-4-2ES26.sbn
Mar 28 11:38:52 freepbx in.tftpd[2082]: RRQ from 10.98.1.5 filename cnu41.9-4-2ES26.sbn remapped to firmware/7941/cnu41.9-4-2ES26.sbn
Mar 28 11:38:53 freepbx in.tftpd[2082]: Client 10.98.1.5 finished cnu41.9-4-2ES26.sbn
Mar 28 11:38:56 freepbx in.tftpd[2083]: RRQ from 10.98.1.5 filename apps41.9-4-2ES26.sbn remapped to firmware/7941/apps41.9-4-2ES26.sbn
Mar 28 11:39:02 freepbx in.tftpd[2083]: Client 10.98.1.5 finished apps41.9-4-2ES26.sbn
Mar 28 11:39:10 freepbx in.tftpd[2119]: RRQ from 10.98.1.5 filename dsp41.9-4-2ES26.sbn remapped to firmware/7941/dsp41.9-4-2ES26.sbn
Mar 28 11:39:11 freepbx in.tftpd[2119]: Client 10.98.1.5 finished dsp41.9-4-2ES26.sbn
Mar 28 11:39:14 freepbx in.tftpd[2120]: RRQ from 10.98.1.5 filename cvm41sccp.9-4-2ES26.sbn remapped to firmware/7941/cvm41sccp.9-4-2ES26.sbn
Mar 28 11:39:18 freepbx in.tftpd[2120]: Client 10.98.1.5 finished cvm41sccp.9-4-2ES26.sbn
Mar 28 11:41:05 freepbx in.tftpd[2244]: RRQ from 10.98.1.5 filename CTLSEP001E4A93748B.tlv remapped to settings/CTLSEP001E4A93748B.tlv
Mar 28 11:41:05 freepbx in.tftpd[2244]: Client 10.98.1.5 File not found settings/CTLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2245]: RRQ from 10.98.1.5 filename ITLSEP001E4A93748B.tlv remapped to settings/ITLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2245]: Client 10.98.1.5 File not found settings/ITLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2246]: RRQ from 10.98.1.5 filename ITLFile.tlv remapped to settings/ITLFile.tlv
Mar 28 11:41:06 freepbx in.tftpd[2246]: Client 10.98.1.5 File not found settings/ITLFile.tlv
Mar 28 11:41:06 freepbx in.tftpd[2247]: RRQ from 10.98.1.5 filename SEP001E4A93748B.cnf.xml remapped to settings/SEP001E4A93748B.cnf.xml
Mar 28 11:41:06 freepbx in.tftpd[2247]: Client 10.98.1.5 finished SEP001E4A93748B.cnf.xml
Mar 28 11:41:34 freepbx in.tftpd[2254]: RRQ from 10.98.1.5 filename SCCP41.9-4-2SR3-1S.loads remapped to firmware/7941/SCCP41.9-4-2SR3-1S.loads
Mar 28 11:41:34 freepbx in.tftpd[2254]: Client 10.98.1.5 finished SCCP41.9-4-2SR3-1S.loads
Mar 28 11:41:37 freepbx in.tftpd[2255]: RRQ from 10.98.1.5 filename jar41sccp.9-4-2ES26.sbn remapped to firmware/7941/jar41sccp.9-4-2ES26.sbn
Mar 28 11:41:40 freepbx in.tftpd[2255]: Client 10.98.1.5 finished jar41sccp.9-4-2ES26.sbn
Mar 28 11:41:47 freepbx in.tftpd[2257]: RRQ from 10.98.1.5 filename cnu41.9-4-2ES26.sbn remapped to firmware/7941/cnu41.9-4-2ES26.sbn
Mar 28 11:41:48 freepbx in.tftpd[2257]: Client 10.98.1.5 finished cnu41.9-4-2ES26.sbn
Mar 28 11:41:52 freepbx in.tftpd[2258]: RRQ from 10.98.1.5 filename apps41.9-4-2ES26.sbn remapped to firmware/7941/apps41.9-4-2ES26.sbn
Mar 28 11:41:58 freepbx in.tftpd[2258]: Client 10.98.1.5 finished apps41.9-4-2ES26.sbn
Mar 28 11:42:09 freepbx in.tftpd[2294]: RRQ from 10.98.1.5 filename dsp41.9-4-2ES26.sbn remapped to firmware/7941/dsp41.9-4-2ES26.sbn
Mar 28 11:42:10 freepbx in.tftpd[2294]: Client 10.98.1.5 finished dsp41.9-4-2ES26.sbn
Mar 28 11:42:14 freepbx in.tftpd[2295]: RRQ from 10.98.1.5 filename cvm41sccp.9-4-2ES26.sbn remapped to firmware/7941/cvm41sccp.9-4-2ES26.sbn
Mar 28 11:42:18 freepbx in.tftpd[2295]: Client 10.98.1.5 finished cvm41sccp.9-4-2ES26.sbn
Mar 28 11:43:32 freepbx in.tftpd[2331]: RRQ from 10.98.1.5 filename CTLSEP001E4A93748B.tlv remapped to settings/CTLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2331]: Client 10.98.1.5 File not found settings/CTLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2332]: RRQ from 10.98.1.5 filename ITLSEP001E4A93748B.tlv remapped to settings/ITLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2332]: Client 10.98.1.5 File not found settings/ITLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2333]: RRQ from 10.98.1.5 filename ITLFile.tlv remapped to settings/ITLFile.tlv
Mar 28 11:43:32 freepbx in.tftpd[2333]: Client 10.98.1.5 File not found settings/ITLFile.tlv
Mar 28 11:43:33 freepbx in.tftpd[2334]: RRQ from 10.98.1.5 filename SEP001E4A93748B.cnf.xml remapped to settings/SEP001E4A93748B.cnf.xml
Mar 28 11:43:33 freepbx in.tftpd[2334]: Client 10.98.1.5 finished SEP001E4A93748B.cnf.xml
Mar 28 11:43:42 freepbx in.tftpd[2341]: RRQ from 10.98.1.5 filename English_United_States/mk-sccp.jar remapped to locales/languages/English_United_States/mk-sccp.jar
Mar 28 11:43:43 freepbx in.tftpd[2341]: Client 10.98.1.5 finished English_United_States/mk-sccp.jar
Mar 28 11:43:45 freepbx in.tftpd[2342]: RRQ from 10.98.1.5 filename United_States/g3-tones.xml remapped to locales/countries/United_States/g3-tones.xml
Mar 28 11:43:45 freepbx in.tftpd[2342]: Client 10.98.1.5 finished United_States/g3-tones.xml
Thank you everyone :)
Also, here is my server info screen: