Просмотр исходного кода

radius ldap 网页 与登录逻辑!!!

liyi месяцев назад: 9
Родитель
Сommit
af56cf6a87

+ 0 - 1
cust_data/web/unique/css/chunk-2085c22a.3ba553ce.css

@@ -1 +0,0 @@
-.row-item[data-v-60ce012e]{display:-webkit-box;line-height:40px}.row-item-title[data-v-60ce012e]{font-weight:700;padding-right:10px}.row-item-content[data-v-60ce012e]{width:50%;white-space:nowrap;word-wrap:normal;word-break:keep-all;text-overflow:ellipsis;overflow:hidden}.disabledEdit[data-v-60ce012e]{.el-form-item__content{pointer-events:none}}

+ 1 - 0
cust_data/web/unique/css/chunk-2e5ccca8.29fb2160.css

@@ -0,0 +1 @@
+.row-item[data-v-19d0e182]{display:-webkit-box;line-height:40px}.row-item-title[data-v-19d0e182]{font-weight:700;padding-right:10px}.row-item-content[data-v-19d0e182]{width:50%;white-space:nowrap;word-wrap:normal;word-break:keep-all;text-overflow:ellipsis;overflow:hidden}.disabledEdit[data-v-19d0e182]{.el-form-item__content{pointer-events:none}}

+ 1 - 0
cust_data/web/unique/css/chunk-db8ddfe8.5a978ad8.css

@@ -0,0 +1 @@
+.row-item[data-v-0a8a2a36]{display:-webkit-box;line-height:40px}.row-item-title[data-v-0a8a2a36]{font-weight:700;padding-right:10px}.row-item-content[data-v-0a8a2a36]{width:50%;white-space:nowrap;word-wrap:normal;word-break:keep-all;text-overflow:ellipsis;overflow:hidden}.disabledEdit[data-v-0a8a2a36]{.el-form-item__content{pointer-events:none}}

+ 5 - 1
cust_data/web/unique/i18n/i18n_deguo.js

@@ -496,6 +496,10 @@ const i18n_deguo= {
   "gjsj":"Alarmzeit(s)",
   "radiussz":"Radius-Konfiguration",
   "bhyh":"Einwahlbenutzer",
-  "bhmm":"Wähltastencode"
+  "bhmm":"Wähltastencode",
+
+  "radiusms":"Schlüssel",
+  "rzfwq":"Authentifizierungsserver",
+  "ldappz":"LDAP-Konfiguration"
 
 }

+ 5 - 1
cust_data/web/unique/i18n/i18n_eguo.js

@@ -497,5 +497,9 @@ const i18n_eguo={
   "gjsj":"Время оповещения(s)",
   "radiussz":"Конфигурация радиуса",
   "bhyh":"абонент коммутируемого доступа",
-  "bhmm":"код набора"
+  "bhmm":"код набора",
+
+  "radiusms":"ключ",
+  "rzfwq":"сервер аутентификации",
+  "ldappz":"Конфигурация LDAP"
 }

+ 5 - 1
cust_data/web/unique/i18n/i18n_faguo.js

@@ -496,6 +496,10 @@ const i18n_faguo={
   "gjsj":"Temps d'alerte(s)",
   "radiussz":"Configuration du rayon",
   "bhyh":"utilisateur de numérotation",
-  "bhmm":"Code de numérotation"
+  "bhmm":"Code de numérotation",
+
+  "radiusms":"clé secrète",
+  "rzfwq":"Serveur d'authentification",
+  "ldappz":"Configuration LDAP"
 
 }

+ 5 - 1
cust_data/web/unique/i18n/i18n_putaoya.js

