diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 00000000..d2e78cfc --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,24 @@ +name: Docker Image CI + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Build the Docker image + run: docker build . --file Dockerfile --tag macide/voipsuite:git + - name: Invoke deployment hook + uses: distributhor/workflow-webhook@v3 + with: + webhook_type: 'json-extended' + webhook_url: 'https://portainer.derek.bartoli.me/api/stacks/webhooks/d0710922-0f3f-4a54-8035-eae4a4fe8bd6' + data: '{ }' diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..711fa013 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM docker.io/library/node:alpine + +# Choose the port +EXPOSE 3000:3000 + +# Environment variables +ENV NPM_CONFIG_PREFIX=/home/node/.npm-global +ENV PATH=$PATH:/home/node/.npm-global/bin +RUN apk update&&apk add git&&rm -rf /var/cache/apk/* +# Install app dependencies +WORKDIR /home/node/app +RUN git clone https://github.com/macide213/VoIP.git . +RUN npm install + +# Install app +RUN chown -R node:node . +USER node + +CMD [ "node", "app.js" ] diff --git a/app.js b/app.js index 8bf56376..f1604c00 100644 --- a/app.js +++ b/app.js @@ -9,7 +9,7 @@ const path = require('path'); var session = require('cookie-session') var compression = require('compression') app.use(compression()) - +console.log('new') var expiryDate = new Date(Date.now() + 60 * 60 * (1000 * 12 * 30)) // 30 day app.use(session({ name: 'session', diff --git a/app/helper/telnyx.helper.js b/app/helper/telnyx.helper.js index 97dc14ff..4cf9dd27 100644 --- a/app/helper/telnyx.helper.js +++ b/app/helper/telnyx.helper.js @@ -2,6 +2,7 @@ const Telnyx = require('telnyx'); var axios = require('axios'); const moment = require('moment'); const crypto = require('crypto') +var util = require('util'); const { combineURLs } = require("./common.helper") //Inside lib file declare functions @@ -149,19 +150,53 @@ const deleteSIPApp = (apiKey, uuid) => { } }); } +function getAllMethods(object) { + Object.getOwnPropertyNames(object).filter(function(property) { + if(property.substring(0,1)=='_'){ + + }else{ + try { + console.log(typeof object[property] + ': ' + property); + } catch (error) { + console.log(error.message) + } + + if(typeof object[property] == 'object'){ + console.log('----------------start ' + property) + try { + getAllMethods(object[property]) + } catch (error) { + console.log(error.message) + } + + console.log('----------------stop ' + property) + } + } + }); +} const createOutboundVoice = (apiKey) => { return new Promise(async (resolve,reject) => { try{ + + const myname = `outbound${moment().format('YYYYMMDDHHmm')}` + console.log('----------------telnyx') const telnyx = Telnyx(apiKey); + getAllMethods(telnyx); + console.log('-------------outboundVoiceProfiles') + getAllMethods(telnyx.outboundVoiceProfiles); + //console.log('telnyx.outboundVoiceProfiles.create') + //getAllMethods(telnyx.outboundVoiceProfiles.create); // In Node 10 const outboundVoiceProfiles = await telnyx.outboundVoiceProfiles.create( - {"name": `outbound${moment().format('YYYYMMDDHHmm')}`} + {"name": myname} ); // console.log(outboundVoiceProfiles.data) + getAllMethods(outboundVoiceProfiles) resolve(outboundVoiceProfiles); }catch(error){ - // console.log(error) + console.log(error.message) + console.log(error.stack) resolve(false); } }); @@ -342,4 +377,4 @@ const getNumberData = async (data) => { module.exports = { requestCurl, createTexmlApp, updateTexmlApp, deleteTexmlApp, createSIPApp, updateSIPApp, deleteSIPApp, createOutboundVoice, deleteOutboundVoice, updatePhoneNumber, emptyMessageProfile, deleteMessageProfile, messageProfileFallback, texmlAppFalback, sIPAppFallback, messageProfileGet, texmlAppGet, sIPAppGet, getNumberData -} \ No newline at end of file +} diff --git a/package.json b/package.json index 8f1b40b2..5026c3a4 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "moment": "^2.29.1", "moment-timezone": "^0.5.33", "mongoose": "^5.13.8", - "multer": "^1.4.3", + "multer": "^1.4.4-lts.1", "node-cron": "^3.0.0", "nodemailer": "^6.6.3", "nodemailer-openpgp": "^2.1.0", @@ -40,7 +40,7 @@ "request": "^2.88.2", "socket.io": "^4.1.3", "speakeasy": "^2.0.0", - "telnyx": "^1.18.0", + "telnyx": "1.23.0", "twilio": "^3.67.0", "u2f": "^0.1.3", "validatorjs": "^3.22.1"