Fix authentication
parent: tbd commit: cef865c
1 | use Error; |
2 | use ; |
3 | use |
4 | , | AuthenticationTokenGranter
5 | |
6 | , GitBackend, UserAuth, DiscoveryBackend, | GiteratedDiscoveryProtocol
7 | RepositoryBackend, UserBackend, |
8 | , |
9 | connection, listener, |
10 | , | Instance
11 | ; |
12 | use Listeners; |
13 | use ; |
14 | use ; |
15 | use |
16 | , | File
17 | , |
18 | , |
19 | , | Mutex
20 | ; |
21 | use ; |
22 | use Table; |
23 | |
24 | |
25 | extern crate tracing; |
26 | |
27 | |
28 | async |
29 | ; | init
30 | let mut listener = bind .await?; |
31 | let connections: = default; |
32 | let listeners: = default; |
33 | let config: Table = |
34 | let mut file = open .await?; |
35 | let mut text = String new; |
36 | file.read_to_string .await?; |
37 | text.parse? |
38 | ; |
39 | let db_conn_options = new |
40 | .host |
41 | .port |
42 | .database |
43 | .username |
44 | .password |
45 | .log_statements; |
46 | let db_pool = connect_with .await?; |
47 | |
48 | debug!; |
49 | ! .run .await?; | migrate
50 | info!; |
51 | |
52 | let repository_backend: = |
53 | new |
54 | pg_pool: db_pool.clone, |
55 | repository_folder: String from |
56 | config |
57 | .as_str |
58 | .unwrap, |
59 | , |
60 | instance: from_str .unwrap, |
61 | ; |
62 | |
63 | let token_granter = new |
64 | config: config.clone, |
65 | instance: from_str .unwrap, |
66 | ; |
67 | |
68 | let user_backend: = new |
69 | db_pool.clone, |
70 | & from_str .unwrap, |
71 | token_granter.clone, |
72 | ; |
73 | |
74 | let discovery_backend: = |
75 | new |
76 | pool: db_pool.clone, |
77 | ; |
78 | |
79 | info!; |
80 | |
81 | loop |
82 | let stream = accept_stream .await; |
83 | info!; |
84 | |
85 | let = match stream |
86 | Ok => stream, |
87 | Err => |
88 | error!; |
89 | continue; |
90 | |
91 | ; |
92 | |
93 | info!; |
94 | |
95 | let connection = accept_websocket_connection .await; |
96 | |
97 | let connection = match connection |
98 | Ok => connection, |
99 | Err => |
100 | error! |
101 | "Failed to initiate Websocket connection from {}. {:?}", |
102 | address, err |
103 | ; |
104 | continue; |
105 | |
106 | ; |
107 | |
108 | info!; |
109 | |
110 | let connection = RawConnection |
111 | task: spawn |
112 | connection, |
113 | listeners.clone, |
114 | connections.clone, |
115 | repository_backend.clone, |
116 | user_backend.clone, |
117 | token_granter.clone, |
118 | discovery_backend.clone, |
119 | address, |
120 | , |
121 | ; |
122 | |
123 | connections.lock .await.connections.push; |
124 | |
125 | |
126 | |
127 | async |
128 | let stream = listener.accept .await?; |
129 | |
130 | Ok |
131 | |
132 | |
133 | async |
134 | stream: S, |
135 | |
136 | let connection = accept_async .await?; |
137 | |
138 | Ok |
139 | |
140 |