@@ -496,7 +496,11 @@ const i18n_putaoya={
   "gjsj":"Horário de alerta(s)",
   "radiussz":"Configuração de Raio",
   "bhyh":"utilizador de discagem",
-  "bhmm":"código de discagem"
+  "bhmm":"código de discagem",
+
+  "radiusms":"chave secreta",
+  "rzfwq":"servidor de autenticação",
+  "ldappz":"Configuração LDAP"
 
 
 

+ 5 - 1
cust_data/web/unique/i18n/i18n_riben.js

@@ -497,7 +497,11 @@ const i18n_riben={
   "gjsj":"アラーム時間(s)",
   "radiussz":"Radius設定",
   "bhyh":"ダイヤルアップユーザー",
-  "bhmm":"ダイヤルパスワード"
+  "bhmm":"ダイヤルパスワード",
+
+  "radiusms":"キー",
+  "rzfwq":"認証サーバー",
+  "ldappz":"LDAP設定"
 
 
 }

+ 5 - 1
cust_data/web/unique/i18n/i18n_xibanya.js

@@ -498,6 +498,10 @@ const i18n_xibanya={
 
   "radiussz":"Configuración de Radio",
   "bhyh":"usuario de marcación",
-  "bhmm":"Contraseña de marcación"
+  "bhmm":"Contraseña de marcación",
+
+  "radiusms":"clave secreta",
+  "rzfwq":"servidor de autenticación",
+  "ldappz":"Configuración LDAP"
 
 }

+ 5 - 1
cust_data/web/unique/i18n/i18n_yidali.js

@@ -496,7 +496,11 @@ const i18n_yidali={
   "gjsj":"Orario di allarme(s)",
   "radiussz":"Configurazione del raggio",
   "bhyh":"utente di dial-up",
-  "bhmm":"Password di chiamata"
+  "bhmm":"Password di chiamata",
+
+  "radiusms":"chiave",
+  "rzfwq":"server di autenticazione",
+  "ldappz":"Configurazione LDAP"
 
 
 

+ 5 - 1
cust_data/web/unique/i18n/i18n_yingguo.js

@@ -497,5 +497,9 @@ const i18n_yingguo={
   "gjsj":"Alarm Time(s)",
   "radiussz":"Radius configuration",
   "bhyh":"dial-up user",
-  "bhmm":"dial-up password"
+  "bhmm":"dial-up password",
+
+  "radiusms":"secret key",
+  "rzfwq":"authentication server",
+  "ldappz":"LDAP configuration"
 }

+ 5 - 1
cust_data/web/unique/i18n/i18n_zh_CN.js

@@ -497,7 +497,11 @@ const i18n_zh_CN = {
   "gjsj1":"告警时间(s)",
   "radiussz":"Radius配置",
   "bhyh":"拨号用户",
-  "bhmm":"拨号密码"
+  "bhmm":"拨号密码",
+  "radiusms":"密匙",
+  "rzfwq":"认证服务器",
+  "ldappz":"LDAP配置"
+
 
 
 

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
cust_data/web/unique/index.html


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
cust_data/web/unique/js/app.d6e00506.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
cust_data/web/unique/js/chunk-2085c22a.df9b55b1.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
cust_data/web/unique/js/chunk-2e5ccca8.010d9c61.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
cust_data/web/unique/js/chunk-db8ddfe8.7629ce7f.js


+ 4 - 4
output/t113i/pack_dir/etc/radiusclient/radiusclient.conf

@@ -8,11 +8,11 @@
 auth_order	radius,local
 
 # maximum login tries a user has
-login_tries	4
+login_tries	2
 
 # timeout for all login tries
 # if this time is exceeded the user is kicked out
-login_timeout	60
+login_timeout	5
 
 # name of the nologin file which when it exists disables logins.
 # it may be extended by the ttyname which will result in
@@ -64,10 +64,10 @@ mapfile		/etc/radiusclient/port-id-map
 default_realm
 
 # time to wait for a reply from the RADIUS server
-radius_timeout	10
+radius_timeout	3
 
 # resend request this many times before trying the next server
-radius_retries	3
+radius_retries	2
 
 # The length of time in seconds that we skip a nonresponsive RADIUS
 # server for transaction requests.  Server(s) being in the "dead" state

+ 291 - 22
pro/src/appweb_handle.c

@@ -22,6 +22,7 @@
 #include "led.h"
 #include "broadcast.h"
 #include "radius.h"
+#include "elog.h"
 
 #define TOTAL_COUNT 60
 #define FN_MAX  30
@@ -55,6 +56,16 @@ enum {
     FILE_SENSOR_INFO,
 };
 
+#if 1
+    #define LOGE  log_e
+    #define LOGW  log_w
+    #define LOGD  log_d
+#else
+    #define LOGD  printf
+    #define LOGW  printf
+    #define LOGE  printf
+#endif
+
 
 typedef void (*http_fn_t)(void *arg);
 typedef struct mg_tls_opts mg_tls_t;
@@ -569,7 +580,7 @@ static void *web_thread(void *arg)
         return NULL;
     }
     //get user info message
-#if 0
+#if 1
     INIT_LIST_HEAD(&_g_User_list.list);
 
     //get current db user infoinfomation
@@ -668,8 +679,219 @@ static void loginFunc(void* conn)
     bool LoginFlag = false;
 
     // 查询用户信息
-     UserInfo User_list;
-     INIT_LIST_HEAD(&User_list.list);
+    UserInfo User_list;
+    INIT_LIST_HEAD(&User_list.list);
+    //UserInfo *_UserInfoTemp;
+    //uint8_t db_mememer_flag = 0;
+    // list_for_each_entry(_UserInfoTemp, &_g_User_list.list, list)
+    // {
+    //     if (strcmp(_UserInfoTemp->userName,_newUserLogin->user_name)==0 && strcmp(_UserInfoTemp->userPW,_newUserLogin->user_password)==0)
+    //     {
+    //         LoginFlag=true;
+    //         //_GlobalUserInfoNew = *_UserInfoTemp;
+    //         break;
+    //     }
+    // }
+    //check is or not database member
+    UserInfo user={0};
+    int ret = dev_get_sigle_user_info(__globalDeviceManage.db,&user,_newUserLogin->user_name,_newUserLogin->user_password);
+    if(ret) 
+    {
+        //database is not menber you need auth
+        if(__globalDeviceManage._globalDevInfo.misc.radius)
+        {
+            char temp[256] = {0};
+            sprintf(temp,"radlogin -f /etc/radiusclient/radiusclient.conf -u %s -p %s",_newUserLogin->user_name,_newUserLogin->user_password);
+            ret = system(temp);
+            if(ret)
+            {
+                if(__globalDeviceManage._globalDevInfo.ldap.ldap)
+                {
+                    memset(temp,0,sizeof(temp));
+                    sprintf(temp,"ldapwhoami -x -D \"%s\" -H ldap://%s -w %s",_newUserLogin->user_name,__globalDeviceManage._globalDevInfo.ldap.ldip_server,_newUserLogin->user_password);
+                    ret = system(temp);
+                    if(ret)
+                    {
+                        //delete
+                        UserInfo *node;
+                        UserInfo *next;
+                        printf("delate a user!!!\n");
+
+                        list_for_each_entry_safe(node, next, &_g_User_list.list, list)
+                        {
+                            if(strcmp(node->userName,_newUserLogin->user_name) == 0 && strcmp(node->userPW,_newUserLogin->user_password) == 0)
+                            {
+                                list_del(&node->list);
+                                free(node);
+                                break;
+                            }
+                        }     
+                        LoginFlag = false;           
+                    }else
+                    {
+                        UserInfo *_UserInfoTemp = NULL;
+                        uint8_t ldap_find_flag = 0;
+                        list_for_each_entry(_UserInfoTemp, &_g_User_list.list, list)
+                        {
+                            if (strcmp(_UserInfoTemp->userName,_newUserLogin->user_name)==0 && strcmp(_UserInfoTemp->userPW,_newUserLogin->user_password)==0)
+                            {
+                                ldap_find_flag = 1;
+                                break;
+                            }
+                        }  
+                        if(ldap_find_flag != 1)
+                        {
+                            //create a user;
+                            _UserInfoTemp = (UserInfo *)malloc(sizeof(UserInfo));
+                            memset(_UserInfoTemp,0,sizeof(UserInfo));
+                            _UserInfoTemp->product_id = __globalDeviceManage._globalDevInfo.product.id;
+                            _UserInfoTemp->roleID = 1;
+                            memcpy(_UserInfoTemp->nickName,"ldap auth",strlen("ldap auth"));
+                            memcpy(_UserInfoTemp->userName,_newUserLogin->user_name,strlen(_newUserLogin->user_name));
+                            memcpy(_UserInfoTemp->userPW,_newUserLogin->user_password,strlen(_newUserLogin->user_password));                             
+                            list_add_tail(&_UserInfoTemp->list, &_g_User_list.list);
+                        }
+                        LoginFlag = true;
+                        _GlobalUserInfoNew = *_UserInfoTemp;   
+                    }
+                }else
+                {
+                    UserInfo *node;
+                    UserInfo *next;
+                    printf("delate a user!!!\n");
+
+                    list_for_each_entry_safe(node, next, &_g_User_list.list, list)
+                    {
+                        if(strcmp(node->userName,_newUserLogin->user_name) == 0 && strcmp(node->userPW,_newUserLogin->user_password) == 0)
+                        {
+                            list_del(&node->list);
+                            free(node);
+                            break;
+                        }
+                    }     
+                    LoginFlag = false;                       
+                }
+            }else{
+                UserInfo *_UserInfoTemp = NULL;
+                uint8_t radius_find_flag = 0;
+                list_for_each_entry(_UserInfoTemp, &_g_User_list.list, list)
+                {
+                    if (strcmp(_UserInfoTemp->userName,_newUserLogin->user_name)==0 && strcmp(_UserInfoTemp->userPW,_newUserLogin->user_password)==0)
+                    {
+                        radius_find_flag = 1;
+                        break;
+                    }
+                }  
+                if(radius_find_flag != 1)
+                {
+                    //create a user;
+                    _UserInfoTemp = (UserInfo *)malloc(sizeof(UserInfo));
+                    memset(_UserInfoTemp,0,sizeof(UserInfo));
+                    _UserInfoTemp->product_id = __globalDeviceManage._globalDevInfo.product.id;
+                    _UserInfoTemp->roleID = 1;
+                    memcpy(_UserInfoTemp->nickName,"radius auth",strlen("radius auth"));
+                    memcpy(_UserInfoTemp->userName,_newUserLogin->user_name,strlen(_newUserLogin->user_name));
+                    memcpy(_UserInfoTemp->userPW,_newUserLogin->user_password,strlen(_newUserLogin->user_password));                             
+                    list_add_tail(&_UserInfoTemp->list, &_g_User_list.list);
+                }
+                LoginFlag = true;
+                _GlobalUserInfoNew = *_UserInfoTemp;                 
+            }
+        }else if(__globalDeviceManage._globalDevInfo.ldap.ldap)
+        {
+            char temp[256] = {0};
+            memset(temp,0,sizeof(temp));
+            sprintf(temp,"ldapwhoami -x -D \"%s\" -H ldap://%s -w %s",_newUserLogin->user_name,__globalDeviceManage._globalDevInfo.ldap.ldip_server,_newUserLogin->user_password);
+            ret = system(temp);
+            if(ret)
+            {
+                //delete
+                UserInfo *node;
+                UserInfo *next;
+                printf("delete a user!!!\n");
+                list_for_each_entry_safe(node, next, &_g_User_list.list, list)
+                {
+                    if(strcmp(node->userName,_newUserLogin->user_name) == 0 && strcmp(node->userPW,_newUserLogin->user_password) == 0)
+                    {
+                        list_del(&node->list);
+                        free(node);
+                        break;
+                    }
+                }     
+                LoginFlag = false;           
+            }else
+            {
+                UserInfo *_UserInfoTemp = NULL;
+                uint8_t ldap_find_flag = 0;
+                list_for_each_entry(_UserInfoTemp, &_g_User_list.list, list)
+                {
+                    if (strcmp(_UserInfoTemp->userName,_newUserLogin->user_name)==0 && strcmp(_UserInfoTemp->userPW,_newUserLogin->user_password)==0)
+                    {
+                        ldap_find_flag = 1;
+                        break;
+                    }
+                }  
+                if(ldap_find_flag != 1)
+                {
+                    //create a user;
+                    _UserInfoTemp = (UserInfo *)malloc(sizeof(UserInfo));
+                    memset(_UserInfoTemp,0,sizeof(UserInfo));
+                    _UserInfoTemp->product_id = __globalDeviceManage._globalDevInfo.product.id;
+                    _UserInfoTemp->roleID = 1;
+                    memcpy(_UserInfoTemp->nickName,"ldap auth",strlen("ldap auth"));
+                    memcpy(_UserInfoTemp->userName,_newUserLogin->user_name,strlen(_newUserLogin->user_name));
+                    memcpy(_UserInfoTemp->userPW,_newUserLogin->user_password,strlen(_newUserLogin->user_password));                             
+                    list_add_tail(&_UserInfoTemp->list, &_g_User_list.list);
+                }
+                LoginFlag = true;
+                _GlobalUserInfoNew = *_UserInfoTemp;   
+            }
+
+        }else
+        {
+            UserInfo *node;
+            UserInfo *next;
+            printf("delete a user!!!\n");
+            list_for_each_entry_safe(node, next, &_g_User_list.list, list)
+            {
+                if(strcmp(node->userName,_newUserLogin->user_name) == 0 && strcmp(node->userPW,_newUserLogin->user_password) == 0)
+                {
+                    list_del(&node->list);
+                    free(node);
+                    break;
+                }
+            }     
+            LoginFlag = false;              
+        }
+    }else
+    {
+        //database user 
+        UserInfo *_UserInfoTemp;
+        uint8_t db_find_flag = 0;
+        list_for_each_entry(_UserInfoTemp, &_g_User_list.list, list)
+        {
+            if (strcmp(_UserInfoTemp->userName,_newUserLogin->user_name)==0 && strcmp(_UserInfoTemp->userPW,_newUserLogin->user_password)==0)
+            {
+                db_find_flag = 1;
+                break;
+            }
+        }        
+        if(db_find_flag != 1)
+        {
+            //create a user;
+            _UserInfoTemp = (UserInfo *)malloc(sizeof(UserInfo));
+            memcpy(_UserInfoTemp,&user,sizeof(UserInfo));
+            list_add_tail(&_UserInfoTemp->list, &_g_User_list.list);
+        }
+        LoginFlag = true;
+        _GlobalUserInfoNew = *_UserInfoTemp;     
+    }
+
+
+    
+
+
+
 #if 0
     UserInfo *_UserInfoTemp;
     list_for_each_entry(_UserInfoTemp, &_g_User_list.list, list)
@@ -700,28 +922,64 @@ static void loginFunc(void* conn)
                 ret = system(temp);
                 if(ret)
                 {
-                    memset(temp,0,sizeof(temp));
-                    sprintf(temp,"ldapwhoami -x -D \"%s\" -H ldap://%s -w %s",_newUserLogin->user_name,__globalDeviceManage._globalDevInfo.ldap.ldip_server,_newUserLogin->user_password);
-                    ret = system(temp); 
-                    if(ret)
+                    printf("ldap = %d \n",__globalDeviceManage._globalDevInfo.ldap.ldap);
+                    if( __globalDeviceManage._globalDevInfo.ldap.ldap)
                     {
-                        // delete current 
-                        UserInfo * temp;
-                        list_for_each_entry(temp, &_g_User_list.list, list)
+                        memset(temp,0,sizeof(temp));
+                        sprintf(temp,"ldapwhoami -x -D \"%s\" -H ldap://%s -w %s",_newUserLogin->user_name,__globalDeviceManage._globalDevInfo.ldap.ldip_server,_newUserLogin->user_password);
+                        ret = system(temp); 
+                        if(ret)
                         {
-                            if(temp == _UserInfoTemp)
+                            // delete current 
+                            UserInfo * temp;
+                            printf("delate a user!!!\n");
+                            list_for_each_entry(temp, &_g_User_list.list, list)
                             {
-                                list_del(&temp->list);
-                                free(temp);
-                                _UserInfoTemp = NULL;
-                                LoginFlag = false;
+                                if(temp == NULL)
+                                {
+                                    LoginFlag = false;
+                                    break;
+                                }
+
+                                    if(temp == _UserInfoTemp)
+                                    {
+                                        list_del(&temp->list);
+                                        free(temp);
+                                        _UserInfoTemp = NULL;
+                                        LoginFlag = false;
+                                        break;
+                                    }
                             }
-                        }
 
-                    }else
+                        }else
+                        {
+                            _GlobalUserInfoNew = *_UserInfoTemp;
+                        }   
+                    } else
                     {
-                        _GlobalUserInfoNew = *_UserInfoTemp;
-                    }                   
+                        LOGW("delete walllll\n");
+                            UserInfo * temp;
+                            list_for_each_entry(temp, &_g_User_list.list, list)
+                            {
+                                
+                                if(temp == NULL)
+                                {
+                                    LoginFlag = false;
+                                    break;
+                                }
+
+                                    if(temp == _UserInfoTemp)
+                                    {
+                                        
+                                        list_del(&temp->list);
+                                        free(temp);
+                                        
+                                        _UserInfoTemp = NULL;
+                                        LoginFlag = false;
+                                        break;
+                                    }
+                            }
+                    }              
                 }else
                 {
                     _GlobalUserInfoNew = *_UserInfoTemp;
@@ -800,12 +1058,19 @@ static void loginFunc(void* conn)
                 UserInfo * temp;
                 list_for_each_entry(temp, &_g_User_list.list, list)
                 {
+                    if(temp == NULL)
+                    {
+                        LoginFlag = false;
+                        break;
+                    }
+
                     if(temp == _UserInfoTemp)
                     {
                         list_del(&temp->list);
                         free(temp);
                         _UserInfoTemp = NULL;
                         LoginFlag = false;
+                        break;
                     }
                 }
             }else
