標籤

2023年10月25日 星期三

在centos 7架設proxy server

安裝套件

編輯設定

測試

打開防火牆

設定router的虛擬server



在CentOS 7上安装Squid代理服务器非常简单。你可以使用Yum包管理器来安装Squid。以下是具体的步骤:



打开终端,以管理员权限登录到你的CentOS 7服务器。


更新你的包列表,以确保你获取最新的软件包信息:
Copy codesudo yum update



安装Squid。运行以下命令:Copy codesudo yum install squid



安装完成后,你可以启动Squid服务并设置它在系统启动时自动启动:
sudo systemctl start squid sudo systemctl enable squid


默认情况下,Squid的主要配置文件位于/etc/squid/squid.conf。你可以使用文本编辑器(如nano或vim)编辑这个文件以进行更多高级配置,根据你的需求。例如:允许特定网络访问代理:通过编辑squid.conf文件中的http_access部分来配置。
更改代理端口:默认端口为3128,你可以在http_port行中更改端口号。
配置缓存选项、身份验证等。


保存配置文件并重新加载Squid以应用更改:Copy codesudo systemctl reload squid



配置客户端应用程序以使用你的CentOS 7上安装的Squid代理服务器。通常,你需要指定代理服务器的IP地址和端口号。

Squid现在应该已经安装并运行在你的CentOS 7服务器上,准备接受代理请求。确保按照你的需求进行更多高级配置,例如身份验证、访问控制等,以确保代理服务器按照你的要求运行。

要配置Squid代理服务器以仅允许特定IP地址来使用,你可以编辑Squid的配置文件并添加适当的ACL(Access Control List)和http_access规则。以下是如何配置Squid以仅允许特定IP地址使用的示例:

  1. 打开Squid的配置文件/etc/squid/squid.conf

    bash
    sudo nano /etc/squid/squid.conf
  2. 在配置文件中找到并编辑http_access部分。通常,这部分包括一系列http_access allowhttp_access deny规则。

  3. http_access规则之前,添加一个新的ACL规则以定义你要允许的IP地址。例如,要允许IP地址为192.168.1.100的主机,可以添加以下行:

    css
    acl allow_ip src 192.168.1.100
  4. http_access规则中,添加一条规则以允许特定ACL。例如,要允许allow_ip ACL,可以添加以下行:

    http_access allow allow_ip

    这将允许ACL allow_ip 中列出的IP地址访问代理服务器。

  5. 在其他http_access规则之后,确保添加http_access deny all,以拒绝所有未明确允许的请求。

    css
    http_access deny all
  6. 保存配置文件并退出文本编辑器。

  7. 重新加载Squid以应用更改:

    sudo systemctl reload squid

现在,Squid代理服务器将仅允许192.168.1.100(或你添加的其他IP地址)的主机来使用。确保按照需要添加和配置更多的ACL和http_access规则,以满足你的具体访问控制需求。






在CentOS 7上检查代理服务是否正在运行,你可以使用以下方法:

使用命令行工具:

使用命令行工具来检查代理服务的状态。你可以使用systemctl命令来查看Squid代理服务器是否正在运行,假设你使用Squid作为代理服务器。运行以下命令来检查Squid服务状态:luaCopy code
systemctl status squid


如果Squid代理服务器正在运行,你将看到相关信息,包括Active字段显示为"active"或"running"。


查看Squid日志:

你可以查看Squid代理服务器的日志以获取更多信息。Squid的日志文件通常位于/var/log/squid/目录中。你可以使用cat或less等命令查看特定的Squid日志文件,例如:bashCopy code
cat /var/log/squid/access.log


这将显示访问日志文件的内容。如果代理服务器正在正常运行,你将看到相关的访问日志记录。


测试代理服务器:

你还可以使用curl或wget等命令来测试代理服务器的可用性,以确保它正在运行并可用。例如,你可以运行以下命令测试代理服务器的连接:arduinoCopy code
curl -x <代理服务器IP:端口> https://www.example.com


将<代理服务器IP:端口>替换为实际的代理服务器IP地址和端口号。如果请求成功,代理服务器应该是运行正常的。

请注意,代理服务器的日志文件、端口号和配置文件的路径可能会因安装的代理服务器软件和配置而不同。确保根据你的具体情况查找正确的文件和目录。在检查代理服务器时,确保你有权限进行操作,以避免违反任何法律或规定。


要在CentOS 7中添加防火墙规则以允许代理服务器流量通过3128端口(假设代理服务器使用端口3128),你可以使用`firewall-cmd`命令。以下是如何添加规则的示例:


1. **添加允许代理流量的规则**:


使用以下命令来添加一个规则,允许TCP流量通过3128端口:


```
sudo firewall-cmd --permanent --add-port=3128/tcp
```


- `--permanent` 表示将规则永久保存,以便在系统重启后仍然生效。
- `--add-port` 添加端口规则。


2. **重新加载防火墙**:


添加规则后,需要重新加载防火墙以应用更改:


```
sudo firewall-cmd --reload
```


3. **验证规则是否添加成功**:


你可以使用以下命令来查看已添加的端口规则:


```
sudo firewall-cmd --list-all
```


在输出中,你应该看到允许TCP流量通过端口3128的规则。


这样,防火墙将允许来自外部IP地址的流量通过3128端口访问代理服务器。确保你的代理服务器已在端口3128上正常运行,并且已按照上述步骤添加了防火墙规则。如果需要,可以根据实际情况更改端口号或协议(例如,如果代理服务器使用UDP流量)。



2023年10月11日 星期三

同步口譯app的開發過程

 同步口譯app的開發過程

iPhone

即時語音辨識用內建的就很強

    private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "zh-TW"))!

//    private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "ja-JP"))!

//    private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "en-US"))!

//    private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "th-TH"))!

//    private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "vi-VN"))!

//    private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "ko-KR"))!


    private var recognitionRequest: SFSpeechAudioBufferRecognitionRequest?

    

    private var recognitionTask: SFSpeechRecognitionTask?

    

    private let audioEngine = AVAudioEngine()

        speechRecognizer.delegate = self

        

        // Asynchronously make the authorization request.

        SFSpeechRecognizer.requestAuthorization

  

可以參考xcode中的範例 SpokenWord


然後,翻譯的部分,我先嚐試用 google mlkit的翻譯,但翻譯品質很差,我打算改用google 雲端付費的api來試試,每月有50萬字的免費額度



google mlkit translate的作法

要先引用套件

pod 'GoogleMLKit/Translate''4.0.0'

然後使用的方法是

var mytr: Translator?

        let options = TranslatorOptions(sourceLanguage: .chinese, targetLanguage: .japanese)

        mytr = Translator.translator(options: options)

        let conditions = ModelDownloadConditions(

            allowsCellularAccess: false,

            allowsBackgroundDownloading: true

        )

        mytr?.downloadModelIfNeeded(with: conditions) { error in

            guard error == nil else { return }

            print("model ok")

            // Model downloaded successfully. Okay to start translating.

        }

                self.mytr?.translate(self.tv_talk.text) { translatedText, error in

                    guard error == nil, let translatedText = translatedText else { return }

                        self.tv_my.text=translatedText

                }

同樣也有範例參考 TranslateExample

下載位置 https://github.com/googlesamples/mlkit