github1s icon indicating copy to clipboard operation
github1s copied to clipboard

Github Enterprise support

Open gragib opened this issue 4 years ago • 14 comments

For a Github Enterprise server hosted behind a firewall at https://git.example.co/, what changes need to be made use it with a self-hosted version of github1s?

gragib avatar Feb 14 '21 01:02 gragib

https://github.com/conwnet/github1s/blob/master/extensions/github1s/src/client.ts#L11 and API url in the file https://github.com/conwnet/github1s/blob/master/extensions/github1s/src/api.ts

xcv58 avatar Feb 14 '21 01:02 xcv58

It would be mighty convenient if https://api.github.com/ was replaced with a configurable variable. In my hypothetical situation, GHE equivalent is https://git.example.co/api/v3/.

gragib avatar Feb 14 '21 01:02 gragib

~1. How do I ensure basic authentication is used for all API calls?~ ~2. Where do I add the token?~ ~3. What permissions are required when generating the token?~

Figured it out.

gragib avatar Feb 14 '21 02:02 gragib

I have a hit a roadblock with the GraphQL API: path was added in GHE 3.0. I am on an older release.

https://github.com/conwnet/github1s/blob/182a6196cd585c975a3735bb6bb097de3b79c723/extensions/github1s/src/client.ts#L25-L30

gragib avatar Feb 14 '21 04:02 gragib

Removing path seems to get things in working order. What are the downsides?

gragib avatar Feb 14 '21 04:02 gragib

One additional thing, which I noticed when setting it up for GitHub Enterprise Server that using GitHub pages is probably not the best idea for hosting because of two reasons:

  • It would be hosted under a different path: e.g. pages.github.example.com/github1s/$ORG/$REPO and this requires an adjustment in https://github.com/conwnet/github1s/blob/master/src/vs/github1s/util.ts#L18 E.g.:

      // remove path prefix (github1s) added by hosting on GitHub pages
      const pathname = urlObj.pathname.replace(/^\/github1s/,"");
      const parts = pathname.split(/\/|%2F/g).filter(Boolean);
    
  • hosting it under GitHub pages on an Enterprise Server would mean that the indexeddb (at least how far I understood it) could be accessed from any other GitHub page, meaning it would be quite easy to steal the tokens. As GitHub Enterprise doesn't support custom CNAMEs (like github.com) one should probably host it under a separate, isolated domain name and some static webserver (e.g. AWS S3 bucket).


Another more generic idea would be to allow github1s to open urls in the form of github1s.com/$hostname/$ORG/$repo and adding support for multiple token/server. Then even Enterprise users could use github1s, even behind a firewall as requests are sent from the browser directly to the Enterprise Server and don't go over github1s.

Shegox avatar Feb 14 '21 12:02 Shegox

At our place of work, we are supposed to use a Confluence wiki instead of GitHub Pages. Anybody who needs this will need to self-host it on localhost.

I will try to sort out all the changes that need to be made and submit a PR in the near future.

gragib avatar Feb 14 '21 15:02 gragib

~1. How do I ensure basic authentication is used for all API calls?~ ~2. Where do I add the token?~ ~3. What permissions are required when generating the token?~

Figured it out.

@gragib can you please elaborate the answers to these questions

ajay-sreeram avatar Feb 19 '21 07:02 ajay-sreeram

https://github.com/conwnet/github1s/issues/123#issuecomment-779288452

The UI for generating and adding a token is in the above comment. You will need to modify the GutHub URL to point to your instance of GHE.

gragib avatar Feb 19 '21 13:02 gragib

Thankyou @gragib

ajay-sreeram avatar Feb 19 '21 17:02 ajay-sreeram

https://github.com/conwnet/github1s/blob/master/extensions/github1s/src/client.ts#L11 and API url in the file https://github.com/conwnet/github1s/blob/master/extensions/github1s/src/api.ts

These URLs aren't valid anymore. nor can I find an api.ts file in the repo. What's the new location for these settings?

rpgeddam avatar Jun 17 '21 20:06 rpgeddam

https://github.com/conwnet/github1s/blob/master/extensions/github1s/src/client.ts#L11 and API url in the file https://github.com/conwnet/github1s/blob/master/extensions/github1s/src/api.ts

These URLs aren't valid anymore. nor can I find an api.ts file in the repo. What's the new location for these settings?

you will get all your answers at: https://github.com/conwnet/github1s/tree/master/extensions/github1s/src/interfaces

Siddhant-K-code avatar Jun 18 '21 04:06 Siddhant-K-code

you will get all your answers at: https://github.com/conwnet/github1s/tree/master/extensions/github1s/src/interfaces

FWIW, this link isn't valid anymore either.

rpgeddam avatar Jun 22 '22 14:06 rpgeddam

FWIW, this link isn't valid anymore either.

@rpgeddam Now you can visit here: https://github.com/conwnet/github1s/tree/1e814e91eeab88e4139c2ce57be78bd161c594a6/extensions/github1s/src/adapters

conwnet avatar Jun 22 '22 15:06 conwnet