@@ -893,6 +1158,7 @@ static void loginFunc(void* conn)
 
     // }else
     // {
+#if 0
         if (0 == dev_get_user_info(__globalDeviceManage.db, &User_list))
         {
             UserInfo *_UserInfoTemp = NULL;
@@ -909,7 +1175,7 @@ static void loginFunc(void* conn)
                 }
             }
          }
-
+#endif
     // }
     // UserInfo *_UserInfoTemp = NULL;
     // list_for_each_entry(_UserInfoTemp, &User_list.list, list)
@@ -1027,10 +1293,12 @@ static void getUserRouters(void* conn)
     
     // 根据token获取用户及用户权限
     int nRoleID=3;
-#if 0
+#if 1
     UserInfo *_UserInfoTemp= NULL;
     list_for_each_entry(_UserInfoTemp, &_g_User_list.list, list)
     {
+        if(_UserInfoTemp == NULL)
+            break;
         char *nName = getUserNamebyToken(g_token);
         if (_UserInfoTemp && nName && strcmp(nName,_UserInfoTemp->userName)==0)
         {
@@ -1038,7 +1306,7 @@ static void getUserRouters(void* conn)
             break;
         }
     }
-#endif    
+#else   
 
    if (0 == dev_get_user_info(__globalDeviceManage.db, &User_list) )
     {
@@ -1048,6 +1316,7 @@ static void getUserRouters(void* conn)
                nRoleID = GetRoleIDByUserName(nName,&User_list);
         }
     }
+#endif
  
     SetMenuAuthority(nRoleID);
 

+ 2 - 2
pro/src/common.c

@@ -963,8 +963,8 @@ void SetMenuAuthority(int RoleID)
         _GlobalMenuAuthority.GysbEnabled = true;
         _GlobalMenuAuthority.BroadcastEnable = true;
 #if (CHIP_TYPE == CHIP_T113i)
-        _GlobalMenuAuthority.RadiusEnabled = false;
-        _GlobalMenuAuthority.LdapEnabled = false;
+        _GlobalMenuAuthority.RadiusEnabled = true;
+        _GlobalMenuAuthority.LdapEnabled = true;
 #endif
     }
     // 管理员

+ 1 - 1
pro/src/language_common.c

@@ -479,7 +479,7 @@ const char * language_Radius_setting[LANG_MAX] =
 
 const char * language_Ldap_setting[LANG_MAX] =
 {
-    "Ldap",   
+    "Ldap设置",   
     "Ldap settings",
     "РНастройка радиуса",
     "Réglage du rayon",

+ 72 - 6
pro/src/radius.c

@@ -182,33 +182,74 @@ radius_auth_t get_radius_auth()
 void  set_radius_auth(radius_auth_t *auth)
 {
     char buffer[512] = {0};
+    char temp[300] = {0};
     if(memcmp(auth,&radius_client,sizeof(radius_auth_t)) != 0)
     {
         struct in_addr ipv4_addr;
 
         if(inet_pton(AF_INET,&auth->authserver[0],&ipv4_addr)==1 && memcmp(&radius_client.authserver[0],auth->authserver,64) != 0)
         {
-            sprintf(buffer,"sed \'/sauthserver      %s/authserver      %s/g\' %s",radius_client.authserver,auth->authserver,RADIUS_CLIENT_CONFIG_PATH);
+            sprintf(buffer, "sed -e /authserver/d -i %s", RADIUS_CLIENT_CONFIG_PATH);
             system(buffer);
+
+            memset(buffer,0,512);
+            sprintf(temp,"%s %s","authserver",auth->authserver);
+            sprintf(buffer, "sed -e \"$ a %s\" -i %s", temp, RADIUS_CLIENT_CONFIG_PATH);
+            system(buffer);
+
+             LOGW("acctserver replace  %s    %s !!!!\n",auth->authserver,radius_client.authserver);
+
+           
+
+            memset(buffer,0,512);
+            sprintf(buffer, "sed -e /%s/d -i %s",radius_client.authserver,RSDIUS_SEARVEAR_CONFIG_PATH);
+            system(buffer);
+            
+            memset(buffer,0,512);
+            sprintf(temp,"%s %s",auth->authserver,auth->key);
+
+            sprintf(buffer,"sed -e \"$ a %s\" -i %s",temp,RSDIUS_SEARVEAR_CONFIG_PATH);
+            system(buffer);
+    
+
             memset(radius_client.authserver,0,sizeof(radius_client.authserver));
             memcpy(radius_client.authserver,auth->authserver,strlen(auth->authserver));
+
+            memset(&radius_client.key[0],0,sizeof(radius_client.key));
+            memcpy(&radius_client.key[0],auth->key,strlen(auth->key));
         }
 
-        memset(buffer,0,300);
+        memset(buffer,0,512);
+        memset(temp,0,300);
         if(inet_pton(AF_INET,&auth->acctserver[0],&ipv4_addr)==1 && memcmp(&radius_client.acctserver[0],auth->acctserver,64) != 0)
         {
-            sprintf(buffer,"sed \'/acctserver      %s/acctserver      %s/g\' %s",radius_client.acctserver,auth->acctserver,RADIUS_CLIENT_CONFIG_PATH);
+            sprintf(buffer, "sed -e /acctserver/d -i %s", RADIUS_CLIENT_CONFIG_PATH);
+            system(buffer);
+
+            sprintf(temp,"%s %s","acctserver",auth->acctserver);
+            sprintf(buffer,"sed -e \"$ a %s\" -i %s",temp,RADIUS_CLIENT_CONFIG_PATH);
             system(buffer);
+
+            LOGW("acctserver replace  %s    %s !!!!\n",auth->acctserver,radius_client.acctserver);
+
+
             memset(radius_client.acctserver,0,sizeof(radius_client.acctserver));
             memcpy(radius_client.acctserver,auth->acctserver,strlen(auth->acctserver));
         }
 
-        memset(buffer,0,300);
+        memset(buffer,0,512);
+        memset(temp,0,300);
         if(memcmp(&radius_client.key[0],auth->key,64) != 0)
         {
-            sprintf(buffer,"sed \'/s%s                            %s/%s                            %s/g\' %s",
-                                            radius_client.authserver,radius_client.key,auth->authserver,auth->key,RSDIUS_SEARVEAR_CONFIG_PATH);
+            sprintf(buffer, "sed -e /%s/d -i %s",radius_client.authserver,RSDIUS_SEARVEAR_CONFIG_PATH);
             system(buffer);
+            
+            memset(buffer,0,512);
+            sprintf(temp,"%s %s",auth->authserver,auth->key);
+
+            sprintf(buffer,"sed -e \"$ a %s\" -i %s",temp,RSDIUS_SEARVEAR_CONFIG_PATH);
+            system(buffer);
+    
             memset(&radius_client.key[0],0,sizeof(radius_client.key));
             memcpy(&radius_client.key[0],auth->key,strlen(auth->key));
         }
@@ -237,6 +278,13 @@ static void check_client_str(char *buffer)
         while (isspace(*p))
             p++;
         memcpy(radius_client.authserver,p,strlen(p));
+        //clean '\n'
+        p=&radius_client.authserver[0];
+        do{
+            if(isspace(*p))
+                *p= 0;
+        }while(*p++);
+
         printf("authserver = %s\n",radius_client.authserver);
         return;
     }
@@ -248,6 +296,11 @@ static void check_client_str(char *buffer)
         while (isspace(*p))
             p++;
         memcpy(radius_client.acctserver,p,strlen(p));
+        p=&radius_client.acctserver[0];
+        do{
+            if(isspace(*p))
+                *p= 0;
+        }while(*p++);
         printf("acctserver = %s\n",radius_client.acctserver);
         return;
     }
@@ -258,7 +311,13 @@ static void check_server_str(char *buffer)
 {
     char *p= NULL;
 
+    p = buffer;
+    if(*p =='#')
+        return;
+
+
     p = strstr(buffer,radius_client.authserver);
+    
 
     if(p)
     {
@@ -267,6 +326,13 @@ static void check_server_str(char *buffer)
         while (isspace(*p))
             p++;
         memcpy(radius_client.key,p,strlen(p));
+
+        p=&radius_client.key[0];
+        do{
+            if(isspace(*p))
+                *p= 0;
+        }while(*p++);
+
         printf("key = %s\n",radius_client.key);
         return;
     }