Send connman mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.01.org/mailman/listinfo/connman
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of connman digest..."


Today's Topics:

   1. [PATCH]     technolgoy: avoid redundant saving to the file
      system (Yusuke Nakamura)
   2. [PATCH 5/6] js: add __pacrunner_js_resolve() function
      (David Woodhouse)
   3. [PATCH 1/6] mozjs: Fix error handling for wrongly-formatted
      hostname (David Woodhouse)
   4. [PATCH 4/6] js: add __pacrunner_js_getipaddr() function
      (David Woodhouse)
   5. [PATCH 3/6] mozjs: Rename 'ctx' argument to dnsresolve() to
      'jsctx' (David Woodhouse)
   6. [PATCH 2/6] plugins: New shared C file for common JavaScript
      routines (David Woodhouse)


----------------------------------------------------------------------

Message: 1
Date: Fri, 12 Aug 2016 11:30:14 +0900
From: Yusuke Nakamura <[email protected]>
To: [email protected]
Subject: [PATCH]     technolgoy: avoid redundant saving to the file
        system
Message-ID:
        <[email protected]>

    Even if OfflineMode is the same as before, Connman always saves
    to the file system. This patch makes Connman to save OfflineMode
    only when it is actually changed in order to avoid redundant data
    writing.
---
 src/technology.c |   22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/technology.c b/src/technology.c
index 1891d06..b672dfa 100644
--- a/src/technology.c
+++ b/src/technology.c
@@ -444,15 +444,31 @@ bool __connman_technology_get_offlinemode(void)
 static void connman_technology_save_offlinemode(void)
 {
        GKeyFile *keyfile;
+       GError *error = NULL;
+       bool offlinemode;
 
        keyfile = __connman_storage_load_global();
-       if (!keyfile)
+
+       if (!keyfile) {
                keyfile = g_key_file_new();
+               g_key_file_set_boolean(keyfile, "global",
+                                       "OfflineMode", global_offlinemode);
 
-       g_key_file_set_boolean(keyfile, "global",
+               __connman_storage_save_global(keyfile);
+       }
+       else {
+               offlinemode = g_key_file_get_boolean(keyfile, "global",
+                                               "OfflineMode", &error);
+
+               if (error || offlinemode != global_offlinemode) {
+                       g_key_file_set_boolean(keyfile, "global",
                                        "OfflineMode", global_offlinemode);
+                       if (error)
+                               g_clear_error(&error);
 
-       __connman_storage_save_global(keyfile);
+                       __connman_storage_save_global(keyfile);
+               }
+       }
 
        g_key_file_free(keyfile);
 
-- 
1.7.9.5



------------------------------

Message: 2
Date: Fri, 12 Aug 2016 14:33:31 +0100
From: David Woodhouse <[email protected]>
To: [email protected]
Subject: [PATCH 5/6] js: add __pacrunner_js_resolve() function
Message-ID: <[email protected]>

From: David Woodhouse <[email protected]>

Remove the duplicate definitions from mozjs and v8 plugins
---
 plugins/mozjs.c | 34 ++++------------------------------
 plugins/v8.cc   | 33 +--------------------------------
 src/js.h        |  1 +
 src/js_funcs.c  | 32 ++++++++++++++++++++++++++++++++
 4 files changed, 38 insertions(+), 62 deletions(-)

diff --git a/plugins/mozjs.c b/plugins/mozjs.c
index 2720cac..a923203 100644
--- a/plugins/mozjs.c
+++ b/plugins/mozjs.c
@@ -45,25 +45,6 @@ struct pacrunner_mozjs {
        JSObject *jsobj;
 };
 
-static int resolve(const char *node, char *host, size_t hostlen)
-{
-       struct addrinfo *info;
-       int err;
-
-       if (getaddrinfo(node, NULL, NULL, &info) < 0)
-               return -EIO;
-
-       err = getnameinfo(info->ai_addr, info->ai_addrlen,
-                               host, hostlen, NULL, 0, NI_NUMERICHOST);
-
-       freeaddrinfo(info);
-
-       if (err < 0)
-               return -EIO;
-
-       return 0;
-}
-
 static JSBool myipaddress(JSContext *jsctx, uintN argc, jsval *vp)
 {
        struct pacrunner_mozjs *ctx = JS_GetContextPrivate(jsctx);
@@ -89,26 +70,19 @@ static JSBool myipaddress(JSContext *jsctx, uintN argc, 
jsval *vp)
 
 static JSBool dnsresolve(JSContext *jsctx, uintN argc, jsval *vp)
 {
+       struct pacrunner_mozjs *ctx = JS_GetContextPrivate(jsctx);
        char address[NI_MAXHOST];
        jsval *argv = JS_ARGV(jsctx, vp);
        char *host = JS_EncodeString(jsctx, JS_ValueToString(jsctx, argv[0]));
-       char **split_res;
 
        DBG("host %s", host);
 
        JS_SET_RVAL(jsctx, vp, JSVAL_NULL);
 
-       /* Q&D test on host to know if it is a proper hostname */
-       split_res = g_strsplit_set(host, ":%?!,;@\\'*|<>{}[]()+=$&~# \"", -1);
-       if (split_res) {
-               int length = g_strv_length(split_res);
-               g_strfreev(split_res);
-
-               if (length > 1)
-                       goto out;
-       }
+       if (!ctx)
+               goto out;
 
-       if (resolve(host, address, sizeof(address)) < 0)
+       if (__pacrunner_js_resolve(ctx->proxy, host, address, sizeof(address)) 
< 0)
                goto out;
 
        DBG("address %s", address);
diff --git a/plugins/v8.cc b/plugins/v8.cc
index 954239d..00aef82 100644
--- a/plugins/v8.cc
+++ b/plugins/v8.cc
@@ -48,25 +48,6 @@ static gboolean v8_gc(gpointer user_data)
        return !v8::V8::IdleNotification();
 }
 
-static int resolve(const char *node, char *host, size_t hostlen)
-{
-       struct addrinfo *info;
-       int err;
-
-       if (getaddrinfo(node, NULL, NULL, &info) < 0)
-               return -EIO;
-
-       err = getnameinfo(info->ai_addr, info->ai_addrlen,
-                               host, hostlen, NULL, 0, NI_NUMERICHOST);
-
-       freeaddrinfo(info);
-
-       if (err < 0)
-               return -EIO;
-
-       return 0;
-}
-
 static v8::Handle<v8::Value> myipaddress(const v8::Arguments& args)
 {
        const char *interface;
@@ -96,19 +77,7 @@ static v8::Handle<v8::Value> dnsresolve(const v8::Arguments& 
args)
 
        DBG("host %s", *host);
 
-       /* Q&D test on host to know if it is a proper hostname */
-       split_res = g_strsplit_set(*host, ":%?!,;@\\'*|<>{}[]()+=$&~# \"", -1);
-       if (split_res) {
-               int length = g_strv_length(split_res);
-               g_strfreev(split_res);
-
-               if (length > 1) {
-                       v8::ThrowException(
-                               v8::String::New("Failed to resolve"));
-               }
-       }
-
-       if (resolve(*host, address, sizeof(address)) < 0)
+       if (__pacrunner_js_resolve(current_proxy, *host, address, 
sizeof(address)) < 0)
                return v8::ThrowException(v8::String::New("Failed to resolve"));
 
        DBG("address %s", address);
diff --git a/src/js.h b/src/js.h
index a163e9d..383c451 100644
--- a/src/js.h
+++ b/src/js.h
@@ -36,6 +36,7 @@ int pacrunner_js_driver_register(struct pacrunner_js_driver 
*driver);
 void pacrunner_js_driver_unregister(struct pacrunner_js_driver *driver);
 
 /* Common functions for JS plugins */
+int __pacrunner_js_resolve(struct pacrunner_proxy *proxy, const char *node, 
char *host, size_t hostlen);
 int __pacrunner_js_getipaddr(struct pacrunner_proxy *proxy, char *host, size_t 
hostlen);
 extern const char __pacrunner_js_routines[];
 
diff --git a/src/js_funcs.c b/src/js_funcs.c
index e348e54..1390085 100644
--- a/src/js_funcs.c
+++ b/src/js_funcs.c
@@ -29,6 +29,7 @@
 #include <sys/ioctl.h>
 #include <stdio.h>
 
+#include <netdb.h>
 #include <arpa/inet.h>
 #include <linux/if_arp.h>
 
@@ -66,6 +67,37 @@ int __pacrunner_js_getipaddr(struct pacrunner_proxy *proxy, 
char *host, size_t h
        return 0;
 }
 
+int __pacrunner_js_resolve(struct pacrunner_proxy *proxy, const char *node, 
char *host, size_t hostlen)
+{
+       struct addrinfo *info;
+       char **split_res;
+       int err;
+
+       /* Q&D test on host to know if it is a proper hostname */
+       split_res = g_strsplit_set(node, ":%?!,;@\\'*|<>{}[]()+=$&~# \"", -1);
+       if (split_res) {
+               int length = g_strv_length(split_res);
+               g_strfreev(split_res);
+
+               if (length > 1)
+                       return -EINVAL;
+       }
+
+
+       if (getaddrinfo(node, NULL, NULL, &info) < 0)
+               return -EIO;
+
+       err = getnameinfo(info->ai_addr, info->ai_addrlen,
+                               host, hostlen, NULL, 0, NI_NUMERICHOST);
+
+       freeaddrinfo(info);
+
+       if (err < 0)
+               return -EIO;
+
+       return 0;
+}
+
 const char __pacrunner_js_routines[] =
 "function dnsDomainIs(host, domain) {\n" \
 "    return (host.length >= domain.length &&\n" \
-- 
2.7.4



------------------------------

Message: 3
Date: Fri, 12 Aug 2016 14:33:27 +0100
From: David Woodhouse <[email protected]>
To: [email protected]
Subject: [PATCH 1/6] mozjs: Fix error handling for wrongly-formatted
        hostname
Message-ID: <[email protected]>

From: David Woodhouse <[email protected]>

In commit d9ea7b8a ("plugins: Do not try to resolve a wrongly formated
hostname") we introduced a check on the string before we attempt to resolve
it. In the mozjs case we simply return a NULL result instead of raising an
exception when this function fails... except that the new sanity check was
placed before the JS_SET_RVAL() call, and no return value was set at all.

Move it to the right place.
---
 plugins/mozjs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/mozjs.c b/plugins/mozjs.c
index 130c3c9..feaabd9 100644
--- a/plugins/mozjs.c
+++ b/plugins/mozjs.c
@@ -132,6 +132,8 @@ static JSBool dnsresolve(JSContext *ctx, uintN argc, jsval 
*vp)
 
        DBG("host %s", host);
 
+       JS_SET_RVAL(ctx, vp, JSVAL_NULL);
+
        /* Q&D test on host to know if it is a proper hostname */
        split_res = g_strsplit_set(host, ":%?!,;@\\'*|<>{}[]()+=$&~# \"", -1);
        if (split_res) {
@@ -142,8 +144,6 @@ static JSBool dnsresolve(JSContext *ctx, uintN argc, jsval 
*vp)
                        goto out;
        }
 
-       JS_SET_RVAL(ctx, vp, JSVAL_NULL);
-
        if (resolve(host, address, sizeof(address)) < 0)
                goto out;
 
-- 
2.7.4



------------------------------

Message: 4
Date: Fri, 12 Aug 2016 14:33:30 +0100
From: David Woodhouse <[email protected]>
To: [email protected]
Subject: [PATCH 4/6] js: add __pacrunner_js_getipaddr() function
Message-ID: <[email protected]>

From: David Woodhouse <[email protected]>

Remove the duplicate definitions from mozjs and v8 plugins
---
 plugins/mozjs.c | 36 +-----------------------------------
 plugins/v8.cc   | 35 +----------------------------------
 src/js.h        |  1 -
 src/js_funcs.c  | 43 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 45 insertions(+), 70 deletions(-)

diff --git a/plugins/mozjs.c b/plugins/mozjs.c
index b980d9d..2720cac 100644
--- a/plugins/mozjs.c
+++ b/plugins/mozjs.c
@@ -26,12 +26,9 @@
 #include <errno.h>
 #include <unistd.h>
 #include <string.h>
-#include <sys/ioctl.h>
 #include <pthread.h>
 
 #include <netdb.h>
-#include <arpa/inet.h>
-#include <linux/if_arp.h>
 
 #pragma GCC diagnostic ignored "-Wredundant-decls"
 #include <jsapi.h>
@@ -48,32 +45,6 @@ struct pacrunner_mozjs {
        JSObject *jsobj;
 };
 
-static int getaddr(const char *node, char *host, size_t hostlen)
-{
-       struct sockaddr_in addr;
-       struct ifreq ifr;
-       int sk, err;
-
-       sk = socket(PF_INET, SOCK_DGRAM, 0);
-       if (sk < 0)
-               return -EIO;
-
-       memset(&ifr, 0, sizeof(ifr));
-       strncpy(ifr.ifr_name, node, sizeof(ifr.ifr_name));
-
-       err = ioctl(sk, SIOCGIFADDR, &ifr);
-
-       close(sk);
-
-       if (err < 0)
-               return -EIO;
-
-       memcpy(&addr, &ifr.ifr_addr, sizeof(addr));
-       snprintf(host, hostlen, "%s", inet_ntoa(addr.sin_addr));
-
-       return 0;
-}
-
 static int resolve(const char *node, char *host, size_t hostlen)
 {
        struct addrinfo *info;
@@ -96,7 +67,6 @@ static int resolve(const char *node, char *host, size_t 
hostlen)
 static JSBool myipaddress(JSContext *jsctx, uintN argc, jsval *vp)
 {
        struct pacrunner_mozjs *ctx = JS_GetContextPrivate(jsctx);
-       const char *interface;
        char address[NI_MAXHOST];
 
        DBG("");
@@ -106,11 +76,7 @@ static JSBool myipaddress(JSContext *jsctx, uintN argc, 
jsval *vp)
        if (!ctx)
                return JS_TRUE;
 
-       interface = pacrunner_proxy_get_interface(ctx->proxy);
-       if (!interface)
-               return JS_TRUE;
-
-       if (getaddr(interface, address, sizeof(address)) < 0)
+       if (__pacrunner_js_getipaddr(ctx->proxy, address, sizeof(address)) < 0)
                return JS_TRUE;
 
        DBG("address %s", address);
diff --git a/plugins/v8.cc b/plugins/v8.cc
index ebb88a6..954239d 100644
--- a/plugins/v8.cc
+++ b/plugins/v8.cc
@@ -27,11 +27,8 @@
 #include <errno.h>
 #include <unistd.h>
 #include <string.h>
-#include <sys/ioctl.h>
 
 #include <netdb.h>
-#include <arpa/inet.h>
-#include <linux/if_arp.h>
 
 #include <v8.h>
 
@@ -51,32 +48,6 @@ static gboolean v8_gc(gpointer user_data)
        return !v8::V8::IdleNotification();
 }
 
-static int getaddr(const char *node, char *host, size_t hostlen)
-{
-       struct sockaddr_in addr;
-       struct ifreq ifr;
-       int sk, err;
-
-       sk = socket(PF_INET, SOCK_DGRAM, 0);
-       if (sk < 0)
-               return -EIO;
-
-       memset(&ifr, 0, sizeof(ifr));
-       strncpy(ifr.ifr_name, node, sizeof(ifr.ifr_name));
-
-       err = ioctl(sk, SIOCGIFADDR, &ifr);
-
-       close(sk);
-
-       if (err < 0)
-               return -EIO;
-
-       memcpy(&addr, &ifr.ifr_addr, sizeof(addr));
-       snprintf(host, hostlen, "%s", inet_ntoa(addr.sin_addr));
-
-       return 0;
-}
-
 static int resolve(const char *node, char *host, size_t hostlen)
 {
        struct addrinfo *info;
@@ -106,11 +77,7 @@ static v8::Handle<v8::Value> myipaddress(const 
v8::Arguments& args)
        if (current_proxy == NULL)
                return v8::ThrowException(v8::String::New("No current proxy"));
 
-       interface = pacrunner_proxy_get_interface(current_proxy);
-       if (interface == NULL)
-               return v8::ThrowException(v8::String::New("Error fetching 
interface"));
-
-       if (getaddr(interface, address, sizeof(address)) < 0)
+       if (__pacrunner_js_getipaddr(current_proxy, address, sizeof(address)) < 
0)
                return v8::ThrowException(v8::String::New("Error fetching IP 
address"));
 
        DBG("address %s", address);
diff --git a/src/js.h b/src/js.h
index 383c451..a163e9d 100644
--- a/src/js.h
+++ b/src/js.h
@@ -36,7 +36,6 @@ int pacrunner_js_driver_register(struct pacrunner_js_driver 
*driver);
 void pacrunner_js_driver_unregister(struct pacrunner_js_driver *driver);
 
 /* Common functions for JS plugins */
-int __pacrunner_js_resolve(struct pacrunner_proxy *proxy, const char *node, 
char *host, size_t hostlen);
 int __pacrunner_js_getipaddr(struct pacrunner_proxy *proxy, char *host, size_t 
hostlen);
 extern const char __pacrunner_js_routines[];
 
diff --git a/src/js_funcs.c b/src/js_funcs.c
index 6e9cf1e..e348e54 100644
--- a/src/js_funcs.c
+++ b/src/js_funcs.c
@@ -23,6 +23,49 @@
 #include <config.h>
 #endif
 
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <stdio.h>
+
+#include <arpa/inet.h>
+#include <linux/if_arp.h>
+
+#include "pacrunner.h"
+#include "js.h"
+
+int __pacrunner_js_getipaddr(struct pacrunner_proxy *proxy, char *host, size_t 
hostlen)
+{
+       const char *interface;
+       struct sockaddr_in addr;
+       struct ifreq ifr;
+       int sk, err;
+
+       interface = pacrunner_proxy_get_interface(proxy);
+       if (!interface)
+               return -EINVAL;
+
+       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       if (sk < 0)
+               return -EIO;
+
+       memset(&ifr, 0, sizeof(ifr));
+       strncpy(ifr.ifr_name, interface, sizeof(ifr.ifr_name));
+
+       err = ioctl(sk, SIOCGIFADDR, &ifr);
+
+       close(sk);
+
+       if (err < 0)
+               return -EIO;
+
+       memcpy(&addr, &ifr.ifr_addr, sizeof(addr));
+       snprintf(host, hostlen, "%s", inet_ntoa(addr.sin_addr));
+
+       return 0;
+}
+
 const char __pacrunner_js_routines[] =
 "function dnsDomainIs(host, domain) {\n" \
 "    return (host.length >= domain.length &&\n" \
-- 
2.7.4



------------------------------

Message: 5
Date: Fri, 12 Aug 2016 14:33:29 +0100
From: David Woodhouse <[email protected]>
To: [email protected]
Subject: [PATCH 3/6] mozjs: Rename 'ctx' argument to dnsresolve() to
        'jsctx'
Message-ID: <[email protected]>

From: David Woodhouse <[email protected]>

...for reasons which will become apparent shortly.
---
 plugins/mozjs.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/plugins/mozjs.c b/plugins/mozjs.c
index 0b9a4c9..b980d9d 100644
--- a/plugins/mozjs.c
+++ b/plugins/mozjs.c
@@ -121,16 +121,16 @@ static JSBool myipaddress(JSContext *jsctx, uintN argc, 
jsval *vp)
        return JS_TRUE;
 }
 
-static JSBool dnsresolve(JSContext *ctx, uintN argc, jsval *vp)
+static JSBool dnsresolve(JSContext *jsctx, uintN argc, jsval *vp)
 {
        char address[NI_MAXHOST];
-       jsval *argv = JS_ARGV(ctx, vp);
-       char *host = JS_EncodeString(ctx, JS_ValueToString(ctx, argv[0]));
+       jsval *argv = JS_ARGV(jsctx, vp);
+       char *host = JS_EncodeString(jsctx, JS_ValueToString(jsctx, argv[0]));
        char **split_res;
 
        DBG("host %s", host);
 
-       JS_SET_RVAL(ctx, vp, JSVAL_NULL);
+       JS_SET_RVAL(jsctx, vp, JSVAL_NULL);
 
        /* Q&D test on host to know if it is a proper hostname */
        split_res = g_strsplit_set(host, ":%?!,;@\\'*|<>{}[]()+=$&~# \"", -1);
@@ -147,10 +147,10 @@ static JSBool dnsresolve(JSContext *ctx, uintN argc, 
jsval *vp)
 
        DBG("address %s", address);
 
-       JS_SET_RVAL(ctx, vp, STRING_TO_JSVAL(JS_NewStringCopyZ(ctx, address)));
+       JS_SET_RVAL(jsctx, vp, STRING_TO_JSVAL(JS_NewStringCopyZ(jsctx, 
address)));
 
  out:
-       JS_free(ctx, host);
+       JS_free(jsctx, host);
        return JS_TRUE;
 
 }
-- 
2.7.4



------------------------------

Message: 6
Date: Fri, 12 Aug 2016 14:33:28 +0100
From: David Woodhouse <[email protected]>
To: [email protected]
Subject: [PATCH 2/6] plugins: New shared C file for common JavaScript
        routines
Message-ID: <[email protected]>
Content-Type: text/plain; charset=UTF-8

From: David Woodhouse <[email protected]>

---
 Makefile.am      |  10 ++-
 plugins/mozjs.c  |   6 +-
 plugins/v8.cc    |   3 +-
 src/javascript.h | 199 ------------------------------------------------
 src/js.h         |   6 ++
 src/js_funcs.c   | 224 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 239 insertions(+), 209 deletions(-)
 delete mode 100644 src/javascript.h
 create mode 100644 src/js_funcs.c

diff --git a/Makefile.am b/Makefile.am
index 55b51e7..d637baf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -27,6 +27,7 @@ builtin_libadd += @CURL_LIBS@
 endif
 
 if MOZJS
+js_sources = src/js_funcs.c
 builtin_modules += mozjs
 builtin_sources += plugins/mozjs.c
 builtin_cflags += @MOZJS_CFLAGS@
@@ -34,6 +35,7 @@ builtin_libadd += @MOZJS_LIBS@
 endif
 
 if V8
+js_sources = src/js_funcs.c
 builtin_modules += v8
 builtin_sources += plugins/v8.cc
 builtin_libadd += @V8_LIBS@
@@ -41,12 +43,12 @@ endif
 
 sbin_PROGRAMS = src/pacrunner
 
-src_pacrunner_SOURCES = $(gdbus_sources) $(builtin_sources) \
+src_pacrunner_SOURCES = $(gdbus_sources) $(builtin_sources) $(js_sources) \
                        src/main.c src/pacrunner.h \
                        src/log.h src/log.c src/plugin.h src/plugin.c \
                        src/download.h src/download.c \
                        src/client.c src/manager.c src/proxy.c \
-                       src/manual.c src/js.h src/js.c src/javascript.h
+                       src/manual.c src/js.h src/js.c
 
 src_pacrunner_LDADD = $(builtin_libadd) @GLIB_LIBS@ @PTHREAD_LIBS@ \
                                                        @DBUS_LIBS@ -ldl
@@ -97,7 +99,7 @@ noinst_PROGRAMS = unit/test-pacrunner
 
 unit_test_pacrunner_SOURCES = unit/test-pacrunner.c src/pacrunner.h \
                        src/proxy.c src/manual.c src/download.c \
-                       src/js.c src/log.c src/plugin.c
+                       src/js.c src/log.c src/plugin.c $(js_sources)
 
 unit_test_pacrunner_LDADD = @GLIB_LIBS@ -ldl
 
@@ -118,7 +120,7 @@ noinst_PROGRAMS += unit/test-mozjs
 
 unit_test_mozjs_SOURCES = unit/test-mozjs.c src/pacrunner.h \
                        src/proxy.c src/manual.c src/download.c \
-                               src/js.c plugins/mozjs.c
+                               src/js.c plugins/mozjs.c $(js_sources)
 
 unit_test_mozjs_LDADD = @MOZJS_LIBS@ @GLIB_LIBS@ @PTHREAD_LIBS@
 endif
diff --git a/plugins/mozjs.c b/plugins/mozjs.c
index feaabd9..0b9a4c9 100644
--- a/plugins/mozjs.c
+++ b/plugins/mozjs.c
@@ -37,8 +37,6 @@
 #include <jsapi.h>
 #pragma GCC diagnostic error "-Wredundant-decls"
 
-#include "javascript.h"
-
 #include "pacrunner.h"
 #include "js.h"
 
@@ -203,8 +201,8 @@ static int create_object(struct pacrunner_proxy *proxy)
        JS_DefineFunction(ctx->jsctx, ctx->jsobj,
                          "dnsResolve", dnsresolve, 1, 0);
 
-       JS_EvaluateScript(ctx->jsctx, ctx->jsobj, JAVASCRIPT_ROUTINES,
-                         strlen(JAVASCRIPT_ROUTINES), NULL, 0, &rval);
+       JS_EvaluateScript(ctx->jsctx, ctx->jsobj, __pacrunner_js_routines,
+                         strlen(__pacrunner_js_routines), NULL, 0, &rval);
 
        JS_EvaluateScript(ctx->jsctx, ctx->jsobj, script, strlen(script),
                          "wpad.dat", 0, &rval);
diff --git a/plugins/v8.cc b/plugins/v8.cc
index 93a1ea5..ebb88a6 100644
--- a/plugins/v8.cc
+++ b/plugins/v8.cc
@@ -34,7 +34,6 @@
 #include <linux/if_arp.h>
 
 #include <v8.h>
-#include "javascript.h"
 
 extern "C" {
 #include "pacrunner.h"
@@ -175,7 +174,7 @@ static void create_object(void)
        v8::Handle<v8::Script> script_scr;
        v8::Handle<v8::Value> result;
 
-       script_scr = v8::Script::Compile(v8::String::New(JAVASCRIPT_ROUTINES));
+       script_scr = 
v8::Script::Compile(v8::String::New(__pacrunner_js_routines));
        if (script_scr.IsEmpty()) {
                v8::String::Utf8Value err(exc.Exception());
                DBG("Javascript failed to compile: %s", *err);
diff --git a/src/javascript.h b/src/javascript.h
deleted file mode 100644
index d48bd0c..0000000
--- a/src/javascript.h
+++ /dev/null
@@ -1,199 +0,0 @@
-#define JAVASCRIPT_ROUTINES \
-"function dnsDomainIs(host, domain) {\n" \
-"    return (host.length >= domain.length &&\n" \
-"            host.substring(host.length - domain.length) == domain);\n" \
-"}\n" \
-"function dnsDomainLevels(host) {\n" \
-"    return host.split('.').length-1;\n" \
-"}\n" \
-"function convert_addr(ipchars) {\n" \
-"    var bytes = ipchars.split('.');\n" \
-"    var result = ((bytes[0] & 0xff) << 24) |\n" \
-"                 ((bytes[1] & 0xff) << 16) |\n" \
-"                 ((bytes[2] & 0xff) << 8) |\n" \
-"                  (bytes[3] & 0xff);\n" \
-"    return result;\n" \
-"}\n" \
-"function isInNet(ipaddr, pattern, maskstr) {\n" \
-"    var test = 
/^(\\d{1,4})\\.(\\d{1,4})\\.(\\d{1,4})\\.(\\d{1,4})$/.exec(ipaddr);\n" \
-"    if (test == null) {\n" \
-"        ipaddr = dnsResolve(ipaddr);\n" \
-"        if (ipaddr == null)\n" \
-"            return false;\n" \
-"    } else if (test[1] > 255 || test[2] > 255 ||\n" \
-"               test[3] > 255 || test[4] > 255) {\n" \
-"        return false;\n" \
-"    }\n" \
-"    var host = convert_addr(ipaddr);\n" \
-"    var pat = convert_addr(pattern);\n" \
-"    var mask = convert_addr(maskstr);\n" \
-"    return ((host & mask) == (pat & mask));\n" \
-"}\n" \
-"function isPlainHostName(host) {\n" \
-"    return (host.search('\\\\.') == -1);\n" \
-"}\n" \
-"function isResolvable(host) {\n" \
-"    var ip = dnsResolve(host);\n" \
-"    return (ip != null);\n" \
-"}\n" \
-"function localHostOrDomainIs(host, hostdom) {\n" \
-"    if (isPlainHostName(host)) {\n" \
-"        return (hostdom.search('/^' + host + '/') != -1);\n" \
-"    }\n" \
-"    else {\n" \
-"        return (host == hostdom);\n" \
-"    }\n" \
-"}\n" \
-"function shExpMatch(url, pattern) {\n" \
-"   pattern = pattern.replace(/\\./g, '\\\\.');\n" \
-"   pattern = pattern.replace(/\\*/g, '.*');\n" \
-"   pattern = pattern.replace(/\\?/g, '.');\n" \
-"   var newRe = new RegExp('^'+pattern+'$');\n" \
-"   return newRe.test(url);\n" \
-"}\n" \
-"var wdays = new Array('SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT');\n" \
-"var monthes = new Array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 
'AUG', 'SEP', 'OCT', 'NOV', 'DEC');\n" \
-"function weekdayRange() {\n" \
-"    function getDay(weekday) {\n" \
-"        for (var i = 0; i < 6; i++) {\n" \
-"            if (weekday == wdays[i])\n" \
-"                return i;\n" \
-"        }\n" \
-"        return -1;\n" \
-"    }\n" \
-"    var date = new Date();\n" \
-"    var argc = arguments.length;\n" \
-"    var wday;\n" \
-"    if (argc < 1)\n" \
-"        return false;\n" \
-"    if (arguments[argc - 1] == 'GMT') {\n" \
-"        argc--;\n" \
-"        wday = date.getUTCDay();\n" \
-"    } else {\n" \
-"        wday = date.getDay();\n" \
-"    }\n" \
-"    var wd1 = getDay(arguments[0]);\n" \
-"    var wd2 = (argc == 2) ? getDay(arguments[1]) : wd1;\n" \
-"    return (wd1 == -1 || wd2 == -1) ? false\n" \
-"                                    : (wd1 <= wday && wday <= wd2);\n" \
-"}\n" \
-"function dateRange() {\n" \
-"    function getMonth(name) {\n" \
-"        for (var i = 0; i < 6; i++) {\n" \
-"            if (name == monthes[i])\n" \
-"                return i;\n" \
-"        }\n" \
-"        return -1;\n" \
-"    }\n" \
-"    var date = new Date();\n" \
-"    var argc = arguments.length;\n" \
-"    if (argc < 1) {\n" \
-"        return false;\n" \
-"    }\n" \
-"    var isGMT = (arguments[argc - 1] == 'GMT');\n" \
-"    if (isGMT) {\n" \
-"        argc--;\n" \
-"    }\n" \
-"    if (argc == 1) {\n" \
-"        var tmp = parseInt(arguments[0]);\n" \
-"        if (isNaN(tmp)) {\n" \
-"            return ((isGMT ? date.getUTCMonth() : date.getMonth()) == 
getMonth(arguments[0]));\n" \
-"        } else if (tmp < 32) {\n" \
-"            return ((isGMT ? date.getUTCDate() : date.getDate()) == tmp);\n" \
-"        } else {\n" \
-"            return ((isGMT ? date.getUTCFullYear() : date.getFullYear()) == 
tmp);\n" \
-"        }\n" \
-"    }\n" \
-"    var year = date.getFullYear();\n" \
-"    var date1, date2;\n" \
-"    date1 = new Date(year, 0, 1, 0, 0, 0);\n" \
-"    date2 = new Date(year, 11, 31, 23, 59, 59);\n" \
-"    var adjustMonth = false;\n" \
-"    for (var i = 0; i < (argc >> 1); i++) {\n" \
-"        var tmp = parseInt(arguments[i]);\n" \
-"        if (isNaN(tmp)) {\n" \
-"            var mon = getMonth(arguments[i]);\n" \
-"            date1.setMonth(mon);\n" \
-"        } else if (tmp < 32) {\n" \
-"            adjustMonth = (argc <= 2);\n" \
-"            date1.setDate(tmp);\n" \
-"        } else {\n" \
-"            date1.setFullYear(tmp);\n" \
-"        }\n" \
-"    }\n" \
-"    for (var i = (argc >> 1); i < argc; i++) {\n" \
-"        var tmp = parseInt(arguments[i]);\n" \
-"        if (isNaN(tmp)) {\n" \
-"            var mon = getMonth(arguments[i]);\n" \
-"            date2.setMonth(mon);\n" \
-"        } else if (tmp < 32) {\n" \
-"            date2.setDate(tmp);\n" \
-"        } else {\n" \
-"            date2.setFullYear(tmp);\n" \
-"        }\n" \
-"    }\n" \
-"    if (adjustMonth) {\n" \
-"        date1.setMonth(date.getMonth());\n" \
-"        date2.setMonth(date.getMonth());\n" \
-"    }\n" \
-"    if (isGMT) {\n" \
-"    var tmp = date;\n" \
-"        tmp.setFullYear(date.getUTCFullYear());\n" \
-"        tmp.setMonth(date.getUTCMonth());\n" \
-"        tmp.setDate(date.getUTCDate());\n" \
-"        tmp.setHours(date.getUTCHours());\n" \
-"        tmp.setMinutes(date.getUTCMinutes());\n" \
-"        tmp.setSeconds(date.getUTCSeconds());\n" \
-"        date = tmp;\n" \
-"    }\n" \
-"    return ((date1 <= date) && (date <= date2));\n" \
-"}\n" \
-"function timeRange() {\n" \
-"    var argc = arguments.length;\n" \
-"    var date = new Date();\n" \
-"    var isGMT= false;\n" \
-"    if (argc < 1) {\n" \
-"        return false;\n" \
-"    }\n" \
-"    if (arguments[argc - 1] == 'GMT') {\n" \
-"        isGMT = true;\n" \
-"        argc--;\n" \
-"    }\n" \
-"    var hour = isGMT ? date.getUTCHours() : date.getHours();\n" \
-"    var date1, date2;\n" \
-"    date1 = new Date();\n" \
-"    date2 = new Date();\n" \
-"    if (argc == 1) {\n" \
-"        return (hour == arguments[0]);\n" \
-"    } else if (argc == 2) {\n" \
-"        return ((arguments[0] <= hour) && (hour <= arguments[1]));\n" \
-"    } else {\n" \
-"        switch (argc) {\n" \
-"        case 6:\n" \
-"            date1.setSeconds(arguments[2]);\n" \
-"            date2.setSeconds(arguments[5]);\n" \
-"        case 4:\n" \
-"            var middle = argc >> 1;\n" \
-"            date1.setHours(arguments[0]);\n" \
-"            date1.setMinutes(arguments[1]);\n" \
-"            date2.setHours(arguments[middle]);\n" \
-"            date2.setMinutes(arguments[middle + 1]);\n" \
-"            if (middle == 2) {\n" \
-"                date2.setSeconds(59);\n" \
-"            }\n" \
-"            break;\n" \
-"        default:\n" \
-"          throw 'timeRange: bad number of arguments'\n" \
-"        }\n" \
-"    }\n" \
-"    if (isGMT) {\n" \
-"        date.setFullYear(date.getUTCFullYear());\n" \
-"        date.setMonth(date.getUTCMonth());\n" \
-"        date.setDate(date.getUTCDate());\n" \
-"        date.setHours(date.getUTCHours());\n" \
-"        date.setMinutes(date.getUTCMinutes());\n" \
-"        date.setSeconds(date.getUTCSeconds());\n" \
-"    }\n" \
-"    return ((date1 <= date) && (date <= date2));\n" \
-"}\n" \
-""
diff --git a/src/js.h b/src/js.h
index e5d7abc..383c451 100644
--- a/src/js.h
+++ b/src/js.h
@@ -34,3 +34,9 @@ struct pacrunner_js_driver {
 
 int pacrunner_js_driver_register(struct pacrunner_js_driver *driver);
 void pacrunner_js_driver_unregister(struct pacrunner_js_driver *driver);
+
+/* Common functions for JS plugins */
+int __pacrunner_js_resolve(struct pacrunner_proxy *proxy, const char *node, 
char *host, size_t hostlen);
+int __pacrunner_js_getipaddr(struct pacrunner_proxy *proxy, char *host, size_t 
hostlen);
+extern const char __pacrunner_js_routines[];
+
diff --git a/src/js_funcs.c b/src/js_funcs.c
new file mode 100644
index 0000000..6e9cf1e
--- /dev/null
+++ b/src/js_funcs.c
@@ -0,0 +1,224 @@
+/*
+ *
+ *  PACrunner - Proxy configuration daemon
+ *
+ *  Copyright ? 2010-2016  Intel Corporation. All rights reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+const char __pacrunner_js_routines[] =
+"function dnsDomainIs(host, domain) {\n" \
+"    return (host.length >= domain.length &&\n" \
+"            host.substring(host.length - domain.length) == domain);\n" \
+"}\n" \
+"function dnsDomainLevels(host) {\n" \
+"    return host.split('.').length-1;\n" \
+"}\n" \
+"function convert_addr(ipchars) {\n" \
+"    var bytes = ipchars.split('.');\n" \
+"    var result = ((bytes[0] & 0xff) << 24) |\n" \
+"                 ((bytes[1] & 0xff) << 16) |\n" \
+"                 ((bytes[2] & 0xff) << 8) |\n" \
+"                  (bytes[3] & 0xff);\n" \
+"    return result;\n" \
+"}\n" \
+"function isInNet(ipaddr, pattern, maskstr) {\n" \
+"    var test = 
/^(\\d{1,4})\\.(\\d{1,4})\\.(\\d{1,4})\\.(\\d{1,4})$/.exec(ipaddr);\n" \
+"    if (test == null) {\n" \
+"        ipaddr = dnsResolve(ipaddr);\n" \
+"        if (ipaddr == null)\n" \
+"            return false;\n" \
+"    } else if (test[1] > 255 || test[2] > 255 ||\n" \
+"               test[3] > 255 || test[4] > 255) {\n" \
+"        return false;\n" \
+"    }\n" \
+"    var host = convert_addr(ipaddr);\n" \
+"    var pat = convert_addr(pattern);\n" \
+"    var mask = convert_addr(maskstr);\n" \
+"    return ((host & mask) == (pat & mask));\n" \
+"}\n" \
+"function isPlainHostName(host) {\n" \
+"    return (host.search('\\\\.') == -1);\n" \
+"}\n" \
+"function isResolvable(host) {\n" \
+"    var ip = dnsResolve(host);\n" \
+"    return (ip != null);\n" \
+"}\n" \
+"function localHostOrDomainIs(host, hostdom) {\n" \
+"    if (isPlainHostName(host)) {\n" \
+"        return (hostdom.search('/^' + host + '/') != -1);\n" \
+"    }\n" \
+"    else {\n" \
+"        return (host == hostdom);\n" \
+"    }\n" \
+"}\n" \
+"function shExpMatch(url, pattern) {\n" \
+"   pattern = pattern.replace(/\\./g, '\\\\.');\n" \
+"   pattern = pattern.replace(/\\*/g, '.*');\n" \
+"   pattern = pattern.replace(/\\?/g, '.');\n" \
+"   var newRe = new RegExp('^'+pattern+'$');\n" \
+"   return newRe.test(url);\n" \
+"}\n" \
+"var wdays = new Array('SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT');\n" \
+"var monthes = new Array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 
'AUG', 'SEP', 'OCT', 'NOV', 'DEC');\n" \
+"function weekdayRange() {\n" \
+"    function getDay(weekday) {\n" \
+"        for (var i = 0; i < 6; i++) {\n" \
+"            if (weekday == wdays[i])\n" \
+"                return i;\n" \
+"        }\n" \
+"        return -1;\n" \
+"    }\n" \
+"    var date = new Date();\n" \
+"    var argc = arguments.length;\n" \
+"    var wday;\n" \
+"    if (argc < 1)\n" \
+"        return false;\n" \
+"    if (arguments[argc - 1] == 'GMT') {\n" \
+"        argc--;\n" \
+"        wday = date.getUTCDay();\n" \
+"    } else {\n" \
+"        wday = date.getDay();\n" \
+"    }\n" \
+"    var wd1 = getDay(arguments[0]);\n" \
+"    var wd2 = (argc == 2) ? getDay(arguments[1]) : wd1;\n" \
+"    return (wd1 == -1 || wd2 == -1) ? false\n" \
+"                                    : (wd1 <= wday && wday <= wd2);\n" \
+"}\n" \
+"function dateRange() {\n" \
+"    function getMonth(name) {\n" \
+"        for (var i = 0; i < 6; i++) {\n" \
+"            if (name == monthes[i])\n" \
+"                return i;\n" \
+"        }\n" \
+"        return -1;\n" \
+"    }\n" \
+"    var date = new Date();\n" \
+"    var argc = arguments.length;\n" \
+"    if (argc < 1) {\n" \
+"        return false;\n" \
+"    }\n" \
+"    var isGMT = (arguments[argc - 1] == 'GMT');\n" \
+"    if (isGMT) {\n" \
+"        argc--;\n" \
+"    }\n" \
+"    if (argc == 1) {\n" \
+"        var tmp = parseInt(arguments[0]);\n" \
+"        if (isNaN(tmp)) {\n" \
+"            return ((isGMT ? date.getUTCMonth() : date.getMonth()) == 
getMonth(arguments[0]));\n" \
+"        } else if (tmp < 32) {\n" \
+"            return ((isGMT ? date.getUTCDate() : date.getDate()) == tmp);\n" \
+"        } else {\n" \
+"            return ((isGMT ? date.getUTCFullYear() : date.getFullYear()) == 
tmp);\n" \
+"        }\n" \
+"    }\n" \
+"    var year = date.getFullYear();\n" \
+"    var date1, date2;\n" \
+"    date1 = new Date(year, 0, 1, 0, 0, 0);\n" \
+"    date2 = new Date(year, 11, 31, 23, 59, 59);\n" \
+"    var adjustMonth = false;\n" \
+"    for (var i = 0; i < (argc >> 1); i++) {\n" \
+"        var tmp = parseInt(arguments[i]);\n" \
+"        if (isNaN(tmp)) {\n" \
+"            var mon = getMonth(arguments[i]);\n" \
+"            date1.setMonth(mon);\n" \
+"        } else if (tmp < 32) {\n" \
+"            adjustMonth = (argc <= 2);\n" \
+"            date1.setDate(tmp);\n" \
+"        } else {\n" \
+"            date1.setFullYear(tmp);\n" \
+"        }\n" \
+"    }\n" \
+"    for (var i = (argc >> 1); i < argc; i++) {\n" \
+"        var tmp = parseInt(arguments[i]);\n" \
+"        if (isNaN(tmp)) {\n" \
+"            var mon = getMonth(arguments[i]);\n" \
+"            date2.setMonth(mon);\n" \
+"        } else if (tmp < 32) {\n" \
+"            date2.setDate(tmp);\n" \
+"        } else {\n" \
+"            date2.setFullYear(tmp);\n" \
+"        }\n" \
+"    }\n" \
+"    if (adjustMonth) {\n" \
+"        date1.setMonth(date.getMonth());\n" \
+"        date2.setMonth(date.getMonth());\n" \
+"    }\n" \
+"    if (isGMT) {\n" \
+"    var tmp = date;\n" \
+"        tmp.setFullYear(date.getUTCFullYear());\n" \
+"        tmp.setMonth(date.getUTCMonth());\n" \
+"        tmp.setDate(date.getUTCDate());\n" \
+"        tmp.setHours(date.getUTCHours());\n" \
+"        tmp.setMinutes(date.getUTCMinutes());\n" \
+"        tmp.setSeconds(date.getUTCSeconds());\n" \
+"        date = tmp;\n" \
+"    }\n" \
+"    return ((date1 <= date) && (date <= date2));\n" \
+"}\n" \
+"function timeRange() {\n" \
+"    var argc = arguments.length;\n" \
+"    var date = new Date();\n" \
+"    var isGMT= false;\n" \
+"    if (argc < 1) {\n" \
+"        return false;\n" \
+"    }\n" \
+"    if (arguments[argc - 1] == 'GMT') {\n" \
+"        isGMT = true;\n" \
+"        argc--;\n" \
+"    }\n" \
+"    var hour = isGMT ? date.getUTCHours() : date.getHours();\n" \
+"    var date1, date2;\n" \
+"    date1 = new Date();\n" \
+"    date2 = new Date();\n" \
+"    if (argc == 1) {\n" \
+"        return (hour == arguments[0]);\n" \
+"    } else if (argc == 2) {\n" \
+"        return ((arguments[0] <= hour) && (hour <= arguments[1]));\n" \
+"    } else {\n" \
+"        switch (argc) {\n" \
+"        case 6:\n" \
+"            date1.setSeconds(arguments[2]);\n" \
+"            date2.setSeconds(arguments[5]);\n" \
+"        case 4:\n" \
+"            var middle = argc >> 1;\n" \
+"            date1.setHours(arguments[0]);\n" \
+"            date1.setMinutes(arguments[1]);\n" \
+"            date2.setHours(arguments[middle]);\n" \
+"            date2.setMinutes(arguments[middle + 1]);\n" \
+"            if (middle == 2) {\n" \
+"                date2.setSeconds(59);\n" \
+"            }\n" \
+"            break;\n" \
+"        default:\n" \
+"          throw 'timeRange: bad number of arguments'\n" \
+"        }\n" \
+"    }\n" \
+"    if (isGMT) {\n" \
+"        date.setFullYear(date.getUTCFullYear());\n" \
+"        date.setMonth(date.getUTCMonth());\n" \
+"        date.setDate(date.getUTCDate());\n" \
+"        date.setHours(date.getUTCHours());\n" \
+"        date.setMinutes(date.getUTCMinutes());\n" \
+"        date.setSeconds(date.getUTCSeconds());\n" \
+"    }\n" \
+"    return ((date1 <= date) && (date <= date2));\n" \
+"}\n" \
+"";
-- 
2.7.4



------------------------------

Subject: Digest Footer

_______________________________________________
connman mailing list
[email protected]
https://lists.01.org/mailman/listinfo/connman


------------------------------

End of connman Digest, Vol 10, Issue 8
**************************************

Reply via email to