Drop xml_serv_host, use vserver_ip instead
authorNeutron Soutmun <neo.neutron@gmail.com>
Thu, 2 Apr 2009 18:01:49 +0000 (01:01 +0700)
committerNeutron Soutmun <neo.neutron@gmail.com>
Thu, 2 Apr 2009 18:01:49 +0000 (01:01 +0700)
2009-04-03  Neutron Soutmun <neo.neutron@gmail.com>

* src/rh-config.{h,c}, src/rh-server.c , src/rh-xmlrpc-cmd.c:
  - Drop xml_serv_host from config list and replaced by vserver_ip.
  - Try to sending XML-RPC command via vserver_ip.

* weblogin/xmlrpc_service.php: Add the ip parameter checking to get the
  appropriate config from list.

ChangeLog
src/rh-config.c
src/rh-config.h
src/rh-server.c
src/rh-xmlrpc-cmd.c
weblogin/xmlrpc_service.php

index 8189b83..ee23103 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-04-03  Neutron Soutmun <neo.neutron@gmail.com>
+
+       * src/rh-config.{h,c}, src/rh-server.c , src/rh-xmlrpc-cmd.c:
+         - Drop xml_serv_host from config list and replaced by vserver_ip.
+         - Try to sending XML-RPC command via vserver_ip.
+
+       * weblogin/xmlrpc_service.php: Add the ip parameter checking to get the
+         appropriate config from list.
+
 2009-04-02  Neutron Soutmun <neo.neutron@gmail.com>
 
        * example/firewall.sh.in: Fix the script do not add bittorrent blocking rules
index a12d8e0..a52ac08 100755 (executable)
@@ -69,14 +69,14 @@ enum lcfg_status rahunas_visitor(const char *key, void *data, size_t size,
     case VSERVER:
       if (strncmp(sub_key, "vserver_id", 10) == 0) {
         config->rh_vserver.vserver_id = atoi(value);
+      } else if (strncmp(sub_key, "vserver_ip", 10) == 0) {
+        if (config->rh_vserver.vserver_ip != NULL)
+          free(config->rh_vserver.vserver_ip);
+        config->rh_vserver.vserver_ip = strdup(value); 
       } else if (strncmp(sub_key, "idle_timeout", 12) == 0) {
         config->rh_vserver.idle_timeout = atoi(value);
       } else if (strncmp(sub_key, "xml_serv_port", 13) == 0) {
         config->rh_vserver.xml_serv_port = atoi(value); 
-      } else if (strncmp(sub_key, "xml_serv_host", 13) == 0) {
-        if (config->rh_vserver.xml_serv_host != NULL)
-          free(config->rh_vserver.xml_serv_host);
-        config->rh_vserver.xml_serv_host = strdup(value); 
       } else if (strncmp(sub_key, "xml_serv_url", 12) == 0) {
         if (config->rh_vserver.xml_serv_url != NULL)
           free(config->rh_vserver.xml_serv_url);
@@ -170,8 +170,8 @@ int get_vservers_config(const char *conf_dir, struct main_server *server)
 
 int cleanup_vserver_config(struct rahunas_vserver_config *config)
 {
+  rh_free(&(config->vserver_ip));
   rh_free(&(config->vserver_name));  
-  rh_free(&(config->xml_serv_host));
   rh_free(&(config->xml_serv_url));
   return 0;
 }
index 99c7075..125ec81 100644 (file)
@@ -34,8 +34,8 @@ struct rahunas_vserver_config {
   int  vserver_id;
   char *vserver_name;
   int  idle_timeout;
+  char *vserver_ip;
   int  xml_serv_port;
-  char *xml_serv_host;
   char *xml_serv_url;
 };
 
index 484fd02..923e536 100644 (file)
@@ -86,10 +86,10 @@ int register_vserver(struct main_server *ms, const char *vserver_cfg_file)
 
   union rahunas_config config = {
     .rh_vserver.vserver_id = VSERVER_ID,
+    .rh_vserver.vserver_ip = NULL, 
     .rh_vserver.vserver_name = NULL,
     .rh_vserver.idle_timeout = IDLE_TIMEOUT,
     .rh_vserver.xml_serv_port = XMLSERVICE_PORT,
-    .rh_vserver.xml_serv_host = strdup(XMLSERVICE_HOST),
     .rh_vserver.xml_serv_url = strdup(XMLSERVICE_URL),
   };
 
@@ -105,7 +105,7 @@ int register_vserver(struct main_server *ms, const char *vserver_cfg_file)
   memset(vserver_config, 0, sizeof(struct rahunas_vserver_config));
 
   if (get_config(vserver_cfg_file, &config) != 0) {
-    rh_free(&config.rh_vserver.xml_serv_host);
+    rh_free(&config.rh_vserver.vserver_ip);
     rh_free(&config.rh_vserver.xml_serv_url);
     return -1;
   }
index 51a307b..2a92e3c 100644 (file)
@@ -35,10 +35,15 @@ int send_xmlrpc_stopacct(struct vserver *vs, uint32_t id, int cause) {
                            mac_tostring(member->mac_address),
                            cause);
 
+  DP("Params = %s", params);
+
   if (params == NULL)
     return (-1);
 
-  client = gnet_xmlrpc_client_new(vs->vserver_config->xml_serv_host, 
+  DP("XMLRPC: %s%s, port=%d", vs->vserver_config->vserver_ip,
+                               vs->vserver_config->xml_serv_url,
+                               vs->vserver_config->xml_serv_port);
+  client = gnet_xmlrpc_client_new(vs->vserver_config->vserver_ip, 
                                   vs->vserver_config->xml_serv_url, 
                                   vs->vserver_config->xml_serv_port);
 
@@ -54,6 +59,9 @@ int send_xmlrpc_stopacct(struct vserver *vs, uint32_t id, int cause) {
     }
   else
     {
+      if (reply != NULL)
+        DP("stopacct reply = %s", reply);
+
       DP("%s", "Failed executing stopacct!");
       return (-1);
     }
index 88de84e..ae94b48 100644 (file)
@@ -33,6 +33,7 @@
 
 require_once 'config.php';
 require_once 'rahu_radius.class.php';
+require_once 'networkchk.php';
 
 // Deny all connections that does not come from the localhost
 if ($_SERVER['REMOTE_ADDR'] != "127.0.0.1")
@@ -89,6 +90,9 @@ if ($GLOBALS["task"] == "do_stopacct") {
   $mac_address =& $GLOBALS["mac_address"];
   $cause =& $GLOBALS["cause"];
 
+  $config = get_config_by_network($ip, $config_list);
+  $vserver_id = $config["VSERVER_ID"];
+
   $racct = new rahu_radius_acct ($username);
   $racct->host = $config["RADIUS_HOST"];
   $racct->port = $config["RADIUS_ACCT_PORT"];