wireguard.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { useTranslation } from 'react-i18next';
  2. import { Button, Form, Input, InputNumber, Select, Space, Switch } from 'antd';
  3. import { ReloadOutlined } from '@ant-design/icons';
  4. interface WireguardFieldsProps {
  5. wgPubKey: string;
  6. regenInboundWg: () => void;
  7. }
  8. export default function WireguardFields({ wgPubKey, regenInboundWg }: WireguardFieldsProps) {
  9. const { t } = useTranslation();
  10. return (
  11. <>
  12. <Form.Item label={t('pages.xray.wireguard.secretKey')}>
  13. <Space.Compact block>
  14. <Form.Item name={['settings', 'secretKey']} noStyle>
  15. <Input style={{ width: 'calc(100% - 32px)' }} />
  16. </Form.Item>
  17. <Button aria-label={t('regenerate')} icon={<ReloadOutlined />} onClick={regenInboundWg} />
  18. </Space.Compact>
  19. </Form.Item>
  20. <Form.Item label={t('pages.xray.wireguard.publicKey')}>
  21. <Input value={wgPubKey} disabled />
  22. </Form.Item>
  23. <Form.Item name={['settings', 'mtu']} label="MTU">
  24. <InputNumber />
  25. </Form.Item>
  26. <Form.Item name={['settings', 'dns']} label={t('pages.inbounds.info.dns')}>
  27. <Input placeholder="1.1.1.1, 1.0.0.1" />
  28. </Form.Item>
  29. <Form.Item
  30. name={['settings', 'noKernelTun']}
  31. label={t('pages.inbounds.info.noKernelTun')}
  32. valuePropName="checked"
  33. >
  34. <Switch />
  35. </Form.Item>
  36. <Form.Item name={['settings', 'domainStrategy']} label={t('pages.xray.wireguard.domainStrategy')}>
  37. <Select
  38. allowClear
  39. options={[
  40. { value: 'ForceIP', label: 'ForceIP' },
  41. { value: 'ForceIPv4', label: 'ForceIPv4' },
  42. { value: 'ForceIPv4v6', label: 'ForceIPv4v6' },
  43. { value: 'ForceIPv6', label: 'ForceIPv6' },
  44. { value: 'ForceIPv6v4', label: 'ForceIPv6v4' },
  45. ]}
  46. />
  47. </Form.Item>
  48. </>
  49. );
  50. }