Skip to content

Commit

Permalink
Properly merge 20942's httpd.c and implement kludges when necessary (…
Browse files Browse the repository at this point in the history
…due to mismatched binary blobs)
  • Loading branch information
RMerl committed Jun 19, 2018
1 parent 4284a11 commit 7fc9bf4
Showing 1 changed file with 69 additions and 75 deletions.
144 changes: 69 additions & 75 deletions release/src/router/httpd/httpd.c
Original file line number Diff line number Diff line change
Expand Up @@ -813,6 +813,7 @@ int wave_handle_flag(char *url)
}
#endif

int auto_set_lang = 0; //Prevent to check language every request
static void
handle_request(void)
{
Expand Down Expand Up @@ -874,96 +875,87 @@ handle_request(void)
break;
}
#ifdef TRANSLATE_ON_FLY
else if ( strncasecmp( cur, "Accept-Language:",16) ==0) {
char *p;
struct language_table *pLang;
char lang_buf[256];
memset(lang_buf, 0, sizeof(lang_buf));
alang = &cur[16];
strncpy(lang_buf, alang, sizeof(lang_buf)-1);
p = lang_buf;
while (p != NULL)
{
p = strtok (p, "\r\n ,;");
if (p == NULL) break;
//2008.11 magic{
int i, len=strlen(p);

for (i=0;i<len;++i)
if (isupper(p[i])) {
p[i]=tolower(p[i]);
}

//2008.11 magic}
for (pLang = language_tables; pLang->Lang != NULL; ++pLang)
else if ( strncasecmp( cur, "Accept-Language:", 16) == 0 ) {
#if defined(RTAC5300) // Kludge
if(change_preferred_lang()){
#endif
char *p;
struct language_table *pLang;
char lang_buf[256];
memset(lang_buf, 0, sizeof(lang_buf));
alang = &cur[16];
strncpy(lang_buf, alang, sizeof(lang_buf)-1);
p = lang_buf;
while (p != NULL)
{
if (strcasecmp(p, pLang->Lang)==0)
{
char dictname[32];

if (!check_lang_support(pLang->Target_Lang))
continue;
snprintf(dictname,sizeof(dictname),"%s.dict", pLang->Target_Lang);
if(!check_if_file_exist(dictname))
{
//_dprintf("language(%s) is not supported!!\n", pLang->Target_Lang);
continue;
p = strtok (p, "\r\n ,;");
if (p == NULL) break;
//2008.11 magic{
int i, len=strlen(p);

for (i=0;i<len;++i)
if (isupper(p[i])) {
p[i]=tolower(p[i]);
}
snprintf(Accept_Language,sizeof(Accept_Language),"%s",pLang->Target_Lang);
if (is_firsttime() && nvram_match("ui_Setting", "0")) {
_dprintf("%s", Accept_Language);
nvram_set("ui_Setting", "1");
nvram_set("preferred_lang", Accept_Language);


#if defined(RTCONFIG_TCODE)
if (find_word(nvram_safe_get("rc_support"), "tcode") && nvram_get("territory_code")){
if (!strncmp(nvram_get("territory_code"), "CN", 2))
nvram_set("preferred_lang", "CN");
}
#endif
#ifdef RTCONFIG_DSL_TCLINUX
if(!strcmp(Accept_Language, "CZ") || !strcmp(Accept_Language, "DE")) {
int do_restart = 0;
if( nvram_match("dslx_annex", "4")
&& nvram_match("dsltmp_adslsyncsts", "down")
){
_dprintf("DSL: auto switch to annex b/j\n");
nvram_set("dslx_annex", "6");
do_restart = 1;
}
if(!strcmp(Accept_Language, "DE")
&& nvram_match("dslx_vdsl_profile", "0")) {
_dprintf("DSL: auto switch to 17a multi mode\n");
nvram_set("dslx_vdsl_profile", "1");
do_restart = 1;
}
if (do_restart)
notify_rc("restart_dsl_setting");
//2008.11 magic}
for (pLang = language_tables; pLang->Lang != NULL; ++pLang)
{
if (strcasecmp(p, pLang->Lang)==0)
{
char dictname[32];
_dprintf("handle_request: pLang->Lang = %s\n", pLang->Lang);
if (!check_lang_support(pLang->Target_Lang))
break;

snprintf(dictname,sizeof(dictname),"%s.dict", pLang->Target_Lang);
if(!check_if_file_exist(dictname))
{
break;
}
#endif

snprintf(Accept_Language,sizeof(Accept_Language),"%s",pLang->Target_Lang);
break;
}
}

if (Accept_Language[0] != 0) {
break;
}
p+=strlen(p)+1;
}

if (Accept_Language[0] != 0) {
break;
nvram_set("preferred_lang", Accept_Language);
}
p+=strlen(p)+1;
}

if (Accept_Language[0] == 0) {
// If all language setting of user's browser are not supported, use English.
//printf ("Auto detect language failed. Use English.\n");
strcpy (Accept_Language, "EN");
auto_set_lang = 1; //Prevent to check language every request
#if defined(RTAC5300) // Kludge
}
#endif

// 2008.10 magic {
if (is_firsttime())
nvram_set("preferred_lang", "EN");
// 2008.10 magic }
#ifdef RTCONFIG_DSL_TCLINUX
if(is_firsttime()){
if(nvram_match("preferred_lang", "CZ") || nvram_match("preferred_lang", "DE")) {
int do_restart = 0;
if( nvram_match("dslx_annex", "4")
&& nvram_match("dsltmp_adslsyncsts", "down")
){
_dprintf("DSL: auto switch to annex b/j\n");
nvram_set("dslx_annex", "6");
do_restart = 1;
}
if(nvram_match("preferred_lang", "DE")
&& nvram_match("dslx_vdsl_profile", "0")) {
_dprintf("DSL: auto switch to 17a multi mode\n");
nvram_set("dslx_vdsl_profile", "1");
do_restart = 1;
}
if (do_restart)
notify_rc("restart_dsl_setting");
}
}
#endif
}
#endif
else if ( strncasecmp( cur, "Authorization:", 14 ) == 0 )
Expand Down Expand Up @@ -1531,6 +1523,7 @@ char *config_model_name(char *source, char *find, char *rep){
* <0: invalid parameter.
* >0: lang can be supported.
*/
#if !defined (RTAC5300) // Kludge
int check_lang_support(char *lang)
{
int r = 1;
Expand Down Expand Up @@ -1562,6 +1555,7 @@ int check_lang_support(char *lang)

return r;
}
#endif

#ifdef RTCONFIG_AUTODICT
int
Expand Down

0 comments on commit 7fc9bf4

Please sign in to comment.