├── .env.example
├── .gitattributes
├── .gitignore
├── .styleci.yml
├── LICENSE
├── app
├── Calls.php
├── Console
│ ├── Commands
│ │ ├── BouncerPermissions
│ │ │ ├── BouncerPermissions.php
│ │ │ └── ReviewGroupPermissions.php
│ │ ├── CallManager
│ │ │ ├── ADNumberUpdatesByMailboxNumber.php
│ │ │ ├── AddPhones.php
│ │ │ ├── BuildCUCMSiteDefaults.php
│ │ │ ├── CiscoWirelessPhoneCert.php
│ │ │ ├── CleanupOldCucmCDRSInDB.php
│ │ │ ├── CucmGatewayCallCounts.php
│ │ │ ├── CucmNumberCleanup.php
│ │ │ ├── CucmPhoneIPAddresses.php
│ │ │ ├── CucmPhoneNamesCache.php
│ │ │ ├── CucmPhoneScan.php
│ │ │ ├── CucmPhoneScanOnDemand.php
│ │ │ ├── CucmPhoneSiteMove.php
│ │ │ ├── CucmPhoneandNumberCleanup.php
│ │ │ ├── CucmSIPPhoneReport.php
│ │ │ ├── CucmSiteScan.php
│ │ │ ├── DidScanCucm.php
│ │ │ ├── FeedELKOldData.php
│ │ │ ├── GetCucmCDRs.php
│ │ │ ├── GetCucmPhoneStats.php
│ │ │ ├── LdapUserUpdate.php
│ │ │ ├── Ldapsync.php
│ │ │ ├── OwnerUpdate.php
│ │ │ └── SiteLocal911.php
│ │ ├── Gizmo
│ │ │ └── GizmoApiTest.php
│ │ ├── IDM
│ │ │ └── IdmUpdateUserPhone.php
│ │ ├── Inspire.php
│ │ ├── Ldap
│ │ │ ├── GetLdapUser.php
│ │ │ └── TestLdapPhoneUpdate.php
│ │ ├── MACD
│ │ │ └── GetMacdReports.php
│ │ ├── Microsoft
│ │ │ ├── MicrosoftTeamsUserReport.php
│ │ │ └── MicrosoftTeamsUserStatsReport.php
│ │ ├── Monitoring
│ │ │ ├── CucmSonusLoopMitigator.php
│ │ │ ├── MACDJobMonitor.php
│ │ │ ├── PingScanInfrastructure.php
│ │ │ ├── SonusAlarmMonitor.php
│ │ │ └── SonusAttemptMonitor.php
│ │ ├── Network
│ │ │ └── GetAnyConnectStats.php
│ │ ├── Numbers
│ │ │ ├── DidScanCucmAndTeams.php
│ │ │ └── NumberSearch.php
│ │ ├── OnCall
│ │ │ └── OnCallPermissions.php
│ │ ├── Sonus
│ │ │ ├── CleanSonusLogs.php
│ │ │ ├── CleanupLoopCDRS.php
│ │ │ ├── CleanupOldSonusCDRSInDB.php
│ │ │ ├── GetSonusCDRs.php
│ │ │ ├── GetSonusCallReports.php
│ │ │ ├── GetSonusConfig.php
│ │ │ ├── SonusActiveCallsCache.php
│ │ │ └── SonusCalls.php
│ │ ├── UCCX
│ │ │ ├── UccxAgentLoginMonitor.php
│ │ │ └── UccxTest.php
│ │ ├── UnityConnection
│ │ │ ├── DidNumberUpdatesByMailboxNumber.php
│ │ │ ├── UnityConnMB.php
│ │ │ └── UnityMBNumberPopulateIDM.php
│ │ └── West911Enable
│ │ │ ├── PhoneEGWScanUpdate.php
│ │ │ └── TeamsEgwSync.php
│ └── Kernel.php
├── CucmCDR.php
├── CucmCMR.php
├── CucmPhoneStats.php
├── CucmRealTime.php
├── Cucmclass.php
├── Cucmphoneconfigs.php
├── Cucmsiteconfigs.php
├── Cupi.php
├── DeletedItems.php
├── Did.php
├── Didblock.php
├── Elastic
│ └── ElasticApiClient.php
├── Events
│ ├── Create_AD_IPPhone_Event.php
│ ├── Create_Cucm_Local_EndUser_Event.php
│ ├── Create_Line_Event.php
│ ├── Create_Phone_Event.php
│ ├── Create_UnityConnection_LDAP_Import_Mailbox_Event.php
│ ├── Create_UnityConnection_Mailbox_Event.php
│ ├── Update_Cucm_CallForward_To_Teams_Event.php
│ ├── Update_IDM_PhoneNumber_Event.php
│ └── Update_Teams_User_For_Voice_Event.php
├── Exceptions
│ └── Handler.php
├── GatewayCalls.php
├── Gizmo
│ └── RestApiClient.php
├── Http
│ ├── Controllers
│ │ ├── Auth
│ │ │ ├── AuthController.php
│ │ │ ├── ForgotPasswordController.php
│ │ │ ├── LoginController.php
│ │ │ ├── RegisterController.php
│ │ │ └── ResetPasswordController.php
│ │ ├── BouncerPermissionsController.php
│ │ ├── Callcontroller.php
│ │ ├── Controller.php
│ │ ├── Cucm.php
│ │ ├── CucmCdrCmrController.php
│ │ ├── CucmCtiRoutePoint.php
│ │ ├── CucmLine.php
│ │ ├── CucmPhoneStatsController.php
│ │ ├── CucmRealTimeController.php
│ │ ├── CucmReportsController.php
│ │ ├── CucmSiteMigration.php
│ │ ├── CucmUser.php
│ │ ├── Cucmphone.php
│ │ ├── Cucmsite.php
│ │ ├── Cupicontroller.php
│ │ ├── Didcontroller.php
│ │ ├── GatewayCallsController.php
│ │ ├── GizmoController.php
│ │ ├── Ldap.php
│ │ ├── LogController.php
│ │ ├── PhoneMACDController.php
│ │ ├── PingController.php
│ │ ├── ReportsController.php
│ │ ├── SiteMigrationController.php
│ │ ├── SitePlanController.php
│ │ ├── Sonus5kCDRcontroller.php
│ │ ├── Sonus5kcontroller.php
│ │ ├── TeamsReportsController.php
│ │ ├── TelecomInfrastructureController.php
│ │ ├── West911EnableEGWController.php
│ │ └── tmp
│ │ │ └── test
│ ├── Kernel.php
│ └── Middleware
│ │ ├── EncryptCookies.php
│ │ ├── RedirectIfAuthenticated.php
│ │ └── VerifyCsrfToken.php
├── Listeners
│ ├── Create_AD_IPPhone_Listener.php
│ ├── Create_Cucm_Local_EndUser_Listener.php
│ ├── Create_Line_Listener.php
│ ├── Create_Phone_Listener.php
│ ├── Create_UnityConnection_LDAP_Import_Mailbox_Listener.php
│ ├── Create_UnityConnection_Mailbox_Listener.php
│ ├── Update_Cucm_CallForward_To_Teams_Listener.php
│ ├── Update_IDM_PhoneNumber_Listener.php
│ └── Update_Teams_User_For_Voice_Listener.php
├── Phone.php
├── PhoneMACD.php
├── Phoneplan.php
├── Ping.php
├── Providers
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── BroadcastServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── Reports.php
├── SAP
│ └── IDM
│ │ └── RestApiClient.php
├── Site.php
├── SiteMigration.php
├── Sonus5k.php
├── Sonus5kCDR.php
├── TelecomInfrastructure.php
├── Uccx.php
├── UccxFinesseAgent.php
├── User.php
└── West911EnableEGW.php
├── artisan
├── bootstrap
├── app.php
├── autoload.php
└── cache
│ └── .gitignore
├── composer.json
├── config
├── api.php
├── app.php
├── auditing.php
├── auth.php
├── broadcasting.php
├── cache.php
├── compile.php
├── database.php
├── filesystems.php
├── jwt.php
├── l5-swagger.php
├── laravel-backup.php
├── mail.php
├── queue.php
├── services.php
├── session.php
└── view.php
├── crontab_setup.sh
├── database
├── .gitignore
├── factories
│ └── ModelFactory.php
├── migrations
│ ├── .gitkeep
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2016_08_11_204855_create_phone_numbers_table.php
│ ├── 2016_10_24_191759_create_audits_table.php
│ ├── 2016_12_09_213102_create_site_planning.php
│ ├── 2017_01_29_021517_create_sbc_call_history_table.php
│ ├── 2017_03_19_135249_create_cucm_configs.php
│ ├── 2017_03_24_005009_create_activity_log_table.php
│ ├── 2017_05_09_201655_Sonus5kCDRs.php
│ ├── 2017_05_23_153612_create_telecom_infrastructure_table.php
│ ├── 2017_06_13_135455_site_migration.php
│ ├── 2017_07_31_212422_create_jobs_table.php
│ ├── 2017_08_02_215812_create_failed_jobs_table.php
│ ├── 2017_08_04_135256_create_phone_mac_table.php
│ ├── 2017_10_18_133042_create_gateway_calls_table.php
│ ├── 2017_10_20_143728_AddIndexes.php
│ ├── 2018_01_10_214424_create_CucmCDRs_table.php
│ ├── 2018_01_15_145358_create_CucmCMRs_table.php
│ ├── 2019_04_17_151141_add_phoneplan_to_phone_mac_table.php
│ ├── 2019_09_13_200110_create_bouncer_tables.php
│ ├── 2019_09_13_200111_abilities_extend_entityid.php
│ ├── 2019_12_21_150746_add_last_registered_field_to_cucmphone_table.php
│ ├── 2020_03_15_221404_create_cucm_phone_stats_table.php
│ └── 2020_03_16_020525_create_reports_table.php
└── seeds
│ ├── .gitkeep
│ ├── DatabaseSeeder.php
│ └── DidblockSeeder.php
├── etc
├── haproxy
│ └── haproxy.cfg.example
└── supervisor
│ └── conf.d
│ ├── .gitignore
│ └── telecom-laravel-macd-worker.conf.example
├── grab-cucm-phoneconfigs.sh.example
├── grab-cucm-siteconfigs.sh.example
├── grab-sonus-configs.sh.example
├── gulpfile.js
├── package.json
├── phpunit.xml
├── public
├── .htaccess
├── admin
│ ├── .gitignore
│ ├── admin
│ │ ├── admin.controller.js
│ │ └── admin.html
│ ├── app-content
│ │ ├── app.css
│ │ ├── google.analytics.js
│ │ └── navbar.html
│ ├── app-services
│ │ ├── authentication.service.js
│ │ ├── companycontent.service.js
│ │ ├── log.service.js
│ │ ├── page.service.js
│ │ ├── permissions.service.js
│ │ └── user.service.js
│ ├── app.js
│ ├── bower.json
│ ├── home
│ │ ├── accessdenied.controller.js
│ │ ├── accessdenied.html
│ │ ├── home.controller.js
│ │ └── home.html
│ ├── index.html
│ ├── login
│ │ ├── login.controller.js
│ │ └── login.html
│ ├── logout
│ │ ├── logout.controller.js
│ │ └── logout.html
│ ├── permissions
│ │ ├── users.permissions.controller.js
│ │ └── users.permissions.html
│ └── reports
│ │ ├── 24hr.pagelogs.controller.js
│ │ ├── 24hr.pagelogs.html
│ │ ├── attemptsummary.graph.controller.js
│ │ ├── attemptsummary.graph.html
│ │ └── reports.home.html
├── css
│ └── app.css
├── favicon.ico
├── index.php
├── js
│ └── app.js
├── oncall
│ ├── .gitignore
│ ├── app-content
│ │ ├── app.css
│ │ ├── google.analytics.js
│ │ └── navbar.html
│ ├── app-services
│ │ ├── authentication.service.js
│ │ ├── companycontent.service.js
│ │ ├── cucmoncall.service.js
│ │ ├── ldap.service.js
│ │ ├── page.service.js
│ │ ├── teams.service.js
│ │ └── user.service.js
│ ├── app.js
│ ├── bower.json
│ ├── home
│ │ ├── accessdenied.controller.js
│ │ ├── accessdenied.html
│ │ ├── home.controller.js
│ │ └── home.html
│ ├── index.html
│ ├── login
│ │ ├── login.controller.js
│ │ └── login.html
│ ├── logout
│ │ ├── logout.controller.js
│ │ └── logout.html
│ ├── ng-bootstrap-submenu-master
│ │ ├── .gitignore
│ │ ├── .jshintignore
│ │ ├── Code
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── dist
│ │ │ ├── ng-bootstrap-submenu.css
│ │ │ ├── ng-bootstrap-submenu.css.map
│ │ │ ├── ng-bootstrap-submenu.js
│ │ │ ├── ng-bootstrap-submenu.min.css
│ │ │ ├── ng-bootstrap-submenu.min.css.map
│ │ │ └── ng-bootstrap-submenu.min.js
│ │ ├── example.html
│ │ ├── gulpfile.js
│ │ ├── lib
│ │ │ └── bootstrap-submenu-2.0.1-dist
│ │ │ │ ├── css
│ │ │ │ ├── bootstrap-submenu.css
│ │ │ │ ├── bootstrap-submenu.css.map
│ │ │ │ ├── bootstrap-submenu.min.css
│ │ │ │ └── bootstrap-submenu.min.css.map
│ │ │ │ └── js
│ │ │ │ ├── bootstrap-submenu.js
│ │ │ │ └── bootstrap-submenu.min.js
│ │ ├── package.json
│ │ └── src
│ │ │ ├── bootstrapSubmenu.html
│ │ │ ├── bootstrapSubmenu.js
│ │ │ ├── bootstrapSubmenuController.js
│ │ │ ├── bootstrapSubmenuDirective.js
│ │ │ └── submenuTrigger.js
│ ├── oncall-report
│ │ ├── oncall-report.controller.js
│ │ └── oncall-report.html
│ └── oncall
│ │ ├── oncall.controller.js
│ │ └── oncall.html
├── phptools
│ ├── index.php
│ ├── phpinfo.php
│ ├── random.php
│ ├── trandom.php
│ └── xmlparse.php
├── robots.txt
├── ui
│ ├── .gitignore
│ ├── admin
│ │ ├── admin.controller.js
│ │ └── admin.html
│ ├── app-content
│ │ ├── app.css
│ │ ├── google.analytics.js
│ │ └── navbar.html
│ ├── app-directives
│ │ ├── addonmodule_form.html
│ │ ├── blf_form.html
│ │ ├── customDirectives.js
│ │ ├── line_form.html
│ │ ├── sitepopover.html
│ │ └── speeddial_form.html
│ ├── app-services
│ │ ├── authentication.service.js
│ │ ├── calls.service.js
│ │ ├── companycontent.service.js
│ │ ├── cucm.cdr.service.js
│ │ ├── cucm.service.js
│ │ ├── cucmreport.service.js
│ │ ├── cupi.service.js
│ │ ├── gizmo.service.js
│ │ ├── ldap.service.js
│ │ ├── macd.service.js
│ │ ├── page.service.js
│ │ ├── ping.monitoring.service.js
│ │ ├── site.migration.service.js
│ │ ├── site.phoneplan.service.js
│ │ ├── site.service.js
│ │ ├── sonus.cdr.service.js
│ │ ├── sonus.service.js
│ │ ├── teamsreport.service.js
│ │ ├── telecom.infrastructure.service.js
│ │ ├── telephony.service.js
│ │ ├── user.service.js
│ │ └── west911enable.service.js
│ ├── app.js
│ ├── bower.json
│ ├── calls
│ │ ├── 1day_calls.graph.html
│ │ ├── 1day_gatewaycalls.graph.html
│ │ ├── 7day_calls.graph.html
│ │ ├── 7day_gatewaycalls.graph.html
│ │ ├── calls.graph.controller.js
│ │ └── calls.graph.html
│ ├── config-repo
│ │ ├── configrepo.controller.js
│ │ └── configrepo.html
│ ├── cucm-cdrs
│ │ ├── cucm.cdr.todays-pkt-loss-report.html
│ │ └── cucm.cdr.todays-pkt-loss-report.js
│ ├── cucm-phone-manager
│ │ ├── create_phone.html
│ │ ├── create_phone_plan.html
│ │ ├── includes
│ │ │ ├── include-create_phone-form-summary.html
│ │ │ ├── include-extension-mailbox-found.html
│ │ │ ├── include-line-teams-view.html
│ │ │ ├── include-line-view.html
│ │ │ ├── include-linefound-table.html
│ │ │ ├── include-macd-result-modal.html
│ │ │ ├── include-phone-table.html
│ │ │ ├── include-phone-view.html
│ │ │ ├── include-phonefound.html
│ │ │ ├── include-user-mailbox-found.html
│ │ │ └── include_macd_summary.html
│ │ ├── linemanager.controller.js
│ │ ├── linemanager.html
│ │ ├── macd-job-summary.controller.js
│ │ ├── macd-job-summary.html
│ │ ├── macd-reports
│ │ │ ├── macd-report.controller.js
│ │ │ ├── macd-report.html
│ │ │ ├── my-macd-weekly-report.controller.js
│ │ │ └── my-macd-weekly-report.html
│ │ ├── phonemanager-create.controller.js
│ │ ├── phonemanager-phone-search.html
│ │ ├── phonemanager-phone-search.js
│ │ ├── phonemanager-plan.controller.js
│ │ ├── phonemanager.controller.js
│ │ └── phonemanager.html
│ ├── didblock
│ │ ├── bulkdidblock.controller.js
│ │ ├── bulkdidblock.html
│ │ ├── createdidblock.html
│ │ ├── didblock.controller.js
│ │ ├── didblock.html
│ │ ├── getdidblock.controller.js
│ │ ├── getdidblock.html
│ │ └── usage
│ │ │ ├── checkdidblockusage.controller.js
│ │ │ ├── checkdidblockusage.html
│ │ │ ├── checkdidusage.controller.js
│ │ │ └── checkdidusage.html
│ ├── erl-status-reports
│ │ ├── get-erl-report.controller.js
│ │ └── get-erl-report.html
│ ├── home
│ │ ├── accessdenied.controller.js
│ │ ├── accessdenied.html
│ │ ├── home.controller.js
│ │ ├── home.html
│ │ ├── maintenance.controller.js
│ │ └── maintenance.html
│ ├── index.html
│ ├── login
│ │ ├── login.controller.js
│ │ └── login.html
│ ├── logout
│ │ ├── logout.controller.js
│ │ └── logout.html
│ ├── reports
│ │ ├── erl-report.controller.js
│ │ ├── erl-report.html
│ │ ├── linecleanup-report.controller.js
│ │ ├── linecleanup-report.html
│ │ ├── reports.home.html
│ │ ├── site-trunking-911-report.controller.js
│ │ ├── site-trunking-911-report.html
│ │ └── teams
│ │ │ ├── teams-user-report.controller.js
│ │ │ └── teams-user-report.html
│ ├── site-migrations
│ │ └── migrations
│ │ │ ├── create_site_migration.html
│ │ │ ├── edit_site.migration.controller.js
│ │ │ ├── edit_site_migration.html
│ │ │ ├── section-includes
│ │ │ ├── include-migration-changes-accordian.html
│ │ │ ├── include-migration-currentSummary-panel.html
│ │ │ ├── include-migration-modal.html
│ │ │ ├── include-phone-line-update-modal.html
│ │ │ ├── include-sitemigrations.html
│ │ │ └── include_site_migration_summary.html
│ │ │ ├── site_migration_summary.controller.js
│ │ │ ├── site_migration_summary.html
│ │ │ ├── site_migrations.controller.js
│ │ │ └── site_migrations.html
│ ├── site-status-reports
│ │ ├── getsite.objects.controller.js
│ │ ├── getsite.objects.html
│ │ └── section-includes
│ │ │ ├── include-site-phones.html
│ │ │ ├── include-site-summary.html
│ │ │ └── include-systemprovisioning.html
│ ├── siteplanning
│ │ ├── createsite.html
│ │ ├── editsite.html
│ │ ├── getsite.controller.js
│ │ ├── getsite.html
│ │ ├── phoneplans
│ │ │ ├── createphone.html
│ │ │ ├── createphoneplan.html
│ │ │ ├── getphoneplan.controller.js
│ │ │ ├── getphoneplan.html
│ │ │ ├── importphones.controller.js
│ │ │ ├── importphones.html
│ │ │ └── phoneplan-includes
│ │ │ │ ├── mailbox-deploy-modal.html
│ │ │ │ ├── phone-deploy-modal.html
│ │ │ │ ├── phoneplan-details-table.html
│ │ │ │ ├── phoneplan-phonetable-panel.html
│ │ │ │ ├── phoneplan-system-provisioning-aduserlookuptable.html
│ │ │ │ ├── phoneplan-system-provisioning-cucmphonesfoundtable.html
│ │ │ │ ├── phoneplan-system-provisioning-cupiuserssfoundtable.html
│ │ │ │ ├── phoneplan-system-provisioning-macd-jobs.html
│ │ │ │ ├── phoneplan-system-provisioning-panel.html
│ │ │ │ └── phoneplan-system-provisioning-useradupdatestable.html
│ │ ├── section-includes
│ │ │ ├── include-phoneplanning.html
│ │ │ ├── include-sitedetails.html
│ │ │ └── include-systemprovisioning.html
│ │ ├── site.controller.js
│ │ ├── site.html
│ │ └── sitepopover.html.old
│ ├── sonus-cdrs
│ │ ├── attemptsummary.graph.controller.js
│ │ ├── attemptsummary.graph.html
│ │ ├── pktloss.summary.graph.controller.js
│ │ ├── pktloss.summary.graph.html
│ │ ├── sonus.today.pktloss.cdr.controller.js
│ │ ├── sonus.today.pktloss.cdr.html
│ │ ├── sonus.todays.attempts.cdr.controller.js
│ │ └── sonus.todays.attempts.cdr.html
│ ├── sonus
│ │ ├── sonus.activealarms.controller.js
│ │ ├── sonus.activealarms.html
│ │ ├── sonus.activecalldetails.controller.js
│ │ ├── sonus.activecalldetails.html
│ │ ├── sonus.activecalls.controller.js
│ │ ├── sonus.activecalls.html
│ │ └── sonus.splashpage.html
│ ├── telecom-infrastructure
│ │ ├── createdevice.html
│ │ ├── editdevice.html
│ │ ├── infrastructure.controller.js
│ │ └── infrastructure.html
│ └── templates
│ │ └── table.controller.js
└── web.config
├── readme.md
├── resources
├── assets
│ ├── js
│ │ ├── app.js
│ │ ├── bootstrap.js
│ │ └── components
│ │ │ └── Example.vue
│ └── sass
│ │ ├── _variables.scss
│ │ └── app.scss
├── lang
│ └── en
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
└── views
│ ├── cucmloopalarm.blade.php
│ ├── email.blade.php
│ ├── errors
│ └── 503.blade.php
│ ├── sonusalarm.blade.php
│ ├── sonuscdralarm.blade.php
│ ├── uccxfinessemonitoralarm.blade.php
│ ├── uccxmonioralarm.blade.php
│ ├── vendor
│ ├── .gitkeep
│ └── l5-swagger
│ │ ├── .gitkeep
│ │ └── index.blade.php
│ └── welcome.blade.php
├── routes
├── Kernel.php
├── api.auth.php
├── api.bouncer.permissions.php
├── api.calls.php
├── api.cucm.cdrs.php
├── api.cucm.ctiroutepoint.php
├── api.cucm.gatewaycalls.php
├── api.cucm.line.php
├── api.cucm.phone.php
├── api.cucm.php
├── api.cucm.ris.php
├── api.cucm.site.migration.php
├── api.cucm.site.php
├── api.cucm.user.php
├── api.cucmreports.php
├── api.cupi.php
├── api.did.php
├── api.egw.php
├── api.gizmo.teams.php
├── api.ldap.php
├── api.migration.site.php
├── api.page.php
├── api.phonemacd.php
├── api.php
├── api.ping.php
├── api.planning.site.phoneplan.php
├── api.planning.site.phones.php
├── api.planning.site.php
├── api.reports.php
├── api.sonus5k.cdrs.php
├── api.sonus5k.php
├── api.teams.reports.php
├── api.telecom.infrastructure.php
├── console.php
└── web.php
├── server.php
├── storage
├── api-docs
│ └── api-docs.json
├── app
│ ├── .gitignore
│ └── public
│ │ └── .gitignore
├── framework
│ ├── .gitignore
│ ├── cache
│ │ └── .gitignore
│ ├── sessions
│ │ └── .gitignore
│ └── views
│ │ └── .gitignore
└── logs
│ └── .gitignore
├── store-sonus-active-calls-to-cache.sh.example
├── supervisor_setup.sh
├── testSsh.php
└── tests
├── DidblockTest.data
├── DidblockTest.php
├── ExampleTest.php
├── TestCase.php
├── UserTest.php
├── updateDidblockTest.data
└── updateDidblockTest.php
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor
2 | /node_modules
3 | /public/storage
4 | /public/vendor
5 | /public/coverage
6 | /archive
7 | #/public/ui
8 | /public/angular_jwt_base
9 | /public/telephony-ui
10 | /public/old
11 | /public/test
12 |
13 | public/ui/app-content/images/
14 | public/ui/company-content/
15 | public/ui/bower_components
16 |
17 | public/oncall/app-content/images/
18 | public/oncall/company-content/
19 | public/oncall/bower_components
20 |
21 | public/admin/app-content/images/
22 | public/admin/company-content/
23 | public/admin/bower_components
24 |
25 | Homestead.yaml
26 | Homestead.json
27 | .env
28 | composer.lock
29 | tinker_group_ablity_assignments.txt
30 |
31 |
32 | tests/ImportBlockData.csv
33 | tests/ImportBlockTest.php
34 | tests/ImportBlockData.csv.old
35 |
36 |
37 | database/seeds/ImportDIDListSeeder.php
38 |
39 | app/Console/Commands/CallManager/Imports/
40 |
41 | storage/axl/
42 | storage/sonus/
43 | storage/cucm/
44 | storage/numbers/
45 | grab-sonus-configs.sh
46 | grab-cucm-siteconfigs.sh
47 | grab-cucm-phoneconfigs.sh
48 | store-sonus-active-calls-to-cache.sh
49 |
50 | etc/*.pem
51 | etc/haproxy/haproxy.cfg
52 | etc/nginx.conf
53 | etc/dnssuffix_search
54 |
--------------------------------------------------------------------------------
/.styleci.yml:
--------------------------------------------------------------------------------
1 | preset: laravel
2 |
3 | #linting: true
4 |
5 | enabled:
6 | - align_double_arrow
7 | - new_with_braces
8 |
9 | disabled:
10 | - no_unused_imports
11 |
--------------------------------------------------------------------------------
/app/Calls.php:
--------------------------------------------------------------------------------
1 | 'array',
18 | ];
19 |
20 | //protected $dateFormat = 'U';
21 | }
22 |
--------------------------------------------------------------------------------
/app/Console/Commands/CallManager/AddPhones.php:
--------------------------------------------------------------------------------
1 | cucmphone = new Cucmphone();
33 | parent::__construct();
34 | }
35 |
36 | /**
37 | * Execute the console command.
38 | *
39 | * @return mixed
40 | */
41 | public $site = 'CENCONER';
42 | public $extlength = 4;
43 |
44 | public function handle()
45 | {
46 | // Include the phones.php $phones variable to import phones.
47 | require __DIR__.'/Imports/Phones.txt';
48 | //print $phones;
49 |
50 | $phones = $this->cucmphone->phones_string_to_array($phones);
51 |
52 | $PHONE = [];
53 | foreach ($phones as $phone) {
54 | //$phone['sitecode'] = $this->site;
55 | $phone['sitecode'] = $site;
56 |
57 | //$phone['extlength'] = $this->extlength;
58 | $phone['extlength'] = $extlength;
59 | $PHONES[] = $phone;
60 | }
61 | //print_r($PHONES);
62 |
63 | $ARRAY = [];
64 | foreach ($PHONES as $PHONE) {
65 | echo 'Adding Phone...'.PHP_EOL;
66 | print_r($PHONE);
67 | $REQUEST = $this->cucmphone->createPhone(new \Illuminate\Http\Request($PHONE));
68 | $RESULT = $REQUEST;
69 | print_r($RESULT);
70 | $ARRAY[] = $REQUEST;
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/app/Console/Commands/CallManager/CucmPhoneNamesCache.php:
--------------------------------------------------------------------------------
1 | cucm = new \Iahunter\CallmanagerAXL\Callmanager(env('CALLMANAGER_URL'),
34 | storage_path(env('CALLMANAGER_WSDL')),
35 | env('CALLMANAGER_USER'),
36 | env('CALLMANAGER_PASS')
37 | );
38 |
39 | parent::__construct();
40 | }
41 |
42 | /**
43 | * Execute the console command.
44 | *
45 | * @return mixed
46 | */
47 | public function handle()
48 | {
49 | try {
50 | $CUCM_PHONES = $this->cucm->get_phone_names();
51 | } catch (\Exception $E) {
52 | return $E->getMessage();
53 | }
54 |
55 | foreach ($CUCM_PHONES as $UUID => $PHONE) {
56 | $CUCM_PHONES[$UUID] = strtoupper($PHONE);
57 | }
58 |
59 | // Name of Cache key.
60 | $key = 'callmanager:phone_names_cache';
61 |
62 | // Cache Names for 5 seconds - Put the $CALLS as value of cache.
63 | print_r($CUCM_PHONES);
64 | $time = Carbon::now()->addSeconds(300);
65 | Cache::put($key, $CUCM_PHONES, $time);
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/app/Console/Commands/CallManager/CucmPhoneSiteMove.php:
--------------------------------------------------------------------------------
1 | argument('site');
44 |
45 | echo 'Moving Phones to: '.$site.PHP_EOL;
46 |
47 | /*
48 | Examples:
49 | SEP0004ABCDEEEE
50 | SEP0004ABCDEEEF
51 | */
52 |
53 | $data = file_get_contents(storage_path('cucm/working/working_file'));
54 | $phones = explode(PHP_EOL, $data);
55 |
56 | $phones = array_filter($phones);
57 |
58 | foreach ($phones as $phone) {
59 | $phone = trim($phone);
60 |
61 | try {
62 | $result = Cucmclass::updatePhoneSite($phone, $site);
63 | print_r($result);
64 | } catch (\Exception $E) {
65 | echo "{$E->getMessage()}".PHP_EOL;
66 | }
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/app/Console/Commands/CallManager/CucmSIPPhoneReport.php:
--------------------------------------------------------------------------------
1 | cucm = new \Iahunter\CallmanagerAXL\Callmanager(env('CALLMANAGER_URL'),
35 | storage_path(env('CALLMANAGER_WSDL')),
36 | env('CALLMANAGER_USER'),
37 | env('CALLMANAGER_PASS')
38 | );
39 |
40 | parent::__construct();
41 | }
42 |
43 | /**
44 | * Execute the console command.
45 | *
46 | * @return mixed
47 | */
48 | public function handle()
49 | {
50 | $search = '%sip%';
51 |
52 | $count = Cucmphoneconfigs::where('model', 'LIKE', $search)->count();
53 | //print $count;
54 | if ($count) {
55 | $phones = Cucmphoneconfigs::where('model', 'LIKE', $search)->get();
56 |
57 | //print_r($phones);
58 |
59 | foreach ($phones as $phone) {
60 | echo $phone['name'].','.$phone['ownerid'].','.$phone['config']['digestUser'].','.$phone['description'].','.$phone['devicepool'].','.$phone['model'].PHP_EOL;
61 | }
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/app/Console/Commands/CallManager/Ldapsync.php:
--------------------------------------------------------------------------------
1 | cucm = new \Iahunter\CallmanagerAXL\Callmanager(env('CALLMANAGER_URL'),
32 | storage_path(env('CALLMANAGER_WSDL')),
33 | env('CALLMANAGER_USER'),
34 | env('CALLMANAGER_PASS')
35 | );
36 |
37 | parent::__construct();
38 | }
39 |
40 | /**
41 | * Execute the console command.
42 | *
43 | * @return mixed
44 | */
45 | public function handle()
46 | {
47 | try {
48 | $ldapsync = $this->cucm->do_ldap_sync(env('CALLMANAGER_LDAP_NAME'), 'true');
49 |
50 | echo $ldapsync->return.PHP_EOL;
51 | } catch (\Exception $e) {
52 | echo 'Callmanager blew uP: '.$e->getMessage().PHP_EOL;
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/app/Console/Commands/Inspire.php:
--------------------------------------------------------------------------------
1 | comment(PHP_EOL.Inspiring::quote().PHP_EOL);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/Console/Commands/Ldap/GetLdapUser.php:
--------------------------------------------------------------------------------
1 | Auth = new AuthController();
43 |
44 | $USERNAME = $this->argument('username');
45 | $LOG = $this->Auth->getLdapUserByName($USERNAME);
46 |
47 | print_r($LOG);
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/Console/Commands/Ldap/TestLdapPhoneUpdate.php:
--------------------------------------------------------------------------------
1 | Auth = new AuthController();
43 |
44 | $USERNAME = $this->argument('username');
45 | $DN = $this->argument('number');
46 | $LOG = $this->Auth->changeLdapPhone($USERNAME, $DN);
47 |
48 | print_r($LOG);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/app/Console/Commands/MACD/GetMacdReports.php:
--------------------------------------------------------------------------------
1 | $group) {
47 | echo 'starting'.PHP_EOL;
48 | $a = new \App\Http\Controllers\CucmLine();
49 |
50 | echo $number.PHP_EOL;
51 | $line = $a->cucm->get_object_type_by_pattern_and_partition($number, 'Global-All-Lines', 'Line');
52 | $line_instance = new Cucmclass();
53 | $line_instance->uuid = strtolower($line['uuid']);
54 | echo $line_instance->uuid;
55 | echo PHP_EOL;
56 | $line_instance->exists = true;
57 | $line_instance->getKey();
58 | echo $group.PHP_EOL;
59 | \Bouncer::allow($group)->to('read', $line_instance);
60 | \Bouncer::allow($group)->to('update', $line_instance);
61 | echo 'done'.PHP_EOL;
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/app/CucmPhoneStats.php:
--------------------------------------------------------------------------------
1 | 'array',
14 | 'json' => 'array',
15 | ];
16 |
17 | protected $attributes = [
18 | 'json' => '{}',
19 | ];
20 | }
21 |
--------------------------------------------------------------------------------
/app/Cucmsiteconfigs.php:
--------------------------------------------------------------------------------
1 | 'array',
19 | 'sitedetails' => 'array',
20 | ];
21 |
22 | protected static function boot()
23 | {
24 | parent::boot();
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/DeletedItems.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Events/Create_Cucm_Local_EndUser_Event.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Events/Create_Line_Event.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Events/Create_Phone_Event.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Events/Create_UnityConnection_LDAP_Import_Mailbox_Event.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Events/Create_UnityConnection_Mailbox_Event.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Events/Update_Cucm_CallForward_To_Teams_Event.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Events/Update_IDM_PhoneNumber_Event.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Events/Update_Teams_User_For_Voice_Event.php:
--------------------------------------------------------------------------------
1 | phone = $data['phone'];
27 | $this->taskid = $data['taskid'];
28 | }
29 |
30 | /**
31 | * Get the channels the event should broadcast on.
32 | *
33 | * @return Channel|array
34 | */
35 | public function broadcastOn()
36 | {
37 | return new PrivateChannel('channel-name');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/GatewayCalls.php:
--------------------------------------------------------------------------------
1 | 'array',
14 | ];
15 | }
16 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ForgotPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/LoginController.php:
--------------------------------------------------------------------------------
1 | middleware('guest', ['except' => 'logout']);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ResetPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Controller.php:
--------------------------------------------------------------------------------
1 | middleware('jwt.auth');
18 |
19 | // Construct new cucm object
20 | $this->CucmRealTime = new CucmRealTime();
21 | }
22 |
23 | public function get_phone_ip(Request $request)
24 | {
25 | // First test for RIS API. Used to get IP for the Phone.
26 |
27 | $user = JWTAuth::parseToken()->authenticate();
28 | // Check user permissions
29 | if (! $user->can('read', Cucmclass::class)) {
30 | abort(401, 'You are not authorized');
31 | }
32 |
33 | // Get name from $request;
34 | $name = $request->name;
35 |
36 | $count = 0;
37 |
38 | // Search for name.
39 | $searchCriteria["SelectItem[$count]"]['Item'] = $name;
40 |
41 | $result = $this->CucmRealTime->getIPAddresses($searchCriteria);
42 |
43 | $response = [
44 | 'status_code' => 200,
45 | 'success' => true,
46 | 'message' => '',
47 | 'response' => $result,
48 | ];
49 |
50 | return response()->json($response);
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/app/Http/Controllers/PingController.php:
--------------------------------------------------------------------------------
1 | authenticate();
15 | // Check user permissions
16 |
17 | if (! $user->can('read', Ping::class)) {
18 | abort(401, 'You are not authorized');
19 | }
20 |
21 | return Ping::pinghost($request->host);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/Http/Controllers/TeamsReportsController.php:
--------------------------------------------------------------------------------
1 | middleware('jwt.auth');
15 | }
16 |
17 | public function getAllTeamsVoiceUsers()
18 | {
19 | $teamsusers = DID::where('system_id', 'like', '%MicrosoftTeams%')
20 | ->get();
21 |
22 | $response = [
23 | 'status_code' => 200,
24 | 'success' => true,
25 | 'message' => '',
26 | 'response' => $teamsusers,
27 | ];
28 |
29 | return response()->json($response);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/Http/Controllers/tmp/test:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iahunter/PHP7-Telecom-Management/cfbe2e6fc669b7b4fb95ff2bb650b9a5c484a50a/app/Http/Controllers/tmp/test
--------------------------------------------------------------------------------
/app/Http/Kernel.php:
--------------------------------------------------------------------------------
1 | [
27 | \App\Http\Middleware\EncryptCookies::class,
28 | \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
29 | \Illuminate\Session\Middleware\StartSession::class,
30 | \Illuminate\View\Middleware\ShareErrorsFromSession::class,
31 | \App\Http\Middleware\VerifyCsrfToken::class,
32 | \Illuminate\Routing\Middleware\SubstituteBindings::class,
33 | ],
34 |
35 | 'api' => [
36 | 'throttle:60,1',
37 | 'bindings',
38 | ],
39 | ];
40 |
41 | /**
42 | * The application's route middleware.
43 | *
44 | * These middleware may be assigned to groups or used individually.
45 | *
46 | * @var array
47 | */
48 | protected $routeMiddleware = [
49 | 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
50 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
51 | 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
52 | 'can' => \Illuminate\Auth\Middleware\Authorize::class,
53 | 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
54 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
55 | ];
56 | }
57 |
--------------------------------------------------------------------------------
/app/Http/Middleware/EncryptCookies.php:
--------------------------------------------------------------------------------
1 | check()) {
22 | return redirect('/home');
23 | }
24 |
25 | return $next($request);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/Http/Middleware/VerifyCsrfToken.php:
--------------------------------------------------------------------------------
1 | 'array',
20 | ];
21 |
22 | protected static function boot()
23 | {
24 | parent::boot();
25 | static::saving(function ($phone) {
26 | return $phone->validate();
27 | });
28 | }
29 |
30 | protected function validate()
31 | {
32 | // Check if exceeds max of 255
33 | if (strlen($this->name) > 255) {
34 | throw new \Exception('name exceeded 255 characters');
35 | }
36 | // Check if exceeds max of 255
37 | if (strlen($this->comment) > 255) {
38 | throw new \Exception('status exceeded 255 characters');
39 | }
40 | // Check if exceeds max of 255
41 | if (strlen($this->system_id) > 255) {
42 | throw new \Exception('system_id exceeded 255 characters');
43 | }
44 | // Check if exceeds max of 255
45 | if (strlen($this->language) > 255) {
46 | throw new \Exception('status exceeded 255 characters');
47 | }
48 | // Check if exceeds max of 255
49 | if ($this->language) {
50 | $this->language = strtolower($this->language);
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/Phoneplan.php:
--------------------------------------------------------------------------------
1 | 'array',
20 | ];
21 |
22 | protected static function boot()
23 | {
24 | parent::boot();
25 | static::saving(function ($phoneplan) {
26 | return $phoneplan->validate();
27 | });
28 |
29 | // Cascade Soft Deletes Child Dids
30 | static::deleting(function ($phoneplan) {
31 | Phone::where('phoneplan', $phoneplan->id)->delete(); // query phone children of the and delete them. Much faster than foreach!!!
32 | });
33 | }
34 |
35 | protected function validate()
36 | {
37 | // Check if exceeds max of 255
38 | if (strlen($this->name) > 255) {
39 | throw new \Exception('name exceeded 255 characters');
40 | }
41 | // Check if exceeds max of 255
42 | if (strlen($this->description) > 255) {
43 | throw new \Exception('status exceeded 255 characters');
44 | }
45 | // Check if exceeds max of 255
46 | if (strlen($this->system_id) > 255) {
47 | throw new \Exception('system_id exceeded 255 characters');
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/app/Ping.php:
--------------------------------------------------------------------------------
1 | ping();
17 |
18 | if ($latency !== false) {
19 | $return = 'echo reply';
20 | } else {
21 | $return = 'Request timed out.';
22 | }
23 |
24 | return [
25 | 'result' => $return,
26 | 'latency' => $latency,
27 | ];
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/Providers/AppServiceProvider.php:
--------------------------------------------------------------------------------
1 | connectionName
22 | // $event->job
23 | // $event->exception
24 |
25 | \Log::info('failedjob', ['log' => $event]);
26 |
27 | /*
28 | // Get the Task ID
29 | if ($event->taskid) {
30 | $task = PhoneMACD::find($event->taskid);
31 | $task->fill(['updated_by' => 'Telecom Management Server', 'status' => 'failed', 'json' => $event->exception]);
32 | $task->save();
33 | }
34 | */
35 | });
36 | }
37 |
38 | /**
39 | * Register any application services.
40 | *
41 | * @return void
42 | */
43 | public function register()
44 | {
45 | //
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/Providers/AuthServiceProvider.php:
--------------------------------------------------------------------------------
1 | 'App\Policies\ModelPolicy',
16 | ];
17 |
18 | /**
19 | * Register any authentication / authorization services.
20 | *
21 | * @return void
22 | */
23 | public function boot()
24 | {
25 | $this->registerPolicies();
26 |
27 | //
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/Providers/BroadcastServiceProvider.php:
--------------------------------------------------------------------------------
1 | id === (int) $userId;
24 | });
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/Providers/EventServiceProvider.php:
--------------------------------------------------------------------------------
1 | [
17 | 'App\Listeners\Create_AD_IPPhone_Listener',
18 | ],
19 | 'App\Events\Update_IDM_PhoneNumber_Event' => [
20 | 'App\Listeners\Update_IDM_PhoneNumber_Listener',
21 | ],
22 | 'App\Events\Create_Cucm_Local_EndUser_Event' => [
23 | 'App\Listeners\Create_Cucm_Local_EndUser_Listener',
24 | ],
25 | 'App\Events\Create_Line_Event' => [
26 | 'App\Listeners\Create_Line_Listener',
27 | ],
28 | 'App\Events\Create_Phone_Event' => [
29 | 'App\Listeners\Create_Phone_Listener',
30 | ],
31 | 'App\Events\Create_UnityConnection_Mailbox_Event' => [
32 | 'App\Listeners\Create_UnityConnection_Mailbox_Listener',
33 | ],
34 | 'App\Events\Create_UnityConnection_LDAP_Import_Mailbox_Event' => [
35 | 'App\Listeners\Create_UnityConnection_LDAP_Import_Mailbox_Listener',
36 | ],
37 | 'App\Events\Update_Teams_User_For_Voice_Event' => [
38 | 'App\Listeners\Update_Teams_User_For_Voice_Listener',
39 | ],
40 | 'App\Events\Update_Cucm_CallForward_To_Teams_Event' => [
41 | 'App\Listeners\Update_Cucm_CallForward_To_Teams_Listener',
42 | ],
43 |
44 | ];
45 |
46 | /**
47 | * Register any events for your application.
48 | *
49 | * @return void
50 | */
51 | public function boot()
52 | {
53 | parent::boot();
54 |
55 | //
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/app/Providers/RouteServiceProvider.php:
--------------------------------------------------------------------------------
1 | mapApiRoutes();
39 |
40 | $this->mapWebRoutes();
41 |
42 | //
43 | }
44 |
45 | /**
46 | * Define the "web" routes for the application.
47 | *
48 | * These routes all receive session state, CSRF protection, etc.
49 | *
50 | * @return void
51 | */
52 | protected function mapWebRoutes()
53 | {
54 | Route::group([
55 | 'middleware' => 'web',
56 | 'namespace' => $this->namespace,
57 | ], function ($router) {
58 | require base_path('routes/web.php');
59 | });
60 | }
61 |
62 | /**
63 | * Define the "api" routes for the application.
64 | *
65 | * These routes are typically stateless.
66 | *
67 | * @return void
68 | */
69 | protected function mapApiRoutes()
70 | {
71 | Route::group([
72 | 'middleware' => 'api',
73 | 'namespace' => $this->namespace,
74 | 'prefix' => 'api',
75 | ], function ($router) {
76 | require base_path('routes/api.php');
77 | });
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/app/Reports.php:
--------------------------------------------------------------------------------
1 | 'array',
16 | 'json' => 'array',
17 | ];
18 |
19 | protected $attributes = [
20 | 'json' => '{}',
21 | ];
22 | }
23 |
--------------------------------------------------------------------------------
/app/SiteMigration.php:
--------------------------------------------------------------------------------
1 | 'array',
19 | 'backups' => 'array',
20 | ];
21 | }
22 |
--------------------------------------------------------------------------------
/app/TelecomInfrastructure.php:
--------------------------------------------------------------------------------
1 | 'array',
37 |
38 | ];
39 |
40 | protected $attributes = [
41 | 'json' => '{}',
42 | ];
43 | }
44 |
--------------------------------------------------------------------------------
/artisan:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | make(Illuminate\Contracts\Console\Kernel::class);
32 |
33 | $status = $kernel->handle(
34 | $input = new Symfony\Component\Console\Input\ArgvInput,
35 | new Symfony\Component\Console\Output\ConsoleOutput
36 | );
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Shutdown The Application
41 | |--------------------------------------------------------------------------
42 | |
43 | | Once Artisan has finished running. We will fire off the shutdown events
44 | | so that any final work may be done by the application before we shut
45 | | down the process. This is the last thing to happen to the request.
46 | |
47 | */
48 |
49 | $kernel->terminate($input, $status);
50 |
51 | exit($status);
52 |
--------------------------------------------------------------------------------
/bootstrap/app.php:
--------------------------------------------------------------------------------
1 | singleton(
30 | Illuminate\Contracts\Http\Kernel::class,
31 | App\Http\Kernel::class
32 | );
33 |
34 | $app->singleton(
35 | Illuminate\Contracts\Console\Kernel::class,
36 | App\Console\Kernel::class
37 | );
38 |
39 | $app->singleton(
40 | Illuminate\Contracts\Debug\ExceptionHandler::class,
41 | App\Exceptions\Handler::class
42 | );
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Return The Application
47 | |--------------------------------------------------------------------------
48 | |
49 | | This script returns the application instance. The instance is given to
50 | | the calling script so we can separate the building of the instances
51 | | from the actual running of the application and sending responses.
52 | |
53 | */
54 |
55 | return $app;
56 |
--------------------------------------------------------------------------------
/bootstrap/autoload.php:
--------------------------------------------------------------------------------
1 | env('BROADCAST_DRIVER', 'null'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Broadcast Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may define all of the broadcast connections that will be used
26 | | to broadcast events to other systems or over websockets. Samples of
27 | | each available type of connection are provided inside this array.
28 | |
29 | */
30 |
31 | 'connections' => [
32 |
33 | 'pusher' => [
34 | 'driver' => 'pusher',
35 | 'key' => env('PUSHER_KEY'),
36 | 'secret' => env('PUSHER_SECRET'),
37 | 'app_id' => env('PUSHER_APP_ID'),
38 | 'options' => [
39 | //
40 | ],
41 | ],
42 |
43 | 'redis' => [
44 | 'driver' => 'redis',
45 | 'connection' => 'default',
46 | ],
47 |
48 | 'log' => [
49 | 'driver' => 'log',
50 | ],
51 |
52 | 'null' => [
53 | 'driver' => 'null',
54 | ],
55 |
56 | ],
57 |
58 | ];
59 |
--------------------------------------------------------------------------------
/config/compile.php:
--------------------------------------------------------------------------------
1 | [
17 | //
18 | ],
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Compiled File Providers
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may list service providers which define a "compiles" function
26 | | that returns additional files that should be compiled, providing an
27 | | easy way to get common files from any packages you are utilizing.
28 | |
29 | */
30 |
31 | 'providers' => [
32 | //
33 | ],
34 |
35 | ];
36 |
--------------------------------------------------------------------------------
/config/services.php:
--------------------------------------------------------------------------------
1 | [
18 | 'domain' => env('MAILGUN_DOMAIN'),
19 | 'secret' => env('MAILGUN_SECRET'),
20 | ],
21 |
22 | 'ses' => [
23 | 'key' => env('SES_KEY'),
24 | 'secret' => env('SES_SECRET'),
25 | 'region' => 'us-east-1',
26 | ],
27 |
28 | 'sparkpost' => [
29 | 'secret' => env('SPARKPOST_SECRET'),
30 | ],
31 |
32 | 'stripe' => [
33 | 'model' => App\User::class,
34 | 'key' => env('STRIPE_KEY'),
35 | 'secret' => env('STRIPE_SECRET'),
36 | ],
37 |
38 | ];
39 |
--------------------------------------------------------------------------------
/config/view.php:
--------------------------------------------------------------------------------
1 | [
17 | realpath(base_path('resources/views')),
18 | ],
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Compiled View Path
23 | |--------------------------------------------------------------------------
24 | |
25 | | This option determines where all the compiled Blade templates will be
26 | | stored for your application. Typically, this is within the storage
27 | | directory. However, as usual, you are free to change this value.
28 | |
29 | */
30 |
31 | 'compiled' => realpath(storage_path('framework/views')),
32 |
33 | ];
34 |
--------------------------------------------------------------------------------
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 |
--------------------------------------------------------------------------------
/database/factories/ModelFactory.php:
--------------------------------------------------------------------------------
1 | define(App\User::class, function (Faker\Generator $faker) {
15 | static $password;
16 |
17 | return [
18 | 'name' => $faker->name,
19 | 'email' => $faker->unique()->safeEmail,
20 | 'password' => $password ?: $password = bcrypt('secret'),
21 | 'remember_token' => str_random(10),
22 | ];
23 | });
24 |
--------------------------------------------------------------------------------
/database/migrations/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/database/migrations/2014_10_12_000000_create_users_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
17 | $table->string('username')->index();
18 | $table->string('dn')->unique();
19 | $table->string('samaccountname')->nullable();
20 | $table->string('userprincipalname')->nullable()->index();
21 | $table->string('password');
22 | $table->rememberToken();
23 | $table->timestamps();
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::drop('users');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/database/migrations/2016_10_24_191759_create_audits_table.php:
--------------------------------------------------------------------------------
1 | uuid('id')->primary();
17 | $table->string('type');
18 | $table->morphs('auditable');
19 | $table->text('old')->nullable();
20 | $table->text('new')->nullable();
21 | $table->string('user_id')->nullable();
22 | //$table->string('route')->nullable();
23 | $table->text('route')->nullable();
24 | $table->ipAddress('ip_address', 45)->nullable();
25 | $table->timestamp('created_at');
26 | });
27 | }
28 |
29 | /**
30 | * Reverse the migrations.
31 | *
32 | * @return void
33 | */
34 | public function down()
35 | {
36 | Schema::dropIfExists('audits');
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/database/migrations/2017_01_29_021517_create_sbc_call_history_table.php:
--------------------------------------------------------------------------------
1 | timestamps(); // Time Stamps
19 | $table->increments('id');
20 | $table->string('name')->nullable(); // SBC Name
21 | $table->integer('totalCalls'); // Calls
22 | $table->json('stats')->nullable(); // JSON Details Custom Field Data
23 |
24 | $table->softDeletes(); // Soft Deletes
25 | });
26 | }
27 |
28 | /**
29 | * Reverse the migrations.
30 | *
31 | * @return void
32 | */
33 | public function down()
34 | {
35 | Schema::drop('sbc_calls');
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/database/migrations/2017_03_24_005009_create_activity_log_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
15 | $table->string('log_name')->nullable();
16 | $table->string('description');
17 | $table->integer('subject_id')->nullable();
18 | $table->string('subject_type')->nullable();
19 | $table->integer('causer_id')->nullable();
20 | $table->string('causer_type')->nullable();
21 | $table->text('properties')->nullable();
22 | $table->timestamps();
23 |
24 | $table->index('log_name');
25 | });
26 | }
27 |
28 | /**
29 | * Reverse the migrations.
30 | */
31 | public function down()
32 | {
33 | Schema::drop('activity_log');
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/database/migrations/2017_06_13_135455_site_migration.php:
--------------------------------------------------------------------------------
1 | increments('id');
19 | $table->string('sitecode')->index();
20 | $table->text('comment')->nullable(); // Comment
21 | $table->text('trunking')->nullable(); // Comment
22 | $table->text('e911')->nullable(); // Comment
23 | $table->text('srstip')->nullable(); // Comment
24 | $table->json('h323ip')->nullable();
25 | $table->text('npa')->nullable(); // Comment
26 | $table->json('backups')->nullable(); // JSON Details Custom Field Data
27 | $table->string('created_by')->nullable(); // simple name to reference the account by
28 | $table->string('updated_by')->nullable(); // simple name to reference the account by
29 | $table->string('deleted_by')->nullable(); // simple name to reference the account by
30 | $table->timestamps(); // Time Stamps
31 | $table->softDeletes(); // Soft Deletes
32 | });
33 | }
34 |
35 | /**
36 | * Reverse the migrations.
37 | *
38 | * @return void
39 | */
40 | public function down()
41 | {
42 | Schema::drop('site_migration');
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/database/migrations/2017_07_31_212422_create_jobs_table.php:
--------------------------------------------------------------------------------
1 | bigIncrements('id');
18 | $table->string('queue');
19 | $table->longText('payload');
20 | $table->tinyInteger('attempts')->unsigned();
21 | $table->unsignedInteger('reserved_at')->nullable();
22 | $table->unsignedInteger('available_at');
23 | $table->unsignedInteger('created_at');
24 | $table->index(['queue', 'reserved_at']);
25 | });
26 | }
27 |
28 | /**
29 | * Reverse the migrations.
30 | *
31 | * @return void
32 | */
33 | public function down()
34 | {
35 | Schema::dropIfExists('jobs');
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/database/migrations/2017_08_02_215812_create_failed_jobs_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->text('connection');
19 | $table->text('queue');
20 | $table->longText('payload');
21 | $table->longText('exception');
22 | $table->timestamp('failed_at')->useCurrent();
23 | });
24 | }
25 |
26 | /**
27 | * Reverse the migrations.
28 | *
29 | * @return void
30 | */
31 | public function down()
32 | {
33 | Schema::dropIfExists('failed_jobs');
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/database/migrations/2017_08_04_135256_create_phone_mac_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->integer('parent')->unsigned()->index()->nullable(); // Parent Block ID
19 | $table->foreign('parent')->references('id')->on('phone_mac')->onDelete('cascade'); // Create foreign key and try cascade deletes
20 |
21 | $table->string('type')->index()->nullable(); // simple name to reference the account by
22 | $table->string('status')->nullable(); // simple name to reference the account by
23 |
24 | $table->string('created_by')->nullable(); // simple name to reference the account by
25 | $table->string('updated_by')->nullable(); // simple name to reference the account by
26 | $table->string('deleted_by')->nullable(); // simple name to reference the account by
27 |
28 | $table->json('form_data')->nullable(); // JSON Custom Field Data
29 | $table->json('json')->nullable(); // JSON Custom Field Data
30 |
31 | $table->timestamps(); // Time Stamps
32 | $table->softDeletes(); // Soft Deletes
33 | });
34 | }
35 |
36 | /**
37 | * Reverse the migrations.
38 | *
39 | * @return void
40 | */
41 | public function down()
42 | {
43 | Schema::dropIfExists('phone_mac');
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/database/migrations/2017_10_18_133042_create_gateway_calls_table.php:
--------------------------------------------------------------------------------
1 | timestamps(); // Time Stamps
19 | $table->increments('id');
20 | $table->integer('totalCalls')->index(); // Calls
21 | $table->json('stats')->nullable(); // JSON Details Custom Field Data
22 | $table->softDeletes(); // Soft Deletes
23 | });
24 | }
25 |
26 | /**
27 | * Reverse the migrations.
28 | *
29 | * @return void
30 | */
31 | public function down()
32 | {
33 | Schema::drop('gateway_calls');
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/database/migrations/2017_10_20_143728_AddIndexes.php:
--------------------------------------------------------------------------------
1 | index('created_at'); // Time Stamps
19 | });
20 |
21 | // Site Code Table
22 | Schema::table('sbc_calls', function (Blueprint $table) {
23 | $table->index('created_at'); // Time Stamps
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | //
35 | Schema::table('gateway_calls', function (Blueprint $table) {
36 | //$table->dropIndex('created_at'); // Time Stamps
37 | });
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/database/migrations/2018_01_10_214424_create_CucmCDRs_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->integer('globalCallID_callId')->index();
19 | $table->integer('origLegCallIdentifier');
20 |
21 | $table->timestamp('dateTimeConnect')->index()->nullable();
22 | $table->timestamp('dateTimeDisconnect')->index()->nullable();
23 | $table->integer('duration');
24 |
25 | $table->string('callingPartyNumber')->index();
26 | $table->string('originalCalledPartyNumber')->index();
27 | $table->string('finalCalledPartyNumber');
28 | $table->string('origDeviceName');
29 | $table->string('destDeviceName');
30 |
31 | $table->string('origIpv4v6Addr');
32 | $table->string('destIpv4v6Addr');
33 |
34 | $table->string('originalCalledPartyPattern');
35 | $table->string('finalCalledPartyPattern');
36 | $table->string('lastRedirectingPartyPattern');
37 |
38 | $table->json('cdrraw')->nullable();
39 |
40 | $table->json('json')->nullable(); // JSON Custom Field Data
41 |
42 | $table->timestamps(); // Time Stamps
43 | });
44 |
45 | //DB::update('ALTER TABLE acme_accounts AUTO_INCREMENT = 10;');
46 | }
47 |
48 | /**
49 | * Reverse the migrations.
50 | *
51 | * @return void
52 | */
53 | public function down()
54 | {
55 | Schema::dropIfExists('cucm_cdrs');
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/database/migrations/2018_01_15_145358_create_CucmCMRs_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->integer('globalCallID_callId')->index();
19 | $table->timestamp('dateTimeStamp')->index()->nullable();
20 | $table->string('directoryNum');
21 | $table->string('callIdentifier');
22 |
23 | $table->string('directoryNumPartition');
24 | $table->string('deviceName')->index();
25 |
26 | $table->string('varVQMetrics');
27 | $table->integer('numberPacketsSent')->nullable();
28 | $table->integer('numberPacketsReceived')->index()->nullable();
29 | $table->integer('jitter')->nullable();
30 | $table->integer('numberPacketsLost')->nullable();
31 | $table->float('packetLossPercent', 8, 2)->index()->nullable();
32 |
33 | $table->json('cmrraw')->nullable();
34 |
35 | $table->json('json')->nullable(); // JSON Custom Field Data
36 |
37 | $table->timestamps(); // Time Stamps
38 | });
39 | }
40 |
41 | /**
42 | * Reverse the migrations.
43 | *
44 | * @return void
45 | */
46 | public function down()
47 | {
48 | Schema::dropIfExists('cucm_cmrs');
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/database/migrations/2019_04_17_151141_add_phoneplan_to_phone_mac_table.php:
--------------------------------------------------------------------------------
1 | integer('phoneplan_id')->unsigned()->index()->nullable(); // Phone Plan that this MAC belongs to if in planning
18 | $table->foreign('phoneplan_id')
19 | ->references('id')
20 | ->on('phoneplan')
21 | ->onDelete('cascade'); // Create foreign key and try cascade deletes
22 | });
23 | }
24 |
25 | /**
26 | * Reverse the migrations.
27 | *
28 | * @return void
29 | */
30 | public function down()
31 | {
32 | Schema::table('phone_mac', function (Blueprint $table) {
33 | $table->dropForeign('phone_mac_phoneplan_id_foreign');
34 | $table->dropColumn('phoneplan_id');
35 | });
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/database/migrations/2019_09_13_200111_abilities_extend_entityid.php:
--------------------------------------------------------------------------------
1 | getDatabasePlatform()->registerDoctrineTypeMapping('json', 'string');
23 | }
24 |
25 | /* This migration changes entity_id from integer to string for using CUCM UUID as entity_id. */
26 |
27 | public function up()
28 | {
29 | //
30 | Schema::table('abilities', function ($table) {
31 | $table->string('entity_id', 255)->nullable()->change();
32 | });
33 | }
34 |
35 | /**
36 | * Reverse the migrations.
37 | *
38 | * @return void
39 | */
40 | public function down()
41 | {
42 | Schema::table('abilities', function ($table) {
43 | //$table->integer('entity_id')->unsigned()->nullable()->change();
44 | });
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/database/migrations/2019_12_21_150746_add_last_registered_field_to_cucmphone_table.php:
--------------------------------------------------------------------------------
1 | timestamp('last_registered')->nullable();
18 | });
19 | }
20 |
21 | /**
22 | * Reverse the migrations.
23 | *
24 | * @return void
25 | */
26 | public function down()
27 | {
28 | Schema::table('cucmphone', function (Blueprint $table) {
29 | $table->dropColumn('last_registered');
30 | });
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2020_03_15_221404_create_cucm_phone_stats_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('type')->nullable();
19 | $table->integer('total')->nullable();
20 | $table->integer('registered')->nullable();
21 | $table->json('stats')->nullable(); // JSON Custom Field Data
22 | $table->json('json')->nullable(); // JSON Custom Field Data
23 | $table->timestamps(); // Time Stamps
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::drop('cucmphonestats');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/database/migrations/2020_03_16_020525_create_reports_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->integer('parent')->nullable();
19 | $table->string('category')->nullable();
20 | $table->string('type')->nullable();
21 | $table->integer('total')->nullable();
22 | $table->integer('int0')->nullable();
23 | $table->integer('int1')->nullable();
24 | $table->integer('int2')->nullable();
25 | $table->integer('int3')->nullable();
26 | $table->integer('int4')->nullable();
27 | $table->string('stringfield0')->nullable();
28 | $table->string('stringfield1')->nullable();
29 | $table->string('stringfield2')->nullable();
30 | $table->string('stringfield3')->nullable();
31 | $table->string('stringfield4')->nullable();
32 | $table->text('custom')->nullable();
33 | $table->json('stats')->nullable(); // JSON Custom Field Data
34 | $table->json('json')->nullable(); // JSON Custom Field Data
35 | $table->timestamps(); // Time Stamps
36 | });
37 | }
38 |
39 | /**
40 | * Reverse the migrations.
41 | *
42 | * @return void
43 | */
44 | public function down()
45 | {
46 | Schema::drop('reports');
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/database/seeds/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/database/seeds/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | call(UsersTableSeeder::class);
15 | // $this->call(DidblockSeeder::class);
16 |
17 | echo 'Assigning Bouncer Roles to Netowork Engineering...'.PHP_EOL;
18 | // $this->call(BouncerRoles::class);
19 | $this->call(AdminGroupBouncerRoles::class);
20 |
21 | echo 'Assigning Bouncer Roles to Service Desk...'.PHP_EOL;
22 | $this->call(ServiceDeskBouncerRoles::class);
23 |
24 | echo 'Assigning Bouncer Roles to Field Techs...'.PHP_EOL;
25 | $this->call(FieldTechsBouncerRoles::class);
26 |
27 | echo 'Assigning Bouncer Roles to Exec Rights...'.PHP_EOL;
28 | $this->call(ExecGroupBouncerRoles::class);
29 |
30 | echo 'Importing DID List from CSV...'.PHP_EOL;
31 | $this->call(ImportDIDListSeeder::class);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/etc/haproxy/haproxy.cfg.example:
--------------------------------------------------------------------------------
1 | frontend ldap_service_front
2 | mode tcp
3 | bind 127.0.0.1:3268
4 | default_backend ldap_service_back
5 |
6 | backend ldap_service_back
7 | server ldaps ldaps.domain.com:3269 ssl verify none
8 | mode tcp
9 |
10 |
11 | frontend ldaps_service_front
12 | mode tcp
13 | bind 127.0.0.1:636
14 | default_backend ldaps_service_back
15 |
16 | backend ldaps_service_back
17 | server ldaps ldaps.domain.com:636
18 | mode tcp
--------------------------------------------------------------------------------
/etc/supervisor/conf.d/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | telecom-laravel-macd-worker.conf
--------------------------------------------------------------------------------
/etc/supervisor/conf.d/telecom-laravel-macd-worker.conf.example:
--------------------------------------------------------------------------------
1 |
2 |
3 | [program:telecom-laravel-macd-worker]
4 | process_name=%(program_name)s_%(process_num)02d
5 |
6 | command=php /PATH_TO_APP/telephony/artisan queue:work --daemon --tries=3
7 | autostart=true
8 | autorestart=true
9 |
10 | numprocs=8
11 | redirect_stderr=true
12 | stdout_logfile=/PATH_TO_APP/telephony/storage/logs/worker.log
13 |
--------------------------------------------------------------------------------
/grab-cucm-phoneconfigs.sh.example:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | printf "\n###########################################################\n"
4 | printf "Starting - grab-cucm-phoneconfigs.sh \n"
5 |
6 | _mydir="$PWD"
7 | echo $_mydir
8 |
9 | php artisan callmanager:phonescan
10 |
11 | # Checkout your SVN Repo in this directory
12 | cd $_mydir/storage/cucm/company-cucm/phones/
13 |
14 | echo "Commiting Configs to Subversion..."
15 |
16 | svn add * 2>&1 | grep -v already | grep -v Illegal
17 |
18 | # Remove Locally deleted files from repo
19 | svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )
20 |
21 | svn status
22 |
23 | svn commit --username USERNAME --password PASSWORD -m "autoupdated"
24 |
25 | printf "Ending Task - grab-cucm-phoneconfigs.sh \n"
26 |
--------------------------------------------------------------------------------
/grab-cucm-siteconfigs.sh.example:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | printf "\n###########################################################\n"
4 | printf "Starting - grab-cucm-siteconfigs.sh \n"
5 | #echo "grab-cucm-siteconfigs.sh Started...\n"
6 |
7 | _mydir="$PWD"
8 | echo $_mydir
9 |
10 | php artisan callmanager:sitescan
11 |
12 | # Checkout your SVN Repo in this directory
13 | cd $_mydir/storage/cucm/company-cucm/sites/
14 |
15 | echo "Commiting Configs to Subversion..."
16 |
17 | svn add * 2>&1 | grep -v already | grep -v Illegal
18 |
19 | svn status
20 |
21 | # Remove Locally deleted files from repo
22 | svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )
23 |
24 | svn status
25 |
26 | svn commit --username USERNAME --password PASSWORD -m "autoupdated"
27 |
28 | printf "Ending Task - grab-cucm-siteconfigs.sh \n"
29 | #echo "grab-cucm-siteconfigs.sh Completed... Ending Task.\n"
30 |
--------------------------------------------------------------------------------
/grab-sonus-configs.sh.example:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "grap-sonus-configs.sh Started..."
4 |
5 | _mydir="$PWD"
6 | echo $_mydir
7 |
8 | php artisan sonus:getconfig
9 |
10 | # Checkout your SVN Repo in this directory
11 | cd $_mydir/telephony/storage/sonus/company-sonus-svnrepo/
12 |
13 | echo "Commiting Configs to Subversion..."
14 |
15 | svn add * 2>&1 | grep -v already | grep -v Illegal
16 | svn status
17 | svn commit --username admin --password pass -m "autoupdated"
18 |
19 | echo "grap-sonus-configs.sh Completed... Ending Task."
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | const elixir = require('laravel-elixir');
2 |
3 | require('laravel-elixir-vue-2');
4 |
5 | /*
6 | |--------------------------------------------------------------------------
7 | | Elixir Asset Management
8 | |--------------------------------------------------------------------------
9 | |
10 | | Elixir provides a clean, fluent API for defining some basic Gulp tasks
11 | | for your Laravel application. By default, we are compiling the Sass
12 | | file for our application, as well as publishing vendor resources.
13 | |
14 | */
15 |
16 | elixir(mix => {
17 | mix.sass('app.scss')
18 | .webpack('app.js');
19 | });
20 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "prod": "gulp --production",
5 | "dev": "gulp watch"
6 | },
7 | "devDependencies": {
8 | "bootstrap-sass": "^3.3.7",
9 | "gulp": "^3.9.1",
10 | "jquery": "^3.1.0",
11 | "laravel-elixir": "^6.0.0-9",
12 | "laravel-elixir-vue-2": "^0.2.0",
13 | "laravel-elixir-webpack-official": "^1.0.2",
14 | "lodash": "^4.16.2",
15 | "vue": "^2.0.1",
16 | "vue-resource": "^1.0.3"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
When the target of a link matches the name of an iframe, the link will open in the iframe.
16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /public/phptools/phpinfo.php: -------------------------------------------------------------------------------- 1 | 5 |{$json}35 | JSON; 36 | 37 | echo $HTML; 38 | 39 | echo '
SBC | 27 |Call Count | 28 |
---|---|
{{key}} | 33 |{{value}} | 34 |
Total Active Calls | 37 |{{vm.totalcallcount}} | 38 |
{{$login_response}}38 |
{{$response}}43 |
{{$response}}36 |