/*
* проверяет есть ли товар с $productid в корзине и возвращает его количество
*/
public function applyCouponAction(string $coupon): array
{
$lstCoupons = Sale\DiscountCouponsManager::get(false, [], true, false);
$arDebug = ['$lstCoupons' => $lstCoupons];
// получим купоны и проверим нет ли этого купона среди примененных
foreach ($lstCoupons as $ecoupon) {
if ($ecoupon == $coupon) {
$coupon = false;
break;
}
}
if ($coupon) {
$couponChanged = Sale\DiscountCouponsManager::add($coupon);
if (!$couponChanged) Sale\DiscountCouponsManager::delete($coupon);
$arDebug['$couponChanged'] = $couponChanged;
}
$arResponce = $this->getAction();
if (APPLICATION_ENV == 'dev') $arResponce['debug'] = $arDebug;
return $arResponce;
}
#
local xx.xx.xx.181
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
server-ipv6 fddd:1194:1194:1194::/64
push "redirect-gateway def1 ipv6 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "block-outside-dns"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
verb 3
crl-verify crl.pem
explicit-exit-notify
log /dev/null
status /dev/null
Openvpn сам NAT не поднимает. Возможно вы когда его настраивали добавили соответствующее правило.
Что именно нет? Как вы тестируете?
-A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source xx.xx.xx.181
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source yy.yy.yy.17
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source yy.yy.yy.17
-A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source xx.xx.xx.181
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source yy.yy.yy.17
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source yy.yy.yy.17
iptables -t nat -A POSTROUTING -s xx.xx.xx.181/24 -j SNAT --to-source yy.yy.yy.17
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:openvpn
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- 10.8.0.0/24 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
сть удаленный сервер назовем его просто gitlab, к которому возможен доступ "только по VPN". Судя по всему - там просто фильтрация по IP.
Есть мой компьютер назовем его просто ноутбук, ip которого забанен на сервере VPN заказчика.
Я поднимаю VPS в нейтральной стране и хочу с него подключаюсь к VPN заказчика. И собственно подключаюсь. И пинг с него к gitlab идет. Все ок.
Теперь я поднимаю на нем же OpenVPN сервер и подключаюсь к нему с ноубука. Я ожидаю что OpenVPN на VPS будет выходить наружу через подключение fortivpn и соотвествено теперь пакеты с моего ноубука будет идти через
OpenVPN@VPS и forti@VPS к gitlab. Но этого не происходит.
Т.е. если представить это в виде какой-то схемы то я ожидаю что маршрут будет какой-то такой [ноутбук]->[OpenVPN@VPS -> forti@VPS] -> [fortivpnserver] -> [gitlab]
Вот правда - если бы передо мной стояла задача с этим разобраться, я бы начал с того, что уменьшил число строк в скрипте хотя бы до 100. А лучше до 50-60. Потому что если вам кажется что вы понимаете кусок кода больше 100 строк, то вам кажется и вы даже не понимаете что не понимаете этот кусок.