Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sfu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Alain Takoudjou
sfu
Commits
ef1c211b
Commit
ef1c211b
authored
Dec 06, 2020
by
Juliusz Chroboczek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SFU is now called Galène.
parent
2d07c5d3
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
56 additions
and
55 deletions
+56
-55
.gitignore
.gitignore
+2
-2
README
README
+7
-7
README.FRONTEND
README.FRONTEND
+1
-1
diskwriter/diskwriter.go
diskwriter/diskwriter.go
+2
-2
estimator/estimator.go
estimator/estimator.go
+1
-1
estimator/estimator_test.go
estimator/estimator_test.go
+1
-1
galene-password-generator/galene-password.generator.go
galene-password-generator/galene-password.generator.go
+1
-1
galene.go
galene.go
+3
-3
go.mod
go.mod
+1
-1
group/client.go
group/client.go
+2
-1
jitter/jitter.go
jitter/jitter.go
+1
-1
rtpconn/rtpconn.go
rtpconn/rtpconn.go
+6
-6
rtpconn/rtpreader.go
rtpconn/rtpreader.go
+2
-2
rtpconn/rtpstats.go
rtpconn/rtpstats.go
+2
-2
rtpconn/rtpwriter.go
rtpconn/rtpwriter.go
+3
-3
rtpconn/webclient.go
rtpconn/webclient.go
+4
-4
static/galene.css
static/galene.css
+2
-2
static/galene.html
static/galene.html
+4
-4
static/galene.js
static/galene.js
+0
-0
static/index.html
static/index.html
+4
-4
static/tsconfig.json
static/tsconfig.json
+1
-1
stats/stats.go
stats/stats.go
+1
-1
webserver/webserver.go
webserver/webserver.go
+5
-5
No files found.
.gitignore
View file @
ef1c211b
*~
*~
data/*.pem
data/*.pem
sfu
galene
sfu-password-generator/sfu
-password-generator
galene-password-generator/galene
-password-generator
passwd
passwd
groups/*.json
groups/*.json
static/*.d.ts
static/*.d.ts
README
View file @
ef1c211b
...
@@ -63,21 +63,21 @@ options are described below.
...
@@ -63,21 +63,21 @@ options are described below.
## Copy the necessary files to your server:
## Copy the necessary files to your server:
Assuming you have set up a user *
sfu
*:
Assuming you have set up a user *
galene
*:
rsync -a
sfu static data groups sfu
@server.example.org:
rsync -a
galene static data groups galene
@server.example.org:
## Run the server binary:
## Run the server binary:
ssh
sfu
@server.example.org
ssh
galene
@server.example.org
nohup ./
sfu
&
nohup ./
galene
&
If you are using *runit*, use a script like the following:
If you are using *runit*, use a script like the following:
#!/bin/sh
#!/bin/sh
exec 2>&1
exec 2>&1
cd ~
sfu
cd ~
galene
exec setuidgid
sfu ./sfu
exec setuidgid
galene ./galene
If you are using *systemd*, use `Type=simple` in your service file.
If you are using *systemd*, use `Type=simple` in your service file.
...
@@ -130,7 +130,7 @@ A user definition is a dictionary with the following fields:
...
@@ -130,7 +130,7 @@ A user definition is a dictionary with the following fields:
allowed;
allowed;
- `password`: if omitted, then no password is required. Otherwise, this
- `password`: if omitted, then no password is required. Otherwise, this
can either be a string, specifying a plain text password, or
can either be a string, specifying a plain text password, or
a dictionary generated by the `
sfu
-password-generator` utility.
a dictionary generated by the `
galene
-password-generator` utility.
For example,
For example,
...
...
README.FRONTEND
View file @
ef1c211b
...
@@ -4,7 +4,7 @@ The frontend is written in JavaScript and is split into two files:
...
@@ -4,7 +4,7 @@ The frontend is written in JavaScript and is split into two files:
- `protocol.js` contains the low-level functions that interact with the
- `protocol.js` contains the low-level functions that interact with the
server;
server;
- `
sfu
.js` contains the user interface.
- `
galene
.js` contains the user interface.
If you wish to develop your own frontend, I recommend using `protocol.js`,
If you wish to develop your own frontend, I recommend using `protocol.js`,
which is likely to remain reasonably stable as the protocol evolves. This
which is likely to remain reasonably stable as the protocol evolves. This
...
...
diskwriter/diskwriter.go
View file @
ef1c211b
...
@@ -16,8 +16,8 @@ import (
...
@@ -16,8 +16,8 @@ import (
"github.com/pion/rtp/codecs"
"github.com/pion/rtp/codecs"
"github.com/pion/webrtc/v3/pkg/media/samplebuilder"
"github.com/pion/webrtc/v3/pkg/media/samplebuilder"
"
sfu
/conn"
"
galene
/conn"
"
sfu
/group"
"
galene
/group"
)
)
var
Directory
string
var
Directory
string
...
...
estimator/estimator.go
View file @
ef1c211b
...
@@ -4,7 +4,7 @@ import (
...
@@ -4,7 +4,7 @@ import (
"sync/atomic"
"sync/atomic"
"time"
"time"
"
sfu
/rtptime"
"
galene
/rtptime"
)
)
type
Estimator
struct
{
type
Estimator
struct
{
...
...
estimator/estimator_test.go
View file @
ef1c211b
...
@@ -3,7 +3,7 @@ package estimator
...
@@ -3,7 +3,7 @@ package estimator
import
(
import
(
"testing"
"testing"
"
sfu
/rtptime"
"
galene
/rtptime"
)
)
func
TestEstimator
(
t
*
testing
.
T
)
{
func
TestEstimator
(
t
*
testing
.
T
)
{
...
...
sfu-password-generator/sfu-password-
generator.go
→
galene-password-generator/galene-password.
generator.go
View file @
ef1c211b
...
@@ -11,7 +11,7 @@ import (
...
@@ -11,7 +11,7 @@ import (
"golang.org/x/crypto/pbkdf2"
"golang.org/x/crypto/pbkdf2"
"
sfu
/group"
"
galene
/group"
)
)
func
main
()
{
func
main
()
{
...
...
sfu
.go
→
galene
.go
View file @
ef1c211b
...
@@ -16,9 +16,9 @@ import (
...
@@ -16,9 +16,9 @@ import (
"syscall"
"syscall"
"time"
"time"
"
sfu
/diskwriter"
"
galene
/diskwriter"
"
sfu
/group"
"
galene
/group"
"
sfu
/webserver"
"
galene
/webserver"
)
)
func
main
()
{
func
main
()
{
...
...
go.mod
View file @
ef1c211b
module
sfu
module
galene
go 1.13
go 1.13
...
...
group/client.go
View file @
ef1c211b
...
@@ -7,9 +7,10 @@ import (
...
@@ -7,9 +7,10 @@ import (
"encoding/json"
"encoding/json"
"errors"
"errors"
"hash"
"hash"
"sfu/conn"
"golang.org/x/crypto/pbkdf2"
"golang.org/x/crypto/pbkdf2"
"galene/conn"
)
)
type
RawPassword
struct
{
type
RawPassword
struct
{
...
...
jitter/jitter.go
View file @
ef1c211b
...
@@ -3,7 +3,7 @@ package jitter
...
@@ -3,7 +3,7 @@ package jitter
import
(
import
(
"sync/atomic"
"sync/atomic"
"
sfu
/rtptime"
"
galene
/rtptime"
)
)
type
Estimator
struct
{
type
Estimator
struct
{
...
...
rtpconn/rtpconn.go
View file @
ef1c211b
...
@@ -13,12 +13,12 @@ import (
...
@@ -13,12 +13,12 @@ import (
"github.com/pion/rtp"
"github.com/pion/rtp"
"github.com/pion/webrtc/v3"
"github.com/pion/webrtc/v3"
"
sfu
/conn"
"
galene
/conn"
"
sfu
/estimator"
"
galene
/estimator"
"
sfu
/group"
"
galene
/group"
"
sfu
/jitter"
"
galene
/jitter"
"
sfu
/packetcache"
"
galene
/packetcache"
"
sfu
/rtptime"
"
galene
/rtptime"
)
)
type
bitrate
struct
{
type
bitrate
struct
{
...
...
rtpconn/rtpreader.go
View file @
ef1c211b
...
@@ -9,8 +9,8 @@ import (
...
@@ -9,8 +9,8 @@ import (
"github.com/pion/rtp/codecs"
"github.com/pion/rtp/codecs"
"github.com/pion/webrtc/v3"
"github.com/pion/webrtc/v3"
"
sfu
/packetcache"
"
galene
/packetcache"
"
sfu
/rtptime"
"
galene
/rtptime"
)
)
func
isVP8Keyframe
(
packet
*
rtp
.
Packet
)
bool
{
func
isVP8Keyframe
(
packet
*
rtp
.
Packet
)
bool
{
...
...
rtpconn/rtpstats.go
View file @
ef1c211b
...
@@ -5,8 +5,8 @@ import (
...
@@ -5,8 +5,8 @@ import (
"sync/atomic"
"sync/atomic"
"time"
"time"
"
sfu
/rtptime"
"
galene
/rtptime"
"
sfu
/stats"
"
galene
/stats"
)
)
func
(
c
*
webClient
)
GetStats
()
*
stats
.
Client
{
func
(
c
*
webClient
)
GetStats
()
*
stats
.
Client
{
...
...
rtpconn/rtpwriter.go
View file @
ef1c211b
...
@@ -9,9 +9,9 @@ import (
...
@@ -9,9 +9,9 @@ import (
"github.com/pion/rtp"
"github.com/pion/rtp"
"
sfu
/conn"
"
galene
/conn"
"
sfu
/packetcache"
"
galene
/packetcache"
"
sfu
/rtptime"
"
galene
/rtptime"
)
)
// packetIndex is a request to send a packet from the cache.
// packetIndex is a request to send a packet from the cache.
...
...
rtpconn/webclient.go
View file @
ef1c211b
...
@@ -12,10 +12,10 @@ import (
...
@@ -12,10 +12,10 @@ import (
"github.com/gorilla/websocket"
"github.com/gorilla/websocket"
"github.com/pion/webrtc/v3"
"github.com/pion/webrtc/v3"
"
sfu
/conn"
"
galene
/conn"
"
sfu
/diskwriter"
"
galene
/diskwriter"
"
sfu
/estimator"
"
galene
/estimator"
"
sfu
/group"
"
galene
/group"
)
)
func
errorToWSCloseMessage
(
id
string
,
err
error
)
(
*
clientMessage
,
[]
byte
)
{
func
errorToWSCloseMessage
(
id
string
,
err
error
)
(
*
clientMessage
,
[]
byte
)
{
...
...
static/
sfu
.css
→
static/
galene
.css
View file @
ef1c211b
...
@@ -1020,7 +1020,7 @@ legend {
...
@@ -1020,7 +1020,7 @@ legend {
z-index
:
1039
;
z-index
:
1039
;
}
}
#left-sidebar
.
sfu
-header
{
#left-sidebar
.
galene
-header
{
display
:
inline-block
;
display
:
inline-block
;
}
}
...
@@ -1033,7 +1033,7 @@ header .collapse {
...
@@ -1033,7 +1033,7 @@ header .collapse {
margin-left
:
5px
;
margin-left
:
5px
;
}
}
.
sfu
-header
{
.
galene
-header
{
font-size
:
1.3rem
;
font-size
:
1.3rem
;
font-weight
:
900
;
font-weight
:
900
;
color
:
#dbd9d9
;
color
:
#dbd9d9
;
...
...
static/
sfu
.html
→
static/
galene
.html
View file @
ef1c211b
<!DOCTYPE html>
<!DOCTYPE html>
<html
lang=
"en"
>
<html
lang=
"en"
>
<head>
<head>
<title>
SFU
</title>
<title>
Galène
</title>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<meta
http-equiv=
"ScreenOrientation"
content=
"autoRotate:disabled"
>
<meta
http-equiv=
"ScreenOrientation"
content=
"autoRotate:disabled"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"/common.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"/common.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"/
sfu
.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"/
galene
.css"
/>
<link
rel=
"author"
href=
"https://www.irif.fr/~jch/"
/>
<link
rel=
"author"
href=
"https://www.irif.fr/~jch/"
/>
<!-- Font Awesome File -->
<!-- Font Awesome File -->
<link
href=
"/css/fontawesome.min.css"
rel=
"stylesheet"
type=
"text/css"
>
<link
href=
"/css/fontawesome.min.css"
rel=
"stylesheet"
type=
"text/css"
>
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
<div
class=
"row full-height"
>
<div
class=
"row full-height"
>
<nav
id=
"left-sidebar"
>
<nav
id=
"left-sidebar"
>
<div
class=
"users-header"
>
<div
class=
"users-header"
>
<div
class=
"
sfu-header"
>
SFU
</div>
<div
class=
"
galene-header"
>
Galène
</div>
</div>
</div>
<div
class=
"header-sep"
></div>
<div
class=
"header-sep"
></div>
<div
id=
"users"
></div>
<div
id=
"users"
></div>
...
@@ -232,6 +232,6 @@
...
@@ -232,6 +232,6 @@
<script
src=
"/protocol.js"
defer
></script>
<script
src=
"/protocol.js"
defer
></script>
<script
src=
"/scripts/toastify.js"
defer
></script>
<script
src=
"/scripts/toastify.js"
defer
></script>
<script
src=
"/
sfu
.js"
defer
></script>
<script
src=
"/
galene
.js"
defer
></script>
</body>
</body>
</html>
</html>
static/
sfu
.js
→
static/
galene
.js
View file @
ef1c211b
File moved
static/index.html
View file @
ef1c211b
<!DOCTYPE html>
<!DOCTYPE html>
<html
lang=
"en"
>
<html
lang=
"en"
>
<head>
<head>
<title>
SFU
</title>
<title>
Galène
</title>
<meta
charset=
"utf-8"
>
<meta
charset=
"utf-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<link
rel=
"stylesheet"
href=
"/common.css"
>
<link
rel=
"stylesheet"
href=
"/common.css"
>
<link
rel=
"stylesheet"
href=
"/mainpage.css"
>
<link
rel=
"stylesheet"
href=
"/mainpage.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"/
sfu
.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"/
galene
.css"
/>
<link
rel=
"author"
href=
"https://www.irif.fr/~jch/"
/>
<link
rel=
"author"
href=
"https://www.irif.fr/~jch/"
/>
<!-- Font Awesome File -->
<!-- Font Awesome File -->
<link
href=
"/css/fontawesome.min.css"
rel=
"stylesheet"
type=
"text/css"
>
<link
href=
"/css/fontawesome.min.css"
rel=
"stylesheet"
type=
"text/css"
>
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
<body>
<body>
<div
class=
"home"
>
<div
class=
"home"
>
<h1
id=
"title"
class=
"navbar-brand"
>
SFU
</h1>
<h1
id=
"title"
class=
"navbar-brand"
>
Galène
</h1>
<form
id=
"groupform"
>
<form
id=
"groupform"
>
<label
for=
"group"
>
Group:
</label>
<label
for=
"group"
>
Group:
</label>
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
</div>
</div>
</div>
</div>
<footer
class=
"signature"
>
<footer
class=
"signature"
>
<p><a
href=
"https://www.irif.fr/~jch/software/
sfu/"
>
Unnamed SFU
</a>
by
<a
href=
"https://www.irif.fr/~jch/"
rel=
"author"
>
Juliusz Chroboczek
</a>
<p><a
href=
"https://www.irif.fr/~jch/software/
galene/"
>
Galène
</a>
by
<a
href=
"https://www.irif.fr/~jch/"
rel=
"author"
>
Juliusz Chroboczek
</a>
</footer>
</footer>
<script
src=
"/mainpage.js"
defer
></script>
<script
src=
"/mainpage.js"
defer
></script>
...
...
static/tsconfig.json
View file @
ef1c211b
...
@@ -14,6 +14,6 @@
...
@@ -14,6 +14,6 @@
},
},
"files"
:
[
"files"
:
[
"protocol.js"
,
"protocol.js"
,
"
sfu
.js"
"
galene
.js"
]
]
}
}
stats/stats.go
View file @
ef1c211b
...
@@ -4,7 +4,7 @@ import (
...
@@ -4,7 +4,7 @@ import (
"sort"
"sort"
"time"
"time"
"
sfu
/group"
"
galene
/group"
)
)
type
GroupStats
struct
{
type
GroupStats
struct
{
...
...
webserver/webserver.go
View file @
ef1c211b
...
@@ -21,10 +21,10 @@ import (
...
@@ -21,10 +21,10 @@ import (
"github.com/gorilla/websocket"
"github.com/gorilla/websocket"
"
sfu
/diskwriter"
"
galene
/diskwriter"
"
sfu
/group"
"
galene
/group"
"
sfu
/rtpconn"
"
galene
/rtpconn"
"
sfu
/stats"
"
galene
/stats"
)
)
var
server
atomic
.
Value
var
server
atomic
.
Value
...
@@ -267,7 +267,7 @@ func groupHandler(w http.ResponseWriter, r *http.Request) {
...
@@ -267,7 +267,7 @@ func groupHandler(w http.ResponseWriter, r *http.Request) {
return
return
}
}
serveFile
(
w
,
r
,
filepath
.
Join
(
StaticRoot
,
"
sfu
.html"
))
serveFile
(
w
,
r
,
filepath
.
Join
(
StaticRoot
,
"
galene
.html"
))
}
}
func
publicHandler
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
func
publicHandler
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment