Last active
March 1, 2019 17:17
-
-
Save bunlongheng/bd0243f3d71f002b326b7645754d9d88 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const FortinetService = require("../services").Fortinet; | |
| module.exports = (config, jwtDecode) => { | |
| let fortinet = {}; | |
| /** | |
| * Login | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.login = async (req, res, next) => { | |
| try { | |
| let origin = req.headers.origin; | |
| let response = await FortinetService.login(); | |
| res.status(200).send(response); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * createVxLan | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.createVxLan = async (req, res, next) => { | |
| try { | |
| let $cpeMac = req.body.cpeMac; | |
| let $accountId = req.body.accountId; | |
| let $hnsId = req.body.hnsId; | |
| let $session = req.body.session; | |
| if (req.body.deviceType == "primary") { | |
| var $device = "FGV16V0000139060"; | |
| } else { | |
| var $device = "FGV16V0000141972"; | |
| } | |
| if ( | |
| req.params.type == "ingress" && | |
| req.params.vlanId == process.env.PVT_VLAN_ID | |
| ) { | |
| var $vxLanName = `ip-${req.body.accountId}-${$hnsId}`; | |
| var $dstport = | |
| process.env.VDR_FORTINET_PRIMARY_INLINE_FGW_INGRESS_PORT; | |
| var $interface = | |
| process.env | |
| .VDR_FORTINET_PRIMARY_INLINE_FGW_INGRESS_INTERFACE; | |
| var $remoteIp = | |
| process.env | |
| .VDR_FORTINET_PRIMARY_INLINE_FGW_INGRESS_REMOTE_IP; | |
| } else if ( | |
| req.params.type == "egress" && | |
| req.params.vlanId == process.env.PVT_VLAN_ID | |
| ) { | |
| var $vxLanName = `ep-${req.body.accountId}-${$hnsId}`; | |
| var $dstport = | |
| process.env.VDR_FORTINET_PRIMARY_INLINE_FGW_EGRESS_PORT; | |
| var $interface = | |
| process.env | |
| .VDR_FORTINET_PRIMARY_INLINE_FGW_EGRESS_INTERFACE; | |
| var $remoteIp = | |
| process.env | |
| .VDR_FORTINET_PRIMARY_INLINE_FGW_EGRESS_REMOTE_IP; | |
| } else if ( | |
| req.params.type == "ingress" && | |
| req.params.vlanId == process.env.GUEST_VLAN_ID | |
| ) { | |
| var $vxLanName = `ig-${req.body.accountId}-${$hnsId}`; | |
| var $dstport = | |
| process.env.VDR_FORTINET_PRIMARY_INLINE_FGW_INGRESS_PORT; | |
| var $interface = | |
| process.env | |
| .VDR_FORTINET_PRIMARY_INLINE_FGW_INGRESS_INTERFACE; | |
| var $remoteIp = | |
| process.env | |
| .VDR_FORTINET_PRIMARY_INLINE_FGW_INGRESS_REMOTE_IP; | |
| } else if ( | |
| req.params.type == "egress" && | |
| req.params.vlanId == process.env.GUEST_VLAN_ID | |
| ) { | |
| var $vxLanName = `eg-${req.body.accountId}-${$hnsId}`; | |
| var $dstport = | |
| process.env.VDR_FORTINET_PRIMARY_INLINE_FGW_EGRESS_PORT; | |
| var $interface = | |
| process.env | |
| .VDR_FORTINET_PRIMARY_INLINE_FGW_EGRESS_INTERFACE; | |
| var $remoteIp = | |
| process.env | |
| .VDR_FORTINET_PRIMARY_INLINE_FGW_EGRESS_REMOTE_IP; | |
| } else { | |
| res.send( | |
| "Check your URL: f0ll0w this format /fortinet/createVxLan/:type/:vlanId" | |
| ); | |
| } | |
| let origin = req.headers.origin; | |
| //add params | |
| let response = await FortinetService.createVxLan( | |
| $session, | |
| $device, | |
| $hnsId, | |
| $vxLanName, | |
| $dstport, | |
| $interface, | |
| $remoteIp | |
| ); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * createSwitch | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.createSwitch = async (req, res, next) => { | |
| try { | |
| let $cpeMac = req.body.cpeMac; | |
| let $accountId = req.body.accountId; | |
| let $hnsId = req.body.hnsId; | |
| let $session = req.body.session; | |
| if (req.body.deviceType == "primary") { | |
| var $device = "FGV16V0000139060"; | |
| } else { | |
| var $device = "FGV16V0000141972"; | |
| } | |
| if (req.params.vlanId == process.env.PVT_VLAN_ID) { | |
| var $inVxLanName = `ip-${req.body.accountId}-${$hnsId}`; | |
| var $egVxLanName = `ep-${req.body.accountId}-${$hnsId}`; | |
| var $switchName = `sp-${req.body.accountId}-${$hnsId}`; | |
| } else { | |
| var $inVxLanName = `ig-${req.body.accountId}-${$hnsId}`; | |
| var $egVxLanName = `eg-${req.body.accountId}-${$hnsId}`; | |
| var $switchName = `sg-${req.body.accountId}-${$hnsId}`; | |
| } | |
| let origin = req.headers.origin; | |
| //add params | |
| let response = await FortinetService.createSwitch( | |
| $session, | |
| $device, | |
| $inVxLanName, | |
| $egVxLanName, | |
| $switchName | |
| ); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * logout | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.logout = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let response = await FortinetService.logout($session); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * getSessionTimeOut | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.getSessionTimeOut = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let response = await FortinetService.getSessionTimeOut($session); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * installDevice | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.installDevice = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let $type = req.params.type; | |
| if ($type == "primary") { | |
| var $device = "FGV16V0000139060"; | |
| } else { | |
| var $device = "FGV16V0000141972"; | |
| } | |
| let response = await FortinetService.installDevice($session,$device); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * createDynamicInterface | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.createDynamicInterface = async (req, res, next) => { | |
| try { | |
| let $cpeMac = req.body.cpeMac; | |
| let $accountId = req.body.accountId; | |
| let $hnsId = req.body.hnsId; | |
| let $session = req.body.session; | |
| let $deviceInlinePrimary = "FGV16V0000139060"; | |
| let $deviceInlineBackup = "FGV16V0000141972"; | |
| if ( | |
| req.params.type == "ingress" && | |
| req.params.vlanId == process.env.PVT_VLAN_ID | |
| ) { | |
| var $vxLanName = `ip-${req.body.accountId}-${$hnsId}`; | |
| } else if ( | |
| req.params.type == "egress" && | |
| req.params.vlanId == process.env.PVT_VLAN_ID | |
| ) { | |
| var $vxLanName = `ep-${req.body.accountId}-${$hnsId}`; | |
| } else if ( | |
| req.params.type == "ingress" && | |
| req.params.vlanId == process.env.GUEST_VLAN_ID | |
| ) { | |
| var $vxLanName = `ig-${req.body.accountId}-${$hnsId}`; | |
| } else if ( | |
| req.params.type == "egress" && | |
| req.params.vlanId == process.env.GUEST_VLAN_ID | |
| ) { | |
| var $vxLanName = `eg-${req.body.accountId}-${$hnsId}`; | |
| } else { | |
| res.send( | |
| "Check your URL: f0ll0w this format /fortinet/createVxLan/:type/:vlanId" | |
| ); | |
| } | |
| let response = await FortinetService.createDynamicInterface( | |
| $session, | |
| $deviceInlinePrimary, | |
| $vxLanName, | |
| $deviceInlineBackup | |
| ); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * createPolicyFirewall | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.createPolicyFirewall = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let $webFilter = req.body.webFilter; | |
| let $cpeMac = req.body.cpeMac; | |
| let $accountId = req.body.accountId; | |
| let $hnsId = req.body.hnsId; | |
| let $protocol = req.params.protocol; | |
| let $vlanId = req.params.vlanId; | |
| let $mode = req.params.mode; | |
| if ($protocol == "v4" && $vlanId == process.env.GUEST_VLAN_ID) { | |
| var $policyLastUrlSegment = "policy"; | |
| var $policyName = `fg-${$accountId}-${$hnsId}`; | |
| } else if ( | |
| $protocol == "v4" && | |
| $vlanId == process.env.PVT_VLAN_ID | |
| ) { | |
| var $policyLastUrlSegment = "policy"; | |
| if ($mode == "vpn") { | |
| var $policyName = `fv-${$accountId}-${$hnsId}`; | |
| } else { | |
| var $policyName = `fp-${$accountId}-${$hnsId}`; | |
| } | |
| } else if ( | |
| $protocol == "v6" && | |
| $vlanId == process.env.GUEST_VLAN_ID | |
| ) { | |
| var $policyLastUrlSegment = "policy6"; | |
| var $policyName = `fg6-${$accountId}-${$hnsId}`; | |
| } else if ( | |
| $protocol == "v6" && | |
| $vlanId == process.env.PVT_VLAN_ID | |
| ) { | |
| var $policyLastUrlSegment = "policy6"; | |
| if ($mode == "vpn") { | |
| var $policyName = `fv6-${$accountId}-${$hnsId}`; | |
| } else { | |
| var $policyName = `fp6-${$accountId}-${$hnsId}`; | |
| } | |
| } else { | |
| res.send("STOP = ", $vlanId, $mode, $protocol); | |
| } | |
| if ($mode == "vpn") { | |
| var $srcintf = | |
| process.env.VDR_FORTINET_SSL_VPN_INGRESS_INTERFACE; | |
| var $dstintf = | |
| process.env.VDR_FORTINET_SSL_VPN_EGRESS_INTERFACE; | |
| var $pkgName = process.env.VDR_FORTINET_SSL_VPN_PKG_NAME; | |
| } else if ($mode == "inline") { | |
| if ($vlanId == process.env.PVT_VLAN_ID) { | |
| var $srcintf = `ip-${$accountId}-${$hnsId}`; | |
| var $dstintf = `ep-${$accountId}-${$hnsId}`; | |
| } else { | |
| var $srcintf = `ig-${$accountId}-${$hnsId}`; | |
| var $dstintf = `eg-${$accountId}-${$hnsId}`; | |
| } | |
| var $pkgName = process.env.VDR_FORTINET_INLINE_FGW_PKG_NAME; | |
| } else { | |
| res.send("createPolicyFirewall = invalid mode ", $mode); | |
| } | |
| if ($mode == "primary") { | |
| var $device = "FGV16V0000139060"; | |
| } else { | |
| var $device = "FGV16V0000141972"; | |
| } | |
| let response = await FortinetService.createPolicyFirewall( | |
| $session, | |
| $dstintf, | |
| $policyName, | |
| $srcintf, | |
| $webFilter, | |
| $pkgName, | |
| $policyLastUrlSegment | |
| ); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * installPackage | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.installPackage = async (req, res, next) => { | |
| try { | |
| console.log("-----installPackage controller"); | |
| let $session = req.body.session; | |
| let $mode = req.params.mode; | |
| if ($mode == "inline") { | |
| var $pDevice = "FGV16V0000139060"; | |
| var $pVdom = process.env.VDR_FORTINET_FGW_VDOM; | |
| var $sDevice = "FGV16V0000141972"; | |
| var $sVdom = process.env.VDR_FORTINET_FGW_VDOM; | |
| var $pkgName = process.env.VDR_FORTINET_INLINE_FGW_PKG_NAME; | |
| } else { | |
| var $pDevice = "FGV16V0000140899"; | |
| var $pVdom = process.env.VDR_FORTINET_FGW_VDOM; | |
| var $sDevice = "FGV16V0000141974"; | |
| var $sVdom = process.env.VDR_FORTINET_FGW_VDOM; | |
| var $pkgName = process.env.VDR_FORTINET_SSL_VPN_PKG_NAME; | |
| } | |
| console.log("$pkgName = ", $pkgName); | |
| let response = await FortinetService.installPackage( | |
| $session, | |
| $pkgName, | |
| $pDevice, | |
| $pVdom, | |
| $sDevice, | |
| $sVdom | |
| ); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * listUsersInGroup | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.listUsersInGroup = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let $groupName = req.params.groupName; | |
| let response = await FortinetService.listUsersInGroup($session, $groupName); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * createGroup | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.createGroup = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let $groupName = req.params.groupName; | |
| let response = await FortinetService.createGroup($session, $groupName); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * createUser | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.createUser = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let $email = req.body.email; | |
| let $password = req.body.password; | |
| let $name = req.body.name; | |
| let response = await FortinetService.createUser($session, $email, $password, $name); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * addUserToGroup | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.addUserToGroup = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let $email = req.body.email; | |
| let $groupName = req.body.groupName; | |
| let response = await FortinetService.createUser($session, $email, $groupName); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * removeUserFromGroup | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.removeUserFromGroup = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let $email = req.body.email; | |
| let $groupName = req.body.groupName; | |
| let response = await FortinetService.removeUserFromGroup($session, $email, $groupName); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * removeUserFromGroup | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.removeUser = async (req, res, next) => { | |
| try { | |
| let $session = req.body.session; | |
| let $email = req.body.email; | |
| let response = await FortinetService.removeUser($session, $email); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| /** | |
| * monitor | |
| * | |
| * @return {object} response | |
| */ | |
| fortinet.monitor = async (req, res, next) => { | |
| try { | |
| let $taskId = req.params.taskId; | |
| let $session = req.body.session; | |
| let response = await FortinetService.monitor($session, $taskId); | |
| res.status(200).send(JSON.parse(response)); | |
| } catch (error) { | |
| next(error); | |
| } | |
| }; | |
| return fortinet; | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment