From b3dd9eeb7c1a7d0eae61d71866d38aed4fa69ac9 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Fri, 21 Feb 2020 16:12:21 +0800 Subject: [PATCH] openwrt-mwol: add package --- CONTRIBUTED.md | 3 +- package/ctcgfw/luci-app-mwol/Makefile | 18 +++ .../luci-app-mwol/luasrc/controller/mwol.lua | 11 ++ .../luci-app-mwol/luasrc/model/cbi/mwol.lua | 139 ++++++++++++++++++ .../ctcgfw/luci-app-mwol/po/zh_Hans/mwol.po | 54 +++++++ .../root/etc/uci-defaults/40_luci-mwol | 11 ++ package/ctcgfw/mwol/Makefile | 57 +++++++ package/ctcgfw/mwol/files/mwol.config | 11 ++ package/ctcgfw/mwol/files/mwol.init | 57 +++++++ package/ctcgfw/mwol/files/mwol_config_json | 56 +++++++ package/ctcgfw/mwol/files/ssl/ca.crt | 16 ++ package/ctcgfw/mwol/files/ssl/client.crt | 16 ++ package/ctcgfw/mwol/files/ssl/client.key | 27 ++++ 13 files changed, 475 insertions(+), 1 deletion(-) create mode 100644 package/ctcgfw/luci-app-mwol/Makefile create mode 100644 package/ctcgfw/luci-app-mwol/luasrc/controller/mwol.lua create mode 100644 package/ctcgfw/luci-app-mwol/luasrc/model/cbi/mwol.lua create mode 100644 package/ctcgfw/luci-app-mwol/po/zh_Hans/mwol.po create mode 100755 package/ctcgfw/luci-app-mwol/root/etc/uci-defaults/40_luci-mwol create mode 100644 package/ctcgfw/mwol/Makefile create mode 100644 package/ctcgfw/mwol/files/mwol.config create mode 100755 package/ctcgfw/mwol/files/mwol.init create mode 100644 package/ctcgfw/mwol/files/mwol_config_json create mode 100644 package/ctcgfw/mwol/files/ssl/ca.crt create mode 100644 package/ctcgfw/mwol/files/ssl/client.crt create mode 100644 package/ctcgfw/mwol/files/ssl/client.key diff --git a/CONTRIBUTED.md b/CONTRIBUTED.md index 4c91e5a7c8..c316ad75cc 100644 --- a/CONTRIBUTED.md +++ b/CONTRIBUTED.md @@ -33,7 +33,8 @@ luci-app-diskman source: [lisaac/luci-app-diskman](https://github.com/lisaac/luc NanoPi R1s(h5) support: [jerrykuku/openwrt-nanopi-r1s-h5](https://github.com/jerrykuku/openwrt-nanopi-r1s-h5).
NanoPi support: [speedyworldclub/nlede](https://github.com/speedyworldclub/nlede).
qntfs-driver source: [lbbboy/qntfs-driver](https://github.com/lbbboy/qntfs-driver).
-lua-maxminddb source: [jerrykuku/lua-maxminddb](https://github.com/jerrykuku/lua-maxminddb). +lua-maxminddb source: [jerrykuku/lua-maxminddb](https://github.com/jerrykuku/lua-maxminddb).
+package openwrt-mwol: [Mleaf/openwrt-mwol](https://github.com/Mleaf/openwrt-mwol). ## License ### Depending on their own License. diff --git a/package/ctcgfw/luci-app-mwol/Makefile b/package/ctcgfw/luci-app-mwol/Makefile new file mode 100644 index 0000000000..5f62201ee9 --- /dev/null +++ b/package/ctcgfw/luci-app-mwol/Makefile @@ -0,0 +1,18 @@ +# +# Copyright (C) 2019 mleaf +# 微信公众号【WiFi物联网】 +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Support for Mwol +LUCI_DEPENDS:=+mwol +LUCI_PKGARCH:=all +PKG_VERSION:=1.0 +PKG_RELEASE:=2 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/package/ctcgfw/luci-app-mwol/luasrc/controller/mwol.lua b/package/ctcgfw/luci-app-mwol/luasrc/controller/mwol.lua new file mode 100644 index 0000000000..3075b3dfe5 --- /dev/null +++ b/package/ctcgfw/luci-app-mwol/luasrc/controller/mwol.lua @@ -0,0 +1,11 @@ +--Copyright (C) 2019 mleaf +--微信公众号【WiFi物联网】 +module("luci.controller.mwol",package.seeall) + +function index() + if not nixio.fs.access("/etc/config/mwol") then + return + end + local page = entry({"admin", "services", "mwol"}, cbi("mwol"), _("Mwol")) + page.dependent = true +end diff --git a/package/ctcgfw/luci-app-mwol/luasrc/model/cbi/mwol.lua b/package/ctcgfw/luci-app-mwol/luasrc/model/cbi/mwol.lua new file mode 100644 index 0000000000..8ea1a5bd41 --- /dev/null +++ b/package/ctcgfw/luci-app-mwol/luasrc/model/cbi/mwol.lua @@ -0,0 +1,139 @@ +--Copyright (C) 2019 mleaf +--微信公众号【WiFi物联网】 +local NXFS = require "nixio.fs" +local SYS = require "luci.sys" +local HTTP = require "luci.http" +local DISP = require "luci.dispatcher" +local Status,subTopic,pubTopic +local m,s +local e,mwol +local encryption +local sys = require "luci.sys" + +local mac=luci.sys.exec("uci -q get mwol.mwol_conf.id") + +m=Map("mwol",translate("Mqtt wake on lan"),translate("请关注微信公众号【WiFi物联网】获取更多信息: \ +【WiFi物联网】")) + +if SYS.call("pidof mwol >/dev/null") == 0 then + Status = translate("Mwol正在运行...") +else + Status = translate("Mwol未运行...") +end + +subTopic=string.format("Mwol订阅消息主题: /mwol/%s", mac) +pubTopic=string.format("Mwol发布消息主题: /mwol/%s", mac) + +-- +-- LoRa Gateway config for gateway_conf +-- +mwol=m:section(TypedSection,"mwol","") +--mwol.addremove=false +mwol.anonymous=true +mwol.description = translate(string.format("%s

%s

%s", Status, subTopic, pubTopic)) + +mwol:tab("general", translate("General Settings")) +mwol:tab("encryptionSettings", translate("Encryption Settings")) +mwol:tab("ssl", translate("SSL Settings")) + +-- +-- MQTT general +-- +e = mwol:taboption("general", Flag, "enable") +e.title = translate("Enable") +e.default = 0 +e.rmempty = false + +e = mwol:taboption("general", Value, "hostname") +e.title = translate("MQTT Server") +e = mwol:taboption("general", Value, "port") +e.title = translate("MQTT Port") + +host = mwol:taboption("general", Value, "presetmac", translate("Host to wake up"), + translate("Choose the host to wake up or enter a custom MAC address to use")) +host.title = translate("Preset Mac") +sys.net.mac_hints(function(mac, name) + host:value(mac, "%s (%s)" %{ mac, name }) +end) + +e = mwol:taboption("general", Value, "id") +e.default = mac +e.rmempty = false; +e.title = translate("MQTT Topic Id") + +-- +-- MQTT Using encryption +-- +encryption_enable = mwol:taboption("encryptionSettings", ListValue,"encryptionenable",translate("Enable")) +encryption_enable.optional = false; +encryption_enable.rmempty = false; +encryption_enable.default = 0 +encryption_enable.datatype = "uinteger" +encryption_enable:value(1, translate("True")) +encryption_enable:value(0, translate("False")) + +-- +-- MQTT username +-- +encryption_username = mwol:taboption("encryptionSettings", Value,"username",translate("MQTT UserName")) +encryption_username.optional = true; +encryption_username.rmempty = true; +encryption_username.default = "mleaf" +encryption_username.datatype = "string" +encryption_username:depends("encryptionenable", "1") + +-- +-- MQTT password +-- +encryption_password = mwol:taboption("encryptionSettings", Value,"password",translate("MQTT Password")) +encryption_password.optional = true; +encryption_password.rmempty = true; +encryption_password.default = "www.mleaf.org" +encryption_password.datatype = "string" +encryption_password:depends("encryptionenable", "1") + +-- +-- MQTT Using SSL +-- +ssl_enable = mwol:taboption("ssl", ListValue,"sslenable",translate("Enable")) +ssl_enable.optional = false; +ssl_enable.rmempty = false; +ssl_enable.default = 0 +ssl_enable.datatype = "uinteger" +ssl_enable:value(1, translate("True")) +ssl_enable:value(0, translate("False")) + +-- +-- MQTT cafile +-- +cafile = mwol:taboption("ssl", Value,"cafile",translate("ca"), + translate("Edit the ca file path.")) +cafile.optional = true; +cafile.rmempty = true; +cafile.default = false +cafile.datatype = "string" +cafile:depends("sslenable", "1") + +-- +-- MQTT crtfile +-- +crtfile = mwol:taboption("ssl", Value,"crtfile",translate("crt"), + translate("Edit the crt file path.")) +crtfile.optional = true; +crtfile.rmempty = true; +crtfile.default = false +crtfile.datatype = "string" +crtfile:depends("sslenable", "1") + +-- +-- MQTT keyfile +-- +keyfile = mwol:taboption("ssl", Value,"keyfile",translate("key"), + translate("Edit the key file path.")) +keyfile.optional = true; +keyfile.rmempty = true; +keyfile.default = false +keyfile.datatype = "string" +keyfile:depends("sslenable", "1") + +return m diff --git a/package/ctcgfw/luci-app-mwol/po/zh_Hans/mwol.po b/package/ctcgfw/luci-app-mwol/po/zh_Hans/mwol.po new file mode 100644 index 0000000000..820eea7b66 --- /dev/null +++ b/package/ctcgfw/luci-app-mwol/po/zh_Hans/mwol.po @@ -0,0 +1,54 @@ + +msgid "Mwol Plus is Running" +msgstr "Mwol正在运行" + +msgid "Mwol Plus is Not Running" +msgstr "Mwol未运行" + +msgid "Mwol Sub Topic:" +msgstr "Mwol订阅消息主题:" + +msgid "Mwol Pub Topic:" +msgstr "Mwol发布消息主题:" + +msgid "General Settings" +msgstr "通用设置" + +msgid "Encryption Settings" +msgstr "加密设定" + +msgid "SSL Settings" +msgstr "SSL证书设置" + +msgid "Enable" +msgstr "开启" + +msgid "MQTT Server" +msgstr "MQTT服务器" + +msgid "MQTT Port" +msgstr "MQTT端口" + +msgid "Preset Mac" +msgstr "预设MAC地址" + +msgid "Choose the host to wake up or enter a custom MAC address to use" +msgstr "选择一个需要唤醒的主机或自定义唤醒主机的mac地址" + +msgid "MQTT Topic Id" +msgstr "MQTT主题ID" + +msgid "MQTT UserName" +msgstr "MQTT用户名" + +msgid "MQTT Password" +msgstr "MQTT密码" + +msgid "Edit the ca file path." +msgstr "编辑CA路径。" + +msgid "Edit the crt file path." +msgstr "编辑CRT路径。" + +msgid "Edit the key file path." +msgstr "编辑KEY路径。" diff --git a/package/ctcgfw/luci-app-mwol/root/etc/uci-defaults/40_luci-mwol b/package/ctcgfw/luci-app-mwol/root/etc/uci-defaults/40_luci-mwol new file mode 100755 index 0000000000..8ceb530396 --- /dev/null +++ b/package/ctcgfw/luci-app-mwol/root/etc/uci-defaults/40_luci-mwol @@ -0,0 +1,11 @@ +#!/bin/sh + +uci -q batch <<-EOF >/dev/null + delete ucitrack.@mwol[-1] + add ucitrack mwol + set ucitrack.@mwol[-1].init=mwol + commit ucitrack +EOF + +rm -f /tmp/luci-indexcache +exit 0 diff --git a/package/ctcgfw/mwol/Makefile b/package/ctcgfw/mwol/Makefile new file mode 100644 index 0000000000..4a62b97df4 --- /dev/null +++ b/package/ctcgfw/mwol/Makefile @@ -0,0 +1,57 @@ +# +# Copyright (C) 2019 mleaf.org +# 微信公众号【WiFi物联网】 +# +# This is free software, licensed under the GNU General Public License v3. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=mwol +PKG_VERSION:=1.0.0 +PKG_RELEASE=1 + + +PKG_LICENSE:=GPL-3.0 +PKG_MAINTAINER:=mleaf +PKG_LICENSE_FILES:=COPYING + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/Mleaf/mwol.git +PKG_SOURCE_VERSION:=59f9805901b4ac2916a0273ffbc29197fcd17a62 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz + + +PKG_INSTALL:=1 +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk + +define Package/mwol + SECTION:=net + CATEGORY:=Network + DEPENDS:=+libpthread +libmosquitto-ssl +luci-lib-json +libopenssl + TITLE:=MQTT Wake On Lan + URL:=http://www.mleaf.org +endef + +define Package/mwol/description + mwol is a project that uses mqtt to implement reverse proxy and wake up the computer. +endef + +define Package/mwol/install + $(INSTALL_DIR) $(1)/usr/share/mwol/ssl + $(CP) files/ssl/* $(1)/usr/share/mwol/ssl/ + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mwol $(1)/usr/sbin/mwol + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DATA) files/mwol.config $(1)/etc/config/mwol + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) files/mwol.init $(1)/etc/init.d/mwol + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) files/mwol_config_json $(1)/usr/sbin/mwol_config_json +endef + +$(eval $(call BuildPackage,mwol)) diff --git a/package/ctcgfw/mwol/files/mwol.config b/package/ctcgfw/mwol/files/mwol.config new file mode 100644 index 0000000000..919c1935cc --- /dev/null +++ b/package/ctcgfw/mwol/files/mwol.config @@ -0,0 +1,11 @@ + +config mwol 'mwol_conf' + option enable '0' + option hostname 'www.mleaf.org' + option port '1999' + option sslenable '1' + option cafile '/usr/share/mwol/ssl/ca.crt' + option crtfile '/usr/share/mwol/ssl/client.crt' + option keyfile '/usr/share/mwol/ssl/client.key' + option encryptionenable '0' + diff --git a/package/ctcgfw/mwol/files/mwol.init b/package/ctcgfw/mwol/files/mwol.init new file mode 100755 index 0000000000..ab82d29603 --- /dev/null +++ b/package/ctcgfw/mwol/files/mwol.init @@ -0,0 +1,57 @@ +#!/bin/sh /etc/rc.common +# Copyright (c) 2019 www.mleaf.org. All rights reserved. +# 微信公众号【WiFi物联网】 + +START=99 +STOP=10 + +USE_PROCD=1 + +PROG=/usr/sbin/mwol + +generate_mwol_conf() +{ + logger "Generate /tmp/mwol.json" + lua /usr/sbin/mwol_config_json > /tmp/mwol.json +} + +start_service_real() { + local cfg="$1" + local enable + local id + config_get enable "$cfg" enable + config_get id "$cfg" id + if [ -z "$id" ]; then + mac=`cat /sys/class/net/eth0/address` + logger "mqtt id is not set to use eth0 by default: $mac" + uci set mwol.mwol_conf.id=$mac + uci commit mwol + fi + + if [ "$enable" -eq 1 ]; then + generate_mwol_conf + + procd_open_instance + + procd_set_param command $PROG -c /tmp/mwol.json + + procd_set_param respawn + + procd_set_param stdout 1 + procd_set_param stderr 1 + + procd_close_instance + fi + +} + +service_triggers() { + procd_add_reload_trigger "mwol" +} + +start_service() +{ + config_load mwol + + config_foreach start_service_real mwol +} diff --git a/package/ctcgfw/mwol/files/mwol_config_json b/package/ctcgfw/mwol/files/mwol_config_json new file mode 100644 index 0000000000..c10e42bf9b --- /dev/null +++ b/package/ctcgfw/mwol/files/mwol_config_json @@ -0,0 +1,56 @@ +#!/usr/bin/env lua +--Copyright (c) 2019 www.mleaf.org. All rights reserved. +--微信公众号【WiFi物联网】 + +ubus = require('ubus') + +local json = require "luci.json" + +local conn = ubus.connect() +if not conn then + error("Failed to connect to ubus") +end + +local mwol_ubus = conn:call("uci", "get", {config = "mwol"}) + +local mwol_table = mwol_ubus["values"] + +local mwol_conf = {} +local mwo_enable + +function get_mwol_conf(mTable) + + for key, val in pairs(mTable) do + if string.match(key, '%.[%a]*', 1) == nil then + if key == "enable" then + mwo_enable = val + elseif key == "sslenable" then + if val == "1" then + mwol_conf["ssl"] = true + else + mwol_conf["ssl"] = false + end + elseif key=="encryptionenable" then + if val == "1" then + mwol_conf["encryption"] = true + else + mwol_conf["encryption"] = false + end + elseif key == "port" then + mwol_conf[key] = tonumber(val) + else + mwol_conf[key] = val + end + end + end +end + +for key, val in pairs(mwol_table) do + + if key == "mwol_conf" then + get_mwol_conf(val) + end +end + +jsonStr = json.encode(mwol_conf) +print(jsonStr) diff --git a/package/ctcgfw/mwol/files/ssl/ca.crt b/package/ctcgfw/mwol/files/ssl/ca.crt new file mode 100644 index 0000000000..0100bef370 --- /dev/null +++ b/package/ctcgfw/mwol/files/ssl/ca.crt @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICljCCAX4CCQCKs4OCFSYhzjANBgkqhkiG9w0BAQsFADANMQswCQYDVQQDDAJj +YTAeFw0yMDAxMDcwNDEwMTJaFw0zMDAxMDQwNDEwMTJaMA0xCzAJBgNVBAMMAmNh +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3LwOkCJ1MDajCRK4jTgf +0cnapRPOs6xZFru0NgHMY7R6hlmBk8asHJIM+B9c3hGqEYERkRTR586lUWiE1n/i +VTTa5kblEb48p9dDaeUHtGB5FYvJQDgpdyy+dbqgFs/LbZ4mngz0rBeY4ukxu3lX +Zcs2DOGYnZd2uun7TSd5k6276tjzljcVfPigBN0U1YMyhPv+vo66bYBH+QFBXgd+ +8+Be5nCEY2IQjaeTbpobcnz1x9iyfrqDc1Xk+d+dnHoajdgIdWKgR6rTcKlMNwh+ +SVz1zU1GmzUtD+dfpB2mc8f1G3J1bXA2n8Jt568KH6Gx8KvX6NXpvK+vHcmFTaDv +CQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAwJ8xvUtSEhYuFOGCZ1fWz1Q8lLtC6 +tNARV4C+JmT63mBkwP2tHC5GjbgCQTtYA8bgiEAsZkYL7wDw4R6104xHVmpYSaoN +lZxSps2t7WfpwABzaHZaeIzlZ+7lkamLb5It9yAvJTEN2L3opdRFleumz+3mpouM +VjBN6g3xX1SUmPoWn8QW7NvK9KwZHdr6uALoZ8vGAaXg7OTZooHL4xlCyESLqnbA +p7Nr1iiqhbRRcVeplljFGoAEMBlrx1x3rwtJl2gCBQmN802P+Vh4TdoWTBbFhdNR +R3PeUvxu3rZYnFrcfmdiABnAzqAybxr8/GO/UHqooSD2PLwC/CiI4FjT +-----END CERTIFICATE----- diff --git a/package/ctcgfw/mwol/files/ssl/client.crt b/package/ctcgfw/mwol/files/ssl/client.crt new file mode 100644 index 0000000000..a5f45c2a96 --- /dev/null +++ b/package/ctcgfw/mwol/files/ssl/client.crt @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICmjCCAYICCQDPwW2AAN66QDANBgkqhkiG9w0BAQsFADANMQswCQYDVQQDDAJj +YTAeFw0yMDAxMDcwNDEwMTJaFw0zMDAxMDQwNDEwMTJaMBExDzANBgNVBAMMBmNs +aWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPHfX5Eb6fEz/DSL +JwTC+ZoToYIi4Nw4n+MyTGzMrNRXGKCX52/h9DrWUNNpACZ2O3SVSdgTknv2g0oZ +wjr0xEhMILYwAauzA9N6IcLZcZ2RMvRXyY0KRvVluBEgrZty0oEHgFE2BSMENF6P +BWRmWJs8s91Ckt8JkHfkXR7ul8Wba9ETQldZ1Z9lHgawbxuQARq6IduqtrqHwId0 +LLYGF7bsYf/IL5ZtQs66+ldJUiUcRAwaR12X6kwn1dATpcgJlxiq4LCYP3wde3Ja +wqbW57S7FBoVInjboieGAGBV9Cd3jW19hLQCzAO5Y81N6GSBX5uxu4RkbgMEmWOw +/T7Wq30CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAz5let8l3UXdhVSim+ZT5Q+l9 +jTJxheSct5MnZ+68qkF7Aax0DY6eB2RTymv/uQ9TBOKPGnOQAW/c328t39XP2PRY +tqN30iyYsmxZ/AXVDykEnV4GlssgJKWPrC+oca80+FT8O+k0QjiAFbVdpRfkr/rh +IMBRt/E0vuaqEPfgS7b9SrE8cH+InZMvoeV1PKDBnMCnROO6jHo27iV1yJxJd0Eu +JmOBHnIcFh3SD8kh4boPO4IiHY6FS3rDgaVveITc6faZSDvyjkv5Yqvl+n79V3M9 +zISgdkNYkEG50dJiVPoVNq0SLt4kWTpRKs3WgZEN4wZVQCu9Ijtf+4hmqeWmTg== +-----END CERTIFICATE----- diff --git a/package/ctcgfw/mwol/files/ssl/client.key b/package/ctcgfw/mwol/files/ssl/client.key new file mode 100644 index 0000000000..41451e4c40 --- /dev/null +++ b/package/ctcgfw/mwol/files/ssl/client.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA8d9fkRvp8TP8NIsnBML5mhOhgiLg3Dif4zJMbMys1FcYoJfn +b+H0OtZQ02kAJnY7dJVJ2BOSe/aDShnCOvTESEwgtjABq7MD03ohwtlxnZEy9FfJ +jQpG9WW4ESCtm3LSgQeAUTYFIwQ0Xo8FZGZYmzyz3UKS3wmQd+RdHu6XxZtr0RNC +V1nVn2UeBrBvG5ABGroh26q2uofAh3QstgYXtuxh/8gvlm1Czrr6V0lSJRxEDBpH +XZfqTCfV0BOlyAmXGKrgsJg/fB17clrCptbntLsUGhUieNuiJ4YAYFX0J3eNbX2E +tALMA7ljzU3oZIFfm7G7hGRuAwSZY7D9PtarfQIDAQABAoIBACkFdGTc8hlZcr3K +l+yD0OdjyvGSTsaqx9s1jaaqM+mzd9bMzJC6JrzP2ldwqHjddon4Q9TkxORHU87+ +fWWYW63TU3zyuWXQb6avQQiV7mIF3Tl5phJImu5FuSkWfLsvhyohBo8/dTGSJfuf +kA+OGBsD+ZFeGCDBs4HR9kUnvA/kTsXFL2XsrjNvPP4d1z90H2GtVujhhH4mfEO1 +E8BL1crNMmZFek+ETk7GfZ/GE4oLtno1jaBczbpEa9wekjtq6ffoAGaAd5/6ZjIw +tpC6bNSDGqL0fTd/6ss5WZc8hYLTdkcZxh08kpVP5WoWm5WSxh8osQ494w6upEuo +p9qpRrUCgYEA+eRBhfAC0Cal5qTZTX4nbKdO7gkmxefcNfMF6eNJZ/oxOANEnl/Q +sSyZvtzoxNPaPuYu4LrniaKqFKD6DqA2ZIKRf4o8ydfQeDMvz8Ly4rpzuIDi45kc +sZ2S3aRh8IpDM4KOFachmBcjpyf2CPhJxeYLlHCMfASN5T2cGdpBKMcCgYEA98jv +viDoDPRTglfNYWIvU4dHWel9zjySSey6L9Awpna22jdLVTcaplZQNVKJ7uajIj1A +DA2GNDtZXHnUJBx9avMaURXBGLh/0S9NBMaeCRoQeCI1249/3xPQzKCWscvv2hPW +vRUQMS+erfmSDxg8B5LOVqPXLagZ0QA33KkILZsCgYBEh+GkTrcmyIKU5z6k7uT2 ++kc+JopYmgadUQGdK/T0q/uVhefqmxJLlJSxcDnxyLvApjXS8c8Pwulr8N3C5xMj +q18loA6duC721+rTyn37yfB0d/xBOLtSxokBedRWOETHupUmwQgIgsgHToE94oGw +4S7pzZfpZwJXDPdja6SU/wKBgQDLHUG5HwxZIicaX5MR0wRseiX5BDeGSYy5YH43 +F3fp3MKDGnR8RBFqbLKPIzvCQ/lR5deMicGLK2NTNOK7P0dn1iOqeCSzePn9pcKC +ubVuTJlXgOOZOYZefMXaF4Gv+TaCE2Uh1hRR3XE7t6sNCJactrDBwMhwuq1+76jb +DwyPJQKBgQCGX/+wwPnAvmtaKu9EUegp2hbmPXqLCexGAME/npUn071CYRoXb1OM ++13f7zWxC+5AIbcbX1LC+GrafeJGT/9VPqivvntwU2PtxfdPJ+wGkLcV+10gxV2l +5+w86aMDefzlqvMCX6pp9SY8jtzYBYGhm5OFVQ4eRAkceHlpXtEf/w== +-----END RSA PRIVATE KEY-----