@multitable {XXXXX} {XXXX KiB} {link sign} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
@headitem Version @tab Size @tab Tarball @tab SHA256 checksum
+@item @ref{Release 7.2, 7.2} @tab 289 KiB
+@tab @url{download/govpn-7.2.tar.xz, link} @url{download/govpn-7.2.tar.xz.sig, sign}
+@tab @code{8C787DCD 6FFB718E 850F287E 959FCB45 7880A8A1 1C417BCA 17A86346 AC9BAAEE}
+
@item @ref{Release 7.1, 7.1} @tab 289 KiB
@tab @url{download/govpn-7.1.tar.xz, link} @url{download/govpn-7.1.tar.xz.sig, sign}
@tab @code{DB656A87 508D6902 B9C8964D C20937BF C95E1E78 1998311F F8F85A95 F64862BB}
@node Новости
@section Новости
+@node Релиз 7.3
+@subsection Релиз 7.3
+@itemize
+@item Исправлена редкая возможная ошибка падения сервера во время
+rehandshake процедуры.
+@item Обновлены зависимые криптографические библиотеки.
+@end itemize
+
@node Релиз 7.2
@subsection Релиз 7.2
@itemize
See also this page @ref{Новости, on russian}.
+@node Release 7.3
+@section Release 7.3
+@itemize
+@item Fixed seldom possible segmentation fault on the server during
+rehandshake.
+@item Dependant cryptographic libraries are updated.
+@end itemize
+
@node Release 7.2
@section Release 7.2
@itemize
--- /dev/null
+# $FreeBSD$
+
+PORTNAME= govpn
+PORTVERSION= 7.3
+CATEGORIES= security
+MASTER_SITES= http://www.govpn.info/download/ \
+ http://sourceforge.net/projects/govpn/files/
+
+MAINTAINER= stargrave@stargrave.org
+COMMENT= Simple secure, DPI-resistant VPN daemon
+
+LICENSE= GPLv3+
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+BUILD_DEPENDS= go:lang/go
+
+USES= tar:xz
+MAKEFILE= BSDmakefile
+
+PORTDOCS= AUTHORS INSTALL NEWS README THANKS README.RU
+INFO= govpn
+INSTALL_TARGET= install-strip
+
+PLIST_FILES= bin/govpn-server bin/govpn-client bin/govpn-verifier \
+ share/govpn/newclient.sh
+
+.include <bsd.port.mk>
--- /dev/null
+GoVPN is simple secure free software virtual private network daemon,
+aimed to be reviewable, secure, DPI/censorship-resistant, written on Go.
+
+It uses fast strong passphrase authenticated key agreement protocol with
+augmented zero-knowledge mutual peers authentication (PAKE DH A-EKE).
+Encrypted, authenticated data transport that hides message's length and
+timestamps. Optional encryptionless mode, that still preserves data
+confidentiality. Perfect forward secrecy property. Resistance to:
+offline dictionary attacks, replay attacks, client's passphrases
+compromising and dictionary attacks on the server side. Built-in
+heartbeating, rehandshaking, real-time statistics. Ability to work
+through UDP, TCP and HTTP proxies. IPv4/IPv6-compatibility.
+
+WWW: http://www.govpn.info/
needsDeletion = ps.peer.LastPing.Add(timeout).Before(now)
ps.peer.BusyR.Unlock()
if needsDeletion {
- govpn.Printf(`[peer-delete bind="%s" peer="%s"]`, *bindAddr, ps.peer)
+ govpn.Printf(
+ `[peer-delete bind="%s" peer="%s"]`,
+ *bindAddr,
+ ps.peer.ID.String(),
+ )
delete(peers, addr)
delete(knownPeers, addr)
delete(peersByID, *ps.peer.ID)
peersByIDLock.RLock()
addrPrev, exists := peersByID[*peer.ID]
peersByIDLock.RUnlock()
+ var peerPrev *PeerState
if exists {
peersLock.Lock()
- peers[addrPrev].terminator <- struct{}{}
- tap = peers[addrPrev].tap
+ peerPrev = peers[addrPrev]
+ if peerPrev == nil {
+ exists = false
+ peersLock.Unlock()
+ }
+ }
+ if exists {
+ peerPrev.terminator <- struct{}{}
+ tap = peerPrev.tap
ps = &PeerState{
peer: peer,
tap: tap,
peersByIDLock.RLock()
addrPrev, exists = peersByID[*peer.ID]
peersByIDLock.RUnlock()
+ var peerPrev *PeerState
if exists {
peersLock.Lock()
- peers[addrPrev].terminator <- struct{}{}
+ peerPrev = peers[addrPrev]
+ if peerPrev == nil {
+ exists = false
+ peersLock.Unlock()
+ }
+ }
+ if exists {
+ peerPrev.terminator <- struct{}{}
psNew := &PeerState{
peer: peer,
- tap: peers[addrPrev].tap,
+ tap: peerPrev.tap,
terminator: make(chan struct{}),
}
go func(peer *govpn.Peer, tap *govpn.TAP, terminator chan struct{}) {
peersLock.Unlock()
peersByIDLock.Unlock()
kpLock.Unlock()
- govpn.Printf(`[peer-created bind="%s" peer="%s"]`, *bindAddr, peer.ID.String())
+ govpn.Printf(
+ `[peer-created bind="%s" peer="%s"]`,
+ *bindAddr,
+ peer.ID.String(),
+ )
}(addr, peer)
}
udpBufs <- buf
-Subproject commit 41d678d1df78cd0410143162dff954e6dc09300f
+Subproject commit 573951cbe80bb6352881271bb276f48749eab6f4
@url{http://www.govpn.info/}.
EOF
make -C doc
-./utils/news.sh
+/bin/sh utils/news.sh
rm -r doc/.well-known doc/govpn.html/.well-known utils/news.sh
rm utils/makedist.sh
find . -name .git -type d | xargs rm -fr
find . -name .gitignore -delete
rm .gitmodules
+rm -r ports
cd ..
tar cvf govpn-"$release".tar govpn-"$release"