initial commit
This commit is contained in:
commit
217621daac
21 changed files with 1401 additions and 0 deletions
58
bin/matrixgate.dart
Normal file
58
bin/matrixgate.dart
Normal file
|
@ -0,0 +1,58 @@
|
|||
import "dart:io";
|
||||
import "package:args/args.dart";
|
||||
import "package:matrixgate/controllers/settings_controller.dart";
|
||||
import "package:matrixgate/helpers/api_helper.dart";
|
||||
import "package:riverpod/riverpod.dart";
|
||||
import "package:shelf/shelf.dart";
|
||||
import "package:shelf/shelf_io.dart";
|
||||
import "package:shelf_router/shelf_router.dart";
|
||||
|
||||
void main(List<String> argsRaw) async {
|
||||
final parser = ArgParser()
|
||||
..addOption("socket", abbr: "s")
|
||||
..addOption("address", abbr: "a", defaultsTo: "127.0.0.1")
|
||||
..addOption("port", abbr: "p", defaultsTo: "8080")
|
||||
..addOption("issuer", abbr: "i", mandatory: true)
|
||||
..addOption("homeserver", abbr: "h", mandatory: true)
|
||||
..addOption("jwtSecretFile", abbr: "j", mandatory: true)
|
||||
..addOption("authorizeEndpoint", abbr: "e", mandatory: true);
|
||||
|
||||
final container = ProviderContainer();
|
||||
|
||||
container
|
||||
.read(SettingsController.provider.notifier)
|
||||
.set(parser.parse(argsRaw));
|
||||
|
||||
final apiHelper = container.read(ApiHelper.provider);
|
||||
|
||||
final handler = const Pipeline()
|
||||
.addMiddleware(logRequests())
|
||||
.addHandler(
|
||||
(Router()
|
||||
..get(
|
||||
"/.well-known/openid-configuration",
|
||||
apiHelper.openidConfiguration,
|
||||
)
|
||||
..get("/userInfo", apiHelper.userinfoHandler)
|
||||
..get("/jwks.json", apiHelper.jwks)
|
||||
..post("/login", apiHelper.handleLogin)
|
||||
..post("/token", apiHelper.tokenHandler))
|
||||
.call,
|
||||
);
|
||||
|
||||
final args = container.read(SettingsController.provider)!;
|
||||
final server = HttpServer.listenOn(
|
||||
await ServerSocket.bind(
|
||||
InternetAddress(
|
||||
args.socket ?? args.address,
|
||||
type: args.socket == null
|
||||
? InternetAddressType.any
|
||||
: InternetAddressType.unix,
|
||||
),
|
||||
int.parse(args.port),
|
||||
),
|
||||
);
|
||||
|
||||
serveRequests(server, handler);
|
||||
print("OIDC provider listening at ${server.address.address}:${server.port}");
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue