Servis tersembunyi yang gigih di golang

WBOY
Lepaskan: 2024-02-09 12:33:09
ke hadapan
881 orang telah melayarinya

Servis tersembunyi yang gigih di golang

PHP Editor Xinyi akan membawa anda menerokai perkhidmatan tersembunyi yang berterusan di golang. Golang ialah bahasa pengaturcaraan yang cekap yang terkenal dengan prestasi dan kesesuaiannya yang cemerlang. Dalam era Internet yang pantas ini, perkhidmatan tersembunyi telah menjadi bahagian penting dalam banyak aplikasi. Mereka menyediakan cara yang selamat dan boleh dipercayai untuk memastikan aplikasi berjalan untuk jangka masa yang lama sambil menyembunyikan butiran dalaman mereka. Artikel ini akan memperkenalkan cara melaksanakan perkhidmatan tersembunyi berterusan dalam golang, dan meneroka senario dan kelebihan aplikasinya dalam aplikasi praktikal. Sama ada anda seorang pemula atau pembangun berpengalaman, anda akan memperoleh pengetahuan yang berguna dan pengalaman praktikal. Mari kita terokai topik menarik ini bersama-sama!

Kandungan soalan

Saya cuba mengehoskan perkhidmatan tersembunyi di golang menggunakan github.com/cretz/bine/tor. Tetapi setiap kali saya memulakan program, perkhidmatan tersembunyi baharu (dengan alamat .onion baharu) dimulakan dan bukannya perkhidmatan tersembunyi sebelumnya.

Ini kod yang saya gunakan

package main

import (
    "context"
    "fmt"
    "github.com/cretz/bine/tor"
    "log"
    "net/http"
    "time"
)

func main() {
    // Start tor with default config
    fmt.Println("Starting and registering onion service, please wait a couple of minutes...")
    t, err := tor.Start(nil, nil)
    if err != nil {
        log.Panicf("Unable to start Tor: %v", err)
    }
    defer t.Close()
    // Wait at most a few minutes to publish the service
    listenCtx, listenCancel := context.WithTimeout(context.Background(), 3*time.Minute)
    defer listenCancel()
    // Create a v3 onion service
    onion, err := t.Listen(listenCtx, &tor.ListenConf{Version3: true, RemotePorts: []int{80}})
    if err != nil {
        log.Panicf("Unable to create onion service: %v", err)
    }
    defer onion.Close()
    fmt.Printf("Open Tor browser and navigate to http://%v.onion\n", onion.ID)
    fmt.Println("Press enter to exit")
    // Serve the current folder from HTTP
    errCh := make(chan error, 1)
    go func() { errCh <- http.Serve(onion, http.FileServer(http.Dir("."))) }()
    // End when enter is pressed
    go func() {
        fmt.Scanln()
        errCh <- nil
    }()
    if err = <-errCh; err != nil {
        log.Panicf("Failed serving: %v", err)
    }
}


Salin selepas log masuk

Saya cuba memaksa program menggunakan DataDir yang sama

t, err := tor.Start(nil, &tor.StartConf{DataDir: "data-dir"})

Tetapi ini tidak berkesan.

Penyelesaian

Anda perlu mencipta dan menyimpan kunci dan kemudian menyerahkannya ke ListenConf:

Lihat: https://github.com/cretz/bine/blob/master/tor/listen.go#L56

Nota:

Perpustakaan yang anda gunakan menyediakan fungsi untuk melakukan ini.

Lihat: https://github.com/cretz/bine/blob/b9d31d9c786616742e39a121b60522e803e96731/torutil/ed25519/ed25519.go#L132

Lakukan ini sekali dan jimat

: privateKeyString

keyPair, _ := ed25519.GenerateKey()
privateKeyString := hex.EncodeToString(keyPair.PrivateKey())
Salin selepas log masuk

Kemudian dalam kod pelayan anda:

privateKeyBytes, _ := hex.DecodeString(privateKeyString)
privateKey := ed25519.PrivateKey(privateKeyBytes)
lc := &tor.ListenConf{
    Key: privateKey,
    Version3: true,
    RemotePorts: []int{80}
}
Salin selepas log masuk

Atas ialah kandungan terperinci Servis tersembunyi yang gigih di golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!