Kaynağa Gözat

Merged in FD3-669 (pull request #1)

FD3-669
Guillermo Espinoza 7 yıl önce
ebeveyn
işleme
2af94b82c0

+ 1 - 49
.drone.yml

@@ -6,38 +6,6 @@ pipeline:
       - env
       - php -v
 
- docker_kea_ik_1.3.0:
-   repo : docker.infra.flowdat.com/fd3/kea-ik-1.3.0
-   image: plugins/docker
-   pull: true
-   email: luciano@interlink.com.ar
-   registry: docker.infra.flowdat.com
-   dockerfile: 1.3.0/kea-ik/Dockerfile
-   context: 1.3.0/kea-ik/
-   tag:
-      - latest
-      - "1.3.0-kea-ik"
-      - "1.3-kea-ik"
-   when:
-      event: [pull_request, push, tag]
-      branch: master
-
- docker_kea_premium_1.3.0:
-   repo : docker.infra.flowdat.com/fd3/kea-premium-1.3.0
-   image: plugins/docker
-   pull: true
-   email: luciano@interlink.com.ar
-   registry: docker.infra.flowdat.com
-   dockerfile: 1.3.0/kea-premium/Dockerfile
-   context: 1.3.0/kea-premium/
-   tag:
-      - latest
-      - "1.3.0-kea-premium"
-      - "1.3-kea-premium"
-   when:
-      event: [pull_request, push, tag]
-      branch: master
-
 docker_kea_ik_1.4.0:
   repo : docker.infra.flowdat.com/fd3/kea-ik-1.4.0
   image: plugins/docker
@@ -69,23 +37,7 @@ docker_kea_premium_1.4.0:
   when:
      event: [pull_request, push, tag]
      branch: master
-     
-     # docker_kea_oss_1.3.0:
-     #   repo : docker.infra.flowdat.com/fd3/kea-oss-1.3.0
-     #   image: plugins/docker
-     #   pull: true
-     #   email: luciano@interlink.com.ar
-     #   registry: docker.infra.flowdat.com
-     #   dockerfile: 1.3.0/kea-oss/Dockerfile
-     #   context: 1.3.0/kea-oss/
-     #   tag:
-     #      - latest
-     #      - "1.3.0-kea-oss"
-     #      - "1.3-kea-oss"
-     #   when:
-     #      event: [pull_request, push, tag]
-     #      branch: master
-     
+          
      # docker_kea_1.4.0:
      #   repo : docker.infra.flowdat.com/fd3/kea-1.4.0
      #   image: plugins/docker

+ 0 - 37
1.3.0/kea-ik/Dockerfile

@@ -1,37 +0,0 @@
-FROM docker.infra.flowdat.com/fd3/kea-oss-1.3.0:latest
-
-# C++ LIBRARIES
-
-RUN apt-get update && apt-get install -yq cmake
-
-RUN git clone git://github.com/alanxz/rabbitmq-c.git
-RUN cd rabbitmq-c && mkdir build && cd build && cmake .. && cmake --build . 
-RUN cd rabbitmq-c/build && make  && make install
-
-RUN git clone https://github.com/akalend/amqpcpp
-RUN cd amqpcpp && make && make install
-
-RUN cp -P /usr/local/lib/x86_64-linux-gnu/librabbitmq.* /usr/local/lib/
-RUN cp amqpcpp/libamqpcpp.a /usr/local/lib/libamqpcpp.a
-RUN cp amqpcpp/libamqpcpp.so /usr/local/lib/libamqpcpp.so
-
-RUN wget -O libzdb-3.1.tar.gz http://www.tildeslash.com/libzdb/dist/libzdb-3.1.tar.gz
-RUN tar xvzf libzdb-3.1.tar.gz
-RUN cd libzdb-3.1 && ./configure --without-postgresql --without-sqlite && make && make install
-
-RUN ldconfig
-
-# FLOWDAT KEA HOOK
-
-RUN mkdir ~/.ssh
-RUN ssh-keyscan -H -p 22  bitbucket.org >> ~/.ssh/known_hosts
-COPY keys/ /opt/keys
-RUN chmod 0600 /opt/keys/bitbucket.id_rsa
-RUN eval $(ssh-agent) && ssh-add /opt/keys/bitbucket.id_rsa && git clone git@bitbucket.org:ikflowdat/kea-cm-hook.git
-
-RUN cd kea-cm-hook && make
-
-COPY script.sh /opt/script.sh
-RUN chmod +x /opt/script.sh
-
-CMD /opt/script.sh

+ 0 - 27
1.3.0/kea-ik/keys/bitbucket.id_rsa

@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAsCo4Xa/fLaryiZt6igRK1IPNJsKeDLWBN6CWrv3TQ2iMcwE1
-zhTTX115N+KngVN8p1v5VrSMHKpvyXQDZPG/FJnWm5ry75qSYTmEtY8nfRsGAbwT
-i4swY+4jqrH1RRjbuVMsXPGjFX34SZTTJEl8ouVAFy/7HR+ODUe2+enWVnaouhVs
-Xj+bW2u7/dV1kZctFa5g5iV3hqGH32dBME5ztg4Fh7fAxkRTiJl+NBI7/LIdv9dl
-qmtDAdNdRqaI1dBpy8sHyZhRfjPeVbhdKsjE5IBhDLlYzyxK5FC41us08VCdq+M1
-1qVzIVM61PBosW5NfwlrRgLDPEXkazUdhJO6YwIDAQABAoIBAFEf4D0klH4PTwmX
-k+Ki/2LGH19OGEJ6Azt+tGV5diSArMz5LbHtXTl5bi0SL1ka/TiE3lnTYwKAamI3
-DqkZuojeHzohLOayI96qAjcp6WFvZGDAH7APNQWP0NT2hqB/RhAeATv7+sIW9JPN
-+T2oqcDKGa2T5uwOb/glolmMGaxOzNfAFAgnD7p7cnR0yijW5t3bc4q0sOFu/H3N
-jYsAqvMu6Nkpt9hjlu42x5Muwj9YeKwpZoE1sno62JeQFZo7nO7DrOrE7DOENoWV
-PMDxs8Hz0SRQlZcJn2I/W9wX8A8gCAWGhbAtUGQkS8gCaMp0dOcxoV3EttriQgtU
-X1oUwIECgYEA2Vge4E8E53BzLGTk8sozn1qteYn3cLGgJgC78MEzZN/G57DxVbC9
-ntlSlYaYLlaPlSlNzZyG0s3UhpPY7YgP9srpohfPyXvb0ycfsGYMOcRNjVwdi2ap
-dPiG+p9vLSG3raNoeTxDEtjFZz1EM1rQECx2N40JwIuzeM2g+kE0JjMCgYEAz38r
-NTs1wASG7Bc7geIDxb34PWM8Nnw/DN57ceJP+Miwq/hYAJg6eK57ar9n44Y3xf7a
-mHkkgBU1vzuIyYfC5jVut6XkbialLsJUHfCNi3fPDBR7sEy6soiN34GoGp2vnCVD
-pDf2aCSMeFGfgwe4imFHbqE0R87cnet+q+CjCxECgYA8EbfO5OgFEzYxwdzpIWtt
-EoG5gqEpu134wuEupCcRLSvrIyNAPK3btlK10tJClFfwsM65EhbNMmgXncspsx4+
-Zkx2KUCbfij+TeTbOwkL+i448ImV2pThKEMeB2yRu6zpR617PGWJUvIUG4G689Fn
-dvJhXhCg77t1mtdv8w93swKBgQCIxor0y9LigBlwBuBy/Uj/T/oSfRdz0vK8yOsW
-ZtfQZnoO4eUgfzgL1PgFpaYVlKOvIA938mLdCx4isFu6fIM8vHv/EptBALhh2jcY
-hTjIdnFExTvDOtDWXq0mZ5En+kmH5Ahyd3E1tOHjbep3tN8wWG99vUV5ECLc9h7J
-rYnMAQKBgQDQ/JiBT7ygfzAblxPnq5Dnr52C3CFTE57GNA8FIEx+On6FdtVDRM0g
-cNjoc2e+2MfbaJXFAuMvXDvzb2qxrHgf2TosxeuPTg79iYOfWMU8G62i/v0wPr1M
-0Cj2hszJg4H0dMQPS0kDmO6mZmt6FB4E2gItmeBlTGfMwdJpaQC4rw==
------END RSA PRIVATE KEY-----

+ 0 - 1
1.3.0/kea-ik/keys/bitbucket.id_rsa.pub

@@ -1 +0,0 @@
-ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwKjhdr98tqvKJm3qKBErUg80mwp4MtYE3oJau/dNDaIxzATXOFNNfXXk34qeBU3ynW/lWtIwcqm/JdANk8b8UmdabmvLvmpJhOYS1jyd9GwYBvBOLizBj7iOqsfVFGNu5Uyxc8aMVffhJlNMkSXyi5UAXL/sdH44NR7b56dZWdqi6FWxeP5tba7v91XWRly0VrmDmJXeGoYffZ0EwTnO2DgWHt8DGRFOImX40Ejv8sh2/12Wqa0MB011GpojV0GnLywfJmFF+M95VuF0qyMTkgGEMuVjPLErkULjW6zTxUJ2r4zXWpXMhUzrU8Gixbk1/CWtGAsM8ReRrNR2Ek7pj flowdat@bitbucket

+ 0 - 15
1.3.0/kea-ik/script.sh

@@ -1,15 +0,0 @@
-echo "[mysql]\nprotocol=tcp\n[client]\nhost=mysql" >> /etc/my.cnf
-echo "[mysql]\nprotocol=tcp\n[client]\nhost=mysql" >> /etc/mysql/my.cnf
-
-DATABASE=kea
-
-if ! mysql -u$MYSQL_USER -p$MYSQL_ROOT_PASSWORD -e "use ${DATABASE}"; then
-  mysql -u$MYSQL_USER -p$MYSQL_ROOT_PASSWORD -e "CREATE DATABASE ${DATABASE} /*\!40100 DEFAULT CHARACTER SET utf8 */;"
-fi
-
-kea-admin lease-init mysql -h mysql -u $MYSQL_USER -p $MYSQL_ROOT_PASSWORD -n $DATABASE
-
-cd /opt/hooks/amqp && make
-cd /opt/hooks/mysql && make
-
-supervisord --configuration /etc/supervisord/supervisor.conf  --nodaemon

+ 0 - 26
1.3.0/kea-oss/Dockerfile

@@ -1,26 +0,0 @@
-FROM ubuntu:16.04
-
-RUN apt-get update && apt-get install -yq git vim build-essential dhcping
-
-RUN apt-get update && apt-get install -yq dh-autoreconf automake
-RUN apt-get update && apt-get install -yq libssl-dev liblog4cplus-dev libboost-dev libmysqlclient-dev libboost-all-dev mysql-client wget python-pip supervisor
-
-RUN pip install superfsmon
-
-RUN wget -O kea-1.3.0.tar.gz https://www.isc.org/downloads/file/kea-1-3-0/?version=tar-gz
-RUN tar -zxvf kea-1.3.0.tar.gz
-RUN mv kea-1.3.0 /opt/kea
-
-RUN cd /opt/kea && autoreconf --install && ./configure --with-dhcp-mysql --enable-shell && make && make install && ldconfig
-
-EXPOSE 67/udp
-EXPOSE 68/udp
-
-ENV KEA_MSG_COMPILER=/usr/local/bin/kea-msg-compiler
-ENV KEA_LIB=/opt/kea/src/lib
-ENV KEA_INCLUDE=/opt/kea/src/lib
-
-COPY script.sh /opt/script.sh
-RUN chmod +x /opt/script.sh
-
-CMD /opt/script.sh

+ 0 - 12
1.3.0/kea-oss/script.sh

@@ -1,12 +0,0 @@
-echo "[mysql]\nprotocol=tcp\n[client]\nhost=mysql" >> /etc/my.cnf
-echo "[mysql]\nprotocol=tcp\n[client]\nhost=mysql" >> /etc/mysql/my.cnf
-
-DATABASE=kea
-
-if ! mysql -u$MYSQL_USER -p$MYSQL_ROOT_PASSWORD -e "use ${DATABASE}"; then
-  mysql -u$MYSQL_USER -p$MYSQL_ROOT_PASSWORD -e "CREATE DATABASE ${DATABASE} /*\!40100 DEFAULT CHARACTER SET utf8 */;"
-fi
-
-kea-admin lease-init mysql -h mysql -u $MYSQL_USER -p $MYSQL_ROOT_PASSWORD -n $DATABASE
-
-supervisord --configuration /etc/supervisord/supervisor.conf  --nodaemon

+ 0 - 7
1.3.0/kea-premium/Dockerfile

@@ -1,7 +0,0 @@
-FROM docker.infra.flowdat.com/fd3/kea-oss-1.3.0:latest
-
-WORKDIR /opt/kea
-
-RUN wget -O kea-subscription-1.3.0.tar.gz https://ftp.isc.org/isc/kea/private/47481ef775c232ef/kea-subscription-1.3.0.tar.gz && tar xvzf kea-subscription-1.3.0.tar.gz
-
-RUN autoreconf --install && ./configure --with-dhcp-mysql --enable-shell --with-tier2=yes && make && make install && ldconfig

+ 3 - 2
hooks/amqp/src/amqppublisher.cc

@@ -1,5 +1,6 @@
 #include <unistd.h>
 #include <string>
+#include "common.h"
 #include "amqppublisher.h"
 #include <SimpleAmqpClient/SimpleAmqpClient.h>
 
@@ -7,14 +8,14 @@ int AMQPPublisher::publish(std::string message)
 {
     using namespace AmqpClient;
 
-    Channel::ptr_t channel = Channel::Create("amqp", 5672, "guest", "guest", "/");
+    Channel::ptr_t channel = Channel::Create(host, 5672, user, password, "/");
 
     BasicMessage::ptr_t basic_message = BasicMessage::Create(message);
     basic_message->Expiration("10000");
     basic_message->DeliveryMode(BasicMessage::dm_persistent);
     basic_message->ContentType("text/text");
     basic_message->ContentEncoding("UTF-8");
-    
+
     channel->DeclareExchange("kea", "fanout");
 
     std::string queue = channel->DeclareQueue("kea", false, false, false, false);

+ 3 - 3
hooks/amqp/src/common.h

@@ -5,8 +5,8 @@ extern "C" {
 
 /* From load.cc */
 
-/* Maps of the cablemodem states */
-extern std::map<std::string, std::string> cm_map;
-extern std::map<std::string, std::string> option122_map;
+extern std::string host;
+extern std::string user;
+extern std::string password;
 
 }

+ 17 - 40
hooks/amqp/src/load.cc

@@ -9,54 +9,31 @@
 using namespace isc::hooks;
 using namespace isc::data;
 
-std::map<std::string, std::string> cm_map;
-std::map<std::string, std::string> option122_map;
+std::string host;
+std::string user;
+std::string password;
 
 extern "C" {
 
-int loadMappging(std::string base_map_config, LibraryHandle& handle, std::map<std::string, std::string>& map){
-
-    ConstElementPtr curr_map = handle.getParameter(base_map_config);
-    if (Element::map != curr_map->getType()){
-        LOG_ERROR(runscript_logger, RUNSCRIPT_MISTYPED_PARAM).arg(base_map_config);
+int load(LibraryHandle& handle)
+{
+    ConstElementPtr hostPtr = handle.getParameter("host");
+    ConstElementPtr userPtr = handle.getParameter("user");
+    ConstElementPtr passwordPtr = handle.getParameter("password");
+
+    if (
+        hostPtr->getType() != Element::string ||
+        userPtr->getType() != Element::string ||
+        passwordPtr->getType() != Element::string
+    ) {
         return 1;
     }
 
-    std::map<std::string, ConstElementPtr> map_config = curr_map->mapValue();;
-    std::pair<std::string, ConstElementPtr> me; 
-
-    BOOST_FOREACH(me, map_config) {
-	std::string class_to_map = me.first;
-	std::cout << me.first << "\n";
-	ConstElementPtr table = me.second;
-	if(table->getType() != Element::list){
-		LOG_ERROR(runscript_logger, RUNSCRIPT_MISTYPED_PARAM).arg(base_map_config + "." + me.first);
-		return 1;
-	} 
-	const std::vector<ElementPtr> mac_list = table->listValue();
-	for(int i = 0; i < mac_list.size(); i++) {
-		ElementPtr it = mac_list[i];
-		if(it->getType() != Element::string){
-			LOG_ERROR(runscript_logger, RUNSCRIPT_MISTYPED_PARAM).arg(base_map_config + "." + me.first + "[" + std::to_string(i) + "]");
-			return 1;
-		}
-		std::cout << mac_list[i]->stringValue() << "\n";
-		std::string mac = mac_list[i]->stringValue();
-		std::transform(mac.begin(), mac.end(),mac.begin(), ::toupper);
-
-		map[mac] = class_to_map;
-	}
-    }
+    host = hostPtr->stringValue();
+    user = userPtr->stringValue();
+    password = passwordPtr->stringValue();
 
     return 0;
 }
 
-int load(LibraryHandle& handle) 
-{
-    
-    return 0;
-}
-
-
-
 } // end extern "C"

+ 5 - 0
hooks/mysql/src/common.h

@@ -9,4 +9,9 @@ extern "C" {
 extern std::map<std::string, std::string> cm_map;
 extern std::map<std::string, std::string> option122_map;
 
+extern std::string host;
+extern std::string database;
+extern std::string user;
+extern std::string password;
+
 }

+ 22 - 38
hooks/mysql/src/load.cc

@@ -12,51 +12,35 @@ using namespace isc::data;
 std::map<std::string, std::string> cm_map;
 std::map<std::string, std::string> option122_map;
 
-extern "C" {
+std::string host;
+std::string database;
+std::string user;
+std::string password;
 
-int loadMappging(std::string base_map_config, LibraryHandle& handle, std::map<std::string, std::string>& map){
+extern "C" {
 
-    ConstElementPtr curr_map = handle.getParameter(base_map_config);
-    if (Element::map != curr_map->getType()){
-        LOG_ERROR(runscript_logger, RUNSCRIPT_MISTYPED_PARAM).arg(base_map_config);
+int load(LibraryHandle& handle)
+{
+    ConstElementPtr hostPtr = handle.getParameter("host");
+    ConstElementPtr databasePtr = handle.getParameter("database");
+    ConstElementPtr userPtr = handle.getParameter("user");
+    ConstElementPtr passwordPtr = handle.getParameter("password");
+
+    if (
+        hostPtr->getType() != Element::string ||
+        databasePtr->getType() != Element::string ||
+        userPtr->getType() != Element::string ||
+        passwordPtr->getType() != Element::string
+    ) {
         return 1;
     }
 
-    std::map<std::string, ConstElementPtr> map_config = curr_map->mapValue();;
-    std::pair<std::string, ConstElementPtr> me; 
-
-    BOOST_FOREACH(me, map_config) {
-	std::string class_to_map = me.first;
-	std::cout << me.first << "\n";
-	ConstElementPtr table = me.second;
-	if(table->getType() != Element::list){
-		LOG_ERROR(runscript_logger, RUNSCRIPT_MISTYPED_PARAM).arg(base_map_config + "." + me.first);
-		return 1;
-	} 
-	const std::vector<ElementPtr> mac_list = table->listValue();
-	for(int i = 0; i < mac_list.size(); i++) {
-		ElementPtr it = mac_list[i];
-		if(it->getType() != Element::string){
-			LOG_ERROR(runscript_logger, RUNSCRIPT_MISTYPED_PARAM).arg(base_map_config + "." + me.first + "[" + std::to_string(i) + "]");
-			return 1;
-		}
-		std::cout << mac_list[i]->stringValue() << "\n";
-		std::string mac = mac_list[i]->stringValue();
-		std::transform(mac.begin(), mac.end(),mac.begin(), ::toupper);
-
-		map[mac] = class_to_map;
-	}
-    }
-
-    return 0;
-}
+    host = hostPtr->stringValue();
+    database = databasePtr->stringValue();
+    user = userPtr->stringValue();
+    password = passwordPtr->stringValue();
 
-int load(LibraryHandle& handle) 
-{
-    
     return 0;
 }
 
-
-
 } // end extern "C"

+ 5 - 5
hooks/mysql/src/mysql_connection.cc

@@ -1,22 +1,22 @@
 #include <stdio.h>
 #include <zdb.h>
+#include "common.h"
 #include "mysql_connection.h"
-
 #include <string>
 
 std::string MySQLConnection::executeQuery(const char* query)
 {
-    URL_T url = URL_new("mysql://root:235r2342gtfsw@mysql:3306/fd3_dhcp");
+    URL_T url = URL_new(("mysql://" + user + ":" + password + "@" + host + ":3306/" + database).c_str());
     ConnectionPool_T pool = ConnectionPool_new(url);
     ConnectionPool_start(pool);
     Connection_T con = ConnectionPool_getConnection(pool);
-        
+
     ResultSet_T r = Connection_executeQuery(con, query);
     std::string result = ResultSet_next(r) ? ResultSet_getString(r, 1) : "";
-    
+
     Connection_close(con);
     ConnectionPool_free(&pool);
     URL_free(&url);
-    
+
     return result;
 }