diff --git a/modules/hostmatcher/hostmatcher.go b/modules/hostmatcher/hostmatcher.go index 81c4202fcd98..a092e07f411a 100644 --- a/modules/hostmatcher/hostmatcher.go +++ b/modules/hostmatcher/hostmatcher.go @@ -78,6 +78,11 @@ func (hl *HostMatchList) AppendBuiltin(builtin string) { hl.builtins = append(hl.builtins, builtin) } +// AppendPattern appends more pattern to match +func (hl *HostMatchList) AppendPattern(pattern string) { + hl.patterns = append(hl.patterns, pattern) +} + // IsEmpty checks if the checklist is empty func (hl *HostMatchList) IsEmpty() bool { return hl == nil || (len(hl.builtins) == 0 && len(hl.patterns) == 0 && len(hl.ipNets) == 0) diff --git a/services/migrations/migrate.go b/services/migrations/migrate.go index f2542173a0ee..9460c66dbce9 100644 --- a/services/migrations/migrate.go +++ b/services/migrations/migrate.go @@ -479,5 +479,10 @@ func Init() error { } // TODO: at the moment, if ALLOW_LOCALNETWORKS=false, ALLOWED_DOMAINS=domain.com, and domain.com has IP 127.0.0.1, then it's still allowed. // if we want to block such case, the private&loopback should be added to the blockList when ALLOW_LOCALNETWORKS=false + + if setting.Proxy.Enabled && setting.Proxy.ProxyURLFixed != nil { + allowList.AppendPattern(setting.Proxy.ProxyURLFixed.Host) + } + return nil } diff --git a/web_src/js/features/repo-diff.js b/web_src/js/features/repo-diff.js index 59e0c147d9ea..0a59bcf1c20c 100644 --- a/web_src/js/features/repo-diff.js +++ b/web_src/js/features/repo-diff.js @@ -44,24 +44,28 @@ export function initRepoDiffConversationForm() { $(document).on('submit', '.conversation-holder form', async (e) => { e.preventDefault(); - const form = $(e.target); - const $textArea = form.find('textarea'); + const $form = $(e.target); + const $textArea = $form.find('textarea'); if (!validateTextareaNonEmpty($textArea)) { return; } - const newConversationHolder = $(await $.post(form.attr('action'), form.serialize())); - const {path, side, idx} = newConversationHolder.data(); + const formDataString = String(new URLSearchParams(new FormData($form[0]))); + const $newConversationHolder = $(await $.post($form.attr('action'), formDataString)); + const {path, side, idx} = $newConversationHolder.data(); - initTooltip(newConversationHolder.find('.tooltip')); - form.closest('.conversation-holder').replaceWith(newConversationHolder); - if (form.closest('tr').data('line-type') === 'same') { + $newConversationHolder.find('.tooltip').each(function () { + initTooltip(this); + }); + + $form.closest('.conversation-holder').replaceWith($newConversationHolder); + if ($form.closest('tr').data('line-type') === 'same') { $(`[data-path="${path}"] a.add-code-comment[data-idx="${idx}"]`).addClass('invisible'); } else { $(`[data-path="${path}"] a.add-code-comment[data-side="${side}"][data-idx="${idx}"]`).addClass('invisible'); } - newConversationHolder.find('.dropdown').dropdown(); - initCompReactionSelector(newConversationHolder); + $newConversationHolder.find('.dropdown').dropdown(); + initCompReactionSelector($newConversationHolder); });