mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-31 08:01:34 +01:00 
			
		
		
		
	Merge branch 'main' into sanitise-machine-key-url
This commit is contained in:
		
						commit
						5333df283a
					
				| @ -18,6 +18,7 @@ | |||||||
| - Sanitise the node key passed to registration url [#823](https://github.com/juanfont/headscale/pull/823) | - Sanitise the node key passed to registration url [#823](https://github.com/juanfont/headscale/pull/823) | ||||||
| - Add support for generating pre-auth keys with tags [#767](https://github.com/juanfont/headscale/pull/767) | - Add support for generating pre-auth keys with tags [#767](https://github.com/juanfont/headscale/pull/767) | ||||||
| - Add support for evaluating `autoApprovers` ACL entries when a machine is registered [#763](https://github.com/juanfont/headscale/pull/763) | - Add support for evaluating `autoApprovers` ACL entries when a machine is registered [#763](https://github.com/juanfont/headscale/pull/763) | ||||||
|  | - Add config flag to allow Headscale to start if OIDC provider is down [#829](https://github.com/juanfont/headscale/pull/829) | ||||||
| 
 | 
 | ||||||
| ## 0.16.4 (2022-08-21) | ## 0.16.4 (2022-08-21) | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										103
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										103
									
								
								README.md
									
									
									
									
									
								
							| @ -195,6 +195,15 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Jiang Zhu</b></sub> |             <sub style="font-size:14px"><b>Jiang Zhu</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|  |         <a href=https://github.com/tsujamin> | ||||||
|  |             <img src=https://avatars.githubusercontent.com/u/2435619?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Benjamin Roberts/> | ||||||
|  |             <br /> | ||||||
|  |             <sub style="font-size:14px"><b>Benjamin Roberts</b></sub> | ||||||
|  |         </a> | ||||||
|  |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/reynico> |         <a href=https://github.com/reynico> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/715768?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Nico/> |             <img src=https://avatars.githubusercontent.com/u/715768?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Nico/> | ||||||
| @ -202,8 +211,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Nico</b></sub> |             <sub style="font-size:14px"><b>Nico</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |  | ||||||
| <tr> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/e-zk> |         <a href=https://github.com/e-zk> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/58356365?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=e-zk/> |             <img src=https://avatars.githubusercontent.com/u/58356365?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=e-zk/> | ||||||
| @ -239,6 +246,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>ohdearaugustin</b></sub> |             <sub style="font-size:14px"><b>ohdearaugustin</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/mpldr> |         <a href=https://github.com/mpldr> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/33086936?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Moritz Poldrack/> |             <img src=https://avatars.githubusercontent.com/u/33086936?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Moritz Poldrack/> | ||||||
| @ -246,8 +255,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Moritz Poldrack</b></sub> |             <sub style="font-size:14px"><b>Moritz Poldrack</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |  | ||||||
| <tr> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/GrigoriyMikhalkin> |         <a href=https://github.com/GrigoriyMikhalkin> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/3637857?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=GrigoriyMikhalkin/> |             <img src=https://avatars.githubusercontent.com/u/3637857?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=GrigoriyMikhalkin/> | ||||||
| @ -255,6 +262,13 @@ make build | |||||||
|             <sub style="font-size:14px"><b>GrigoriyMikhalkin</b></sub> |             <sub style="font-size:14px"><b>GrigoriyMikhalkin</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|  |         <a href=https://github.com/mike-lloyd03> | ||||||
|  |             <img src=https://avatars.githubusercontent.com/u/49411532?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Mike Lloyd/> | ||||||
|  |             <br /> | ||||||
|  |             <sub style="font-size:14px"><b>Mike Lloyd</b></sub> | ||||||
|  |         </a> | ||||||
|  |     </td> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/Niek> |         <a href=https://github.com/Niek> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/213140?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Niek van der Maas/> |             <img src=https://avatars.githubusercontent.com/u/213140?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Niek van der Maas/> | ||||||
| @ -276,6 +290,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Azz</b></sub> |             <sub style="font-size:14px"><b>Azz</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/iSchluff> |         <a href=https://github.com/iSchluff> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/1429641?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Anton Schubert/> |             <img src=https://avatars.githubusercontent.com/u/1429641?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Anton Schubert/> | ||||||
| @ -290,8 +306,13 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Aaron Bieber</b></sub> |             <sub style="font-size:14px"><b>Aaron Bieber</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
| <tr> |         <a href=https://github.com/kazauwa> | ||||||
|  |             <img src=https://avatars.githubusercontent.com/u/12330159?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Igor Perepilitsyn/> | ||||||
|  |             <br /> | ||||||
|  |             <sub style="font-size:14px"><b>Igor Perepilitsyn</b></sub> | ||||||
|  |         </a> | ||||||
|  |     </td> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/Aluxima> |         <a href=https://github.com/Aluxima> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/16262531?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Laurent Marchaud/> |             <img src=https://avatars.githubusercontent.com/u/16262531?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Laurent Marchaud/> | ||||||
| @ -308,11 +329,13 @@ make build | |||||||
|     </td> |     </td> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/hdhoang> |         <a href=https://github.com/hdhoang> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/12537?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Hoàng Đức Hiếu/> |             <img src=https://avatars.githubusercontent.com/u/12537?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=hdhoang/> | ||||||
|             <br /> |             <br /> | ||||||
|             <sub style="font-size:14px"><b>Hoàng Đức Hiếu</b></sub> |             <sub style="font-size:14px"><b>hdhoang</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/bravechamp> |         <a href=https://github.com/bravechamp> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/48980452?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=bravechamp/> |             <img src=https://avatars.githubusercontent.com/u/48980452?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=bravechamp/> | ||||||
| @ -327,6 +350,13 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Deon Thomas</b></sub> |             <sub style="font-size:14px"><b>Deon Thomas</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|  |         <a href=https://github.com/madjam002> | ||||||
|  |             <img src=https://avatars.githubusercontent.com/u/679137?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Jamie Greeff/> | ||||||
|  |             <br /> | ||||||
|  |             <sub style="font-size:14px"><b>Jamie Greeff</b></sub> | ||||||
|  |         </a> | ||||||
|  |     </td> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/ChibangLW> |         <a href=https://github.com/ChibangLW> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/22293464?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=ChibangLW/> |             <img src=https://avatars.githubusercontent.com/u/22293464?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=ChibangLW/> | ||||||
| @ -334,8 +364,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b>ChibangLW</b></sub> |             <sub style="font-size:14px"><b>ChibangLW</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |  | ||||||
| <tr> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/mevansam> |         <a href=https://github.com/mevansam> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/403630?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Mevan Samaratunga/> |             <img src=https://avatars.githubusercontent.com/u/403630?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Mevan Samaratunga/> | ||||||
| @ -350,6 +378,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Michael G.</b></sub> |             <sub style="font-size:14px"><b>Michael G.</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/ptman> |         <a href=https://github.com/ptman> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/24669?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Paul Tötterman/> |             <img src=https://avatars.githubusercontent.com/u/24669?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Paul Tötterman/> | ||||||
| @ -378,8 +408,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Artem Klevtsov</b></sub> |             <sub style="font-size:14px"><b>Artem Klevtsov</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |  | ||||||
| <tr> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/cmars> |         <a href=https://github.com/cmars> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/23741?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Casey Marshall/> |             <img src=https://avatars.githubusercontent.com/u/23741?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Casey Marshall/> | ||||||
| @ -394,6 +422,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Pavlos Vinieratos</b></sub> |             <sub style="font-size:14px"><b>Pavlos Vinieratos</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/SilverBut> |         <a href=https://github.com/SilverBut> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/6560655?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Silver Bullet/> |             <img src=https://avatars.githubusercontent.com/u/6560655?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Silver Bullet/> | ||||||
| @ -422,8 +452,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b>thomas</b></sub> |             <sub style="font-size:14px"><b>thomas</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |  | ||||||
| <tr> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/aberoham> |         <a href=https://github.com/aberoham> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/586805?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Abraham Ingersoll/> |             <img src=https://avatars.githubusercontent.com/u/586805?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Abraham Ingersoll/> | ||||||
| @ -438,6 +466,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Antoine POPINEAU</b></sub> |             <sub style="font-size:14px"><b>Antoine POPINEAU</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/aofei> |         <a href=https://github.com/aofei> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/5037285?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Aofei Sheng/> |             <img src=https://avatars.githubusercontent.com/u/5037285?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Aofei Sheng/> | ||||||
| @ -466,8 +496,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b> Carson Yang</b></sub> |             <sub style="font-size:14px"><b> Carson Yang</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |  | ||||||
| <tr> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/kundel> |         <a href=https://github.com/kundel> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/10158899?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=kundel/> |             <img src=https://avatars.githubusercontent.com/u/10158899?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=kundel/> | ||||||
| @ -482,6 +510,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Felix Kronlage-Dammers</b></sub> |             <sub style="font-size:14px"><b>Felix Kronlage-Dammers</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/felixonmars> |         <a href=https://github.com/felixonmars> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/1006477?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Felix Yan/> |             <img src=https://avatars.githubusercontent.com/u/1006477?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Felix Yan/> | ||||||
| @ -496,13 +526,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b>JJGadgets</b></sub> |             <sub style="font-size:14px"><b>JJGadgets</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |  | ||||||
|         <a href=https://github.com/madjam002> |  | ||||||
|             <img src=https://avatars.githubusercontent.com/u/679137?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Jamie Greeff/> |  | ||||||
|             <br /> |  | ||||||
|             <sub style="font-size:14px"><b>Jamie Greeff</b></sub> |  | ||||||
|         </a> |  | ||||||
|     </td> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/jimt> |         <a href=https://github.com/jimt> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/180326?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Jim Tittsler/> |             <img src=https://avatars.githubusercontent.com/u/180326?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Jim Tittsler/> | ||||||
| @ -510,8 +533,13 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Jim Tittsler</b></sub> |             <sub style="font-size:14px"><b>Jim Tittsler</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
| <tr> |         <a href=https://github.com/ShadowJonathan> | ||||||
|  |             <img src=https://avatars.githubusercontent.com/u/22740616?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Jonathan de Jong/> | ||||||
|  |             <br /> | ||||||
|  |             <sub style="font-size:14px"><b>Jonathan de Jong</b></sub> | ||||||
|  |         </a> | ||||||
|  |     </td> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/piec> |         <a href=https://github.com/piec> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/781471?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Pierre Carru/> |             <img src=https://avatars.githubusercontent.com/u/781471?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Pierre Carru/> | ||||||
| @ -526,6 +554,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Rasmus Moorats</b></sub> |             <sub style="font-size:14px"><b>Rasmus Moorats</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/rcursaru> |         <a href=https://github.com/rcursaru> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/16259641?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=rcursaru/> |             <img src=https://avatars.githubusercontent.com/u/16259641?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=rcursaru/> | ||||||
| @ -554,8 +584,13 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Shaanan Cohney</b></sub> |             <sub style="font-size:14px"><b>Shaanan Cohney</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
| <tr> |         <a href=https://github.com/stefanvanburen> | ||||||
|  |             <img src=https://avatars.githubusercontent.com/u/622527?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Stefan VanBuren/> | ||||||
|  |             <br /> | ||||||
|  |             <sub style="font-size:14px"><b>Stefan VanBuren</b></sub> | ||||||
|  |         </a> | ||||||
|  |     </td> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/sophware> |         <a href=https://github.com/sophware> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/41669?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=sophware/> |             <img src=https://avatars.githubusercontent.com/u/41669?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=sophware/> | ||||||
| @ -563,6 +598,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>sophware</b></sub> |             <sub style="font-size:14px"><b>sophware</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/m-tanner-dev0> |         <a href=https://github.com/m-tanner-dev0> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/97977342?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Tanner/> |             <img src=https://avatars.githubusercontent.com/u/97977342?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Tanner/> | ||||||
| @ -598,8 +635,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Tjerk Woudsma</b></sub> |             <sub style="font-size:14px"><b>Tjerk Woudsma</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |  | ||||||
| <tr> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/y0ngb1n> |         <a href=https://github.com/y0ngb1n> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/25719408?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Yang Bin/> |             <img src=https://avatars.githubusercontent.com/u/25719408?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Yang Bin/> | ||||||
| @ -607,6 +642,8 @@ make build | |||||||
|             <sub style="font-size:14px"><b>Yang Bin</b></sub> |             <sub style="font-size:14px"><b>Yang Bin</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/gozssky> |         <a href=https://github.com/gozssky> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/17199941?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Yujie Xia/> |             <img src=https://avatars.githubusercontent.com/u/17199941?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=Yujie Xia/> | ||||||
| @ -642,8 +679,6 @@ make build | |||||||
|             <sub style="font-size:14px"><b>henning mueller</b></sub> |             <sub style="font-size:14px"><b>henning mueller</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
| </tr> |  | ||||||
| <tr> |  | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/ignoramous> |         <a href=https://github.com/ignoramous> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/852289?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=ignoramous/> |             <img src=https://avatars.githubusercontent.com/u/852289?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=ignoramous/> | ||||||
| @ -651,11 +686,13 @@ make build | |||||||
|             <sub style="font-size:14px"><b>ignoramous</b></sub> |             <sub style="font-size:14px"><b>ignoramous</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|  | </tr> | ||||||
|  | <tr> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|         <a href=https://github.com/lion24> |         <a href=https://github.com/lion24> | ||||||
|             <img src=https://avatars.githubusercontent.com/u/1382102?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=lion24/> |             <img src=https://avatars.githubusercontent.com/u/1382102?v=4 width="100;"  style="border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px" alt=sharkonet/> | ||||||
|             <br /> |             <br /> | ||||||
|             <sub style="font-size:14px"><b>lion24</b></sub> |             <sub style="font-size:14px"><b>sharkonet</b></sub> | ||||||
|         </a> |         </a> | ||||||
|     </td> |     </td> | ||||||
|     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> |     <td align="center" style="word-wrap: break-word; width: 150.0; height: 150.0"> | ||||||
|  | |||||||
							
								
								
									
										30
									
								
								app.go
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								app.go
									
									
									
									
									
								
							| @ -53,8 +53,10 @@ const ( | |||||||
| 	) | 	) | ||||||
| 
 | 
 | ||||||
| 	ErrFailedPrivateKey      = Error("failed to read or create private key") | 	ErrFailedPrivateKey      = Error("failed to read or create private key") | ||||||
| 	ErrFailedNoisePrivateKey = Error("failed to read or create Noise protocol private key") | 	ErrFailedNoisePrivateKey = Error( | ||||||
| 	ErrSamePrivateKeys       = Error("private key and noise private key are the same") | 		"failed to read or create Noise protocol private key", | ||||||
|  | 	) | ||||||
|  | 	ErrSamePrivateKeys = Error("private key and noise private key are the same") | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ( | const ( | ||||||
| @ -193,7 +195,11 @@ func NewHeadscale(cfg *Config) (*Headscale, error) { | |||||||
| 	if cfg.OIDC.Issuer != "" { | 	if cfg.OIDC.Issuer != "" { | ||||||
| 		err = app.initOIDC() | 		err = app.initOIDC() | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return nil, err | 			if cfg.OIDC.OnlyStartIfOIDCIsAvailable { | ||||||
|  | 				return nil, err | ||||||
|  | 			} else { | ||||||
|  | 				log.Warn().Err(err).Msg("failed to set up OIDC provider, falling back to CLI based authentication") | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -448,16 +454,20 @@ func (h *Headscale) createRouter(grpcMux *runtime.ServeMux) *mux.Router { | |||||||
| 	router.HandleFunc("/health", h.HealthHandler).Methods(http.MethodGet) | 	router.HandleFunc("/health", h.HealthHandler).Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/key", h.KeyHandler).Methods(http.MethodGet) | 	router.HandleFunc("/key", h.KeyHandler).Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/register/{nkey}", h.RegisterWebAPI).Methods(http.MethodGet) | 	router.HandleFunc("/register/{nkey}", h.RegisterWebAPI).Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/machine/{mkey}/map", h.PollNetMapHandler).Methods(http.MethodPost) | 	router.HandleFunc("/machine/{mkey}/map", h.PollNetMapHandler). | ||||||
|  | 		Methods(http.MethodPost) | ||||||
| 	router.HandleFunc("/machine/{mkey}", h.RegistrationHandler).Methods(http.MethodPost) | 	router.HandleFunc("/machine/{mkey}", h.RegistrationHandler).Methods(http.MethodPost) | ||||||
| 	router.HandleFunc("/oidc/register/{nkey}", h.RegisterOIDC).Methods(http.MethodGet) | 	router.HandleFunc("/oidc/register/{nkey}", h.RegisterOIDC).Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/oidc/callback", h.OIDCCallback).Methods(http.MethodGet) | 	router.HandleFunc("/oidc/callback", h.OIDCCallback).Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/apple", h.AppleConfigMessage).Methods(http.MethodGet) | 	router.HandleFunc("/apple", h.AppleConfigMessage).Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/apple/{platform}", h.ApplePlatformConfig).Methods(http.MethodGet) | 	router.HandleFunc("/apple/{platform}", h.ApplePlatformConfig). | ||||||
|  | 		Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/windows", h.WindowsConfigMessage).Methods(http.MethodGet) | 	router.HandleFunc("/windows", h.WindowsConfigMessage).Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/windows/tailscale.reg", h.WindowsRegConfig).Methods(http.MethodGet) | 	router.HandleFunc("/windows/tailscale.reg", h.WindowsRegConfig). | ||||||
|  | 		Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/swagger", SwaggerUI).Methods(http.MethodGet) | 	router.HandleFunc("/swagger", SwaggerUI).Methods(http.MethodGet) | ||||||
| 	router.HandleFunc("/swagger/v1/openapiv2.json", SwaggerAPIv1).Methods(http.MethodGet) | 	router.HandleFunc("/swagger/v1/openapiv2.json", SwaggerAPIv1). | ||||||
|  | 		Methods(http.MethodGet) | ||||||
| 
 | 
 | ||||||
| 	if h.cfg.DERP.ServerEnabled { | 	if h.cfg.DERP.ServerEnabled { | ||||||
| 		router.HandleFunc("/derp", h.DERPHandler) | 		router.HandleFunc("/derp", h.DERPHandler) | ||||||
| @ -477,7 +487,8 @@ func (h *Headscale) createRouter(grpcMux *runtime.ServeMux) *mux.Router { | |||||||
| func (h *Headscale) createNoiseMux() *mux.Router { | func (h *Headscale) createNoiseMux() *mux.Router { | ||||||
| 	router := mux.NewRouter() | 	router := mux.NewRouter() | ||||||
| 
 | 
 | ||||||
| 	router.HandleFunc("/machine/register", h.NoiseRegistrationHandler).Methods(http.MethodPost) | 	router.HandleFunc("/machine/register", h.NoiseRegistrationHandler). | ||||||
|  | 		Methods(http.MethodPost) | ||||||
| 	router.HandleFunc("/machine/map", h.NoisePollNetMapHandler) | 	router.HandleFunc("/machine/map", h.NoisePollNetMapHandler) | ||||||
| 
 | 
 | ||||||
| 	return router | 	return router | ||||||
| @ -827,9 +838,8 @@ func (h *Headscale) getTLSSettings() (*tls.Config, error) { | |||||||
| 				ReadTimeout: HTTPReadTimeout, | 				ReadTimeout: HTTPReadTimeout, | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			err := server.ListenAndServe() |  | ||||||
| 
 |  | ||||||
| 			go func() { | 			go func() { | ||||||
|  | 				err := server.ListenAndServe() | ||||||
| 				log.Fatal(). | 				log.Fatal(). | ||||||
| 					Caller(). | 					Caller(). | ||||||
| 					Err(err). | 					Err(err). | ||||||
|  | |||||||
| @ -230,6 +230,7 @@ unix_socket_permission: "0770" | |||||||
| # help us test it. | # help us test it. | ||||||
| # OpenID Connect | # OpenID Connect | ||||||
| # oidc: | # oidc: | ||||||
|  | #   only_start_if_oidc_is_available: true | ||||||
| #   issuer: "https://your-oidc.issuer.com/path" | #   issuer: "https://your-oidc.issuer.com/path" | ||||||
| #   client_id: "your-oidc-client-id" | #   client_id: "your-oidc-client-id" | ||||||
| #   client_secret: "your-oidc-client-secret" | #   client_secret: "your-oidc-client-secret" | ||||||
|  | |||||||
							
								
								
									
										21
									
								
								config.go
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								config.go
									
									
									
									
									
								
							| @ -90,14 +90,15 @@ type LetsEncryptConfig struct { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type OIDCConfig struct { | type OIDCConfig struct { | ||||||
| 	Issuer           string | 	OnlyStartIfOIDCIsAvailable bool | ||||||
| 	ClientID         string | 	Issuer                     string | ||||||
| 	ClientSecret     string | 	ClientID                   string | ||||||
| 	Scope            []string | 	ClientSecret               string | ||||||
| 	ExtraParams      map[string]string | 	Scope                      []string | ||||||
| 	AllowedDomains   []string | 	ExtraParams                map[string]string | ||||||
| 	AllowedUsers     []string | 	AllowedDomains             []string | ||||||
| 	StripEmaildomain bool | 	AllowedUsers               []string | ||||||
|  | 	StripEmaildomain           bool | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type DERPConfig struct { | type DERPConfig struct { | ||||||
| @ -174,6 +175,7 @@ func LoadConfig(path string, isFile bool) error { | |||||||
| 
 | 
 | ||||||
| 	viper.SetDefault("oidc.scope", []string{oidc.ScopeOpenID, "profile", "email"}) | 	viper.SetDefault("oidc.scope", []string{oidc.ScopeOpenID, "profile", "email"}) | ||||||
| 	viper.SetDefault("oidc.strip_email_domain", true) | 	viper.SetDefault("oidc.strip_email_domain", true) | ||||||
|  | 	viper.SetDefault("oidc.only_start_if_oidc_is_available", true) | ||||||
| 
 | 
 | ||||||
| 	viper.SetDefault("logtail.enabled", false) | 	viper.SetDefault("logtail.enabled", false) | ||||||
| 	viper.SetDefault("randomize_client_port", false) | 	viper.SetDefault("randomize_client_port", false) | ||||||
| @ -559,6 +561,9 @@ func GetHeadscaleConfig() (*Config, error) { | |||||||
| 		UnixSocketPermission: GetFileMode("unix_socket_permission"), | 		UnixSocketPermission: GetFileMode("unix_socket_permission"), | ||||||
| 
 | 
 | ||||||
| 		OIDC: OIDCConfig{ | 		OIDC: OIDCConfig{ | ||||||
|  | 			OnlyStartIfOIDCIsAvailable: viper.GetBool( | ||||||
|  | 				"oidc.only_start_if_oidc_is_available", | ||||||
|  | 			), | ||||||
| 			Issuer:           viper.GetString("oidc.issuer"), | 			Issuer:           viper.GetString("oidc.issuer"), | ||||||
| 			ClientID:         viper.GetString("oidc.client_id"), | 			ClientID:         viper.GetString("oidc.client_id"), | ||||||
| 			ClientSecret:     viper.GetString("oidc.client_secret"), | 			ClientSecret:     viper.GetString("oidc.client_secret"), | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							| @ -17,11 +17,11 @@ | |||||||
|     }, |     }, | ||||||
|     "nixpkgs": { |     "nixpkgs": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1662019588, |         "lastModified": 1664106353, | ||||||
|         "narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=", |         "narHash": "sha256-HMJP80+DSxFySpWyuxz5+iNozS3+dVt0b4n6YMIU5/8=", | ||||||
|         "owner": "NixOS", |         "owner": "NixOS", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "rev": "2da64a81275b68fdad38af669afeda43d401e94b", |         "rev": "79d3ca08920364759c63fd3eb562e99c0c17044a", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | |||||||
							
								
								
									
										302
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										302
									
								
								flake.nix
									
									
									
									
									
								
							| @ -6,163 +6,163 @@ | |||||||
|     flake-utils.url = "github:numtide/flake-utils"; |     flake-utils.url = "github:numtide/flake-utils"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   outputs = { self, nixpkgs, flake-utils, ... }: |   outputs = { | ||||||
|     let |     self, | ||||||
|       headscaleVersion = if (self ? shortRev) then self.shortRev else "dev"; |     nixpkgs, | ||||||
|     in |     flake-utils, | ||||||
|  |     ... | ||||||
|  |   }: let | ||||||
|  |     headscaleVersion = | ||||||
|  |       if (self ? shortRev) | ||||||
|  |       then self.shortRev | ||||||
|  |       else "dev"; | ||||||
|  |   in | ||||||
|     { |     { | ||||||
|       overlay = final: prev: |       overlay = _: prev: let | ||||||
|         let |         pkgs = nixpkgs.legacyPackages.${prev.system}; | ||||||
|           pkgs = nixpkgs.legacyPackages.${prev.system}; |       in rec { | ||||||
|         in |         headscale = pkgs.buildGo119Module rec { | ||||||
|         rec { |           pname = "headscale"; | ||||||
|           headscale = |           version = headscaleVersion; | ||||||
|             pkgs.buildGo119Module rec { |           src = pkgs.lib.cleanSource self; | ||||||
|               pname = "headscale"; |  | ||||||
|               version = headscaleVersion; |  | ||||||
|               src = pkgs.lib.cleanSource self; |  | ||||||
| 
 | 
 | ||||||
|               # When updating go.mod or go.sum, a new sha will need to be calculated, |           # When updating go.mod or go.sum, a new sha will need to be calculated, | ||||||
|               # update this if you have a mismatch after doing a change to thos files. |           # update this if you have a mismatch after doing a change to thos files. | ||||||
|               vendorSha256 = "sha256-DosFCSiQ5FURbIrt4NcPGkExc84t2MGMqe9XLxNHdIM="; |           vendorSha256 = "sha256-DosFCSiQ5FURbIrt4NcPGkExc84t2MGMqe9XLxNHdIM="; | ||||||
| 
 | 
 | ||||||
|               ldflags = [ "-s" "-w" "-X github.com/juanfont/headscale/cmd/headscale/cli.Version=v${version}" ]; |           ldflags = ["-s" "-w" "-X github.com/juanfont/headscale/cmd/headscale/cli.Version=v${version}"]; | ||||||
|             }; |  | ||||||
| 
 |  | ||||||
|           golines = |  | ||||||
|             pkgs.buildGoModule rec { |  | ||||||
|               pname = "golines"; |  | ||||||
|               version = "0.9.0"; |  | ||||||
| 
 |  | ||||||
|               src = pkgs.fetchFromGitHub { |  | ||||||
|                 owner = "segmentio"; |  | ||||||
|                 repo = "golines"; |  | ||||||
|                 rev = "v${version}"; |  | ||||||
|                 sha256 = "sha256-BUXEg+4r9L/gqe4DhTlhN55P3jWt7ZyWFQycO6QePrw="; |  | ||||||
|               }; |  | ||||||
| 
 |  | ||||||
|               vendorSha256 = "sha256-sEzWUeVk5GB0H41wrp12P8sBWRjg0FHUX6ABDEEBqK8="; |  | ||||||
| 
 |  | ||||||
|               nativeBuildInputs = [ pkgs.installShellFiles ]; |  | ||||||
|             }; |  | ||||||
| 
 |  | ||||||
|           golangci-lint = prev.golangci-lint.override { |  | ||||||
|             # Override https://github.com/NixOS/nixpkgs/pull/166801 which changed this |  | ||||||
|             # to buildGo118Module because it does not build on Darwin. |  | ||||||
|             inherit (prev) buildGoModule; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
|           # golangci-lint = |  | ||||||
|           #   pkgs.buildGo117Module rec { |  | ||||||
|           #     pname = "golangci-lint"; |  | ||||||
|           #     version = "1.46.2"; |  | ||||||
|           # |  | ||||||
|           #     src = pkgs.fetchFromGitHub { |  | ||||||
|           #       owner = "golangci"; |  | ||||||
|           #       repo = "golangci-lint"; |  | ||||||
|           #       rev = "v${version}"; |  | ||||||
|           #       sha256 = "sha256-7sDAwWz+qoB/ngeH35tsJ5FZUfAQvQsU6kU9rUHIHMk="; |  | ||||||
|           #     }; |  | ||||||
|           # |  | ||||||
|           #     vendorSha256 = "sha256-w38OKN6HPoz37utG/2QSPMai55IRDXCIIymeMe6ogIU="; |  | ||||||
|           # |  | ||||||
|           #     nativeBuildInputs = [ pkgs.installShellFiles ]; |  | ||||||
|           #   }; |  | ||||||
| 
 |  | ||||||
|           protoc-gen-grpc-gateway = |  | ||||||
|             pkgs.buildGoModule rec { |  | ||||||
|               pname = "grpc-gateway"; |  | ||||||
|               version = "2.8.0"; |  | ||||||
| 
 |  | ||||||
|               src = pkgs.fetchFromGitHub { |  | ||||||
|                 owner = "grpc-ecosystem"; |  | ||||||
|                 repo = "grpc-gateway"; |  | ||||||
|                 rev = "v${version}"; |  | ||||||
|                 sha256 = "sha256-8eBBBYJ+tBjB2fgPMX/ZlbN3eeS75e8TAZYOKXs6hcg="; |  | ||||||
|               }; |  | ||||||
| 
 |  | ||||||
|               vendorSha256 = "sha256-AW2Gn/mlZyLMwF+NpK59eiOmQrYWW/9HPjbunYc9Ij4="; |  | ||||||
| 
 |  | ||||||
|               nativeBuildInputs = [ pkgs.installShellFiles ]; |  | ||||||
| 
 |  | ||||||
|               subPackages = [ "protoc-gen-grpc-gateway" "protoc-gen-openapiv2" ]; |  | ||||||
|             }; |  | ||||||
|         }; |         }; | ||||||
|     } // flake-utils.lib.eachDefaultSystem | 
 | ||||||
|       (system: |         golines = pkgs.buildGoModule rec { | ||||||
|         let |           pname = "golines"; | ||||||
|           pkgs = import nixpkgs { |           version = "0.9.0"; | ||||||
|             overlays = [ self.overlay ]; | 
 | ||||||
|             inherit system; |           src = pkgs.fetchFromGitHub { | ||||||
|  |             owner = "segmentio"; | ||||||
|  |             repo = "golines"; | ||||||
|  |             rev = "v${version}"; | ||||||
|  |             sha256 = "sha256-BUXEg+4r9L/gqe4DhTlhN55P3jWt7ZyWFQycO6QePrw="; | ||||||
|           }; |           }; | ||||||
|           buildDeps = with pkgs; [ git go_1_19 gnumake ]; | 
 | ||||||
|           devDeps = with pkgs; |           vendorSha256 = "sha256-sEzWUeVk5GB0H41wrp12P8sBWRjg0FHUX6ABDEEBqK8="; | ||||||
|             buildDeps ++ [ | 
 | ||||||
|  |           nativeBuildInputs = [pkgs.installShellFiles]; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         golangci-lint = prev.golangci-lint.override { | ||||||
|  |           # Override https://github.com/NixOS/nixpkgs/pull/166801 which changed this | ||||||
|  |           # to buildGo118Module because it does not build on Darwin. | ||||||
|  |           inherit (prev) buildGoModule; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         # golangci-lint = | ||||||
|  |         #   pkgs.buildGo117Module rec { | ||||||
|  |         #     pname = "golangci-lint"; | ||||||
|  |         #     version = "1.46.2"; | ||||||
|  |         # | ||||||
|  |         #     src = pkgs.fetchFromGitHub { | ||||||
|  |         #       owner = "golangci"; | ||||||
|  |         #       repo = "golangci-lint"; | ||||||
|  |         #       rev = "v${version}"; | ||||||
|  |         #       sha256 = "sha256-7sDAwWz+qoB/ngeH35tsJ5FZUfAQvQsU6kU9rUHIHMk="; | ||||||
|  |         #     }; | ||||||
|  |         # | ||||||
|  |         #     vendorSha256 = "sha256-w38OKN6HPoz37utG/2QSPMai55IRDXCIIymeMe6ogIU="; | ||||||
|  |         # | ||||||
|  |         #     nativeBuildInputs = [ pkgs.installShellFiles ]; | ||||||
|  |         #   }; | ||||||
|  | 
 | ||||||
|  |         protoc-gen-grpc-gateway = pkgs.buildGoModule rec { | ||||||
|  |           pname = "grpc-gateway"; | ||||||
|  |           version = "2.8.0"; | ||||||
|  | 
 | ||||||
|  |           src = pkgs.fetchFromGitHub { | ||||||
|  |             owner = "grpc-ecosystem"; | ||||||
|  |             repo = "grpc-gateway"; | ||||||
|  |             rev = "v${version}"; | ||||||
|  |             sha256 = "sha256-8eBBBYJ+tBjB2fgPMX/ZlbN3eeS75e8TAZYOKXs6hcg="; | ||||||
|  |           }; | ||||||
|  | 
 | ||||||
|  |           vendorSha256 = "sha256-AW2Gn/mlZyLMwF+NpK59eiOmQrYWW/9HPjbunYc9Ij4="; | ||||||
|  | 
 | ||||||
|  |           nativeBuildInputs = [pkgs.installShellFiles]; | ||||||
|  | 
 | ||||||
|  |           subPackages = ["protoc-gen-grpc-gateway" "protoc-gen-openapiv2"]; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |     } | ||||||
|  |     // flake-utils.lib.eachDefaultSystem | ||||||
|  |     (system: let | ||||||
|  |       pkgs = import nixpkgs { | ||||||
|  |         overlays = [self.overlay]; | ||||||
|  |         inherit system; | ||||||
|  |       }; | ||||||
|  |       buildDeps = with pkgs; [git go_1_19 gnumake]; | ||||||
|  |       devDeps = with pkgs; | ||||||
|  |         buildDeps | ||||||
|  |         ++ [ | ||||||
|  |           golangci-lint | ||||||
|  |           golines | ||||||
|  |           nodePackages.prettier | ||||||
|  | 
 | ||||||
|  |           # Protobuf dependencies | ||||||
|  |           protobuf | ||||||
|  |           protoc-gen-go | ||||||
|  |           protoc-gen-go-grpc | ||||||
|  |           protoc-gen-grpc-gateway | ||||||
|  |           buf | ||||||
|  |           clang-tools # clang-format | ||||||
|  |         ]; | ||||||
|  | 
 | ||||||
|  |       # Add entry to build a docker image with headscale | ||||||
|  |       # caveat: only works on Linux | ||||||
|  |       # | ||||||
|  |       # Usage: | ||||||
|  |       # nix build .#headscale-docker | ||||||
|  |       # docker load < result | ||||||
|  |       headscale-docker = pkgs.dockerTools.buildLayeredImage { | ||||||
|  |         name = "headscale"; | ||||||
|  |         tag = headscaleVersion; | ||||||
|  |         contents = [pkgs.headscale]; | ||||||
|  |         config.Entrypoint = [(pkgs.headscale + "/bin/headscale")]; | ||||||
|  |       }; | ||||||
|  |     in rec { | ||||||
|  |       # `nix develop` | ||||||
|  |       devShell = pkgs.mkShell {buildInputs = devDeps;}; | ||||||
|  | 
 | ||||||
|  |       # `nix build` | ||||||
|  |       packages = with pkgs; { | ||||||
|  |         inherit headscale; | ||||||
|  |         inherit headscale-docker; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       defaultPackage = pkgs.headscale; | ||||||
|  | 
 | ||||||
|  |       # `nix run` | ||||||
|  |       apps.headscale = flake-utils.lib.mkApp { | ||||||
|  |         drv = packages.headscale; | ||||||
|  |       }; | ||||||
|  |       defaultApp = apps.headscale; | ||||||
|  | 
 | ||||||
|  |       checks = { | ||||||
|  |         format = | ||||||
|  |           pkgs.runCommand "check-format" | ||||||
|  |           { | ||||||
|  |             buildInputs = with pkgs; [ | ||||||
|  |               gnumake | ||||||
|  |               nixpkgs-fmt | ||||||
|               golangci-lint |               golangci-lint | ||||||
|               golines |  | ||||||
|               nodePackages.prettier |               nodePackages.prettier | ||||||
| 
 |               golines | ||||||
|               # Protobuf dependencies |               clang-tools | ||||||
|               protobuf |  | ||||||
|               protoc-gen-go |  | ||||||
|               protoc-gen-go-grpc |  | ||||||
|               protoc-gen-grpc-gateway |  | ||||||
|               buf |  | ||||||
|               clang-tools # clang-format |  | ||||||
|             ]; |             ]; | ||||||
| 
 |           } '' | ||||||
| 
 |             ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt ${./.} | ||||||
|           # Add entry to build a docker image with headscale |             ${pkgs.golangci-lint}/bin/golangci-lint run --fix --timeout 10m | ||||||
|           # caveat: only works on Linux |             ${pkgs.nodePackages.prettier}/bin/prettier --write '**/**.{ts,js,md,yaml,yml,sass,css,scss,html}' | ||||||
|           # |             ${pkgs.golines}/bin/golines --max-len=88 --base-formatter=gofumpt -w ${./.} | ||||||
|           # Usage: |             ${pkgs.clang-tools}/bin/clang-format -style="{BasedOnStyle: Google, IndentWidth: 4, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}" -i ${./.} | ||||||
|           # nix build .#headscale-docker |           ''; | ||||||
|           # docker load < result |       }; | ||||||
|           headscale-docker = pkgs.dockerTools.buildLayeredImage { |     }); | ||||||
|             name = "headscale"; |  | ||||||
|             tag = headscaleVersion; |  | ||||||
|             contents = [ pkgs.headscale ]; |  | ||||||
|             config.Entrypoint = [ (pkgs.headscale + "/bin/headscale") ]; |  | ||||||
|           }; |  | ||||||
|         in |  | ||||||
|         rec { |  | ||||||
|           # `nix develop` |  | ||||||
|           devShell = pkgs.mkShell { buildInputs = devDeps; }; |  | ||||||
| 
 |  | ||||||
|           # `nix build` |  | ||||||
|           packages = with pkgs; { |  | ||||||
|             inherit headscale; |  | ||||||
|             inherit headscale-docker; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
|           defaultPackage = pkgs.headscale; |  | ||||||
| 
 |  | ||||||
|           # `nix run` |  | ||||||
|           apps.headscale = flake-utils.lib.mkApp { |  | ||||||
|             drv = packages.headscale; |  | ||||||
|           }; |  | ||||||
|           defaultApp = apps.headscale; |  | ||||||
| 
 |  | ||||||
|           checks = { |  | ||||||
|             format = pkgs.runCommand "check-format" |  | ||||||
|               { |  | ||||||
|                 buildInputs = with pkgs; [ |  | ||||||
|                   gnumake |  | ||||||
|                   nixpkgs-fmt |  | ||||||
|                   golangci-lint |  | ||||||
|                   nodePackages.prettier |  | ||||||
|                   golines |  | ||||||
|                   clang-tools |  | ||||||
|                 ]; |  | ||||||
|               } '' |  | ||||||
|               ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt ${./.} |  | ||||||
|               ${pkgs.golangci-lint}/bin/golangci-lint run --fix --timeout 10m |  | ||||||
|               ${pkgs.nodePackages.prettier}/bin/prettier --write '**/**.{ts,js,md,yaml,yml,sass,css,scss,html}' |  | ||||||
|               ${pkgs.golines}/bin/golines --max-len=88 --base-formatter=gofumpt -w ${./.} |  | ||||||
|               ${pkgs.clang-tools}/bin/clang-format -style="{BasedOnStyle: Google, IndentWidth: 4, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}" -i ${./.} |  | ||||||
|             ''; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         }); |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -35,6 +35,7 @@ logtail: | |||||||
|   enabled: false |   enabled: false | ||||||
| metrics_listen_addr: 127.0.0.1:19090 | metrics_listen_addr: 127.0.0.1:19090 | ||||||
| oidc: | oidc: | ||||||
|  |   only_start_if_oidc_is_available: true | ||||||
|   scope: |   scope: | ||||||
|     - openid |     - openid | ||||||
|     - profile |     - profile | ||||||
|  | |||||||
| @ -34,6 +34,7 @@ logtail: | |||||||
|   enabled: false |   enabled: false | ||||||
| metrics_listen_addr: 127.0.0.1:19090 | metrics_listen_addr: 127.0.0.1:19090 | ||||||
| oidc: | oidc: | ||||||
|  |   only_start_if_oidc_is_available: true | ||||||
|   scope: |   scope: | ||||||
|     - openid |     - openid | ||||||
|     - profile |     - profile | ||||||
|  | |||||||
| @ -35,6 +35,7 @@ logtail: | |||||||
|   enabled: false |   enabled: false | ||||||
| metrics_listen_addr: 127.0.0.1:9090 | metrics_listen_addr: 127.0.0.1:9090 | ||||||
| oidc: | oidc: | ||||||
|  |   only_start_if_oidc_is_available: true | ||||||
|   scope: |   scope: | ||||||
|     - openid |     - openid | ||||||
|     - profile |     - profile | ||||||
|  | |||||||
| @ -483,7 +483,7 @@ func (h *Headscale) handleNewMachineCommon( | |||||||
| 		Bool("noise", machineKey.IsZero()). | 		Bool("noise", machineKey.IsZero()). | ||||||
| 		Str("machine", registerRequest.Hostinfo.Hostname). | 		Str("machine", registerRequest.Hostinfo.Hostname). | ||||||
| 		Msg("The node seems to be new, sending auth url") | 		Msg("The node seems to be new, sending auth url") | ||||||
| 	if h.cfg.OIDC.Issuer != "" { | 	if h.oauth2Config != nil { | ||||||
| 		resp.AuthURL = fmt.Sprintf( | 		resp.AuthURL = fmt.Sprintf( | ||||||
| 			"%s/oidc/register/%s", | 			"%s/oidc/register/%s", | ||||||
| 			strings.TrimSuffix(h.cfg.ServerURL, "/"), | 			strings.TrimSuffix(h.cfg.ServerURL, "/"), | ||||||
| @ -716,7 +716,7 @@ func (h *Headscale) handleMachineExpiredCommon( | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if h.cfg.OIDC.Issuer != "" { | 	if h.oauth2Config != nil { | ||||||
| 		resp.AuthURL = fmt.Sprintf("%s/oidc/register/%s", | 		resp.AuthURL = fmt.Sprintf("%s/oidc/register/%s", | ||||||
| 			strings.TrimSuffix(h.cfg.ServerURL, "/"), | 			strings.TrimSuffix(h.cfg.ServerURL, "/"), | ||||||
| 			NodePublicKeyStripPrefix(registerRequest.NodeKey)) | 			NodePublicKeyStripPrefix(registerRequest.NodeKey)) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user